{"version":3,"file":"build-native-package2.mjs","names":["languageScopes","languageScopes"],"sources":["../src/data/language-scopes.json","../src/language-scope.ts","../src/build-native-package.ts"],"sourcesContent":["","import languageScopes from \"./data/language-scopes.json\";\n\nimport type { PipelineConfig } from \"./types\";\n\ntype LanguageScope = {\n  nameCorpusLanguages?: readonly string[];\n  denyListCountries?: readonly string[];\n};\n\ntype LanguageScopeData = {\n  languages: Record<string, LanguageScope>;\n};\n\nconst scopeData = languageScopes as LanguageScopeData;\n\nconst normalizeLanguage = (language: string): string =>\n  language.trim().toLowerCase();\n\nconst fallbackLanguage = (language: string): string | null => {\n  const index = language.indexOf(\"-\");\n  return index === -1 ? null : language.slice(0, index);\n};\n\nconst uniquePush = (target: string[], values: readonly string[]): void => {\n  const seen = new Set(target);\n  for (const value of values) {\n    if (seen.has(value)) {\n      continue;\n    }\n    seen.add(value);\n    target.push(value);\n  }\n};\n\nconst resolveLanguageScope = (language: string): LanguageScope | null => {\n  const normalized = normalizeLanguage(language);\n  if (normalized.length === 0) {\n    return null;\n  }\n  const exact = scopeData.languages[normalized];\n  if (exact !== undefined) {\n    return exact;\n  }\n  const fallback = fallbackLanguage(normalized);\n  return fallback === null ? null : (scopeData.languages[fallback] ?? null);\n};\n\nconst configuredLanguages = (config: PipelineConfig): readonly string[] => {\n  if (config.languages !== undefined) {\n    return config.languages;\n  }\n  return config.language === undefined ? [] : [config.language];\n};\n\nexport const configuredContentLanguages = (\n  config: Pick<PipelineConfig, \"language\" | \"languages\">,\n): readonly string[] | undefined => {\n  if (config.languages !== undefined) {\n    return config.languages;\n  }\n  return config.language === undefined ? undefined : [config.language];\n};\n\nexport const applyPipelineLanguageScope = (\n  config: PipelineConfig,\n): PipelineConfig => {\n  const languages = configuredLanguages(config);\n  if (languages.length === 0) {\n    return config;\n  }\n\n  const nameCorpusLanguages: string[] = [];\n  const denyListCountries: string[] = [];\n  let hasResolvedScope = false;\n  for (const language of languages) {\n    const scope = resolveLanguageScope(language);\n    if (scope === null) {\n      continue;\n    }\n    hasResolvedScope = true;\n    uniquePush(nameCorpusLanguages, scope.nameCorpusLanguages ?? []);\n    uniquePush(denyListCountries, scope.denyListCountries ?? []);\n  }\n\n  const next: Partial<PipelineConfig> = {};\n  if (config.nameCorpusLanguages === undefined && hasResolvedScope) {\n    next.nameCorpusLanguages = nameCorpusLanguages;\n  }\n  if (config.denyListCountries === undefined && hasResolvedScope) {\n    next.denyListCountries = denyListCountries;\n  }\n\n  return Object.keys(next).length === 0 ? config : { ...config, ...next };\n};\n","import type { PipelineConfig } from \"./types\";\nimport { applyPipelineLanguageScope } from \"./language-scope\";\nimport languageScopes from \"./data/language-scopes.json\";\n\ntype DictionaryBundleOptions = {\n  countries?: readonly string[];\n  cityCountries?: readonly string[];\n  nameLanguages?: readonly string[];\n};\n\n// @stll/anonymize-data 0.0.10 treats an empty language list as unscoped.\n// A non-empty unsupported scope uses its existing \"no matching corpus\" path.\nconst EMPTY_NAME_CORPUS_SCOPE = [\"und\"] as const;\n\nexport const defaultDictionaryBundleOptions = (\n  config: PipelineConfig,\n): DictionaryBundleOptions => ({\n  ...(config.denyListCountries === undefined\n    ? { cityCountries: languageScopes.allLanguageCityCountries }\n    : {\n        countries: config.denyListCountries,\n        cityCountries: config.denyListCountries,\n      }),\n  ...(config.nameCorpusLanguages === undefined\n    ? {}\n    : {\n        nameLanguages:\n          config.nameCorpusLanguages.length === 0\n            ? EMPTY_NAME_CORPUS_SCOPE\n            : config.nameCorpusLanguages,\n      }),\n});\n\nexport { applyPipelineLanguageScope };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACaA,MAAM,YAAYA;AAElB,MAAM,qBAAqB,aACzB,SAAS,KAAK,CAAC,CAAC,YAAY;AAE9B,MAAM,oBAAoB,aAAoC;CAC5D,MAAM,QAAQ,SAAS,QAAQ,GAAG;CAClC,OAAO,UAAU,KAAK,OAAO,SAAS,MAAM,GAAG,KAAK;AACtD;AAEA,MAAM,cAAc,QAAkB,WAAoC;CACxE,MAAM,OAAO,IAAI,IAAI,MAAM;CAC3B,KAAK,MAAM,SAAS,QAAQ;EAC1B,IAAI,KAAK,IAAI,KAAK,GAChB;EAEF,KAAK,IAAI,KAAK;EACd,OAAO,KAAK,KAAK;CACnB;AACF;AAEA,MAAM,wBAAwB,aAA2C;CACvE,MAAM,aAAa,kBAAkB,QAAQ;CAC7C,IAAI,WAAW,WAAW,GACxB,OAAO;CAET,MAAM,QAAQ,UAAU,UAAU;CAClC,IAAI,UAAU,KAAA,GACZ,OAAO;CAET,MAAM,WAAW,iBAAiB,UAAU;CAC5C,OAAO,aAAa,OAAO,OAAQ,UAAU,UAAU,aAAa;AACtE;AAEA,MAAM,uBAAuB,WAA8C;CACzE,IAAI,OAAO,cAAc,KAAA,GACvB,OAAO,OAAO;CAEhB,OAAO,OAAO,aAAa,KAAA,IAAY,CAAC,IAAI,CAAC,OAAO,QAAQ;AAC9D;AAWA,MAAa,8BACX,WACmB;CACnB,MAAM,YAAY,oBAAoB,MAAM;CAC5C,IAAI,UAAU,WAAW,GACvB,OAAO;CAGT,MAAM,sBAAgC,CAAC;CACvC,MAAM,oBAA8B,CAAC;CACrC,IAAI,mBAAmB;CACvB,KAAK,MAAM,YAAY,WAAW;EAChC,MAAM,QAAQ,qBAAqB,QAAQ;EAC3C,IAAI,UAAU,MACZ;EAEF,mBAAmB;EACnB,WAAW,qBAAqB,MAAM,uBAAuB,CAAC,CAAC;EAC/D,WAAW,mBAAmB,MAAM,qBAAqB,CAAC,CAAC;CAC7D;CAEA,MAAM,OAAgC,CAAC;CACvC,IAAI,OAAO,wBAAwB,KAAA,KAAa,kBAC9C,KAAK,sBAAsB;CAE7B,IAAI,OAAO,sBAAsB,KAAA,KAAa,kBAC5C,KAAK,oBAAoB;CAG3B,OAAO,OAAO,KAAK,IAAI,CAAC,CAAC,WAAW,IAAI,SAAS;EAAE,GAAG;EAAQ,GAAG;CAAK;AACxE;;;ACjFA,MAAM,0BAA0B,CAAC,KAAK;AAEtC,MAAa,kCACX,YAC6B;CAC7B,GAAI,OAAO,sBAAsB,KAAA,IAC7B,EAAE,eAAeC,wBAAe,yBAAyB,IACzD;EACE,WAAW,OAAO;EAClB,eAAe,OAAO;CACxB;CACJ,GAAI,OAAO,wBAAwB,KAAA,IAC/B,CAAC,IACD,EACE,eACE,OAAO,oBAAoB,WAAW,IAClC,0BACA,OAAO,oBACf;AACN"}