@fgv/ts-bcp47 0.9.6 → 2.0.1-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cache/build.lint/_eslint-R7SFxnrl.json +481 -0
- package/dist/ts-bcp47.d.ts +2554 -0
- package/dist/tsdoc-metadata.json +11 -0
- package/lib/data/bcp/overrides.json +20 -0
- package/lib/data/iana/language-subtags.json +57439 -0
- package/{data → lib/data}/iana/language-tag-extensions.json +2 -6
- package/lib/data/unsd/m49.json +3723 -0
- package/lib/index.d.ts +6 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +57 -0
- package/lib/index.js.map +1 -0
- package/lib/packlets/bcp47/bcp47Subtags/converters.d.ts.map +1 -0
- package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/converters.js +2 -1
- package/lib/packlets/bcp47/bcp47Subtags/converters.js.map +1 -0
- package/lib/packlets/bcp47/bcp47Subtags/index.d.ts.map +1 -0
- package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/index.js +1 -1
- package/lib/packlets/bcp47/bcp47Subtags/index.js.map +1 -0
- package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/model.d.ts +3 -1
- package/lib/packlets/bcp47/bcp47Subtags/model.d.ts.map +1 -0
- package/lib/packlets/bcp47/bcp47Subtags/model.js +24 -0
- package/lib/packlets/bcp47/bcp47Subtags/model.js.map +1 -0
- package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/validate.d.ts +2 -2
- package/lib/packlets/bcp47/bcp47Subtags/validate.d.ts.map +1 -0
- package/lib/packlets/bcp47/bcp47Subtags/validate.js +74 -0
- package/lib/packlets/bcp47/bcp47Subtags/validate.js.map +1 -0
- package/{bcp47 → lib/packlets/bcp47}/common.d.ts +4 -4
- package/lib/packlets/bcp47/common.d.ts.map +1 -0
- package/lib/packlets/bcp47/common.js +59 -0
- package/lib/packlets/bcp47/common.js.map +1 -0
- package/{bcp47 → lib/packlets/bcp47}/helpers.d.ts +8 -8
- package/lib/packlets/bcp47/helpers.d.ts.map +1 -0
- package/lib/packlets/bcp47/helpers.js +103 -0
- package/lib/packlets/bcp47/helpers.js.map +1 -0
- package/lib/packlets/bcp47/index.d.ts +10 -0
- package/lib/packlets/bcp47/index.d.ts.map +1 -0
- package/lib/packlets/bcp47/index.js +68 -0
- package/lib/packlets/bcp47/index.js.map +1 -0
- package/{bcp47 → lib/packlets/bcp47}/languageRegistryData.d.ts +26 -27
- package/lib/packlets/bcp47/languageRegistryData.d.ts.map +1 -0
- package/lib/packlets/bcp47/languageRegistryData.js +206 -0
- package/lib/packlets/bcp47/languageRegistryData.js.map +1 -0
- package/{bcp47 → lib/packlets/bcp47}/languageTag.d.ts +12 -13
- package/lib/packlets/bcp47/languageTag.d.ts.map +1 -0
- package/lib/packlets/bcp47/languageTag.js +390 -0
- package/lib/packlets/bcp47/languageTag.js.map +1 -0
- package/{bcp47 → lib/packlets/bcp47}/languageTagParser.d.ts +13 -14
- package/lib/packlets/bcp47/languageTagParser.d.ts.map +1 -0
- package/lib/packlets/bcp47/languageTagParser.js +303 -0
- package/lib/packlets/bcp47/languageTagParser.js.map +1 -0
- package/{bcp47 → lib/packlets/bcp47}/match/chooser.d.ts +8 -8
- package/lib/packlets/bcp47/match/chooser.d.ts.map +1 -0
- package/lib/packlets/bcp47/match/chooser.js +92 -0
- package/lib/packlets/bcp47/match/chooser.js.map +1 -0
- package/lib/packlets/bcp47/match/common.d.ts.map +1 -0
- package/lib/packlets/bcp47/match/common.js +52 -0
- package/lib/packlets/bcp47/match/common.js.map +1 -0
- package/lib/packlets/bcp47/match/index.d.ts +4 -0
- package/lib/packlets/bcp47/match/index.d.ts.map +1 -0
- package/lib/packlets/bcp47/match/index.js +45 -0
- package/lib/packlets/bcp47/match/index.js.map +1 -0
- package/lib/packlets/bcp47/match/similarity.d.ts.map +1 -0
- package/lib/packlets/bcp47/match/similarity.js +230 -0
- package/lib/packlets/bcp47/match/similarity.js.map +1 -0
- package/lib/packlets/bcp47/normalization/baseNormalizer.d.ts +35 -0
- package/lib/packlets/bcp47/normalization/baseNormalizer.d.ts.map +1 -0
- package/lib/packlets/bcp47/normalization/baseNormalizer.js +116 -0
- package/lib/packlets/bcp47/normalization/baseNormalizer.js.map +1 -0
- package/lib/packlets/bcp47/normalization/canonicalNormalizer.d.ts +22 -0
- package/lib/packlets/bcp47/normalization/canonicalNormalizer.d.ts.map +1 -0
- package/lib/packlets/bcp47/normalization/canonicalNormalizer.js +113 -0
- package/lib/packlets/bcp47/normalization/canonicalNormalizer.js.map +1 -0
- package/{bcp47 → lib/packlets/bcp47}/normalization/common.d.ts +1 -1
- package/lib/packlets/bcp47/normalization/common.d.ts.map +1 -0
- package/lib/packlets/bcp47/normalization/common.js +82 -0
- package/lib/packlets/bcp47/normalization/common.js.map +1 -0
- package/lib/packlets/bcp47/normalization/index.d.ts.map +1 -0
- package/{bcp47 → lib/packlets/bcp47}/normalization/index.js +1 -1
- package/lib/packlets/bcp47/normalization/index.js.map +1 -0
- package/{bcp47 → lib/packlets/bcp47}/normalization/normalizeTag.d.ts +6 -6
- package/lib/packlets/bcp47/normalization/normalizeTag.d.ts.map +1 -0
- package/lib/packlets/bcp47/normalization/normalizeTag.js +105 -0
- package/lib/packlets/bcp47/normalization/normalizeTag.js.map +1 -0
- package/lib/packlets/bcp47/normalization/preferredTagNormalizer.d.ts +27 -0
- package/lib/packlets/bcp47/normalization/preferredTagNormalizer.d.ts.map +1 -0
- package/lib/packlets/bcp47/normalization/preferredTagNormalizer.js +204 -0
- package/lib/packlets/bcp47/normalization/preferredTagNormalizer.js.map +1 -0
- package/lib/packlets/bcp47/overrides/converters.d.ts +19 -0
- package/lib/packlets/bcp47/overrides/converters.d.ts.map +1 -0
- package/lib/packlets/bcp47/overrides/converters.js +76 -0
- package/lib/packlets/bcp47/overrides/converters.js.map +1 -0
- package/lib/packlets/bcp47/overrides/defaultRegistries.d.ts.map +1 -0
- package/lib/packlets/bcp47/overrides/defaultRegistries.js +42 -0
- package/lib/packlets/bcp47/overrides/defaultRegistries.js.map +1 -0
- package/lib/packlets/bcp47/overrides/index.d.ts.map +1 -0
- package/lib/packlets/bcp47/overrides/index.js +30 -0
- package/lib/packlets/bcp47/overrides/index.js.map +1 -0
- package/lib/packlets/bcp47/overrides/model.d.ts +11 -0
- package/lib/packlets/bcp47/overrides/model.d.ts.map +1 -0
- package/lib/packlets/bcp47/overrides/model.js +24 -0
- package/lib/packlets/bcp47/overrides/model.js.map +1 -0
- package/{bcp47 → lib/packlets/bcp47}/overrides/overridesRegistry.d.ts +8 -8
- package/lib/packlets/bcp47/overrides/overridesRegistry.d.ts.map +1 -0
- package/lib/packlets/bcp47/overrides/overridesRegistry.js +113 -0
- package/lib/packlets/bcp47/overrides/overridesRegistry.js.map +1 -0
- package/lib/packlets/bcp47/validation/baseValidator.d.ts +35 -0
- package/lib/packlets/bcp47/validation/baseValidator.d.ts.map +1 -0
- package/lib/packlets/bcp47/validation/baseValidator.js +113 -0
- package/lib/packlets/bcp47/validation/baseValidator.js.map +1 -0
- package/{bcp47 → lib/packlets/bcp47}/validation/common.d.ts +1 -1
- package/lib/packlets/bcp47/validation/common.d.ts.map +1 -0
- package/lib/packlets/bcp47/validation/common.js +84 -0
- package/lib/packlets/bcp47/validation/common.js.map +1 -0
- package/lib/packlets/bcp47/validation/index.d.ts.map +1 -0
- package/{bcp47 → lib/packlets/bcp47}/validation/index.js +1 -1
- package/lib/packlets/bcp47/validation/index.js.map +1 -0
- package/lib/packlets/bcp47/validation/isCanonical.d.ts +22 -0
- package/lib/packlets/bcp47/validation/isCanonical.d.ts.map +1 -0
- package/lib/packlets/bcp47/validation/isCanonical.js +106 -0
- package/lib/packlets/bcp47/validation/isCanonical.js.map +1 -0
- package/{bcp47 → lib/packlets/bcp47}/validation/isInPreferredForm.d.ts +4 -4
- package/lib/packlets/bcp47/validation/isInPreferredForm.d.ts.map +1 -0
- package/lib/packlets/bcp47/validation/isInPreferredForm.js +73 -0
- package/lib/packlets/bcp47/validation/isInPreferredForm.js.map +1 -0
- package/lib/packlets/bcp47/validation/isStrictlyValid.d.ts +18 -0
- package/lib/packlets/bcp47/validation/isStrictlyValid.d.ts.map +1 -0
- package/lib/packlets/bcp47/validation/isStrictlyValid.js +98 -0
- package/lib/packlets/bcp47/validation/isStrictlyValid.js.map +1 -0
- package/lib/packlets/bcp47/validation/isValid.d.ts +24 -0
- package/lib/packlets/bcp47/validation/isValid.d.ts.map +1 -0
- package/lib/packlets/bcp47/validation/isValid.js +119 -0
- package/lib/packlets/bcp47/validation/isValid.js.map +1 -0
- package/lib/packlets/bcp47/validation/isWellFormed.d.ts +22 -0
- package/lib/packlets/bcp47/validation/isWellFormed.d.ts.map +1 -0
- package/lib/packlets/bcp47/validation/isWellFormed.js +102 -0
- package/lib/packlets/bcp47/validation/isWellFormed.js.map +1 -0
- package/{bcp47 → lib/packlets/bcp47}/validation/validateTag.d.ts +9 -9
- package/lib/packlets/bcp47/validation/validateTag.d.ts.map +1 -0
- package/lib/packlets/bcp47/validation/validateTag.js +159 -0
- package/lib/packlets/bcp47/validation/validateTag.js.map +1 -0
- package/{iana → lib/packlets/iana}/common/converters.d.ts +2 -2
- package/lib/packlets/iana/common/converters.d.ts.map +1 -0
- package/lib/packlets/iana/common/converters.js +85 -0
- package/lib/packlets/iana/common/converters.js.map +1 -0
- package/{iana → lib/packlets/iana}/common/model.d.ts +1 -1
- package/lib/packlets/iana/common/model.d.ts.map +1 -0
- package/lib/packlets/iana/common/model.js +24 -0
- package/lib/packlets/iana/common/model.js.map +1 -0
- package/lib/packlets/iana/common/registeredItems.d.ts.map +1 -0
- package/lib/packlets/iana/common/registeredItems.js +124 -0
- package/lib/packlets/iana/common/registeredItems.js.map +1 -0
- package/lib/packlets/iana/common/utils.d.ts.map +1 -0
- package/lib/packlets/iana/common/utils.js +34 -0
- package/lib/packlets/iana/common/utils.js.map +1 -0
- package/{iana → lib/packlets/iana}/common/validate.d.ts +1 -1
- package/lib/packlets/iana/common/validate.d.ts.map +1 -0
- package/lib/packlets/iana/common/validate.js +62 -0
- package/lib/packlets/iana/common/validate.js.map +1 -0
- package/lib/packlets/iana/converters.d.ts.map +1 -0
- package/{iana → lib/packlets/iana}/converters.js +1 -1
- package/lib/packlets/iana/converters.js.map +1 -0
- package/lib/packlets/iana/defaultRegistries.d.ts.map +1 -0
- package/lib/packlets/iana/defaultRegistries.js +42 -0
- package/lib/packlets/iana/defaultRegistries.js.map +1 -0
- package/{iana → lib/packlets/iana}/index.d.ts +4 -2
- package/lib/packlets/iana/index.d.ts.map +1 -0
- package/{iana/jar/language-subtags/tags → lib/packlets/iana}/index.js +18 -6
- package/lib/packlets/iana/index.js.map +1 -0
- package/lib/packlets/iana/jar/converters.d.ts.map +1 -0
- package/{iana → lib/packlets/iana}/jar/converters.js +1 -1
- package/lib/packlets/iana/jar/converters.js.map +1 -0
- package/lib/packlets/iana/jar/index.d.ts +5 -0
- package/lib/packlets/iana/jar/index.d.ts.map +1 -0
- package/{unsd/csv → lib/packlets/iana/jar}/index.js +4 -2
- package/lib/packlets/iana/jar/index.js.map +1 -0
- package/{iana → lib/packlets/iana}/jar/jarConverters.d.ts +5 -5
- package/lib/packlets/iana/jar/jarConverters.d.ts.map +1 -0
- package/lib/packlets/iana/jar/jarConverters.js +86 -0
- package/lib/packlets/iana/jar/jarConverters.js.map +1 -0
- package/{iana → lib/packlets/iana}/jar/jarModel.d.ts +1 -1
- package/lib/packlets/iana/jar/jarModel.d.ts.map +1 -0
- package/lib/packlets/iana/jar/jarModel.js +24 -0
- package/lib/packlets/iana/jar/jarModel.js.map +1 -0
- package/lib/packlets/iana/jar/language-subtags/converters.d.ts.map +1 -0
- package/{iana → lib/packlets/iana}/jar/language-subtags/converters.js +1 -1
- package/lib/packlets/iana/jar/language-subtags/converters.js.map +1 -0
- package/lib/packlets/iana/jar/language-subtags/index.d.ts +5 -0
- package/lib/packlets/iana/jar/language-subtags/index.d.ts.map +1 -0
- package/{iana/jar/language-subtags/registry → lib/packlets/iana/jar/language-subtags}/index.js +29 -28
- package/lib/packlets/iana/jar/language-subtags/index.js.map +1 -0
- package/lib/packlets/iana/jar/language-subtags/model.d.ts.map +1 -0
- package/{iana → lib/packlets/iana}/jar/language-subtags/model.js +1 -1
- package/lib/packlets/iana/jar/language-subtags/model.js.map +1 -0
- package/lib/packlets/iana/jar/language-subtags/registry/converters.d.ts.map +1 -0
- package/lib/packlets/iana/jar/language-subtags/registry/converters.js +59 -0
- package/lib/packlets/iana/jar/language-subtags/registry/converters.js.map +1 -0
- package/lib/packlets/iana/jar/language-subtags/registry/index.d.ts.map +1 -0
- package/{iana/jar/language-subtags → lib/packlets/iana/jar/language-subtags/registry}/index.js +23 -22
- package/lib/packlets/iana/jar/language-subtags/registry/index.js.map +1 -0
- package/{iana → lib/packlets/iana}/jar/language-subtags/registry/model.d.ts +12 -12
- package/lib/packlets/iana/jar/language-subtags/registry/model.d.ts.map +1 -0
- package/lib/packlets/iana/jar/language-subtags/registry/model.js +46 -0
- package/lib/packlets/iana/jar/language-subtags/registry/model.js.map +1 -0
- package/lib/packlets/iana/jar/language-subtags/tags/converters.d.ts +55 -0
- package/lib/packlets/iana/jar/language-subtags/tags/converters.d.ts.map +1 -0
- package/lib/packlets/iana/jar/language-subtags/tags/converters.js +129 -0
- package/lib/packlets/iana/jar/language-subtags/tags/converters.js.map +1 -0
- package/lib/packlets/iana/jar/language-subtags/tags/index.d.ts +6 -0
- package/lib/packlets/iana/jar/language-subtags/tags/index.d.ts.map +1 -0
- package/lib/packlets/iana/jar/language-subtags/tags/index.js +58 -0
- package/lib/packlets/iana/jar/language-subtags/tags/index.js.map +1 -0
- package/lib/packlets/iana/jar/language-subtags/tags/model.d.ts.map +1 -0
- package/lib/packlets/iana/jar/language-subtags/tags/model.js +24 -0
- package/lib/packlets/iana/jar/language-subtags/tags/model.js.map +1 -0
- package/lib/packlets/iana/jar/language-subtags/tags/tagValidation.d.ts.map +1 -0
- package/lib/packlets/iana/jar/language-subtags/tags/tagValidation.js +70 -0
- package/lib/packlets/iana/jar/language-subtags/tags/tagValidation.js.map +1 -0
- package/lib/packlets/iana/jar/language-subtags/tags/validate.d.ts.map +1 -0
- package/lib/packlets/iana/jar/language-subtags/tags/validate.js +88 -0
- package/lib/packlets/iana/jar/language-subtags/tags/validate.js.map +1 -0
- package/lib/packlets/iana/jar/model.d.ts.map +1 -0
- package/{iana → lib/packlets/iana}/jar/model.js +1 -1
- package/lib/packlets/iana/jar/model.js.map +1 -0
- package/lib/packlets/iana/language-subtags/common.d.ts.map +1 -0
- package/lib/packlets/iana/language-subtags/common.js +24 -0
- package/lib/packlets/iana/language-subtags/common.js.map +1 -0
- package/lib/packlets/iana/language-subtags/converters.d.ts +52 -0
- package/lib/packlets/iana/language-subtags/converters.d.ts.map +1 -0
- package/lib/packlets/iana/language-subtags/converters.js +209 -0
- package/lib/packlets/iana/language-subtags/converters.js.map +1 -0
- package/{iana → lib/packlets/iana}/language-subtags/index.d.ts +4 -3
- package/lib/packlets/iana/language-subtags/index.d.ts.map +1 -0
- package/{iana → lib/packlets/iana}/language-subtags/index.js +10 -8
- package/lib/packlets/iana/language-subtags/index.js.map +1 -0
- package/{iana → lib/packlets/iana}/language-subtags/jarConverters.d.ts +8 -8
- package/lib/packlets/iana/language-subtags/jarConverters.d.ts.map +1 -0
- package/lib/packlets/iana/language-subtags/jarConverters.js +237 -0
- package/lib/packlets/iana/language-subtags/jarConverters.js.map +1 -0
- package/{iana → lib/packlets/iana}/language-subtags/model.d.ts +15 -15
- package/lib/packlets/iana/language-subtags/model.d.ts.map +1 -0
- package/lib/packlets/iana/language-subtags/model.js +24 -0
- package/lib/packlets/iana/language-subtags/model.js.map +1 -0
- package/{iana → lib/packlets/iana}/language-subtags/scope.d.ts +12 -12
- package/lib/packlets/iana/language-subtags/scope.d.ts.map +1 -0
- package/lib/packlets/iana/language-subtags/scope.js +179 -0
- package/lib/packlets/iana/language-subtags/scope.js.map +1 -0
- package/{iana → lib/packlets/iana}/language-subtags/subtagRegistry.d.ts +1 -1
- package/lib/packlets/iana/language-subtags/subtagRegistry.d.ts.map +1 -0
- package/lib/packlets/iana/language-subtags/subtagRegistry.js +150 -0
- package/lib/packlets/iana/language-subtags/subtagRegistry.js.map +1 -0
- package/lib/packlets/iana/language-subtags/validate.d.ts.map +1 -0
- package/{iana → lib/packlets/iana}/language-subtags/validate.js +1 -1
- package/lib/packlets/iana/language-subtags/validate.js.map +1 -0
- package/lib/packlets/iana/language-tag-extensions/converters.d.ts +22 -0
- package/lib/packlets/iana/language-tag-extensions/converters.d.ts.map +1 -0
- package/lib/packlets/iana/language-tag-extensions/converters.js +86 -0
- package/lib/packlets/iana/language-tag-extensions/converters.js.map +1 -0
- package/{iana → lib/packlets/iana}/language-tag-extensions/extensionsRegistry.d.ts +2 -2
- package/lib/packlets/iana/language-tag-extensions/extensionsRegistry.d.ts.map +1 -0
- package/lib/packlets/iana/language-tag-extensions/extensionsRegistry.js +105 -0
- package/lib/packlets/iana/language-tag-extensions/extensionsRegistry.js.map +1 -0
- package/{iana → lib/packlets/iana}/language-tag-extensions/extensionsScope.d.ts +3 -3
- package/lib/packlets/iana/language-tag-extensions/extensionsScope.d.ts.map +1 -0
- package/lib/packlets/iana/language-tag-extensions/extensionsScope.js +77 -0
- package/lib/packlets/iana/language-tag-extensions/extensionsScope.js.map +1 -0
- package/{iana → lib/packlets/iana}/language-tag-extensions/index.d.ts +3 -2
- package/lib/packlets/iana/language-tag-extensions/index.d.ts.map +1 -0
- package/{iana → lib/packlets/iana}/language-tag-extensions/index.js +6 -4
- package/lib/packlets/iana/language-tag-extensions/index.js.map +1 -0
- package/{iana → lib/packlets/iana}/language-tag-extensions/jarConverters.d.ts +2 -3
- package/lib/packlets/iana/language-tag-extensions/jarConverters.d.ts.map +1 -0
- package/lib/packlets/iana/language-tag-extensions/jarConverters.js +79 -0
- package/lib/packlets/iana/language-tag-extensions/jarConverters.js.map +1 -0
- package/{iana → lib/packlets/iana}/language-tag-extensions/model.d.ts +5 -6
- package/lib/packlets/iana/language-tag-extensions/model.d.ts.map +1 -0
- package/lib/packlets/iana/language-tag-extensions/model.js +25 -0
- package/lib/packlets/iana/language-tag-extensions/model.js.map +1 -0
- package/{iana → lib/packlets/iana}/language-tag-extensions/validate.d.ts +2 -2
- package/lib/packlets/iana/language-tag-extensions/validate.d.ts.map +1 -0
- package/lib/packlets/iana/language-tag-extensions/validate.js +36 -0
- package/lib/packlets/iana/language-tag-extensions/validate.js.map +1 -0
- package/lib/packlets/iana/languageRegistries.d.ts.map +1 -0
- package/lib/packlets/iana/languageRegistries.js +56 -0
- package/lib/packlets/iana/languageRegistries.js.map +1 -0
- package/lib/packlets/iana/model.d.ts.map +1 -0
- package/{iana → lib/packlets/iana}/model.js +1 -1
- package/lib/packlets/iana/model.js.map +1 -0
- package/lib/packlets/iana/validate.d.ts.map +1 -0
- package/{iana → lib/packlets/iana}/validate.js +1 -1
- package/lib/packlets/iana/validate.js.map +1 -0
- package/lib/packlets/unsd/areas.d.ts +29 -0
- package/lib/packlets/unsd/areas.d.ts.map +1 -0
- package/lib/packlets/unsd/areas.js +96 -0
- package/lib/packlets/unsd/areas.js.map +1 -0
- package/lib/packlets/unsd/common.d.ts +49 -0
- package/lib/packlets/unsd/common.d.ts.map +1 -0
- package/lib/packlets/unsd/common.js +24 -0
- package/lib/packlets/unsd/common.js.map +1 -0
- package/{unsd → lib/packlets/unsd}/csv/converters.d.ts +7 -4
- package/lib/packlets/unsd/csv/converters.d.ts.map +1 -0
- package/lib/packlets/unsd/csv/converters.js +78 -0
- package/lib/packlets/unsd/csv/converters.js.map +1 -0
- package/lib/packlets/unsd/csv/index.d.ts.map +1 -0
- package/{iana/jar → lib/packlets/unsd/csv}/index.js +1 -1
- package/lib/packlets/unsd/csv/index.js.map +1 -0
- package/lib/packlets/unsd/csv/model.d.ts +22 -0
- package/lib/packlets/unsd/csv/model.d.ts.map +1 -0
- package/lib/packlets/unsd/csv/model.js +24 -0
- package/lib/packlets/unsd/csv/model.js.map +1 -0
- package/lib/packlets/unsd/defaultRegistries.d.ts.map +1 -0
- package/lib/packlets/unsd/defaultRegistries.js +42 -0
- package/lib/packlets/unsd/defaultRegistries.js.map +1 -0
- package/{unsd → lib/packlets/unsd}/index.d.ts +2 -0
- package/lib/packlets/unsd/index.d.ts.map +1 -0
- package/lib/packlets/unsd/index.js +58 -0
- package/lib/packlets/unsd/index.js.map +1 -0
- package/{unsd → lib/packlets/unsd}/regionCodes.d.ts +7 -7
- package/lib/packlets/unsd/regionCodes.d.ts.map +1 -0
- package/lib/packlets/unsd/regionCodes.js +122 -0
- package/lib/packlets/unsd/regionCodes.js.map +1 -0
- package/lib/packlets/unsd/regions.d.ts +21 -0
- package/lib/packlets/unsd/regions.d.ts.map +1 -0
- package/lib/packlets/unsd/regions.js +77 -0
- package/lib/packlets/unsd/regions.js.map +1 -0
- package/lib/packlets/utils/index.d.ts.map +1 -0
- package/{utils → lib/packlets/utils}/index.js +1 -1
- package/lib/packlets/utils/index.js.map +1 -0
- package/lib/packlets/utils/jsonHelpers.d.ts.map +1 -0
- package/lib/packlets/utils/jsonHelpers.js +29 -0
- package/lib/packlets/utils/jsonHelpers.js.map +1 -0
- package/lib/packlets/utils/public.d.ts +2 -0
- package/lib/packlets/utils/public.d.ts.map +1 -0
- package/lib/packlets/utils/public.js +28 -0
- package/lib/packlets/utils/public.js.map +1 -0
- package/{utils → lib/packlets/utils}/validationHelpers.d.ts +9 -10
- package/lib/packlets/utils/validationHelpers.d.ts.map +1 -0
- package/lib/packlets/utils/validationHelpers.js +120 -0
- package/lib/packlets/utils/validationHelpers.js.map +1 -0
- package/package.json +73 -67
- package/bcp47/bcp47Subtags/converters.d.ts.map +0 -1
- package/bcp47/bcp47Subtags/index.d.ts.map +0 -1
- package/bcp47/bcp47Subtags/model.d.ts.map +0 -1
- package/bcp47/bcp47Subtags/model.js +0 -24
- package/bcp47/bcp47Subtags/validate.d.ts.map +0 -1
- package/bcp47/bcp47Subtags/validate.js +0 -74
- package/bcp47/common.d.ts.map +0 -1
- package/bcp47/common.js +0 -59
- package/bcp47/helpers.d.ts.map +0 -1
- package/bcp47/helpers.js +0 -103
- package/bcp47/index.d.ts +0 -7
- package/bcp47/index.d.ts.map +0 -1
- package/bcp47/index.js +0 -27
- package/bcp47/languageRegistryData.d.ts.map +0 -1
- package/bcp47/languageRegistryData.js +0 -209
- package/bcp47/languageTag.d.ts.map +0 -1
- package/bcp47/languageTag.js +0 -390
- package/bcp47/languageTagParser.d.ts.map +0 -1
- package/bcp47/languageTagParser.js +0 -302
- package/bcp47/match/chooser.d.ts.map +0 -1
- package/bcp47/match/chooser.js +0 -92
- package/bcp47/match/common.d.ts.map +0 -1
- package/bcp47/match/common.js +0 -51
- package/bcp47/match/index.d.ts +0 -4
- package/bcp47/match/index.d.ts.map +0 -1
- package/bcp47/match/index.js +0 -45
- package/bcp47/match/similarity.d.ts.map +0 -1
- package/bcp47/match/similarity.js +0 -230
- package/bcp47/normalization/baseNormalizer.d.ts +0 -36
- package/bcp47/normalization/baseNormalizer.d.ts.map +0 -1
- package/bcp47/normalization/baseNormalizer.js +0 -114
- package/bcp47/normalization/canonicalNormalizer.d.ts +0 -22
- package/bcp47/normalization/canonicalNormalizer.d.ts.map +0 -1
- package/bcp47/normalization/canonicalNormalizer.js +0 -113
- package/bcp47/normalization/common.d.ts.map +0 -1
- package/bcp47/normalization/common.js +0 -82
- package/bcp47/normalization/index.d.ts.map +0 -1
- package/bcp47/normalization/normalizeTag.d.ts.map +0 -1
- package/bcp47/normalization/normalizeTag.js +0 -105
- package/bcp47/normalization/preferredTagNormalizer.d.ts +0 -27
- package/bcp47/normalization/preferredTagNormalizer.d.ts.map +0 -1
- package/bcp47/normalization/preferredTagNormalizer.js +0 -209
- package/bcp47/overrides/converters.d.ts +0 -19
- package/bcp47/overrides/converters.d.ts.map +0 -1
- package/bcp47/overrides/converters.js +0 -75
- package/bcp47/overrides/defaultRegistries.d.ts.map +0 -1
- package/bcp47/overrides/defaultRegistries.js +0 -42
- package/bcp47/overrides/index.d.ts.map +0 -1
- package/bcp47/overrides/index.js +0 -30
- package/bcp47/overrides/model.d.ts +0 -11
- package/bcp47/overrides/model.d.ts.map +0 -1
- package/bcp47/overrides/model.js +0 -24
- package/bcp47/overrides/overridesRegistry.d.ts.map +0 -1
- package/bcp47/overrides/overridesRegistry.js +0 -112
- package/bcp47/validation/baseValidator.d.ts +0 -35
- package/bcp47/validation/baseValidator.d.ts.map +0 -1
- package/bcp47/validation/baseValidator.js +0 -111
- package/bcp47/validation/common.d.ts.map +0 -1
- package/bcp47/validation/common.js +0 -84
- package/bcp47/validation/index.d.ts.map +0 -1
- package/bcp47/validation/isCanonical.d.ts +0 -22
- package/bcp47/validation/isCanonical.d.ts.map +0 -1
- package/bcp47/validation/isCanonical.js +0 -104
- package/bcp47/validation/isInPreferredForm.d.ts.map +0 -1
- package/bcp47/validation/isInPreferredForm.js +0 -73
- package/bcp47/validation/isStrictlyValid.d.ts +0 -18
- package/bcp47/validation/isStrictlyValid.d.ts.map +0 -1
- package/bcp47/validation/isStrictlyValid.js +0 -98
- package/bcp47/validation/isValid.d.ts +0 -24
- package/bcp47/validation/isValid.d.ts.map +0 -1
- package/bcp47/validation/isValid.js +0 -115
- package/bcp47/validation/isWellFormed.d.ts +0 -22
- package/bcp47/validation/isWellFormed.d.ts.map +0 -1
- package/bcp47/validation/isWellFormed.js +0 -98
- package/bcp47/validation/validateTag.d.ts.map +0 -1
- package/bcp47/validation/validateTag.js +0 -159
- package/data/bcp/overrides.json +0 -21
- package/data/iana/language-subtags.json +0 -77295
- package/data/unsd/m49.json +0 -251
- package/iana/common/converters.d.ts.map +0 -1
- package/iana/common/converters.js +0 -84
- package/iana/common/model.d.ts.map +0 -1
- package/iana/common/model.js +0 -24
- package/iana/common/registeredItems.d.ts.map +0 -1
- package/iana/common/registeredItems.js +0 -124
- package/iana/common/utils.d.ts.map +0 -1
- package/iana/common/utils.js +0 -34
- package/iana/common/validate.d.ts.map +0 -1
- package/iana/common/validate.js +0 -61
- package/iana/converters.d.ts.map +0 -1
- package/iana/defaultRegistries.d.ts.map +0 -1
- package/iana/defaultRegistries.js +0 -42
- package/iana/index.d.ts.map +0 -1
- package/iana/index.js +0 -64
- package/iana/jar/converters.d.ts.map +0 -1
- package/iana/jar/index.d.ts.map +0 -1
- package/iana/jar/jarConverters.d.ts.map +0 -1
- package/iana/jar/jarConverters.js +0 -85
- package/iana/jar/jarModel.d.ts.map +0 -1
- package/iana/jar/jarModel.js +0 -24
- package/iana/jar/language-subtags/converters.d.ts.map +0 -1
- package/iana/jar/language-subtags/index.d.ts.map +0 -1
- package/iana/jar/language-subtags/model.d.ts.map +0 -1
- package/iana/jar/language-subtags/registry/converters.d.ts.map +0 -1
- package/iana/jar/language-subtags/registry/converters.js +0 -58
- package/iana/jar/language-subtags/registry/index.d.ts +0 -4
- package/iana/jar/language-subtags/registry/index.d.ts.map +0 -1
- package/iana/jar/language-subtags/registry/model.d.ts.map +0 -1
- package/iana/jar/language-subtags/registry/model.js +0 -41
- package/iana/jar/language-subtags/tags/converters.d.ts +0 -55
- package/iana/jar/language-subtags/tags/converters.d.ts.map +0 -1
- package/iana/jar/language-subtags/tags/converters.js +0 -128
- package/iana/jar/language-subtags/tags/index.d.ts +0 -5
- package/iana/jar/language-subtags/tags/index.d.ts.map +0 -1
- package/iana/jar/language-subtags/tags/model.d.ts.map +0 -1
- package/iana/jar/language-subtags/tags/model.js +0 -24
- package/iana/jar/language-subtags/tags/tagValidation.d.ts.map +0 -1
- package/iana/jar/language-subtags/tags/tagValidation.js +0 -70
- package/iana/jar/language-subtags/tags/validate.d.ts.map +0 -1
- package/iana/jar/language-subtags/tags/validate.js +0 -87
- package/iana/jar/model.d.ts.map +0 -1
- package/iana/language-subtags/common.d.ts.map +0 -1
- package/iana/language-subtags/common.js +0 -24
- package/iana/language-subtags/converters.d.ts +0 -52
- package/iana/language-subtags/converters.d.ts.map +0 -1
- package/iana/language-subtags/converters.js +0 -200
- package/iana/language-subtags/index.d.ts.map +0 -1
- package/iana/language-subtags/jarConverters.d.ts.map +0 -1
- package/iana/language-subtags/jarConverters.js +0 -213
- package/iana/language-subtags/model.d.ts.map +0 -1
- package/iana/language-subtags/model.js +0 -24
- package/iana/language-subtags/scope.d.ts.map +0 -1
- package/iana/language-subtags/scope.js +0 -179
- package/iana/language-subtags/subtagRegistry.d.ts.map +0 -1
- package/iana/language-subtags/subtagRegistry.js +0 -149
- package/iana/language-subtags/validate.d.ts.map +0 -1
- package/iana/language-tag-extensions/converters.d.ts +0 -23
- package/iana/language-tag-extensions/converters.d.ts.map +0 -1
- package/iana/language-tag-extensions/converters.js +0 -87
- package/iana/language-tag-extensions/extensionsRegistry.d.ts.map +0 -1
- package/iana/language-tag-extensions/extensionsRegistry.js +0 -104
- package/iana/language-tag-extensions/extensionsScope.d.ts.map +0 -1
- package/iana/language-tag-extensions/extensionsScope.js +0 -77
- package/iana/language-tag-extensions/index.d.ts.map +0 -1
- package/iana/language-tag-extensions/jarConverters.d.ts.map +0 -1
- package/iana/language-tag-extensions/jarConverters.js +0 -102
- package/iana/language-tag-extensions/model.d.ts.map +0 -1
- package/iana/language-tag-extensions/model.js +0 -24
- package/iana/language-tag-extensions/validate.d.ts.map +0 -1
- package/iana/language-tag-extensions/validate.js +0 -36
- package/iana/languageRegistries.d.ts.map +0 -1
- package/iana/languageRegistries.js +0 -56
- package/iana/model.d.ts.map +0 -1
- package/iana/validate.d.ts.map +0 -1
- package/index.d.ts +0 -6
- package/index.d.ts.map +0 -1
- package/index.js +0 -56
- package/unsd/areas.d.ts +0 -29
- package/unsd/areas.d.ts.map +0 -1
- package/unsd/areas.js +0 -96
- package/unsd/common.d.ts +0 -49
- package/unsd/common.d.ts.map +0 -1
- package/unsd/common.js +0 -24
- package/unsd/csv/converters.d.ts.map +0 -1
- package/unsd/csv/converters.js +0 -70
- package/unsd/csv/index.d.ts +0 -4
- package/unsd/csv/index.d.ts.map +0 -1
- package/unsd/csv/model.d.ts +0 -22
- package/unsd/csv/model.d.ts.map +0 -1
- package/unsd/csv/model.js +0 -24
- package/unsd/defaultRegistries.d.ts.map +0 -1
- package/unsd/defaultRegistries.js +0 -42
- package/unsd/index.d.ts.map +0 -1
- package/unsd/index.js +0 -44
- package/unsd/regionCodes.d.ts.map +0 -1
- package/unsd/regionCodes.js +0 -121
- package/unsd/regions.d.ts +0 -21
- package/unsd/regions.d.ts.map +0 -1
- package/unsd/regions.js +0 -77
- package/utils/index.d.ts.map +0 -1
- package/utils/jsonHelpers.d.ts.map +0 -1
- package/utils/jsonHelpers.js +0 -29
- package/utils/public.d.ts +0 -2
- package/utils/public.d.ts.map +0 -1
- package/utils/public.js +0 -28
- package/utils/validationHelpers.d.ts.map +0 -1
- package/utils/validationHelpers.js +0 -120
- /package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/converters.d.ts +0 -0
- /package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/index.d.ts +0 -0
- /package/{bcp47 → lib/packlets/bcp47}/match/common.d.ts +0 -0
- /package/{bcp47 → lib/packlets/bcp47}/match/similarity.d.ts +0 -0
- /package/{bcp47 → lib/packlets/bcp47}/normalization/index.d.ts +0 -0
- /package/{bcp47 → lib/packlets/bcp47}/overrides/defaultRegistries.d.ts +0 -0
- /package/{bcp47 → lib/packlets/bcp47}/overrides/index.d.ts +0 -0
- /package/{bcp47 → lib/packlets/bcp47}/validation/index.d.ts +0 -0
- /package/{iana → lib/packlets/iana}/common/registeredItems.d.ts +0 -0
- /package/{iana → lib/packlets/iana}/common/utils.d.ts +0 -0
- /package/{iana → lib/packlets/iana}/converters.d.ts +0 -0
- /package/{iana → lib/packlets/iana}/defaultRegistries.d.ts +0 -0
- /package/{iana → lib/packlets/iana}/jar/converters.d.ts +0 -0
- /package/{iana → lib/packlets/iana}/jar/language-subtags/converters.d.ts +0 -0
- /package/{iana → lib/packlets/iana}/jar/language-subtags/model.d.ts +0 -0
- /package/{iana → lib/packlets/iana}/jar/language-subtags/registry/converters.d.ts +0 -0
- /package/{iana/jar/language-subtags → lib/packlets/iana/jar/language-subtags/registry}/index.d.ts +0 -0
- /package/{iana → lib/packlets/iana}/jar/language-subtags/tags/model.d.ts +0 -0
- /package/{iana → lib/packlets/iana}/jar/language-subtags/tags/tagValidation.d.ts +0 -0
- /package/{iana → lib/packlets/iana}/jar/language-subtags/tags/validate.d.ts +0 -0
- /package/{iana → lib/packlets/iana}/jar/model.d.ts +0 -0
- /package/{iana → lib/packlets/iana}/language-subtags/common.d.ts +0 -0
- /package/{iana → lib/packlets/iana}/language-subtags/validate.d.ts +0 -0
- /package/{iana → lib/packlets/iana}/languageRegistries.d.ts +0 -0
- /package/{iana → lib/packlets/iana}/model.d.ts +0 -0
- /package/{iana → lib/packlets/iana}/validate.d.ts +0 -0
- /package/{iana/jar → lib/packlets/unsd/csv}/index.d.ts +0 -0
- /package/{unsd → lib/packlets/unsd}/defaultRegistries.d.ts +0 -0
- /package/{utils → lib/packlets/utils}/index.d.ts +0 -0
- /package/{utils → lib/packlets/utils}/jsonHelpers.d.ts +0 -0
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* Copyright (c) 2022 Erik Fortune
|
|
4
|
-
*
|
|
5
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
* in the Software without restriction, including without limitation the rights
|
|
8
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
* furnished to do so, subject to the following conditions:
|
|
11
|
-
*
|
|
12
|
-
* The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
* copies or substantial portions of the Software.
|
|
14
|
-
*
|
|
15
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
* SOFTWARE.
|
|
22
|
-
*/
|
|
23
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
24
|
-
if (k2 === undefined) k2 = k;
|
|
25
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
26
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
27
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
28
|
-
}
|
|
29
|
-
Object.defineProperty(o, k2, desc);
|
|
30
|
-
}) : (function(o, m, k, k2) {
|
|
31
|
-
if (k2 === undefined) k2 = k;
|
|
32
|
-
o[k2] = m[k];
|
|
33
|
-
}));
|
|
34
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
35
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
36
|
-
}) : function(o, v) {
|
|
37
|
-
o["default"] = v;
|
|
38
|
-
});
|
|
39
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
40
|
-
if (mod && mod.__esModule) return mod;
|
|
41
|
-
var result = {};
|
|
42
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
43
|
-
__setModuleDefault(result, mod);
|
|
44
|
-
return result;
|
|
45
|
-
};
|
|
46
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
47
|
-
exports.LanguageSimilarityMatcher = void 0;
|
|
48
|
-
const Iana = __importStar(require("../../iana"));
|
|
49
|
-
const Unsd = __importStar(require("../../unsd"));
|
|
50
|
-
const overrides_1 = require("../overrides");
|
|
51
|
-
const common_1 = require("../common");
|
|
52
|
-
const common_2 = require("./common");
|
|
53
|
-
/**
|
|
54
|
-
* Helper to compare two language tags to determine how closely related they are,
|
|
55
|
-
* applying normalization and language semantics as appropriate.
|
|
56
|
-
* @public
|
|
57
|
-
*/
|
|
58
|
-
class LanguageSimilarityMatcher {
|
|
59
|
-
constructor(iana) {
|
|
60
|
-
// istanbul ignore next
|
|
61
|
-
this.iana = iana !== null && iana !== void 0 ? iana : Iana.DefaultRegistries.languageRegistries;
|
|
62
|
-
this.unsd = Unsd.DefaultRegistries.regionCodes;
|
|
63
|
-
this.overrides = overrides_1.DefaultRegistries.overridesRegistry;
|
|
64
|
-
}
|
|
65
|
-
matchLanguageTags(t1, t2) {
|
|
66
|
-
// no primary tag is either all private or grandfathered, which must match
|
|
67
|
-
// exactly.
|
|
68
|
-
if (!t1.subtags.primaryLanguage || !t2.subtags.primaryLanguage) {
|
|
69
|
-
return t1.toString().toLowerCase() === t2.toString().toLowerCase() ? common_2.tagSimilarity.exact : common_2.tagSimilarity.none;
|
|
70
|
-
}
|
|
71
|
-
let quality = this.matchPrimaryLanguage(t1, t2);
|
|
72
|
-
quality = quality > common_2.tagSimilarity.none ? Math.min(this.matchExtlang(t1, t2), quality) : quality;
|
|
73
|
-
quality = quality > common_2.tagSimilarity.none ? Math.min(this.matchScript(t1, t2), quality) : quality;
|
|
74
|
-
quality = quality > common_2.tagSimilarity.none ? Math.min(this.matchRegion(t1, t2), quality) : quality;
|
|
75
|
-
quality = quality > common_2.tagSimilarity.none ? Math.min(this.matchVariants(t1, t2), quality) : quality;
|
|
76
|
-
quality = quality > common_2.tagSimilarity.none ? Math.min(this.matchExtensions(t1, t2), quality) : quality;
|
|
77
|
-
quality = quality > common_2.tagSimilarity.none ? Math.min(this.matchPrivateUseTags(t1, t2), quality) : quality;
|
|
78
|
-
return quality;
|
|
79
|
-
}
|
|
80
|
-
matchPrimaryLanguage(lt1, lt2) {
|
|
81
|
-
var _a, _b;
|
|
82
|
-
// istanbul ignore next
|
|
83
|
-
const l1 = (_a = lt1.subtags.primaryLanguage) === null || _a === void 0 ? void 0 : _a.toLowerCase();
|
|
84
|
-
// istanbul ignore next
|
|
85
|
-
const l2 = (_b = lt2.subtags.primaryLanguage) === null || _b === void 0 ? void 0 : _b.toLowerCase();
|
|
86
|
-
if (l1 == l2) {
|
|
87
|
-
return common_2.tagSimilarity.exact;
|
|
88
|
-
}
|
|
89
|
-
if (lt1.isUndetermined || lt2.isUndetermined) {
|
|
90
|
-
return common_2.tagSimilarity.undetermined;
|
|
91
|
-
}
|
|
92
|
-
return common_2.tagSimilarity.none;
|
|
93
|
-
}
|
|
94
|
-
matchExtlang(lt1, lt2) {
|
|
95
|
-
var _a, _b;
|
|
96
|
-
if (((_a = lt1.subtags.extlangs) === null || _a === void 0 ? void 0 : _a.length) !== ((_b = lt2.subtags.extlangs) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
97
|
-
return common_2.tagSimilarity.none;
|
|
98
|
-
}
|
|
99
|
-
if (lt1.subtags.extlangs) {
|
|
100
|
-
for (let i = 0; i < lt1.subtags.extlangs.length; i++) {
|
|
101
|
-
if (lt1.subtags.extlangs[i].toLowerCase() !== lt2.subtags.extlangs[i].toLowerCase()) {
|
|
102
|
-
return common_2.tagSimilarity.none;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
return common_2.tagSimilarity.exact;
|
|
107
|
-
}
|
|
108
|
-
matchScript(lt1, lt2) {
|
|
109
|
-
var _a, _b;
|
|
110
|
-
const s1 = (_a = lt1.effectiveScript) === null || _a === void 0 ? void 0 : _a.toLowerCase();
|
|
111
|
-
const s2 = (_b = lt2.effectiveScript) === null || _b === void 0 ? void 0 : _b.toLowerCase();
|
|
112
|
-
if (s1 === s2) {
|
|
113
|
-
return common_2.tagSimilarity.exact;
|
|
114
|
-
}
|
|
115
|
-
if (lt1.isUndetermined || lt2.isUndetermined) {
|
|
116
|
-
return common_2.tagSimilarity.undetermined;
|
|
117
|
-
}
|
|
118
|
-
return common_2.tagSimilarity.none;
|
|
119
|
-
}
|
|
120
|
-
matchRegion(lt1, lt2) {
|
|
121
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
122
|
-
const r1 = (_a = lt1.subtags.region) === null || _a === void 0 ? void 0 : _a.toUpperCase();
|
|
123
|
-
const r2 = (_b = lt2.subtags.region) === null || _b === void 0 ? void 0 : _b.toUpperCase();
|
|
124
|
-
if (r1 === r2) {
|
|
125
|
-
return common_2.tagSimilarity.exact;
|
|
126
|
-
}
|
|
127
|
-
// region 001 is equivalent to neutral (no region)
|
|
128
|
-
if (r1 === common_1.GlobalRegion || r2 === common_1.GlobalRegion) {
|
|
129
|
-
// if one tag is 001 and the other in neutral, exact match
|
|
130
|
-
// otherwise, one tag is 001 so neutral region match
|
|
131
|
-
return !r1 || !r2 ? common_2.tagSimilarity.exact : common_2.tagSimilarity.neutralRegion;
|
|
132
|
-
}
|
|
133
|
-
if (!r1 || !r2) {
|
|
134
|
-
return common_2.tagSimilarity.neutralRegion;
|
|
135
|
-
}
|
|
136
|
-
// macro-region match
|
|
137
|
-
const r1IsMacroRegion = Iana.Validate.unM49RegionCode.isWellFormed(r1);
|
|
138
|
-
const r2IsMacroRegion = Iana.Validate.unM49RegionCode.isWellFormed(r2);
|
|
139
|
-
if (r1IsMacroRegion || r2IsMacroRegion) {
|
|
140
|
-
let contained;
|
|
141
|
-
let container;
|
|
142
|
-
if (r1IsMacroRegion) {
|
|
143
|
-
container = this.unsd.regions.tryGetRegion(r1);
|
|
144
|
-
contained =
|
|
145
|
-
(_c = this.unsd.areas.tryGetAlpha2Area(r2)) !== null && _c !== void 0 ? _c : this.unsd.tryGetRegionOrArea(r2);
|
|
146
|
-
}
|
|
147
|
-
else {
|
|
148
|
-
container = this.unsd.regions.tryGetRegion(r2);
|
|
149
|
-
contained = this.unsd.areas.tryGetAlpha2Area(r1);
|
|
150
|
-
}
|
|
151
|
-
if (container && contained) {
|
|
152
|
-
if (this.unsd.getIsContained(container, contained)) {
|
|
153
|
-
return common_2.tagSimilarity.macroRegion;
|
|
154
|
-
}
|
|
155
|
-
// if they're both regions, also check to see if the second region contains the
|
|
156
|
-
// first
|
|
157
|
-
if (contained.tier !== 'area' && this.unsd.getIsContained(contained, container)) {
|
|
158
|
-
return common_2.tagSimilarity.macroRegion;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
// istanbul ignore next
|
|
163
|
-
const o1 = this.overrides.overrides.get((_d = lt1.subtags.primaryLanguage) === null || _d === void 0 ? void 0 : _d.toLowerCase());
|
|
164
|
-
// istanbul ignore next
|
|
165
|
-
const o2 = this.overrides.overrides.get((_e = lt2.subtags.primaryLanguage) === null || _e === void 0 ? void 0 : _e.toLowerCase());
|
|
166
|
-
// orthographic affinity
|
|
167
|
-
if (o1 && o2) {
|
|
168
|
-
// istanbul ignore next
|
|
169
|
-
const a1 = (_g = (_f = o1.affinity) === null || _f === void 0 ? void 0 : _f.get(r1)) !== null && _g !== void 0 ? _g : o1.defaultAffinity;
|
|
170
|
-
// istanbul ignore next
|
|
171
|
-
const a2 = (_j = (_h = o2.affinity) === null || _h === void 0 ? void 0 : _h.get(r2)) !== null && _j !== void 0 ? _j : o2.defaultAffinity;
|
|
172
|
-
if (a1 && a2 && a1 === a2) {
|
|
173
|
-
if (r1 === a1.toUpperCase() || r2 === a2.toUpperCase()) {
|
|
174
|
-
return common_2.tagSimilarity.preferredAffinity;
|
|
175
|
-
}
|
|
176
|
-
return common_2.tagSimilarity.affinity;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
// preferred region
|
|
180
|
-
if ((o1 === null || o1 === void 0 ? void 0 : o1.preferredRegion) === r1 || (o2 === null || o2 === void 0 ? void 0 : o2.preferredRegion) === r2) {
|
|
181
|
-
return common_2.tagSimilarity.preferredRegion;
|
|
182
|
-
}
|
|
183
|
-
return common_2.tagSimilarity.sibling;
|
|
184
|
-
}
|
|
185
|
-
matchVariants(lt1, lt2) {
|
|
186
|
-
var _a, _b;
|
|
187
|
-
if (((_a = lt1.subtags.variants) === null || _a === void 0 ? void 0 : _a.length) !== ((_b = lt2.subtags.variants) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
188
|
-
return common_2.tagSimilarity.region;
|
|
189
|
-
}
|
|
190
|
-
if (lt1.subtags.variants) {
|
|
191
|
-
for (let i = 0; i < lt1.subtags.variants.length; i++) {
|
|
192
|
-
if (lt1.subtags.variants[i].toLowerCase() !== lt2.subtags.variants[i].toLowerCase()) {
|
|
193
|
-
return common_2.tagSimilarity.region;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
return common_2.tagSimilarity.exact;
|
|
198
|
-
}
|
|
199
|
-
matchExtensions(lt1, lt2) {
|
|
200
|
-
var _a, _b;
|
|
201
|
-
if (((_a = lt1.subtags.extensions) === null || _a === void 0 ? void 0 : _a.length) !== ((_b = lt2.subtags.extensions) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
202
|
-
return common_2.tagSimilarity.variant;
|
|
203
|
-
}
|
|
204
|
-
if (lt1.subtags.extensions) {
|
|
205
|
-
for (let i = 0; i < lt1.subtags.extensions.length; i++) {
|
|
206
|
-
if (lt1.subtags.extensions[i].singleton.toLowerCase() !== lt2.subtags.extensions[i].singleton.toLowerCase() ||
|
|
207
|
-
lt1.subtags.extensions[i].value.toLowerCase() !== lt2.subtags.extensions[i].value.toLowerCase()) {
|
|
208
|
-
return common_2.tagSimilarity.variant;
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
return common_2.tagSimilarity.exact;
|
|
213
|
-
}
|
|
214
|
-
matchPrivateUseTags(lt1, lt2) {
|
|
215
|
-
var _a, _b;
|
|
216
|
-
if (((_a = lt1.subtags.privateUse) === null || _a === void 0 ? void 0 : _a.length) !== ((_b = lt2.subtags.privateUse) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
217
|
-
return common_2.tagSimilarity.variant;
|
|
218
|
-
}
|
|
219
|
-
if (lt1.subtags.privateUse) {
|
|
220
|
-
for (let i = 0; i < lt1.subtags.privateUse.length; i++) {
|
|
221
|
-
if (lt1.subtags.privateUse[i].toLowerCase() !== lt2.subtags.privateUse[i].toLowerCase()) {
|
|
222
|
-
return common_2.tagSimilarity.variant;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
return common_2.tagSimilarity.exact;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
exports.LanguageSimilarityMatcher = LanguageSimilarityMatcher;
|
|
230
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltaWxhcml0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iY3A0Ny9tYXRjaC9zaW1pbGFyaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsaURBQW1DO0FBQ25DLGlEQUFtQztBQUVuQyw0Q0FBb0U7QUFJcEUsc0NBQXlDO0FBRXpDLHFDQUF5QztBQUV6Qzs7OztHQUlHO0FBQ0gsTUFBYSx5QkFBeUI7SUFLbEMsWUFBbUIsSUFBOEI7UUFDN0MsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxhQUFKLElBQUksY0FBSixJQUFJLEdBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDO1FBQzlELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQztRQUMvQyxJQUFJLENBQUMsU0FBUyxHQUFHLDZCQUFpQixDQUFDLGlCQUFpQixDQUFDO0lBQ3pELENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxFQUFlLEVBQUUsRUFBZTtRQUNyRCwwRUFBMEU7UUFDMUUsV0FBVztRQUNYLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFO1lBQzVELE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsc0JBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHNCQUFhLENBQUMsSUFBSSxDQUFDO1NBQ2pIO1FBRUQsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoRCxPQUFPLEdBQUcsT0FB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QUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO29CQUN0RixPQUFPLHNCQUFhLENBQUMsT0FBTyxDQUFDO2lCQUNoQzthQUNKO1NBQ0o7UUFFRCxPQUFPLHNCQUFhLENBQUMsS0FBSyxDQUFDO0lBQy9CLENBQUM7Q0FDSjtBQTFNRCw4REEwTUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0ICogYXMgSWFuYSBmcm9tICcuLi8uLi9pYW5hJztcbmltcG9ydCAqIGFzIFVuc2QgZnJvbSAnLi4vLi4vdW5zZCc7XG5cbmltcG9ydCB7IERlZmF1bHRSZWdpc3RyaWVzLCBPdmVycmlkZXNSZWdpc3RyeSB9IGZyb20gJy4uL292ZXJyaWRlcyc7XG5pbXBvcnQgeyBJc29BbHBoYTJSZWdpb25Db2RlLCBVbk00OVJlZ2lvbkNvZGUgfSBmcm9tICcuLi8uLi9pYW5hL21vZGVsJztcbmltcG9ydCB7IExhbmd1YWdlU3VidGFnLCBSZWdpb25TdWJ0YWcgfSBmcm9tICcuLi8uLi9pYW5hL2xhbmd1YWdlLXN1YnRhZ3MnO1xuXG5pbXBvcnQgeyBHbG9iYWxSZWdpb24gfSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgTGFuZ3VhZ2VUYWcgfSBmcm9tICcuLi9sYW5ndWFnZVRhZyc7XG5pbXBvcnQgeyB0YWdTaW1pbGFyaXR5IH0gZnJvbSAnLi9jb21tb24nO1xuXG4vKipcbiAqIEhlbHBlciB0byBjb21wYXJlIHR3byBsYW5ndWFnZSB0YWdzIHRvIGRldGVybWluZSBob3cgY2xvc2VseSByZWxhdGVkIHRoZXkgYXJlLFxuICogYXBwbHlpbmcgbm9ybWFsaXphdGlvbiBhbmQgbGFuZ3VhZ2Ugc2VtYW50aWNzIGFzIGFwcHJvcHJpYXRlLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VTaW1pbGFyaXR5TWF0Y2hlciB7XG4gICAgcHVibGljIGlhbmE6IElhbmEuTGFuZ3VhZ2VSZWdpc3RyaWVzO1xuICAgIHB1YmxpYyB1bnNkOiBVbnNkLlJlZ2lvbkNvZGVzO1xuICAgIHB1YmxpYyBvdmVycmlkZXM6IE92ZXJyaWRlc1JlZ2lzdHJ5O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGlhbmE/OiBJYW5hLkxhbmd1YWdlUmVnaXN0cmllcykge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICB0aGlzLmlhbmEgPSBpYW5hID8/IElhbmEuRGVmYXVsdFJlZ2lzdHJpZXMubGFuZ3VhZ2VSZWdpc3RyaWVzO1xuICAgICAgICB0aGlzLnVuc2QgPSBVbnNkLkRlZmF1bHRSZWdpc3RyaWVzLnJlZ2lvbkNvZGVzO1xuICAgICAgICB0aGlzLm92ZXJyaWRlcyA9IERlZmF1bHRSZWdpc3RyaWVzLm92ZXJyaWRlc1JlZ2lzdHJ5O1xuICAgIH1cblxuICAgIHB1YmxpYyBtYXRjaExhbmd1YWdlVGFncyh0MTogTGFuZ3VhZ2VUYWcsIHQyOiBMYW5ndWFnZVRhZyk6IG51bWJlciB7XG4gICAgICAgIC8vIG5vIHByaW1hcnkgdGFnIGlzIGVpdGhlciBhbGwgcHJpdmF0ZSBvciBncmFuZGZhdGhlcmVkLCB3aGljaCBtdXN0IG1hdGNoXG4gICAgICAgIC8vIGV4YWN0bHkuXG4gICAgICAgIGlmICghdDEuc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UgfHwgIXQyLnN1YnRhZ3MucHJpbWFyeUxhbmd1YWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gdDEudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSB0Mi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPyB0YWdTaW1pbGFyaXR5LmV4YWN0IDogdGFnU2ltaWxhcml0eS5ub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHF1YWxpdHkgPSB0aGlzLm1hdGNoUHJpbWFyeUxhbmd1YWdlKHQxLCB0Mik7XG4gICAgICAgIHF1YWxpdHkgPSBxdWFsaXR5ID4gdGFnU2ltaWxhcml0eS5ub25lID8gTWF0aC5taW4odGhpcy5tYXRjaEV4dGxhbmcodDEsIHQyKSwgcXVhbGl0eSkgOiBxdWFsaXR5O1xuICAgICAgICBxdWFsaXR5ID0gcXVhbGl0eSA+IHRhZ1NpbWlsYXJpdHkubm9uZSA/IE1hdGgubWluKHRoaXMubWF0Y2hTY3JpcHQodDEsIHQyKSwgcXVhbGl0eSkgOiBxdWFsaXR5O1xuICAgICAgICBxdWFsaXR5ID0gcXVhbGl0eSA+IHRhZ1NpbWlsYXJpdHkubm9uZSA/IE1hdGgubWluKHRoaXMubWF0Y2hSZWdpb24odDEsIHQyKSwgcXVhbGl0eSkgOiBxdWFsaXR5O1xuICAgICAgICBxdWFsaXR5ID0gcXVhbGl0eSA+IHRhZ1NpbWlsYXJpdHkubm9uZSA/IE1hdGgubWluKHRoaXMubWF0Y2hWYXJpYW50cyh0MSwgdDIpLCBxdWFsaXR5KSA6IHF1YWxpdHk7XG4gICAgICAgIHF1YWxpdHkgPSBxdWFsaXR5ID4gdGFnU2ltaWxhcml0eS5ub25lID8gTWF0aC5taW4odGhpcy5tYXRjaEV4dGVuc2lvbnModDEsIHQyKSwgcXVhbGl0eSkgOiBxdWFsaXR5O1xuICAgICAgICBxdWFsaXR5ID0gcXVhbGl0eSA+IHRhZ1NpbWlsYXJpdHkubm9uZSA/IE1hdGgubWluKHRoaXMubWF0Y2hQcml2YXRlVXNlVGFncyh0MSwgdDIpLCBxdWFsaXR5KSA6IHF1YWxpdHk7XG5cbiAgICAgICAgcmV0dXJuIHF1YWxpdHk7XG4gICAgfVxuXG4gICAgcHVibGljIG1hdGNoUHJpbWFyeUxhbmd1YWdlKGx0MTogTGFuZ3VhZ2VUYWcsIGx0MjogTGFuZ3VhZ2VUYWcpOiBudW1iZXIge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBjb25zdCBsMSA9IGx0MS5zdWJ0YWdzLnByaW1hcnlMYW5ndWFnZT8udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgY29uc3QgbDIgPSBsdDIuc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2U/LnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgaWYgKGwxID09IGwyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGFnU2ltaWxhcml0eS5leGFjdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsdDEuaXNVbmRldGVybWluZWQgfHwgbHQyLmlzVW5kZXRlcm1pbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGFnU2ltaWxhcml0eS51bmRldGVybWluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGFnU2ltaWxhcml0eS5ub25lO1xuICAgIH1cblxuICAgIHB1YmxpYyBtYXRjaEV4dGxhbmcobHQxOiBMYW5ndWFnZVRhZywgbHQyOiBMYW5ndWFnZVRhZyk6IG51bWJlciB7XG4gICAgICAgIGlmIChsdDEuc3VidGFncy5leHRsYW5ncz8ubGVuZ3RoICE9PSBsdDIuc3VidGFncy5leHRsYW5ncz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGFnU2ltaWxhcml0eS5ub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGx0MS5zdWJ0YWdzLmV4dGxhbmdzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGx0MS5zdWJ0YWdzLmV4dGxhbmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGx0MS5zdWJ0YWdzLmV4dGxhbmdzW2ldLnRvTG93ZXJDYXNlKCkgIT09IGx0Mi5zdWJ0YWdzLmV4dGxhbmdzIVtpXS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0YWdTaW1pbGFyaXR5Lm5vbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRhZ1NpbWlsYXJpdHkuZXhhY3Q7XG4gICAgfVxuXG4gICAgcHVibGljIG1hdGNoU2NyaXB0KGx0MTogTGFuZ3VhZ2VUYWcsIGx0MjogTGFuZ3VhZ2VUYWcpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBzMSA9IGx0MS5lZmZlY3RpdmVTY3JpcHQ/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IHMyID0gbHQyLmVmZmVjdGl2ZVNjcmlwdD8udG9Mb3dlckNhc2UoKTtcblxuICAgICAgICBpZiAoczEgPT09IHMyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGFnU2ltaWxhcml0eS5leGFjdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsdDEuaXNVbmRldGVybWluZWQgfHwgbHQyLmlzVW5kZXRlcm1pbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGFnU2ltaWxhcml0eS51bmRldGVybWluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGFnU2ltaWxhcml0eS5ub25lO1xuICAgIH1cblxuICAgIHB1YmxpYyBtYXRjaFJlZ2lvbihsdDE6IExhbmd1YWdlVGFnLCBsdDI6IExhbmd1YWdlVGFnKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgcjEgPSBsdDEuc3VidGFncy5yZWdpb24/LnRvVXBwZXJDYXNlKCkgYXMgUmVnaW9uU3VidGFnO1xuICAgICAgICBjb25zdCByMiA9IGx0Mi5zdWJ0YWdzLnJlZ2lvbj8udG9VcHBlckNhc2UoKSBhcyBSZWdpb25TdWJ0YWc7XG5cbiAgICAgICAgaWYgKHIxID09PSByMikge1xuICAgICAgICAgICAgcmV0dXJuIHRhZ1NpbWlsYXJpdHkuZXhhY3Q7XG4gICAgICAgIH1cblxuICAgICAgICAvLyByZWdpb24gMDAxIGlzIGVxdWl2YWxlbnQgdG8gbmV1dHJhbCAobm8gcmVnaW9uKVxuICAgICAgICBpZiAocjEgPT09IEdsb2JhbFJlZ2lvbiB8fCByMiA9PT0gR2xvYmFsUmVnaW9uKSB7XG4gICAgICAgICAgICAvLyBpZiBvbmUgdGFnIGlzIDAwMSBhbmQgdGhlIG90aGVyIGluIG5ldXRyYWwsIGV4YWN0IG1hdGNoXG4gICAgICAgICAgICAvLyBvdGhlcndpc2UsIG9uZSB0YWcgaXMgMDAxIHNvIG5ldXRyYWwgcmVnaW9uIG1hdGNoXG4gICAgICAgICAgICByZXR1cm4gIXIxIHx8ICFyMiA/IHRhZ1NpbWlsYXJpdHkuZXhhY3QgOiB0YWdTaW1pbGFyaXR5Lm5ldXRyYWxSZWdpb247XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXIxIHx8ICFyMikge1xuICAgICAgICAgICAgcmV0dXJuIHRhZ1NpbWlsYXJpdHkubmV1dHJhbFJlZ2lvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIG1hY3JvLXJlZ2lvbiBtYXRjaFxuICAgICAgICBjb25zdCByMUlzTWFjcm9SZWdpb24gPSBJYW5hLlZhbGlkYXRlLnVuTTQ5UmVnaW9uQ29kZS5pc1dlbGxGb3JtZWQocjEpO1xuICAgICAgICBjb25zdCByMklzTWFjcm9SZWdpb24gPSBJYW5hLlZhbGlkYXRlLnVuTTQ5UmVnaW9uQ29kZS5pc1dlbGxGb3JtZWQocjIpO1xuICAgICAgICBpZiAocjFJc01hY3JvUmVnaW9uIHx8IHIySXNNYWNyb1JlZ2lvbikge1xuICAgICAgICAgICAgbGV0IGNvbnRhaW5lZDogVW5zZC5Db3VudHJ5T3JBcmVhIHwgVW5zZC5SZWdpb24gfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICBsZXQgY29udGFpbmVyOiBVbnNkLlJlZ2lvbiB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChyMUlzTWFjcm9SZWdpb24pIHtcbiAgICAgICAgICAgICAgICBjb250YWluZXIgPSB0aGlzLnVuc2QucmVnaW9ucy50cnlHZXRSZWdpb24ocjEgYXMgdW5rbm93biBhcyBVbk00OVJlZ2lvbkNvZGUpO1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lZCA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudW5zZC5hcmVhcy50cnlHZXRBbHBoYTJBcmVhKHIyIGFzIHVua25vd24gYXMgSXNvQWxwaGEyUmVnaW9uQ29kZSkgPz9cbiAgICAgICAgICAgICAgICAgICAgdGhpcy51bnNkLnRyeUdldFJlZ2lvbk9yQXJlYShyMiBhcyB1bmtub3duIGFzIFVuTTQ5UmVnaW9uQ29kZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lciA9IHRoaXMudW5zZC5yZWdpb25zLnRyeUdldFJlZ2lvbihyMiBhcyB1bmtub3duIGFzIFVuTTQ5UmVnaW9uQ29kZSk7XG4gICAgICAgICAgICAgICAgY29udGFpbmVkID0gdGhpcy51bnNkLmFyZWFzLnRyeUdldEFscGhhMkFyZWEocjEgYXMgdW5rbm93biBhcyBJc29BbHBoYTJSZWdpb25Db2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb250YWluZXIgJiYgY29udGFpbmVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudW5zZC5nZXRJc0NvbnRhaW5lZChjb250YWluZXIsIGNvbnRhaW5lZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhZ1NpbWlsYXJpdHkubWFjcm9SZWdpb247XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gaWYgdGhleSdyZSBib3RoIHJlZ2lvbnMsIGFsc28gY2hlY2sgdG8gc2VlIGlmIHRoZSBzZWNvbmQgcmVnaW9uIGNvbnRhaW5zIHRoZVxuICAgICAgICAgICAgICAgIC8vIGZpcnN0XG4gICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lZC50aWVyICE9PSAnYXJlYScgJiYgdGhpcy51bnNkLmdldElzQ29udGFpbmVkKGNvbnRhaW5lZCwgY29udGFpbmVyKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFnU2ltaWxhcml0eS5tYWNyb1JlZ2lvbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBjb25zdCBvMSA9IHRoaXMub3ZlcnJpZGVzLm92ZXJyaWRlcy5nZXQobHQxLnN1YnRhZ3MucHJpbWFyeUxhbmd1YWdlPy50b0xvd2VyQ2FzZSgpIGFzIExhbmd1YWdlU3VidGFnKTtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgY29uc3QgbzIgPSB0aGlzLm92ZXJyaWRlcy5vdmVycmlkZXMuZ2V0KGx0Mi5zdWJ0YWdzLnByaW1hcnlMYW5ndWFnZT8udG9Mb3dlckNhc2UoKSBhcyBMYW5ndWFnZVN1YnRhZyk7XG5cbiAgICAgICAgLy8gb3J0aG9ncmFwaGljIGFmZmluaXR5XG4gICAgICAgIGlmIChvMSAmJiBvMikge1xuICAgICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgICAgIGNvbnN0IGExID0gbzEuYWZmaW5pdHk/LmdldChyMSkgPz8gbzEuZGVmYXVsdEFmZmluaXR5O1xuICAgICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgICAgIGNvbnN0IGEyID0gbzIuYWZmaW5pdHk/LmdldChyMikgPz8gbzIuZGVmYXVsdEFmZmluaXR5O1xuICAgICAgICAgICAgaWYgKGExICYmIGEyICYmIGExID09PSBhMikge1xuICAgICAgICAgICAgICAgIGlmIChyMSA9PT0gYTEudG9VcHBlckNhc2UoKSB8fCByMiA9PT0gYTIudG9VcHBlckNhc2UoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFnU2ltaWxhcml0eS5wcmVmZXJyZWRBZmZpbml0eTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhZ1NpbWlsYXJpdHkuYWZmaW5pdHk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBwcmVmZXJyZWQgcmVnaW9uXG4gICAgICAgIGlmIChvMT8ucHJlZmVycmVkUmVnaW9uID09PSByMSB8fCBvMj8ucHJlZmVycmVkUmVnaW9uID09PSByMikge1xuICAgICAgICAgICAgcmV0dXJuIHRhZ1NpbWlsYXJpdHkucHJlZmVycmVkUmVnaW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRhZ1NpbWlsYXJpdHkuc2libGluZztcbiAgICB9XG5cbiAgICBwdWJsaWMgbWF0Y2hWYXJpYW50cyhsdDE6IExhbmd1YWdlVGFnLCBsdDI6IExhbmd1YWdlVGFnKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKGx0MS5zdWJ0YWdzLnZhcmlhbnRzPy5sZW5ndGggIT09IGx0Mi5zdWJ0YWdzLnZhcmlhbnRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0YWdTaW1pbGFyaXR5LnJlZ2lvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsdDEuc3VidGFncy52YXJpYW50cykge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsdDEuc3VidGFncy52YXJpYW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChsdDEuc3VidGFncy52YXJpYW50c1tpXS50b0xvd2VyQ2FzZSgpICE9PSBsdDIuc3VidGFncy52YXJpYW50cyFbaV0udG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFnU2ltaWxhcml0eS5yZWdpb247XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRhZ1NpbWlsYXJpdHkuZXhhY3Q7XG4gICAgfVxuXG4gICAgcHVibGljIG1hdGNoRXh0ZW5zaW9ucyhsdDE6IExhbmd1YWdlVGFnLCBsdDI6IExhbmd1YWdlVGFnKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKGx0MS5zdWJ0YWdzLmV4dGVuc2lvbnM/Lmxlbmd0aCAhPT0gbHQyLnN1YnRhZ3MuZXh0ZW5zaW9ucz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGFnU2ltaWxhcml0eS52YXJpYW50O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGx0MS5zdWJ0YWdzLmV4dGVuc2lvbnMpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbHQxLnN1YnRhZ3MuZXh0ZW5zaW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgbHQxLnN1YnRhZ3MuZXh0ZW5zaW9uc1tpXS5zaW5nbGV0b24udG9Mb3dlckNhc2UoKSAhPT0gbHQyLnN1YnRhZ3MuZXh0ZW5zaW9ucyFbaV0uc2luZ2xldG9uLnRvTG93ZXJDYXNlKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgbHQxLnN1YnRhZ3MuZXh0ZW5zaW9uc1tpXS52YWx1ZS50b0xvd2VyQ2FzZSgpICE9PSBsdDIuc3VidGFncy5leHRlbnNpb25zIVtpXS52YWx1ZS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0YWdTaW1pbGFyaXR5LnZhcmlhbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRhZ1NpbWlsYXJpdHkuZXhhY3Q7XG4gICAgfVxuXG4gICAgcHVibGljIG1hdGNoUHJpdmF0ZVVzZVRhZ3MobHQxOiBMYW5ndWFnZVRhZywgbHQyOiBMYW5ndWFnZVRhZyk6IG51bWJlciB7XG4gICAgICAgIGlmIChsdDEuc3VidGFncy5wcml2YXRlVXNlPy5sZW5ndGggIT09IGx0Mi5zdWJ0YWdzLnByaXZhdGVVc2U/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRhZ1NpbWlsYXJpdHkudmFyaWFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsdDEuc3VidGFncy5wcml2YXRlVXNlKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGx0MS5zdWJ0YWdzLnByaXZhdGVVc2UubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAobHQxLnN1YnRhZ3MucHJpdmF0ZVVzZVtpXS50b0xvd2VyQ2FzZSgpICE9PSBsdDIuc3VidGFncy5wcml2YXRlVXNlIVtpXS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0YWdTaW1pbGFyaXR5LnZhcmlhbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRhZ1NpbWlsYXJpdHkuZXhhY3Q7XG4gICAgfVxufVxuIl19
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import * as Iana from '../../iana';
|
|
2
|
-
import { ExtLangSubtag, ExtendedLanguageRange, GrandfatheredTag, LanguageSubtag, RegionSubtag, ScriptSubtag, VariantSubtag } from '../../iana/language-subtags';
|
|
3
|
-
import { ExtensionSingleton, ExtensionSubtag } from '../bcp47Subtags/model';
|
|
4
|
-
import { ExtensionSubtagValue, Subtags } from '../common';
|
|
5
|
-
import { Result } from '@fgv/ts-utils';
|
|
6
|
-
import { TagNormalization } from './common';
|
|
7
|
-
/**
|
|
8
|
-
* @public
|
|
9
|
-
*/
|
|
10
|
-
export interface TagNormalizer {
|
|
11
|
-
readonly normalization: TagNormalization;
|
|
12
|
-
processSubtags(subtags: Subtags): Result<Subtags>;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* @public
|
|
16
|
-
*/
|
|
17
|
-
export declare abstract class TagNormalizerBase {
|
|
18
|
-
protected readonly _iana: Iana.LanguageRegistries;
|
|
19
|
-
abstract readonly normalization: TagNormalization;
|
|
20
|
-
constructor(iana?: Iana.LanguageRegistries);
|
|
21
|
-
processSubtags(subtags: Subtags): Result<Subtags>;
|
|
22
|
-
protected _basicPostValidation(subtags: Subtags): Result<Subtags>;
|
|
23
|
-
protected _postValidate(subtags: Subtags): Result<Subtags>;
|
|
24
|
-
protected _processExtensions(subtags: Subtags): Result<ExtensionSubtagValue[] | undefined>;
|
|
25
|
-
protected _verifyUnique<T, TK extends string>(description: string, items: T[] | undefined, getKey: (item: T) => TK): Result<T[] | undefined>;
|
|
26
|
-
protected abstract _processLanguage(subtags: Subtags): Result<LanguageSubtag | undefined>;
|
|
27
|
-
protected abstract _processExtlangs(subtags: Subtags): Result<ExtLangSubtag[] | undefined>;
|
|
28
|
-
protected abstract _processScript(subtags: Subtags): Result<ScriptSubtag | undefined>;
|
|
29
|
-
protected abstract _processRegion(subtags: Subtags): Result<RegionSubtag | undefined>;
|
|
30
|
-
protected abstract _processVariants(subtags: Subtags): Result<VariantSubtag[] | undefined>;
|
|
31
|
-
protected abstract _processExtensionSingleton(singleton: ExtensionSingleton): Result<ExtensionSingleton>;
|
|
32
|
-
protected abstract _processExtensionSubtagValue(value: ExtensionSubtag): Result<ExtensionSubtag>;
|
|
33
|
-
protected abstract _processPrivateUseTags(subtags: Subtags): Result<ExtendedLanguageRange[] | undefined>;
|
|
34
|
-
protected abstract _processGrandfatheredTags(subtags: Subtags): Result<GrandfatheredTag | undefined>;
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=baseNormalizer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"baseNormalizer.d.ts","sourceRoot":"","sources":["../../../src/bcp47/normalization/baseNormalizer.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,OAAO,EACH,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,aAAa,EAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAmB,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAyD,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,aAAa,EAAE,gBAAgB,CAAC;IAEzC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;CACrD;AAED;;GAEG;AACH,8BAAsB,iBAAiB;IACnC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC;IAElD,kBAAyB,aAAa,EAAE,gBAAgB,CAAC;gBAEtC,IAAI,CAAC,EAAE,IAAI,CAAC,kBAAkB;IAK1C,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAkBxD,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAajE,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAI1D,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,oBAAoB,EAAE,GAAG,SAAS,CAAC;IAc1F,SAAS,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,SAAS,MAAM,EACxC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,CAAC,EAAE,GAAG,SAAS,EACtB,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,GACxB,MAAM,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC;IAkB1B,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,cAAc,GAAG,SAAS,CAAC;IACzF,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC;IAC1F,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC;IACrF,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC;IACrF,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC;IAC1F,SAAS,CAAC,QAAQ,CAAC,0BAA0B,CAAC,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;IACxG,SAAS,CAAC,QAAQ,CAAC,4BAA4B,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;IAChG,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,qBAAqB,EAAE,GAAG,SAAS,CAAC;IACxG,SAAS,CAAC,QAAQ,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,gBAAgB,GAAG,SAAS,CAAC;CACvG"}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* Copyright (c) 2022 Erik Fortune
|
|
4
|
-
*
|
|
5
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
* in the Software without restriction, including without limitation the rights
|
|
8
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
* furnished to do so, subject to the following conditions:
|
|
11
|
-
*
|
|
12
|
-
* The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
* copies or substantial portions of the Software.
|
|
14
|
-
*
|
|
15
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
* SOFTWARE.
|
|
22
|
-
*/
|
|
23
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
24
|
-
if (k2 === undefined) k2 = k;
|
|
25
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
26
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
27
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
28
|
-
}
|
|
29
|
-
Object.defineProperty(o, k2, desc);
|
|
30
|
-
}) : (function(o, m, k, k2) {
|
|
31
|
-
if (k2 === undefined) k2 = k;
|
|
32
|
-
o[k2] = m[k];
|
|
33
|
-
}));
|
|
34
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
35
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
36
|
-
}) : function(o, v) {
|
|
37
|
-
o["default"] = v;
|
|
38
|
-
});
|
|
39
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
40
|
-
if (mod && mod.__esModule) return mod;
|
|
41
|
-
var result = {};
|
|
42
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
43
|
-
__setModuleDefault(result, mod);
|
|
44
|
-
return result;
|
|
45
|
-
};
|
|
46
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
47
|
-
exports.TagNormalizerBase = void 0;
|
|
48
|
-
const Iana = __importStar(require("../../iana"));
|
|
49
|
-
const common_1 = require("../common");
|
|
50
|
-
const ts_utils_1 = require("@fgv/ts-utils");
|
|
51
|
-
/**
|
|
52
|
-
* @public
|
|
53
|
-
*/
|
|
54
|
-
class TagNormalizerBase {
|
|
55
|
-
constructor(iana) {
|
|
56
|
-
// istanbul ignore next - dependency injection primarily for test
|
|
57
|
-
this._iana = iana !== null && iana !== void 0 ? iana : Iana.DefaultRegistries.languageRegistries;
|
|
58
|
-
}
|
|
59
|
-
processSubtags(subtags) {
|
|
60
|
-
return (0, ts_utils_1.populateObject)({
|
|
61
|
-
primaryLanguage: () => this._processLanguage(subtags),
|
|
62
|
-
extlangs: () => this._processExtlangs(subtags),
|
|
63
|
-
script: () => this._processScript(subtags),
|
|
64
|
-
region: () => this._processRegion(subtags),
|
|
65
|
-
variants: () => this._processVariants(subtags),
|
|
66
|
-
extensions: () => this._processExtensions(subtags),
|
|
67
|
-
privateUse: () => this._processPrivateUseTags(subtags),
|
|
68
|
-
grandfathered: () => this._processGrandfatheredTags(subtags),
|
|
69
|
-
}, { suppressUndefined: true }).onSuccess((processed) => {
|
|
70
|
-
return this._postValidate(processed);
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
_basicPostValidation(subtags) {
|
|
74
|
-
// istanbul ignore next - any validation whatsoever catches these so should never happen in practice
|
|
75
|
-
if (subtags.primaryLanguage === undefined && subtags.grandfathered === undefined && subtags.privateUse === undefined) {
|
|
76
|
-
return (0, ts_utils_1.fail)(`${(0, common_1.subtagsToString)(subtags)}: missing primary language subtag.`);
|
|
77
|
-
}
|
|
78
|
-
// istanbul ignore next - any validation whatsoever catches these so should never happen in practice
|
|
79
|
-
if (subtags.extlangs && subtags.extlangs.length > 3) {
|
|
80
|
-
return (0, ts_utils_1.fail)(`${(0, common_1.subtagsToString)(subtags)}: too many extlang subtags`);
|
|
81
|
-
}
|
|
82
|
-
return (0, ts_utils_1.succeed)(subtags);
|
|
83
|
-
}
|
|
84
|
-
_postValidate(subtags) {
|
|
85
|
-
return this._basicPostValidation(subtags);
|
|
86
|
-
}
|
|
87
|
-
_processExtensions(subtags) {
|
|
88
|
-
if (subtags.extensions) {
|
|
89
|
-
return (0, ts_utils_1.mapResults)(subtags.extensions.map((ex) => {
|
|
90
|
-
return (0, ts_utils_1.populateObject)({
|
|
91
|
-
singleton: () => this._processExtensionSingleton(ex.singleton),
|
|
92
|
-
value: () => this._processExtensionSubtagValue(ex.value),
|
|
93
|
-
});
|
|
94
|
-
}));
|
|
95
|
-
}
|
|
96
|
-
return (0, ts_utils_1.succeed)(subtags.extensions);
|
|
97
|
-
}
|
|
98
|
-
_verifyUnique(description, items, getKey) {
|
|
99
|
-
if (items) {
|
|
100
|
-
const present = new Set();
|
|
101
|
-
return (0, ts_utils_1.allSucceed)(items.map((i) => {
|
|
102
|
-
const key = getKey(i);
|
|
103
|
-
if (present.has(key)) {
|
|
104
|
-
return (0, ts_utils_1.fail)(`${key}: duplicate ${description}`);
|
|
105
|
-
}
|
|
106
|
-
present.add(key);
|
|
107
|
-
return (0, ts_utils_1.succeed)(key);
|
|
108
|
-
}), items);
|
|
109
|
-
}
|
|
110
|
-
return (0, ts_utils_1.succeed)(items);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
exports.TagNormalizerBase = TagNormalizerBase;
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZU5vcm1hbGl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmNwNDcvbm9ybWFsaXphdGlvbi9iYXNlTm9ybWFsaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILGlEQUFtQztBQVluQyxzQ0FBMkU7QUFDM0UsNENBQThGO0FBWTlGOztHQUVHO0FBQ0gsTUFBc0IsaUJBQWlCO0lBS25DLFlBQW1CLElBQThCO1FBQzdDLGlFQUFpRTtRQUNqRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksYUFBSixJQUFJLGNBQUosSUFBSSxHQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQztJQUNuRSxDQUFDO0lBRU0sY0FBYyxDQUFDLE9BQWdCO1FBQ2xDLE9BQU8sSUFBQSx5QkFBYyxFQUNqQjtZQUNJLGVBQWUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO1lBQ3JELFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO1lBQzlDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQztZQUMxQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUM7WUFDMUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7WUFDOUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7WUFDbEQsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUM7WUFDdEQsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUM7U0FDL0QsRUFDRCxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUM5QixDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFUyxvQkFBb0IsQ0FBQyxPQUFnQjtRQUMzQyxvR0FBb0c7UUFDcEcsSUFBSSxPQUFPLENBQUMsZUFBZSxLQUFLLFNBQVMsSUFBSSxPQUFPLENBQUMsYUFBYSxLQUFLLFNBQVMsSUFBSSxPQUFPLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRTtZQUNsSCxPQUFPLElBQUEsZUFBSSxFQUFDLEdBQUcsSUFBQSx3QkFBZSxFQUFDLE9BQU8sQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1NBQ2hGO1FBRUQsb0dBQW9HO1FBQ3BHLElBQUksT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDakQsT0FBTyxJQUFBLGVBQUksRUFBQyxHQUFHLElBQUEsd0JBQWUsRUFBQyxPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FBQztTQUN4RTtRQUNELE9BQU8sSUFBQSxrQkFBTyxFQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFUyxhQUFhLENBQUMsT0FBZ0I7UUFDcEMsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVTLGtCQUFrQixDQUFDLE9BQWdCO1FBQ3pDLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRTtZQUNwQixPQUFPLElBQUEscUJBQVUsRUFDYixPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO2dCQUMxQixPQUFPLElBQUEseUJBQWMsRUFBdUI7b0JBQ3hDLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQztvQkFDOUQsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO2lCQUMzRCxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FDTCxDQUFDO1NBQ0w7UUFDRCxPQUFPLElBQUEsa0JBQU8sRUFBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVTLGFBQWEsQ0FDbkIsV0FBbUIsRUFDbkIsS0FBc0IsRUFDdEIsTUFBdUI7UUFFdkIsSUFBSSxLQUFLLEVBQUU7WUFDUCxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBTSxDQUFDO1lBQzlCLE9BQU8sSUFBQSxxQkFBVSxFQUNiLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDWixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDbEIsT0FBTyxJQUFBLGVBQUksRUFBQyxHQUFHLEdBQUcsZUFBZSxXQUFXLEVBQUUsQ0FBQyxDQUFDO2lCQUNuRDtnQkFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQixPQUFPLElBQUEsa0JBQU8sRUFBQyxHQUFHLENBQUMsQ0FBQztZQUN4QixDQUFDLENBQUMsRUFDRixLQUFLLENBQ1IsQ0FBQztTQUNMO1FBQ0QsT0FBTyxJQUFBLGtCQUFPLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztDQVdKO0FBMUZELDhDQTBGQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjIgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBJYW5hIGZyb20gJy4uLy4uL2lhbmEnO1xuXG5pbXBvcnQge1xuICAgIEV4dExhbmdTdWJ0YWcsXG4gICAgRXh0ZW5kZWRMYW5ndWFnZVJhbmdlLFxuICAgIEdyYW5kZmF0aGVyZWRUYWcsXG4gICAgTGFuZ3VhZ2VTdWJ0YWcsXG4gICAgUmVnaW9uU3VidGFnLFxuICAgIFNjcmlwdFN1YnRhZyxcbiAgICBWYXJpYW50U3VidGFnLFxufSBmcm9tICcuLi8uLi9pYW5hL2xhbmd1YWdlLXN1YnRhZ3MnO1xuaW1wb3J0IHsgRXh0ZW5zaW9uU2luZ2xldG9uLCBFeHRlbnNpb25TdWJ0YWcgfSBmcm9tICcuLi9iY3A0N1N1YnRhZ3MvbW9kZWwnO1xuaW1wb3J0IHsgRXh0ZW5zaW9uU3VidGFnVmFsdWUsIFN1YnRhZ3MsIHN1YnRhZ3NUb1N0cmluZyB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBSZXN1bHQsIGFsbFN1Y2NlZWQsIGZhaWwsIG1hcFJlc3VsdHMsIHBvcHVsYXRlT2JqZWN0LCBzdWNjZWVkIH0gZnJvbSAnQGZndi90cy11dGlscyc7XG5pbXBvcnQgeyBUYWdOb3JtYWxpemF0aW9uIH0gZnJvbSAnLi9jb21tb24nO1xuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWdOb3JtYWxpemVyIHtcbiAgICByZWFkb25seSBub3JtYWxpemF0aW9uOiBUYWdOb3JtYWxpemF0aW9uO1xuXG4gICAgcHJvY2Vzc1N1YnRhZ3Moc3VidGFnczogU3VidGFncyk6IFJlc3VsdDxTdWJ0YWdzPjtcbn1cblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUYWdOb3JtYWxpemVyQmFzZSB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9pYW5hOiBJYW5hLkxhbmd1YWdlUmVnaXN0cmllcztcblxuICAgIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBub3JtYWxpemF0aW9uOiBUYWdOb3JtYWxpemF0aW9uO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGlhbmE/OiBJYW5hLkxhbmd1YWdlUmVnaXN0cmllcykge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAtIGRlcGVuZGVuY3kgaW5qZWN0aW9uIHByaW1hcmlseSBmb3IgdGVzdFxuICAgICAgICB0aGlzLl9pYW5hID0gaWFuYSA/PyBJYW5hLkRlZmF1bHRSZWdpc3RyaWVzLmxhbmd1YWdlUmVnaXN0cmllcztcbiAgICB9XG5cbiAgICBwdWJsaWMgcHJvY2Vzc1N1YnRhZ3Moc3VidGFnczogU3VidGFncyk6IFJlc3VsdDxTdWJ0YWdzPiB7XG4gICAgICAgIHJldHVybiBwb3B1bGF0ZU9iamVjdDxTdWJ0YWdzPihcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcmltYXJ5TGFuZ3VhZ2U6ICgpID0+IHRoaXMuX3Byb2Nlc3NMYW5ndWFnZShzdWJ0YWdzKSxcbiAgICAgICAgICAgICAgICBleHRsYW5nczogKCkgPT4gdGhpcy5fcHJvY2Vzc0V4dGxhbmdzKHN1YnRhZ3MpLFxuICAgICAgICAgICAgICAgIHNjcmlwdDogKCkgPT4gdGhpcy5fcHJvY2Vzc1NjcmlwdChzdWJ0YWdzKSxcbiAgICAgICAgICAgICAgICByZWdpb246ICgpID0+IHRoaXMuX3Byb2Nlc3NSZWdpb24oc3VidGFncyksXG4gICAgICAgICAgICAgICAgdmFyaWFudHM6ICgpID0+IHRoaXMuX3Byb2Nlc3NWYXJpYW50cyhzdWJ0YWdzKSxcbiAgICAgICAgICAgICAgICBleHRlbnNpb25zOiAoKSA9PiB0aGlzLl9wcm9jZXNzRXh0ZW5zaW9ucyhzdWJ0YWdzKSxcbiAgICAgICAgICAgICAgICBwcml2YXRlVXNlOiAoKSA9PiB0aGlzLl9wcm9jZXNzUHJpdmF0ZVVzZVRhZ3Moc3VidGFncyksXG4gICAgICAgICAgICAgICAgZ3JhbmRmYXRoZXJlZDogKCkgPT4gdGhpcy5fcHJvY2Vzc0dyYW5kZmF0aGVyZWRUYWdzKHN1YnRhZ3MpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgc3VwcHJlc3NVbmRlZmluZWQ6IHRydWUgfVxuICAgICAgICApLm9uU3VjY2VzcygocHJvY2Vzc2VkKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcG9zdFZhbGlkYXRlKHByb2Nlc3NlZCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfYmFzaWNQb3N0VmFsaWRhdGlvbihzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PFN1YnRhZ3M+IHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHQgLSBhbnkgdmFsaWRhdGlvbiB3aGF0c29ldmVyIGNhdGNoZXMgdGhlc2Ugc28gc2hvdWxkIG5ldmVyIGhhcHBlbiBpbiBwcmFjdGljZVxuICAgICAgICBpZiAoc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UgPT09IHVuZGVmaW5lZCAmJiBzdWJ0YWdzLmdyYW5kZmF0aGVyZWQgPT09IHVuZGVmaW5lZCAmJiBzdWJ0YWdzLnByaXZhdGVVc2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7c3VidGFnc1RvU3RyaW5nKHN1YnRhZ3MpfTogbWlzc2luZyBwcmltYXJ5IGxhbmd1YWdlIHN1YnRhZy5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0IC0gYW55IHZhbGlkYXRpb24gd2hhdHNvZXZlciBjYXRjaGVzIHRoZXNlIHNvIHNob3VsZCBuZXZlciBoYXBwZW4gaW4gcHJhY3RpY2VcbiAgICAgICAgaWYgKHN1YnRhZ3MuZXh0bGFuZ3MgJiYgc3VidGFncy5leHRsYW5ncy5sZW5ndGggPiAzKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFpbChgJHtzdWJ0YWdzVG9TdHJpbmcoc3VidGFncyl9OiB0b28gbWFueSBleHRsYW5nIHN1YnRhZ3NgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZChzdWJ0YWdzKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Bvc3RWYWxpZGF0ZShzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PFN1YnRhZ3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Jhc2ljUG9zdFZhbGlkYXRpb24oc3VidGFncyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9wcm9jZXNzRXh0ZW5zaW9ucyhzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PEV4dGVuc2lvblN1YnRhZ1ZhbHVlW10gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKHN1YnRhZ3MuZXh0ZW5zaW9ucykge1xuICAgICAgICAgICAgcmV0dXJuIG1hcFJlc3VsdHMoXG4gICAgICAgICAgICAgICAgc3VidGFncy5leHRlbnNpb25zLm1hcCgoZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvcHVsYXRlT2JqZWN0PEV4dGVuc2lvblN1YnRhZ1ZhbHVlPih7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGV0b246ICgpID0+IHRoaXMuX3Byb2Nlc3NFeHRlbnNpb25TaW5nbGV0b24oZXguc2luZ2xldG9uKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAoKSA9PiB0aGlzLl9wcm9jZXNzRXh0ZW5zaW9uU3VidGFnVmFsdWUoZXgudmFsdWUpLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZChzdWJ0YWdzLmV4dGVuc2lvbnMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfdmVyaWZ5VW5pcXVlPFQsIFRLIGV4dGVuZHMgc3RyaW5nPihcbiAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZyxcbiAgICAgICAgaXRlbXM6IFRbXSB8IHVuZGVmaW5lZCxcbiAgICAgICAgZ2V0S2V5OiAoaXRlbTogVCkgPT4gVEtcbiAgICApOiBSZXN1bHQ8VFtdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChpdGVtcykge1xuICAgICAgICAgICAgY29uc3QgcHJlc2VudCA9IG5ldyBTZXQ8VEs+KCk7XG4gICAgICAgICAgICByZXR1cm4gYWxsU3VjY2VlZChcbiAgICAgICAgICAgICAgICBpdGVtcy5tYXAoKGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gZ2V0S2V5KGkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJlc2VudC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7a2V5fTogZHVwbGljYXRlICR7ZGVzY3JpcHRpb259YCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcHJlc2VudC5hZGQoa2V5KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoa2V5KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBpdGVtc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZChpdGVtcyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IF9wcm9jZXNzTGFuZ3VhZ2Uoc3VidGFnczogU3VidGFncyk6IFJlc3VsdDxMYW5ndWFnZVN1YnRhZyB8IHVuZGVmaW5lZD47XG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IF9wcm9jZXNzRXh0bGFuZ3Moc3VidGFnczogU3VidGFncyk6IFJlc3VsdDxFeHRMYW5nU3VidGFnW10gfCB1bmRlZmluZWQ+O1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBfcHJvY2Vzc1NjcmlwdChzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PFNjcmlwdFN1YnRhZyB8IHVuZGVmaW5lZD47XG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IF9wcm9jZXNzUmVnaW9uKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8UmVnaW9uU3VidGFnIHwgdW5kZWZpbmVkPjtcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgX3Byb2Nlc3NWYXJpYW50cyhzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PFZhcmlhbnRTdWJ0YWdbXSB8IHVuZGVmaW5lZD47XG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IF9wcm9jZXNzRXh0ZW5zaW9uU2luZ2xldG9uKHNpbmdsZXRvbjogRXh0ZW5zaW9uU2luZ2xldG9uKTogUmVzdWx0PEV4dGVuc2lvblNpbmdsZXRvbj47XG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IF9wcm9jZXNzRXh0ZW5zaW9uU3VidGFnVmFsdWUodmFsdWU6IEV4dGVuc2lvblN1YnRhZyk6IFJlc3VsdDxFeHRlbnNpb25TdWJ0YWc+O1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBfcHJvY2Vzc1ByaXZhdGVVc2VUYWdzKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8RXh0ZW5kZWRMYW5ndWFnZVJhbmdlW10gfCB1bmRlZmluZWQ+O1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBfcHJvY2Vzc0dyYW5kZmF0aGVyZWRUYWdzKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8R3JhbmRmYXRoZXJlZFRhZyB8IHVuZGVmaW5lZD47XG59XG4iXX0=
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { ExtLangSubtag, ExtendedLanguageRange, GrandfatheredTag, LanguageSubtag, RegionSubtag, ScriptSubtag, VariantSubtag } from '../../iana/language-subtags';
|
|
2
|
-
import { ExtensionSingleton, ExtensionSubtag } from '../bcp47Subtags/model';
|
|
3
|
-
import { Result } from '@fgv/ts-utils';
|
|
4
|
-
import { Subtags } from '../common';
|
|
5
|
-
import { TagNormalization } from './common';
|
|
6
|
-
import { TagNormalizerBase } from './baseNormalizer';
|
|
7
|
-
/**
|
|
8
|
-
* @internal
|
|
9
|
-
*/
|
|
10
|
-
export declare class CanonicalNormalizer extends TagNormalizerBase {
|
|
11
|
-
readonly normalization: TagNormalization;
|
|
12
|
-
protected _processLanguage(subtags: Subtags): Result<LanguageSubtag | undefined>;
|
|
13
|
-
protected _processExtlangs(subtags: Subtags): Result<ExtLangSubtag[] | undefined>;
|
|
14
|
-
protected _processScript(subtags: Subtags): Result<ScriptSubtag | undefined>;
|
|
15
|
-
protected _processRegion(subtags: Subtags): Result<RegionSubtag | undefined>;
|
|
16
|
-
protected _processVariants(subtags: Subtags): Result<VariantSubtag[] | undefined>;
|
|
17
|
-
protected _processExtensionSingleton(singleton: ExtensionSingleton): Result<ExtensionSingleton>;
|
|
18
|
-
protected _processExtensionSubtagValue(value: ExtensionSubtag): Result<ExtensionSubtag>;
|
|
19
|
-
protected _processPrivateUseTags(subtags: Subtags): Result<ExtendedLanguageRange[] | undefined>;
|
|
20
|
-
protected _processGrandfatheredTags(subtags: Subtags): Result<GrandfatheredTag | undefined>;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=canonicalNormalizer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"canonicalNormalizer.d.ts","sourceRoot":"","sources":["../../../src/bcp47/normalization/canonicalNormalizer.ts"],"names":[],"mappings":"AAyBA,OAAO,EACH,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,aAAa,EAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAuB,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,iBAAiB;IACtD,SAAgB,aAAa,EAAE,gBAAgB,CAAe;IAE9D,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,cAAc,GAAG,SAAS,CAAC;IAOhF,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC;IAOjF,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC;IAO5E,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC;IAO5E,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC;IAOjF,SAAS,CAAC,0BAA0B,CAAC,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;IAI/F,SAAS,CAAC,4BAA4B,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;IAIvF,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,qBAAqB,EAAE,GAAG,SAAS,CAAC;IAU/F,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,gBAAgB,GAAG,SAAS,CAAC;CAM9F"}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* Copyright (c) 2022 Erik Fortune
|
|
4
|
-
*
|
|
5
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
* in the Software without restriction, including without limitation the rights
|
|
8
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
* furnished to do so, subject to the following conditions:
|
|
11
|
-
*
|
|
12
|
-
* The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
* copies or substantial portions of the Software.
|
|
14
|
-
*
|
|
15
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
* SOFTWARE.
|
|
22
|
-
*/
|
|
23
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
24
|
-
if (k2 === undefined) k2 = k;
|
|
25
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
26
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
27
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
28
|
-
}
|
|
29
|
-
Object.defineProperty(o, k2, desc);
|
|
30
|
-
}) : (function(o, m, k, k2) {
|
|
31
|
-
if (k2 === undefined) k2 = k;
|
|
32
|
-
o[k2] = m[k];
|
|
33
|
-
}));
|
|
34
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
35
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
36
|
-
}) : function(o, v) {
|
|
37
|
-
o["default"] = v;
|
|
38
|
-
});
|
|
39
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
40
|
-
if (mod && mod.__esModule) return mod;
|
|
41
|
-
var result = {};
|
|
42
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
43
|
-
__setModuleDefault(result, mod);
|
|
44
|
-
return result;
|
|
45
|
-
};
|
|
46
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
47
|
-
exports.CanonicalNormalizer = void 0;
|
|
48
|
-
const Bcp47Subtags = __importStar(require("../bcp47Subtags"));
|
|
49
|
-
const Iana = __importStar(require("../../iana"));
|
|
50
|
-
const ts_utils_1 = require("@fgv/ts-utils");
|
|
51
|
-
const baseNormalizer_1 = require("./baseNormalizer");
|
|
52
|
-
/**
|
|
53
|
-
* @internal
|
|
54
|
-
*/
|
|
55
|
-
class CanonicalNormalizer extends baseNormalizer_1.TagNormalizerBase {
|
|
56
|
-
constructor() {
|
|
57
|
-
super(...arguments);
|
|
58
|
-
this.normalization = 'canonical';
|
|
59
|
-
}
|
|
60
|
-
_processLanguage(subtags) {
|
|
61
|
-
if (subtags.primaryLanguage) {
|
|
62
|
-
return this._iana.subtags.languages.toCanonical(subtags.primaryLanguage);
|
|
63
|
-
}
|
|
64
|
-
return (0, ts_utils_1.succeed)(subtags.primaryLanguage);
|
|
65
|
-
}
|
|
66
|
-
_processExtlangs(subtags) {
|
|
67
|
-
if (subtags.extlangs) {
|
|
68
|
-
return (0, ts_utils_1.mapResults)(subtags.extlangs.map((e) => this._iana.subtags.extlangs.toCanonical(e)));
|
|
69
|
-
}
|
|
70
|
-
return (0, ts_utils_1.succeed)(undefined);
|
|
71
|
-
}
|
|
72
|
-
_processScript(subtags) {
|
|
73
|
-
if (subtags.script) {
|
|
74
|
-
return this._iana.subtags.scripts.toCanonical(subtags.script);
|
|
75
|
-
}
|
|
76
|
-
return (0, ts_utils_1.succeed)(undefined);
|
|
77
|
-
}
|
|
78
|
-
_processRegion(subtags) {
|
|
79
|
-
if (subtags.region) {
|
|
80
|
-
return this._iana.subtags.regions.toCanonical(subtags.region);
|
|
81
|
-
}
|
|
82
|
-
return (0, ts_utils_1.succeed)(undefined);
|
|
83
|
-
}
|
|
84
|
-
_processVariants(subtags) {
|
|
85
|
-
if (subtags.variants) {
|
|
86
|
-
return (0, ts_utils_1.mapResults)(subtags.variants.map((v) => this._iana.subtags.variants.toCanonical(v)));
|
|
87
|
-
}
|
|
88
|
-
return (0, ts_utils_1.succeed)(undefined);
|
|
89
|
-
}
|
|
90
|
-
_processExtensionSingleton(singleton) {
|
|
91
|
-
return this._iana.extensions.extensions.toCanonical(singleton);
|
|
92
|
-
}
|
|
93
|
-
_processExtensionSubtagValue(value) {
|
|
94
|
-
return Bcp47Subtags.Validate.extensionSubtag.toCanonical(value);
|
|
95
|
-
}
|
|
96
|
-
_processPrivateUseTags(subtags) {
|
|
97
|
-
if (subtags.privateUse) {
|
|
98
|
-
const merged = subtags.privateUse.join('-');
|
|
99
|
-
return Iana.LanguageSubtags.Validate.extendedLanguageRange.toCanonical(merged).onSuccess((canon) => {
|
|
100
|
-
return (0, ts_utils_1.succeed)(canon.split('-'));
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
return (0, ts_utils_1.succeed)(subtags.privateUse);
|
|
104
|
-
}
|
|
105
|
-
_processGrandfatheredTags(subtags) {
|
|
106
|
-
if (subtags.grandfathered) {
|
|
107
|
-
return this._iana.subtags.grandfathered.toCanonical(subtags.grandfathered);
|
|
108
|
-
}
|
|
109
|
-
return (0, ts_utils_1.succeed)(undefined);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
exports.CanonicalNormalizer = CanonicalNormalizer;
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fub25pY2FsTm9ybWFsaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iY3A0Ny9ub3JtYWxpemF0aW9uL2Nhbm9uaWNhbE5vcm1hbGl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCw4REFBZ0Q7QUFDaEQsaURBQW1DO0FBWW5DLDRDQUE0RDtBQUc1RCxxREFBcUQ7QUFFckQ7O0dBRUc7QUFDSCxNQUFhLG1CQUFvQixTQUFRLGtDQUFpQjtJQUExRDs7UUFDb0Isa0JBQWEsR0FBcUIsV0FBVyxDQUFDO0lBNkRsRSxDQUFDO0lBM0RhLGdCQUFnQixDQUFDLE9BQWdCO1FBQ3ZDLElBQUksT0FBTyxDQUFDLGVBQWUsRUFBRTtZQUN6QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQzVFO1FBQ0QsT0FBTyxJQUFBLGtCQUFPLEVBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFUyxnQkFBZ0IsQ0FBQyxPQUFnQjtRQUN2QyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDbEIsT0FBTyxJQUFBLHFCQUFVLEVBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzlGO1FBQ0QsT0FBTyxJQUFBLGtCQUFPLEVBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVTLGNBQWMsQ0FBQyxPQUFnQjtRQUNyQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNqRTtRQUNELE9BQU8sSUFBQSxrQkFBTyxFQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFUyxjQUFjLENBQUMsT0FBZ0I7UUFDckMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDakU7UUFDRCxPQUFPLElBQUEsa0JBQU8sRUFBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRVMsZ0JBQWdCLENBQUMsT0FBZ0I7UUFDdkMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ2xCLE9BQU8sSUFBQSxxQkFBVSxFQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM5RjtRQUNELE9BQU8sSUFBQSxrQkFBTyxFQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFUywwQkFBMEIsQ0FBQyxTQUE2QjtRQUM5RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVTLDRCQUE0QixDQUFDLEtBQXNCO1FBQ3pELE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFUyxzQkFBc0IsQ0FBQyxPQUFnQjtRQUM3QyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDcEIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQy9GLE9BQU8sSUFBQSxrQkFBTyxFQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUE0QixDQUFDLENBQUM7WUFDaEUsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUNELE9BQU8sSUFBQSxrQkFBTyxFQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRVMseUJBQXlCLENBQUMsT0FBZ0I7UUFDaEQsSUFBSSxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDOUU7UUFDRCxPQUFPLElBQUEsa0JBQU8sRUFBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBQ0o7QUE5REQsa0RBOERDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMiBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCAqIGFzIEJjcDQ3U3VidGFncyBmcm9tICcuLi9iY3A0N1N1YnRhZ3MnO1xuaW1wb3J0ICogYXMgSWFuYSBmcm9tICcuLi8uLi9pYW5hJztcblxuaW1wb3J0IHtcbiAgICBFeHRMYW5nU3VidGFnLFxuICAgIEV4dGVuZGVkTGFuZ3VhZ2VSYW5nZSxcbiAgICBHcmFuZGZhdGhlcmVkVGFnLFxuICAgIExhbmd1YWdlU3VidGFnLFxuICAgIFJlZ2lvblN1YnRhZyxcbiAgICBTY3JpcHRTdWJ0YWcsXG4gICAgVmFyaWFudFN1YnRhZyxcbn0gZnJvbSAnLi4vLi4vaWFuYS9sYW5ndWFnZS1zdWJ0YWdzJztcbmltcG9ydCB7IEV4dGVuc2lvblNpbmdsZXRvbiwgRXh0ZW5zaW9uU3VidGFnIH0gZnJvbSAnLi4vYmNwNDdTdWJ0YWdzL21vZGVsJztcbmltcG9ydCB7IFJlc3VsdCwgbWFwUmVzdWx0cywgc3VjY2VlZCB9IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuaW1wb3J0IHsgU3VidGFncyB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBUYWdOb3JtYWxpemF0aW9uIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgVGFnTm9ybWFsaXplckJhc2UgfSBmcm9tICcuL2Jhc2VOb3JtYWxpemVyJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIENhbm9uaWNhbE5vcm1hbGl6ZXIgZXh0ZW5kcyBUYWdOb3JtYWxpemVyQmFzZSB7XG4gICAgcHVibGljIHJlYWRvbmx5IG5vcm1hbGl6YXRpb246IFRhZ05vcm1hbGl6YXRpb24gPSAnY2Fub25pY2FsJztcblxuICAgIHByb3RlY3RlZCBfcHJvY2Vzc0xhbmd1YWdlKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8TGFuZ3VhZ2VTdWJ0YWcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKHN1YnRhZ3MucHJpbWFyeUxhbmd1YWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faWFuYS5zdWJ0YWdzLmxhbmd1YWdlcy50b0Nhbm9uaWNhbChzdWJ0YWdzLnByaW1hcnlMYW5ndWFnZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcHJvY2Vzc0V4dGxhbmdzKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8RXh0TGFuZ1N1YnRhZ1tdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLmV4dGxhbmdzKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFwUmVzdWx0cyhzdWJ0YWdzLmV4dGxhbmdzLm1hcCgoZSkgPT4gdGhpcy5faWFuYS5zdWJ0YWdzLmV4dGxhbmdzLnRvQ2Fub25pY2FsKGUpKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NTY3JpcHQoc3VidGFnczogU3VidGFncyk6IFJlc3VsdDxTY3JpcHRTdWJ0YWcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKHN1YnRhZ3Muc2NyaXB0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faWFuYS5zdWJ0YWdzLnNjcmlwdHMudG9DYW5vbmljYWwoc3VidGFncy5zY3JpcHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9wcm9jZXNzUmVnaW9uKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8UmVnaW9uU3VidGFnIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLnJlZ2lvbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lhbmEuc3VidGFncy5yZWdpb25zLnRvQ2Fub25pY2FsKHN1YnRhZ3MucmVnaW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZCh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcHJvY2Vzc1ZhcmlhbnRzKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8VmFyaWFudFN1YnRhZ1tdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLnZhcmlhbnRzKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFwUmVzdWx0cyhzdWJ0YWdzLnZhcmlhbnRzLm1hcCgodikgPT4gdGhpcy5faWFuYS5zdWJ0YWdzLnZhcmlhbnRzLnRvQ2Fub25pY2FsKHYpKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NFeHRlbnNpb25TaW5nbGV0b24oc2luZ2xldG9uOiBFeHRlbnNpb25TaW5nbGV0b24pOiBSZXN1bHQ8RXh0ZW5zaW9uU2luZ2xldG9uPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pYW5hLmV4dGVuc2lvbnMuZXh0ZW5zaW9ucy50b0Nhbm9uaWNhbChzaW5nbGV0b24pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcHJvY2Vzc0V4dGVuc2lvblN1YnRhZ1ZhbHVlKHZhbHVlOiBFeHRlbnNpb25TdWJ0YWcpOiBSZXN1bHQ8RXh0ZW5zaW9uU3VidGFnPiB7XG4gICAgICAgIHJldHVybiBCY3A0N1N1YnRhZ3MuVmFsaWRhdGUuZXh0ZW5zaW9uU3VidGFnLnRvQ2Fub25pY2FsKHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NQcml2YXRlVXNlVGFncyhzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PEV4dGVuZGVkTGFuZ3VhZ2VSYW5nZVtdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLnByaXZhdGVVc2UpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZCA9IHN1YnRhZ3MucHJpdmF0ZVVzZS5qb2luKCctJyk7XG4gICAgICAgICAgICByZXR1cm4gSWFuYS5MYW5ndWFnZVN1YnRhZ3MuVmFsaWRhdGUuZXh0ZW5kZWRMYW5ndWFnZVJhbmdlLnRvQ2Fub25pY2FsKG1lcmdlZCkub25TdWNjZXNzKChjYW5vbikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKGNhbm9uLnNwbGl0KCctJykgYXMgRXh0ZW5kZWRMYW5ndWFnZVJhbmdlW10pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3VidGFncy5wcml2YXRlVXNlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NHcmFuZGZhdGhlcmVkVGFncyhzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PEdyYW5kZmF0aGVyZWRUYWcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKHN1YnRhZ3MuZ3JhbmRmYXRoZXJlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lhbmEuc3VidGFncy5ncmFuZGZhdGhlcmVkLnRvQ2Fub25pY2FsKHN1YnRhZ3MuZ3JhbmRmYXRoZXJlZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQodW5kZWZpbmVkKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/bcp47/normalization/common.ts"],"names":[],"mappings":"AAsBA;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,WAAW,GAAG,WAAW,CAAC;AA8B9E;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,gBAAgB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAO3F;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,gBAAgB,GAAG,gBAAgB,CAG3F"}
|