@fgv/ts-bcp47 0.5.1 → 0.5.2
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/{src/bcp47 → bcp47}/bcp47Subtags/converters.d.ts +0 -0
- package/bcp47/bcp47Subtags/converters.d.ts.map +1 -0
- package/{src/bcp47 → bcp47}/bcp47Subtags/converters.js +1 -1
- package/{src/bcp47 → bcp47}/bcp47Subtags/index.d.ts +0 -0
- package/bcp47/bcp47Subtags/index.d.ts.map +1 -0
- package/{src/iana/jar/language-subtags/converters.js → bcp47/bcp47Subtags/index.js} +8 -6
- package/{src/bcp47 → bcp47}/bcp47Subtags/model.d.ts +0 -0
- package/bcp47/bcp47Subtags/model.d.ts.map +1 -0
- package/{src/bcp47/overrides → bcp47/bcp47Subtags}/model.js +1 -1
- package/{src/bcp47 → bcp47}/bcp47Subtags/validate.d.ts +0 -0
- package/bcp47/bcp47Subtags/validate.d.ts.map +1 -0
- package/bcp47/bcp47Subtags/validate.js +74 -0
- package/{src/bcp47 → bcp47}/common.d.ts +0 -0
- package/bcp47/common.d.ts.map +1 -0
- package/bcp47/common.js +59 -0
- package/{src/bcp47 → bcp47}/helpers.d.ts +0 -0
- package/bcp47/helpers.d.ts.map +1 -0
- package/bcp47/helpers.js +103 -0
- package/{src/bcp47 → bcp47}/index.d.ts +0 -0
- package/bcp47/index.d.ts.map +1 -0
- package/bcp47/index.js +27 -0
- package/bcp47/languageRegistryData.d.ts +88 -0
- package/bcp47/languageRegistryData.d.ts.map +1 -0
- package/bcp47/languageRegistryData.js +144 -0
- package/{src/bcp47 → bcp47}/languageTag.d.ts +6 -0
- package/bcp47/languageTag.d.ts.map +1 -0
- package/bcp47/languageTag.js +344 -0
- package/{src/bcp47 → bcp47}/languageTagParser.d.ts +0 -0
- package/bcp47/languageTagParser.d.ts.map +1 -0
- package/bcp47/languageTagParser.js +310 -0
- package/{src/bcp47 → bcp47}/match/chooser.d.ts +1 -1
- package/bcp47/match/chooser.d.ts.map +1 -0
- package/bcp47/match/chooser.js +92 -0
- package/{src/bcp47 → bcp47}/match/common.d.ts +0 -0
- package/bcp47/match/common.d.ts.map +1 -0
- package/bcp47/match/common.js +42 -0
- package/{src/bcp47 → bcp47}/match/index.d.ts +0 -0
- package/bcp47/match/index.d.ts.map +1 -0
- package/{src/iana/jar/language-subtags/registry/converters.js → bcp47/match/index.js} +10 -23
- package/{src/bcp47 → bcp47}/match/similarity.d.ts +0 -0
- package/bcp47/match/similarity.d.ts.map +1 -0
- package/bcp47/match/similarity.js +230 -0
- package/{src/bcp47 → bcp47}/normalization/baseNormalizer.d.ts +0 -0
- package/bcp47/normalization/baseNormalizer.d.ts.map +1 -0
- package/bcp47/normalization/baseNormalizer.js +114 -0
- package/{src/bcp47 → bcp47}/normalization/canonicalNormalizer.d.ts +0 -0
- package/bcp47/normalization/canonicalNormalizer.d.ts.map +1 -0
- package/bcp47/normalization/canonicalNormalizer.js +110 -0
- package/{src/bcp47 → bcp47}/normalization/common.d.ts +0 -0
- package/bcp47/normalization/common.d.ts.map +1 -0
- package/bcp47/normalization/common.js +82 -0
- package/{src/bcp47 → bcp47}/normalization/index.d.ts +0 -0
- package/bcp47/normalization/index.d.ts.map +1 -0
- package/{src/bcp47 → bcp47}/normalization/index.js +1 -1
- package/{src/bcp47 → bcp47}/normalization/normalizeTag.d.ts +0 -0
- package/bcp47/normalization/normalizeTag.d.ts.map +1 -0
- package/bcp47/normalization/normalizeTag.js +105 -0
- package/{src/bcp47 → bcp47}/normalization/preferredTagNormalizer.d.ts +0 -0
- package/bcp47/normalization/preferredTagNormalizer.d.ts.map +1 -0
- package/bcp47/normalization/preferredTagNormalizer.js +178 -0
- package/{src/bcp47 → bcp47}/overrides/converters.d.ts +0 -0
- package/bcp47/overrides/converters.d.ts.map +1 -0
- package/bcp47/overrides/converters.js +75 -0
- package/{src/bcp47 → bcp47}/overrides/defaultRegistries.d.ts +0 -0
- package/bcp47/overrides/defaultRegistries.d.ts.map +1 -0
- package/bcp47/overrides/defaultRegistries.js +42 -0
- package/{src/bcp47 → bcp47}/overrides/index.d.ts +0 -0
- package/bcp47/overrides/index.d.ts.map +1 -0
- package/bcp47/overrides/index.js +30 -0
- package/{src/bcp47 → bcp47}/overrides/model.d.ts +0 -0
- package/bcp47/overrides/model.d.ts.map +1 -0
- package/bcp47/overrides/model.js +24 -0
- package/{src/bcp47 → bcp47}/overrides/overridesRegistry.d.ts +0 -0
- package/bcp47/overrides/overridesRegistry.d.ts.map +1 -0
- package/bcp47/overrides/overridesRegistry.js +112 -0
- package/{src/bcp47 → bcp47}/validation/baseValidator.d.ts +0 -0
- package/bcp47/validation/baseValidator.d.ts.map +1 -0
- package/bcp47/validation/baseValidator.js +111 -0
- package/{src/bcp47 → bcp47}/validation/common.d.ts +0 -0
- package/bcp47/validation/common.d.ts.map +1 -0
- package/bcp47/validation/common.js +84 -0
- package/{src/bcp47 → bcp47}/validation/index.d.ts +0 -0
- package/bcp47/validation/index.d.ts.map +1 -0
- package/{src/iana/jar/language-subtags → bcp47/validation}/index.js +14 -17
- package/{src/bcp47 → bcp47}/validation/isCanonical.d.ts +0 -0
- package/bcp47/validation/isCanonical.d.ts.map +1 -0
- package/bcp47/validation/isCanonical.js +101 -0
- package/{src/bcp47 → bcp47}/validation/isInPreferredForm.d.ts +0 -0
- package/bcp47/validation/isInPreferredForm.d.ts.map +1 -0
- package/bcp47/validation/isInPreferredForm.js +73 -0
- package/{src/bcp47 → bcp47}/validation/isStrictlyValid.d.ts +0 -0
- package/bcp47/validation/isStrictlyValid.d.ts.map +1 -0
- package/bcp47/validation/isStrictlyValid.js +98 -0
- package/{src/bcp47 → bcp47}/validation/isValid.d.ts +0 -0
- package/bcp47/validation/isValid.d.ts.map +1 -0
- package/bcp47/validation/isValid.js +115 -0
- package/{src/bcp47 → bcp47}/validation/isWellFormed.d.ts +0 -0
- package/bcp47/validation/isWellFormed.d.ts.map +1 -0
- package/bcp47/validation/isWellFormed.js +98 -0
- package/{src/bcp47 → bcp47}/validation/validateTag.d.ts +0 -0
- package/bcp47/validation/validateTag.d.ts.map +1 -0
- package/bcp47/validation/validateTag.js +159 -0
- package/{src/iana → iana}/common/converters.d.ts +0 -0
- package/iana/common/converters.d.ts.map +1 -0
- package/iana/common/converters.js +84 -0
- package/{src/iana → iana}/common/model.d.ts +0 -0
- package/iana/common/model.d.ts.map +1 -0
- package/{src/unsd/csv → iana/common}/model.js +1 -1
- package/{src/iana → iana}/common/registeredItems.d.ts +0 -0
- package/iana/common/registeredItems.d.ts.map +1 -0
- package/iana/common/registeredItems.js +124 -0
- package/{src/iana → iana}/common/utils.d.ts +0 -0
- package/iana/common/utils.d.ts.map +1 -0
- package/iana/common/utils.js +34 -0
- package/{src/iana → iana}/common/validate.d.ts +0 -0
- package/iana/common/validate.d.ts.map +1 -0
- package/iana/common/validate.js +61 -0
- package/{src/iana → iana}/converters.d.ts +0 -0
- package/iana/converters.d.ts.map +1 -0
- package/{src/iana/jar/model.js → iana/converters.js} +8 -8
- package/{src/iana → iana}/defaultRegistries.d.ts +0 -0
- package/iana/defaultRegistries.d.ts.map +1 -0
- package/iana/defaultRegistries.js +42 -0
- package/{src/iana → iana}/index.d.ts +0 -0
- package/iana/index.d.ts.map +1 -0
- package/{src/iana → iana}/index.js +1 -1
- package/{src/iana → iana}/jar/converters.d.ts +0 -0
- package/iana/jar/converters.d.ts.map +1 -0
- package/{src/iana → iana}/jar/converters.js +1 -1
- package/{src/iana → iana}/jar/index.d.ts +0 -0
- package/iana/jar/index.d.ts.map +1 -0
- package/{src/iana/jar/language-subtags/tags → iana/jar}/index.js +4 -8
- package/{src/iana → iana}/jar/jarConverters.d.ts +0 -0
- package/iana/jar/jarConverters.d.ts.map +1 -0
- package/iana/jar/jarConverters.js +85 -0
- package/{src/iana → iana}/jar/jarModel.d.ts +0 -0
- package/iana/jar/jarModel.d.ts.map +1 -0
- package/{src/iana/common/model.js → iana/jar/jarModel.js} +1 -1
- package/{src/iana → iana}/jar/language-subtags/converters.d.ts +0 -0
- package/iana/jar/language-subtags/converters.d.ts.map +1 -0
- package/{src/iana/jar/language-subtags/model.js → iana/jar/language-subtags/converters.js} +3 -3
- package/{src/iana → iana}/jar/language-subtags/index.d.ts +0 -0
- package/iana/jar/language-subtags/index.d.ts.map +1 -0
- package/{src/utils → iana/jar/language-subtags}/index.js +18 -4
- package/{src/iana → iana}/jar/language-subtags/model.d.ts +0 -0
- package/iana/jar/language-subtags/model.d.ts.map +1 -0
- package/{src/unsd/common.js → iana/jar/language-subtags/model.js} +29 -1
- package/{src/iana → iana}/jar/language-subtags/registry/converters.d.ts +0 -0
- package/iana/jar/language-subtags/registry/converters.d.ts.map +1 -0
- package/{src/iana/language-subtags/common.js → iana/jar/language-subtags/registry/converters.js} +35 -1
- package/{src/iana → iana}/jar/language-subtags/registry/index.d.ts +0 -0
- package/iana/jar/language-subtags/registry/index.d.ts.map +1 -0
- package/{src/bcp47/bcp47Subtags → iana/jar/language-subtags/registry}/index.js +28 -27
- package/{src/iana → iana}/jar/language-subtags/registry/model.d.ts +0 -0
- package/iana/jar/language-subtags/registry/model.d.ts.map +1 -0
- package/iana/jar/language-subtags/registry/model.js +41 -0
- package/{src/iana → iana}/jar/language-subtags/tags/converters.d.ts +0 -0
- package/iana/jar/language-subtags/tags/converters.d.ts.map +1 -0
- package/iana/jar/language-subtags/tags/converters.js +128 -0
- package/{src/iana → iana}/jar/language-subtags/tags/index.d.ts +0 -0
- package/iana/jar/language-subtags/tags/index.d.ts.map +1 -0
- package/{src/iana/converters.js → iana/jar/language-subtags/tags/index.js} +10 -8
- package/{src/iana → iana}/jar/language-subtags/tags/model.d.ts +0 -0
- package/iana/jar/language-subtags/tags/model.d.ts.map +1 -0
- package/{src/unsd/csv/index.js → iana/jar/language-subtags/tags/model.js} +1 -29
- package/{src/iana → iana}/jar/language-subtags/tags/tagValidation.d.ts +0 -0
- package/iana/jar/language-subtags/tags/tagValidation.d.ts.map +1 -0
- package/iana/jar/language-subtags/tags/tagValidation.js +70 -0
- package/{src/iana → iana}/jar/language-subtags/tags/validate.d.ts +0 -0
- package/iana/jar/language-subtags/tags/validate.d.ts.map +1 -0
- package/iana/jar/language-subtags/tags/validate.js +87 -0
- package/{src/iana → iana}/jar/model.d.ts +0 -0
- package/iana/jar/model.d.ts.map +1 -0
- package/{src/iana/jar/language-subtags/registry/index.js → iana/jar/model.js} +26 -27
- package/{src/iana → iana}/language-subtags/common.d.ts +0 -0
- package/iana/language-subtags/common.d.ts.map +1 -0
- package/iana/language-subtags/common.js +24 -0
- package/{src/iana → iana}/language-subtags/converters.d.ts +0 -0
- package/iana/language-subtags/converters.d.ts.map +1 -0
- package/iana/language-subtags/converters.js +200 -0
- package/{src/iana → iana}/language-subtags/index.d.ts +0 -0
- package/iana/language-subtags/index.d.ts.map +1 -0
- package/{src/iana → iana}/language-subtags/index.js +1 -1
- package/{src/iana → iana}/language-subtags/jarConverters.d.ts +12 -12
- package/iana/language-subtags/jarConverters.d.ts.map +1 -0
- package/iana/language-subtags/jarConverters.js +213 -0
- package/{src/iana → iana}/language-subtags/model.d.ts +0 -0
- package/iana/language-subtags/model.d.ts.map +1 -0
- package/iana/language-subtags/model.js +24 -0
- package/{src/iana → iana}/language-subtags/scope.d.ts +0 -0
- package/iana/language-subtags/scope.d.ts.map +1 -0
- package/iana/language-subtags/scope.js +179 -0
- package/{src/iana → iana}/language-subtags/subtagRegistry.d.ts +0 -0
- package/iana/language-subtags/subtagRegistry.d.ts.map +1 -0
- package/iana/language-subtags/subtagRegistry.js +149 -0
- package/{src/iana → iana}/language-subtags/validate.d.ts +0 -0
- package/iana/language-subtags/validate.d.ts.map +1 -0
- package/{src/iana → iana}/language-subtags/validate.js +1 -1
- package/{src/iana → iana}/language-tag-extensions/converters.d.ts +0 -0
- package/iana/language-tag-extensions/converters.d.ts.map +1 -0
- package/iana/language-tag-extensions/converters.js +87 -0
- package/{src/iana → iana}/language-tag-extensions/extensionsRegistry.d.ts +0 -0
- package/iana/language-tag-extensions/extensionsRegistry.d.ts.map +1 -0
- package/iana/language-tag-extensions/extensionsRegistry.js +104 -0
- package/{src/iana → iana}/language-tag-extensions/extensionsScope.d.ts +0 -0
- package/iana/language-tag-extensions/extensionsScope.d.ts.map +1 -0
- package/iana/language-tag-extensions/extensionsScope.js +77 -0
- package/{src/iana → iana}/language-tag-extensions/index.d.ts +0 -0
- package/iana/language-tag-extensions/index.d.ts.map +1 -0
- package/{src/iana → iana}/language-tag-extensions/index.js +1 -1
- package/{src/iana → iana}/language-tag-extensions/jarConverters.d.ts +0 -0
- package/iana/language-tag-extensions/jarConverters.d.ts.map +1 -0
- package/iana/language-tag-extensions/jarConverters.js +102 -0
- package/{src/iana → iana}/language-tag-extensions/model.d.ts +0 -0
- package/iana/language-tag-extensions/model.d.ts.map +1 -0
- package/{src/bcp47/overrides/defaultRegistries.js → iana/language-tag-extensions/model.js} +1 -19
- package/{src/iana → iana}/language-tag-extensions/validate.d.ts +0 -0
- package/iana/language-tag-extensions/validate.d.ts.map +1 -0
- package/iana/language-tag-extensions/validate.js +36 -0
- package/{src/iana → iana}/languageRegistries.d.ts +0 -0
- package/iana/languageRegistries.d.ts.map +1 -0
- package/iana/languageRegistries.js +56 -0
- package/{src/iana → iana}/model.d.ts +0 -0
- package/iana/model.d.ts.map +1 -0
- package/{src/iana → iana}/model.js +1 -1
- package/{src/iana → iana}/validate.d.ts +0 -0
- package/iana/validate.d.ts.map +1 -0
- package/{src/iana → iana}/validate.js +1 -1
- package/{src/index.d.ts → index.d.ts} +0 -0
- package/index.d.ts.map +1 -0
- package/{src/index.js → index.js} +1 -1
- package/package.json +1 -1
- package/{src/unsd → unsd}/areas.d.ts +0 -0
- package/unsd/areas.d.ts.map +1 -0
- package/unsd/areas.js +96 -0
- package/{src/unsd → unsd}/common.d.ts +0 -0
- package/unsd/common.d.ts.map +1 -0
- package/unsd/common.js +24 -0
- package/{src/unsd → unsd}/csv/converters.d.ts +0 -0
- package/unsd/csv/converters.d.ts.map +1 -0
- package/unsd/csv/converters.js +70 -0
- package/{src/unsd → unsd}/csv/index.d.ts +0 -0
- package/unsd/csv/index.d.ts.map +1 -0
- package/{src/iana/jar → unsd/csv}/index.js +1 -1
- package/{src/unsd → unsd}/csv/model.d.ts +0 -0
- package/unsd/csv/model.d.ts.map +1 -0
- package/{src/unsd/index.js → unsd/csv/model.js} +1 -21
- package/{src/unsd → unsd}/defaultRegistries.d.ts +0 -0
- package/unsd/defaultRegistries.d.ts.map +1 -0
- package/unsd/defaultRegistries.js +42 -0
- package/{src/unsd → unsd}/index.d.ts +0 -0
- package/unsd/index.d.ts.map +1 -0
- package/unsd/index.js +44 -0
- package/{src/unsd → unsd}/regionCodes.d.ts +0 -0
- package/unsd/regionCodes.d.ts.map +1 -0
- package/unsd/regionCodes.js +121 -0
- package/{src/unsd → unsd}/regions.d.ts +0 -0
- package/unsd/regions.d.ts.map +1 -0
- package/unsd/regions.js +77 -0
- package/{src/utils → utils}/index.d.ts +0 -0
- package/utils/index.d.ts.map +1 -0
- package/{src/utils/jsonHelpers.js → utils/index.js} +17 -6
- package/{src/utils → utils}/jsonHelpers.d.ts +0 -0
- package/utils/jsonHelpers.d.ts.map +1 -0
- package/{src/iana/jar/language-subtags/tags/model.js → utils/jsonHelpers.js} +7 -2
- package/{src/utils → utils}/validationHelpers.d.ts +0 -0
- package/utils/validationHelpers.d.ts.map +1 -0
- package/utils/validationHelpers.js +88 -0
- package/src/bcp47/bcp47Subtags/converters.d.ts.map +0 -1
- package/src/bcp47/bcp47Subtags/index.d.ts.map +0 -1
- package/src/bcp47/bcp47Subtags/model.d.ts.map +0 -1
- package/src/bcp47/bcp47Subtags/model.js +0 -24
- package/src/bcp47/bcp47Subtags/validate.d.ts.map +0 -1
- package/src/bcp47/bcp47Subtags/validate.js +0 -74
- package/src/bcp47/common.d.ts.map +0 -1
- package/src/bcp47/common.js +0 -59
- package/src/bcp47/helpers.d.ts.map +0 -1
- package/src/bcp47/helpers.js +0 -103
- package/src/bcp47/index.d.ts.map +0 -1
- package/src/bcp47/index.js +0 -27
- package/src/bcp47/languageTag.d.ts.map +0 -1
- package/src/bcp47/languageTag.js +0 -342
- package/src/bcp47/languageTagParser.d.ts.map +0 -1
- package/src/bcp47/languageTagParser.js +0 -310
- package/src/bcp47/match/chooser.d.ts.map +0 -1
- package/src/bcp47/match/chooser.js +0 -92
- package/src/bcp47/match/common.d.ts.map +0 -1
- package/src/bcp47/match/common.js +0 -42
- package/src/bcp47/match/index.d.ts.map +0 -1
- package/src/bcp47/match/index.js +0 -45
- package/src/bcp47/match/similarity.d.ts.map +0 -1
- package/src/bcp47/match/similarity.js +0 -230
- package/src/bcp47/normalization/baseNormalizer.d.ts.map +0 -1
- package/src/bcp47/normalization/baseNormalizer.js +0 -114
- package/src/bcp47/normalization/canonicalNormalizer.d.ts.map +0 -1
- package/src/bcp47/normalization/canonicalNormalizer.js +0 -110
- package/src/bcp47/normalization/common.d.ts.map +0 -1
- package/src/bcp47/normalization/common.js +0 -82
- package/src/bcp47/normalization/index.d.ts.map +0 -1
- package/src/bcp47/normalization/normalizeTag.d.ts.map +0 -1
- package/src/bcp47/normalization/normalizeTag.js +0 -105
- package/src/bcp47/normalization/preferredTagNormalizer.d.ts.map +0 -1
- package/src/bcp47/normalization/preferredTagNormalizer.js +0 -178
- package/src/bcp47/overrides/converters.d.ts.map +0 -1
- package/src/bcp47/overrides/converters.js +0 -75
- package/src/bcp47/overrides/defaultRegistries.d.ts.map +0 -1
- package/src/bcp47/overrides/index.d.ts.map +0 -1
- package/src/bcp47/overrides/index.js +0 -30
- package/src/bcp47/overrides/model.d.ts.map +0 -1
- package/src/bcp47/overrides/overridesRegistry.d.ts.map +0 -1
- package/src/bcp47/overrides/overridesRegistry.js +0 -112
- package/src/bcp47/validation/baseValidator.d.ts.map +0 -1
- package/src/bcp47/validation/baseValidator.js +0 -111
- package/src/bcp47/validation/common.d.ts.map +0 -1
- package/src/bcp47/validation/common.js +0 -84
- package/src/bcp47/validation/index.d.ts.map +0 -1
- package/src/bcp47/validation/index.js +0 -51
- package/src/bcp47/validation/isCanonical.d.ts.map +0 -1
- package/src/bcp47/validation/isCanonical.js +0 -101
- package/src/bcp47/validation/isInPreferredForm.d.ts.map +0 -1
- package/src/bcp47/validation/isInPreferredForm.js +0 -73
- package/src/bcp47/validation/isStrictlyValid.d.ts.map +0 -1
- package/src/bcp47/validation/isStrictlyValid.js +0 -98
- package/src/bcp47/validation/isValid.d.ts.map +0 -1
- package/src/bcp47/validation/isValid.js +0 -115
- package/src/bcp47/validation/isWellFormed.d.ts.map +0 -1
- package/src/bcp47/validation/isWellFormed.js +0 -98
- package/src/bcp47/validation/validateTag.d.ts.map +0 -1
- package/src/bcp47/validation/validateTag.js +0 -159
- package/src/iana/common/converters.d.ts.map +0 -1
- package/src/iana/common/converters.js +0 -84
- package/src/iana/common/model.d.ts.map +0 -1
- package/src/iana/common/registeredItems.d.ts.map +0 -1
- package/src/iana/common/registeredItems.js +0 -124
- package/src/iana/common/utils.d.ts.map +0 -1
- package/src/iana/common/utils.js +0 -34
- package/src/iana/common/validate.d.ts.map +0 -1
- package/src/iana/common/validate.js +0 -61
- package/src/iana/converters.d.ts.map +0 -1
- package/src/iana/defaultRegistries.d.ts.map +0 -1
- package/src/iana/defaultRegistries.js +0 -42
- package/src/iana/index.d.ts.map +0 -1
- package/src/iana/jar/converters.d.ts.map +0 -1
- package/src/iana/jar/index.d.ts.map +0 -1
- package/src/iana/jar/jarConverters.d.ts.map +0 -1
- package/src/iana/jar/jarConverters.js +0 -85
- package/src/iana/jar/jarModel.d.ts.map +0 -1
- package/src/iana/jar/jarModel.js +0 -24
- package/src/iana/jar/language-subtags/converters.d.ts.map +0 -1
- package/src/iana/jar/language-subtags/index.d.ts.map +0 -1
- package/src/iana/jar/language-subtags/model.d.ts.map +0 -1
- package/src/iana/jar/language-subtags/registry/converters.d.ts.map +0 -1
- package/src/iana/jar/language-subtags/registry/index.d.ts.map +0 -1
- package/src/iana/jar/language-subtags/registry/model.d.ts.map +0 -1
- package/src/iana/jar/language-subtags/registry/model.js +0 -41
- package/src/iana/jar/language-subtags/tags/converters.d.ts.map +0 -1
- package/src/iana/jar/language-subtags/tags/converters.js +0 -128
- package/src/iana/jar/language-subtags/tags/index.d.ts.map +0 -1
- package/src/iana/jar/language-subtags/tags/model.d.ts.map +0 -1
- package/src/iana/jar/language-subtags/tags/tagValidation.d.ts.map +0 -1
- package/src/iana/jar/language-subtags/tags/tagValidation.js +0 -70
- package/src/iana/jar/language-subtags/tags/validate.d.ts.map +0 -1
- package/src/iana/jar/language-subtags/tags/validate.js +0 -87
- package/src/iana/jar/model.d.ts.map +0 -1
- package/src/iana/language-subtags/common.d.ts.map +0 -1
- package/src/iana/language-subtags/converters.d.ts.map +0 -1
- package/src/iana/language-subtags/converters.js +0 -200
- package/src/iana/language-subtags/index.d.ts.map +0 -1
- package/src/iana/language-subtags/jarConverters.d.ts.map +0 -1
- package/src/iana/language-subtags/jarConverters.js +0 -213
- package/src/iana/language-subtags/model.d.ts.map +0 -1
- package/src/iana/language-subtags/model.js +0 -24
- package/src/iana/language-subtags/scope.d.ts.map +0 -1
- package/src/iana/language-subtags/scope.js +0 -179
- package/src/iana/language-subtags/subtagRegistry.d.ts.map +0 -1
- package/src/iana/language-subtags/subtagRegistry.js +0 -149
- package/src/iana/language-subtags/validate.d.ts.map +0 -1
- package/src/iana/language-tag-extensions/converters.d.ts.map +0 -1
- package/src/iana/language-tag-extensions/converters.js +0 -87
- package/src/iana/language-tag-extensions/extensionsRegistry.d.ts.map +0 -1
- package/src/iana/language-tag-extensions/extensionsRegistry.js +0 -104
- package/src/iana/language-tag-extensions/extensionsScope.d.ts.map +0 -1
- package/src/iana/language-tag-extensions/extensionsScope.js +0 -77
- package/src/iana/language-tag-extensions/index.d.ts.map +0 -1
- package/src/iana/language-tag-extensions/jarConverters.d.ts.map +0 -1
- package/src/iana/language-tag-extensions/jarConverters.js +0 -102
- package/src/iana/language-tag-extensions/model.d.ts.map +0 -1
- package/src/iana/language-tag-extensions/model.js +0 -24
- package/src/iana/language-tag-extensions/validate.d.ts.map +0 -1
- package/src/iana/language-tag-extensions/validate.js +0 -36
- package/src/iana/languageRegistries.d.ts.map +0 -1
- package/src/iana/languageRegistries.js +0 -56
- package/src/iana/model.d.ts.map +0 -1
- package/src/iana/validate.d.ts.map +0 -1
- package/src/index.d.ts.map +0 -1
- package/src/unsd/areas.d.ts.map +0 -1
- package/src/unsd/areas.js +0 -96
- package/src/unsd/common.d.ts.map +0 -1
- package/src/unsd/csv/converters.d.ts.map +0 -1
- package/src/unsd/csv/converters.js +0 -70
- package/src/unsd/csv/index.d.ts.map +0 -1
- package/src/unsd/csv/model.d.ts.map +0 -1
- package/src/unsd/defaultRegistries.d.ts.map +0 -1
- package/src/unsd/defaultRegistries.js +0 -42
- package/src/unsd/index.d.ts.map +0 -1
- package/src/unsd/regionCodes.d.ts.map +0 -1
- package/src/unsd/regionCodes.js +0 -121
- package/src/unsd/regions.d.ts.map +0 -1
- package/src/unsd/regions.js +0 -77
- package/src/utils/index.d.ts.map +0 -1
- package/src/utils/jsonHelpers.d.ts.map +0 -1
- package/src/utils/validationHelpers.d.ts.map +0 -1
- package/src/utils/validationHelpers.js +0 -88
|
@@ -0,0 +1,310 @@
|
|
|
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.LanguageTagParser = void 0;
|
|
48
|
+
const Iana = __importStar(require("../iana"));
|
|
49
|
+
const ts_utils_1 = require("@fgv/ts-utils");
|
|
50
|
+
const bcp47Subtags_1 = require("./bcp47Subtags");
|
|
51
|
+
/**
|
|
52
|
+
* @public
|
|
53
|
+
*/
|
|
54
|
+
class LanguageTagParser {
|
|
55
|
+
// istanbul ignore next
|
|
56
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
57
|
+
constructor() { }
|
|
58
|
+
/**
|
|
59
|
+
* Parses a string representation of a BCP-47 ({@link https://www.rfc-editor.org/rfc/rfc5646.html | RFC 5646})
|
|
60
|
+
* language tag, to produce a {@link Bcp47.Subtags | Subtags} object which
|
|
61
|
+
* breaks out each of the subtags.
|
|
62
|
+
* @param tag - The `string` language tag to be parsed.
|
|
63
|
+
* @param iana - Optional {@link Iana.LanguageRegistries | IANA language registries}
|
|
64
|
+
* to be used.
|
|
65
|
+
* @returns `Success` with the resulting {@link Bcp47.Subtags | subtags}
|
|
66
|
+
* or `Failure` with details if an error occurs.
|
|
67
|
+
* @public
|
|
68
|
+
*/
|
|
69
|
+
static parse(tag, iana) {
|
|
70
|
+
// istanbul ignore next
|
|
71
|
+
iana = iana !== null && iana !== void 0 ? iana : Iana.DefaultRegistries.languageRegistries;
|
|
72
|
+
const status = {
|
|
73
|
+
tag,
|
|
74
|
+
iana,
|
|
75
|
+
subtags: tag.split('-'),
|
|
76
|
+
parsedSubtags: {},
|
|
77
|
+
};
|
|
78
|
+
status.next = status.subtags.shift();
|
|
79
|
+
return (0, ts_utils_1.allSucceed)([
|
|
80
|
+
this._parseGrandfatheredTag(status),
|
|
81
|
+
this._parsePrimaryLanguage(status),
|
|
82
|
+
this._parseExtlang(status),
|
|
83
|
+
this._parseScript(status),
|
|
84
|
+
this._parseRegion(status),
|
|
85
|
+
this._parseVariants(status),
|
|
86
|
+
this._parseExtensions(status),
|
|
87
|
+
this._parsePrivateSubtags(status),
|
|
88
|
+
this._parseTagEnd(status),
|
|
89
|
+
], status).onSuccess(() => {
|
|
90
|
+
return (0, ts_utils_1.succeed)(status.parsedSubtags);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Determines if the entire tag matches a registered grandfathered tag.
|
|
95
|
+
* @param state - The {@link Bcp47.ParserState | current state} of the
|
|
96
|
+
* parse operation.
|
|
97
|
+
* @returns `Success` with the updated {@link Bcp47.Subtags | subtags}
|
|
98
|
+
* if a grandfathered tag is found, or `Success` with the supplied subtags
|
|
99
|
+
* if no matching grandfathered tag is found.
|
|
100
|
+
* @
|
|
101
|
+
* @internal
|
|
102
|
+
*/
|
|
103
|
+
static _parseGrandfatheredTag(state) {
|
|
104
|
+
const grandfathered = state.iana.subtags.grandfathered.tryGet(state.tag);
|
|
105
|
+
if (grandfathered) {
|
|
106
|
+
state.parsedSubtags.grandfathered = state.tag;
|
|
107
|
+
// we consumed the whole thing
|
|
108
|
+
state.subtags.splice(0, state.subtags.length);
|
|
109
|
+
state.next = undefined;
|
|
110
|
+
}
|
|
111
|
+
return (0, ts_utils_1.succeed)(state.parsedSubtags);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Parses the primary language subtag of a supplied language tag.
|
|
115
|
+
* @param state - The {@link Bcp47.ParserState | current state} of the
|
|
116
|
+
* parse operation.
|
|
117
|
+
* @returns `Success` with supplied {@link Bcp47.Subtags | subtags}
|
|
118
|
+
* updated to include the primary language subtag, or `Failure` with details if an error
|
|
119
|
+
* occurs.
|
|
120
|
+
* @internal
|
|
121
|
+
*/
|
|
122
|
+
static _parsePrimaryLanguage(state) {
|
|
123
|
+
// primary language subtag is required unless the entire tag is grandfathered or consists
|
|
124
|
+
// of only private tags
|
|
125
|
+
if (state.iana.subtags.languages.isWellFormed(state.next)) {
|
|
126
|
+
state.parsedSubtags.primaryLanguage = state.next;
|
|
127
|
+
state.next = state.subtags.shift();
|
|
128
|
+
return (0, ts_utils_1.succeed)(state.parsedSubtags);
|
|
129
|
+
}
|
|
130
|
+
else if (state.parsedSubtags.grandfathered !== undefined) {
|
|
131
|
+
return (0, ts_utils_1.succeed)(state.parsedSubtags);
|
|
132
|
+
}
|
|
133
|
+
else if (bcp47Subtags_1.Validate.privateUsePrefix.isWellFormed(state.next)) {
|
|
134
|
+
// just return with no primary language and the private tag
|
|
135
|
+
// parser will be invoked by the parent flow.
|
|
136
|
+
return (0, ts_utils_1.succeed)(state.parsedSubtags);
|
|
137
|
+
}
|
|
138
|
+
return (0, ts_utils_1.fail)(`${state.tag}: no primary language subtag`);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Parses the extlang subtag(s) of a supplied language tag.
|
|
142
|
+
* @param state - The {@link Bcp47.ParserState | current state} of the
|
|
143
|
+
* parse operation.
|
|
144
|
+
* @returns `Success` with supplied {@link Bcp47.Subtags | subtags}
|
|
145
|
+
* updated to include extlang subtags if present, or `Failure` with details if an error
|
|
146
|
+
* occurs.
|
|
147
|
+
* @internal
|
|
148
|
+
*/
|
|
149
|
+
static _parseExtlang(state) {
|
|
150
|
+
// optional extlangs subtags
|
|
151
|
+
while (state.iana.subtags.extlangs.isWellFormed(state.next)) {
|
|
152
|
+
if (state.parsedSubtags.extlangs === undefined) {
|
|
153
|
+
state.parsedSubtags.extlangs = [state.next];
|
|
154
|
+
}
|
|
155
|
+
else if (state.parsedSubtags.extlangs.length < 3) {
|
|
156
|
+
state.parsedSubtags.extlangs.push(state.next);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
return (0, ts_utils_1.fail)(`${state.next}: too many extlang subtags`);
|
|
160
|
+
}
|
|
161
|
+
state.next = state.subtags.shift();
|
|
162
|
+
}
|
|
163
|
+
return (0, ts_utils_1.succeed)(state.parsedSubtags);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Parses the script subtag of a supplied language tag.
|
|
167
|
+
* @param state - The {@link Bcp47.ParserState | current state} of the
|
|
168
|
+
* parse operation.
|
|
169
|
+
* @returns `Success` with supplied {@link Bcp47.Subtags | subtags}
|
|
170
|
+
* updated to include the script subtag if present, or `Failure` with details if an error
|
|
171
|
+
* occurs.
|
|
172
|
+
* @internal
|
|
173
|
+
*/
|
|
174
|
+
static _parseScript(state) {
|
|
175
|
+
// optional script subtag
|
|
176
|
+
if (state.iana.subtags.scripts.isWellFormed(state.next)) {
|
|
177
|
+
state.parsedSubtags.script = state.next;
|
|
178
|
+
state.next = state.subtags.shift();
|
|
179
|
+
}
|
|
180
|
+
return (0, ts_utils_1.succeed)(state.parsedSubtags);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Parses the region subtag of a supplied language tag.
|
|
184
|
+
* @param state - The {@link Bcp47.ParserState | current state} of the
|
|
185
|
+
* parse operation.
|
|
186
|
+
* @returns `Success` with supplied {@link Bcp47.Subtags | subtags}
|
|
187
|
+
* updated to include the region subtag if present, or `Failure` with details if an error
|
|
188
|
+
* occurs.
|
|
189
|
+
* @internal
|
|
190
|
+
*/
|
|
191
|
+
static _parseRegion(state) {
|
|
192
|
+
// optional region subtag
|
|
193
|
+
if (state.iana.subtags.regions.isWellFormed(state.next)) {
|
|
194
|
+
state.parsedSubtags.region = state.next;
|
|
195
|
+
state.next = state.subtags.shift();
|
|
196
|
+
}
|
|
197
|
+
return (0, ts_utils_1.succeed)(state.parsedSubtags);
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Parses the variant subtag(s) of a supplied language tag.
|
|
201
|
+
* @param state - The {@link Bcp47.ParserState | current state} of the
|
|
202
|
+
* parse operation.
|
|
203
|
+
* @returns `Success` with supplied {@link Bcp47.Subtags | subtags}
|
|
204
|
+
* updated to include the variant subtags if present, or `Failure` with details if an error
|
|
205
|
+
* occurs.
|
|
206
|
+
* @internal
|
|
207
|
+
*/
|
|
208
|
+
static _parseVariants(state) {
|
|
209
|
+
// optional variant subtags
|
|
210
|
+
while (state.iana.subtags.variants.isWellFormed(state.next)) {
|
|
211
|
+
if (state.parsedSubtags.variants === undefined) {
|
|
212
|
+
state.parsedSubtags.variants = [state.next];
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
state.parsedSubtags.variants.push(state.next);
|
|
216
|
+
}
|
|
217
|
+
state.next = state.subtags.shift();
|
|
218
|
+
}
|
|
219
|
+
return (0, ts_utils_1.succeed)(state.parsedSubtags);
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Parses the extension subtag(s) of a supplied language tag.
|
|
223
|
+
* @param state - The {@link Bcp47.ParserState | current state} of the
|
|
224
|
+
* parse operation.
|
|
225
|
+
* @returns `Success` with supplied {@link Bcp47.Subtags | subtags}
|
|
226
|
+
* updated to include the extension subtags if present, or `Failure` with details if an error
|
|
227
|
+
* occurs.
|
|
228
|
+
* @internal
|
|
229
|
+
*/
|
|
230
|
+
static _parseExtensions(state) {
|
|
231
|
+
// optional extension subtags
|
|
232
|
+
while (state.next !== undefined && bcp47Subtags_1.Validate.extensionSingleton.isWellFormed(state.next)) {
|
|
233
|
+
const singleton = state.next;
|
|
234
|
+
const values = [];
|
|
235
|
+
state.next = state.subtags.shift();
|
|
236
|
+
while (bcp47Subtags_1.Validate.extensionSubtag.isWellFormed(state.next)) {
|
|
237
|
+
values.push(state.next);
|
|
238
|
+
state.next = state.subtags.shift();
|
|
239
|
+
}
|
|
240
|
+
if (state.next !== undefined &&
|
|
241
|
+
!bcp47Subtags_1.Validate.extensionSingleton.isWellFormed(state.next) &&
|
|
242
|
+
!bcp47Subtags_1.Validate.extensionSingleton.isWellFormed(state.next)) {
|
|
243
|
+
return (0, ts_utils_1.fail)(`${state.next}: malformed extension subtag`);
|
|
244
|
+
}
|
|
245
|
+
else if (values.length < 1) {
|
|
246
|
+
return (0, ts_utils_1.fail)(`${state.tag}: extension '${singleton}' must have at least one subtag.`);
|
|
247
|
+
}
|
|
248
|
+
const value = values.join('-');
|
|
249
|
+
if (state.parsedSubtags.extensions === undefined) {
|
|
250
|
+
state.parsedSubtags.extensions = [{ singleton, value }];
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
state.parsedSubtags.extensions.push({ singleton, value });
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
return (0, ts_utils_1.succeed)(state.parsedSubtags);
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Parses the private use subtags of a supplied language tag.
|
|
260
|
+
* @param state - The {@link Bcp47.ParserState | current state} of the
|
|
261
|
+
* parse operation.
|
|
262
|
+
* @returns `Success` with supplied {@link Bcp47.Subtags | subtags}
|
|
263
|
+
* updated to include the private-use subtags if present, or `Failure` with details if an error
|
|
264
|
+
* occurs.
|
|
265
|
+
* @internal
|
|
266
|
+
*/
|
|
267
|
+
static _parsePrivateSubtags(state) {
|
|
268
|
+
// optional private use subtags
|
|
269
|
+
while (state.next != undefined && bcp47Subtags_1.Validate.privateUsePrefix.isWellFormed(state.next)) {
|
|
270
|
+
const values = [];
|
|
271
|
+
state.next = state.subtags.shift();
|
|
272
|
+
while (state.next &&
|
|
273
|
+
!bcp47Subtags_1.Validate.privateUsePrefix.isWellFormed(state.next) &&
|
|
274
|
+
Iana.LanguageSubtags.Validate.extendedLanguageRange.isWellFormed(state.next)) {
|
|
275
|
+
values.push(state.next);
|
|
276
|
+
state.next = state.subtags.shift();
|
|
277
|
+
}
|
|
278
|
+
if (state.next !== undefined && !bcp47Subtags_1.Validate.privateUsePrefix.isWellFormed(state.next)) {
|
|
279
|
+
return (0, ts_utils_1.fail)(`${state.next}: malformed private-use subtag`);
|
|
280
|
+
}
|
|
281
|
+
else if (values.length < 1) {
|
|
282
|
+
return (0, ts_utils_1.fail)(`${state.tag}: private-use tag must have at least one subtag.`);
|
|
283
|
+
}
|
|
284
|
+
const value = values.join('-');
|
|
285
|
+
if (state.parsedSubtags.privateUse === undefined) {
|
|
286
|
+
state.parsedSubtags.privateUse = [value];
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
state.parsedSubtags.privateUse.push(value);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
return (0, ts_utils_1.succeed)(state.parsedSubtags);
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Verifies {@link Bcp47.ParserState | parser state} at the end of a parse operation.
|
|
296
|
+
* @param state - The {@link Bcp47.ParserState | current state} of the
|
|
297
|
+
* parse operation.
|
|
298
|
+
* @returns `Success` if the tag was fully consumed, or `Failure` with details
|
|
299
|
+
* if unexpected subtags remain to be parsed.
|
|
300
|
+
* @internal
|
|
301
|
+
*/
|
|
302
|
+
static _parseTagEnd(state) {
|
|
303
|
+
if (state.next !== undefined) {
|
|
304
|
+
return (0, ts_utils_1.fail)(`${state.next}: unexpected subtag`);
|
|
305
|
+
}
|
|
306
|
+
return (0, ts_utils_1.succeed)(state.parsedSubtags);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
exports.LanguageTagParser = LanguageTagParser;
|
|
310
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2VUYWdQYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmNwNDcvbGFuZ3VhZ2VUYWdQYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCw4Q0FBZ0M7QUFFaEMsNENBQTJFO0FBSTNFLGlEQUEwQztBQWExQzs7R0FFRztBQUNILE1BQWEsaUJBQWlCO0lBQzFCLHVCQUF1QjtJQUN2QixnRUFBZ0U7SUFDaEUsZ0JBQXVCLENBQUM7SUFFeEI7Ozs7Ozs7Ozs7T0FVRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBVyxFQUFFLElBQThCO1FBQzNELHVCQUF1QjtRQUN2QixJQUFJLEdBQUcsSUFBSSxhQUFKLElBQUksY0FBSixJQUFJLEdBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDO1FBQ3pELE1BQU0sTUFBTSxHQUFnQjtZQUN4QixHQUFHO1lBQ0gsSUFBSTtZQUNKLE9BQU8sRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUN2QixhQUFhLEVBQUUsRUFBRTtTQUNwQixDQUFDO1FBQ0YsTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRXJDLE9BQU8sSUFBQSxxQkFBVSxFQUNiO1lBQ0ksSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQztZQUNuQyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO1lBQzNCLElBQUksQ0FBQyxnQkFB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Q3hDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ08sTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFrQjtRQUM1QyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQzFCLE9BQU8sSUFBQSxlQUFJLEVBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDO1NBQ25EO1FBQ0QsT0FBTyxJQUFBLGtCQUFPLEVBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDSjtBQTVRRCw4Q0E0UUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0ICogYXMgSWFuYSBmcm9tICcuLi9pYW5hJztcblxuaW1wb3J0IHsgUmVzdWx0LCBTdWNjZXNzLCBhbGxTdWNjZWVkLCBmYWlsLCBzdWNjZWVkIH0gZnJvbSAnQGZndi90cy11dGlscyc7XG5cbmltcG9ydCB7IEV4dGVuc2lvblN1YnRhZyB9IGZyb20gJy4vYmNwNDdTdWJ0YWdzL21vZGVsJztcbmltcG9ydCB7IFN1YnRhZ3MgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBWYWxpZGF0ZSB9IGZyb20gJy4vYmNwNDdTdWJ0YWdzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuaW50ZXJmYWNlIFBhcnNlclN0YXRlIHtcbiAgICByZWFkb25seSBpYW5hOiBJYW5hLkxhbmd1YWdlUmVnaXN0cmllcztcbiAgICByZWFkb25seSB0YWc6IHN0cmluZztcbiAgICByZWFkb25seSBzdWJ0YWdzOiBzdHJpbmdbXTtcbiAgICByZWFkb25seSBwYXJzZWRTdWJ0YWdzOiBTdWJ0YWdzO1xuICAgIG5leHQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VUYWdQYXJzZXIge1xuICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIHByaXZhdGUgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgQkNQLTQ3ICh7QGxpbmsgaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzU2NDYuaHRtbCB8IFJGQyA1NjQ2fSlcbiAgICAgKiBsYW5ndWFnZSB0YWcsIHRvIHByb2R1Y2UgYSB7QGxpbmsgQmNwNDcuU3VidGFncyB8IFN1YnRhZ3N9IG9iamVjdCB3aGljaFxuICAgICAqIGJyZWFrcyBvdXQgZWFjaCBvZiB0aGUgc3VidGFncy5cbiAgICAgKiBAcGFyYW0gdGFnIC0gVGhlIGBzdHJpbmdgIGxhbmd1YWdlIHRhZyB0byBiZSBwYXJzZWQuXG4gICAgICogQHBhcmFtIGlhbmEgLSBPcHRpb25hbCB7QGxpbmsgSWFuYS5MYW5ndWFnZVJlZ2lzdHJpZXMgfCBJQU5BIGxhbmd1YWdlIHJlZ2lzdHJpZXN9XG4gICAgICogdG8gYmUgdXNlZC5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCB0aGUgcmVzdWx0aW5nIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc31cbiAgICAgKiBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yIG9jY3Vycy5cbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBwYXJzZSh0YWc6IHN0cmluZywgaWFuYT86IElhbmEuTGFuZ3VhZ2VSZWdpc3RyaWVzKTogUmVzdWx0PFN1YnRhZ3M+IHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgaWFuYSA9IGlhbmEgPz8gSWFuYS5EZWZhdWx0UmVnaXN0cmllcy5sYW5ndWFnZVJlZ2lzdHJpZXM7XG4gICAgICAgIGNvbnN0IHN0YXR1czogUGFyc2VyU3RhdGUgPSB7XG4gICAgICAgICAgICB0YWcsXG4gICAgICAgICAgICBpYW5hLFxuICAgICAgICAgICAgc3VidGFnczogdGFnLnNwbGl0KCctJyksXG4gICAgICAgICAgICBwYXJzZWRTdWJ0YWdzOiB7fSxcbiAgICAgICAgfTtcbiAgICAgICAgc3RhdHVzLm5leHQgPSBzdGF0dXMuc3VidGFncy5zaGlmdCgpO1xuXG4gICAgICAgIHJldHVybiBhbGxTdWNjZWVkKFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIHRoaXMuX3BhcnNlR3JhbmRmYXRoZXJlZFRhZyhzdGF0dXMpLFxuICAgICAgICAgICAgICAgIHRoaXMuX3BhcnNlUHJpbWFyeUxhbmd1YWdlKHN0YXR1cyksXG4gICAgICAgICAgICAgICAgdGhpcy5fcGFyc2VFeHRsYW5nKHN0YXR1cyksXG4gICAgICAgICAgICAgICAgdGhpcy5fcGFyc2VTY3JpcHQoc3RhdHVzKSxcbiAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZVJlZ2lvbihzdGF0dXMpLFxuICAgICAgICAgICAgICAgIHRoaXMuX3BhcnNlVmFyaWFudHMoc3RhdHVzKSxcbiAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZUV4dGVuc2lvbnMoc3RhdHVzKSxcbiAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZVByaXZhdGVTdWJ0YWdzKHN0YXR1cyksXG4gICAgICAgICAgICAgICAgdGhpcy5fcGFyc2VUYWdFbmQoc3RhdHVzKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBzdGF0dXNcbiAgICAgICAgKS5vblN1Y2Nlc3MoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3RhdHVzLnBhcnNlZFN1YnRhZ3MpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBlbnRpcmUgdGFnIG1hdGNoZXMgYSByZWdpc3RlcmVkIGdyYW5kZmF0aGVyZWQgdGFnLlxuICAgICAqIEBwYXJhbSBzdGF0ZSAtIFRoZSB7QGxpbmsgQmNwNDcuUGFyc2VyU3RhdGUgfCBjdXJyZW50IHN0YXRlfSBvZiB0aGVcbiAgICAgKiBwYXJzZSBvcGVyYXRpb24uXG4gICAgICogQHJldHVybnMgYFN1Y2Nlc3NgIHdpdGggdGhlIHVwZGF0ZWQge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfVxuICAgICAqIGlmIGEgZ3JhbmRmYXRoZXJlZCB0YWcgaXMgZm91bmQsIG9yIGBTdWNjZXNzYCB3aXRoIHRoZSBzdXBwbGllZCBzdWJ0YWdzXG4gICAgICogaWYgbm8gbWF0Y2hpbmcgZ3JhbmRmYXRoZXJlZCB0YWcgaXMgZm91bmQuXG4gICAgICogQFxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdGF0aWMgX3BhcnNlR3JhbmRmYXRoZXJlZFRhZyhzdGF0ZTogUGFyc2VyU3RhdGUpOiBTdWNjZXNzPFN1YnRhZ3M+IHtcbiAgICAgICAgY29uc3QgZ3JhbmRmYXRoZXJlZCA9IHN0YXRlLmlhbmEuc3VidGFncy5ncmFuZGZhdGhlcmVkLnRyeUdldChzdGF0ZS50YWcpO1xuICAgICAgICBpZiAoZ3JhbmRmYXRoZXJlZCkge1xuICAgICAgICAgICAgc3RhdGUucGFyc2VkU3VidGFncy5ncmFuZGZhdGhlcmVkID0gc3RhdGUudGFnIGFzIElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLkdyYW5kZmF0aGVyZWRUYWc7XG4gICAgICAgICAgICAvLyB3ZSBjb25zdW1lZCB0aGUgd2hvbGUgdGhpbmdcbiAgICAgICAgICAgIHN0YXRlLnN1YnRhZ3Muc3BsaWNlKDAsIHN0YXRlLnN1YnRhZ3MubGVuZ3RoKTtcbiAgICAgICAgICAgIHN0YXRlLm5leHQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3RhdGUucGFyc2VkU3VidGFncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIHRoZSBwcmltYXJ5IGxhbmd1YWdlIHN1YnRhZyBvZiBhIHN1cHBsaWVkIGxhbmd1YWdlIHRhZy5cbiAgICAgKiBAcGFyYW0gc3RhdGUgLSBUaGUge0BsaW5rIEJjcDQ3LlBhcnNlclN0YXRlIHwgY3VycmVudCBzdGF0ZX0gb2YgdGhlXG4gICAgICogcGFyc2Ugb3BlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHN1cHBsaWVkIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc31cbiAgICAgKiB1cGRhdGVkIHRvIGluY2x1ZGUgdGhlIHByaW1hcnkgbGFuZ3VhZ2Ugc3VidGFnLCBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yXG4gICAgICogb2NjdXJzLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdGF0aWMgX3BhcnNlUHJpbWFyeUxhbmd1YWdlKHN0YXRlOiBQYXJzZXJTdGF0ZSk6IFJlc3VsdDxTdWJ0YWdzPiB7XG4gICAgICAgIC8vIHByaW1hcnkgbGFuZ3VhZ2Ugc3VidGFnIGlzIHJlcXVpcmVkIHVubGVzcyB0aGUgZW50aXJlIHRhZyBpcyBncmFuZGZhdGhlcmVkIG9yIGNvbnNpc3RzXG4gICAgICAgIC8vIG9mIG9ubHkgcHJpdmF0ZSB0YWdzXG4gICAgICAgIGlmIChzdGF0ZS5pYW5hLnN1YnRhZ3MubGFuZ3VhZ2VzLmlzV2VsbEZvcm1lZChzdGF0ZS5uZXh0KSkge1xuICAgICAgICAgICAgc3RhdGUucGFyc2VkU3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UgPSBzdGF0ZS5uZXh0O1xuICAgICAgICAgICAgc3RhdGUubmV4dCA9IHN0YXRlLnN1YnRhZ3Muc2hpZnQoKTtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKHN0YXRlLnBhcnNlZFN1YnRhZ3MpO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLnBhcnNlZFN1YnRhZ3MuZ3JhbmRmYXRoZXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChzdGF0ZS5wYXJzZWRTdWJ0YWdzKTtcbiAgICAgICAgfSBlbHNlIGlmIChWYWxpZGF0ZS5wcml2YXRlVXNlUHJlZml4LmlzV2VsbEZvcm1lZChzdGF0ZS5uZXh0KSkge1xuICAgICAgICAgICAgLy8ganVzdCByZXR1cm4gd2l0aCBubyBwcmltYXJ5IGxhbmd1YWdlIGFuZCB0aGUgcHJpdmF0ZSB0YWdcbiAgICAgICAgICAgIC8vIHBhcnNlciB3aWxsIGJlIGludm9rZWQgYnkgdGhlIHBhcmVudCBmbG93LlxuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3RhdGUucGFyc2VkU3VidGFncyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhaWwoYCR7c3RhdGUudGFnfTogbm8gcHJpbWFyeSBsYW5ndWFnZSBzdWJ0YWdgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXJzZXMgdGhlIGV4dGxhbmcgc3VidGFnKHMpIG9mIGEgc3VwcGxpZWQgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEBwYXJhbSBzdGF0ZSAtIFRoZSB7QGxpbmsgQmNwNDcuUGFyc2VyU3RhdGUgfCBjdXJyZW50IHN0YXRlfSBvZiB0aGVcbiAgICAgKiBwYXJzZSBvcGVyYXRpb24uXG4gICAgICogQHJldHVybnMgYFN1Y2Nlc3NgIHdpdGggc3VwcGxpZWQge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfVxuICAgICAqIHVwZGF0ZWQgdG8gaW5jbHVkZSBleHRsYW5nIHN1YnRhZ3MgaWYgcHJlc2VudCwgb3IgYEZhaWx1cmVgIHdpdGggZGV0YWlscyBpZiBhbiBlcnJvclxuICAgICAqIG9jY3Vycy5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9wYXJzZUV4dGxhbmcoc3RhdGU6IFBhcnNlclN0YXRlKTogUmVzdWx0PFN1YnRhZ3M+IHtcbiAgICAgICAgLy8gb3B0aW9uYWwgZXh0bGFuZ3Mgc3VidGFnc1xuICAgICAgICB3aGlsZSAoc3RhdGUuaWFuYS5zdWJ0YWdzLmV4dGxhbmdzLmlzV2VsbEZvcm1lZChzdGF0ZS5uZXh0KSkge1xuICAgICAgICAgICAgaWYgKHN0YXRlLnBhcnNlZFN1YnRhZ3MuZXh0bGFuZ3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHN0YXRlLnBhcnNlZFN1YnRhZ3MuZXh0bGFuZ3MgPSBbc3RhdGUubmV4dF07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLnBhcnNlZFN1YnRhZ3MuZXh0bGFuZ3MubGVuZ3RoIDwgMykge1xuICAgICAgICAgICAgICAgIHN0YXRlLnBhcnNlZFN1YnRhZ3MuZXh0bGFuZ3MucHVzaChzdGF0ZS5uZXh0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7c3RhdGUubmV4dH06IHRvbyBtYW55IGV4dGxhbmcgc3VidGFnc2ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhdGUubmV4dCA9IHN0YXRlLnN1YnRhZ3Muc2hpZnQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZChzdGF0ZS5wYXJzZWRTdWJ0YWdzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXJzZXMgdGhlIHNjcmlwdCBzdWJ0YWcgb2YgYSBzdXBwbGllZCBsYW5ndWFnZSB0YWcuXG4gICAgICogQHBhcmFtIHN0YXRlIC0gVGhlIHtAbGluayBCY3A0Ny5QYXJzZXJTdGF0ZSB8IGN1cnJlbnQgc3RhdGV9IG9mIHRoZVxuICAgICAqIHBhcnNlIG9wZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCBzdXBwbGllZCB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9XG4gICAgICogdXBkYXRlZCB0byBpbmNsdWRlIHRoZSBzY3JpcHQgc3VidGFnIGlmIHByZXNlbnQsIG9yIGBGYWlsdXJlYCB3aXRoIGRldGFpbHMgaWYgYW4gZXJyb3JcbiAgICAgKiBvY2N1cnMuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfcGFyc2VTY3JpcHQoc3RhdGU6IFBhcnNlclN0YXRlKTogUmVzdWx0PFN1YnRhZ3M+IHtcbiAgICAgICAgLy8gb3B0aW9uYWwgc2NyaXB0IHN1YnRhZ1xuICAgICAgICBpZiAoc3RhdGUuaWFuYS5zdWJ0YWdzLnNjcmlwdHMuaXNXZWxsRm9ybWVkKHN0YXRlLm5leHQpKSB7XG4gICAgICAgICAgICBzdGF0ZS5wYXJzZWRTdWJ0YWdzLnNjcmlwdCA9IHN0YXRlLm5leHQ7XG4gICAgICAgICAgICBzdGF0ZS5uZXh0ID0gc3RhdGUuc3VidGFncy5zaGlmdCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHN0YXRlLnBhcnNlZFN1YnRhZ3MpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhcnNlcyB0aGUgcmVnaW9uIHN1YnRhZyBvZiBhIHN1cHBsaWVkIGxhbmd1YWdlIHRhZy5cbiAgICAgKiBAcGFyYW0gc3RhdGUgLSBUaGUge0BsaW5rIEJjcDQ3LlBhcnNlclN0YXRlIHwgY3VycmVudCBzdGF0ZX0gb2YgdGhlXG4gICAgICogcGFyc2Ugb3BlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHN1cHBsaWVkIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc31cbiAgICAgKiB1cGRhdGVkIHRvIGluY2x1ZGUgdGhlIHJlZ2lvbiBzdWJ0YWcgaWYgcHJlc2VudCwgb3IgYEZhaWx1cmVgIHdpdGggZGV0YWlscyBpZiBhbiBlcnJvclxuICAgICAqIG9jY3Vycy5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9wYXJzZVJlZ2lvbihzdGF0ZTogUGFyc2VyU3RhdGUpOiBSZXN1bHQ8U3VidGFncz4ge1xuICAgICAgICAvLyBvcHRpb25hbCByZWdpb24gc3VidGFnXG4gICAgICAgIGlmIChzdGF0ZS5pYW5hLnN1YnRhZ3MucmVnaW9ucy5pc1dlbGxGb3JtZWQoc3RhdGUubmV4dCkpIHtcbiAgICAgICAgICAgIHN0YXRlLnBhcnNlZFN1YnRhZ3MucmVnaW9uID0gc3RhdGUubmV4dDtcbiAgICAgICAgICAgIHN0YXRlLm5leHQgPSBzdGF0ZS5zdWJ0YWdzLnNoaWZ0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3RhdGUucGFyc2VkU3VidGFncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIHRoZSB2YXJpYW50IHN1YnRhZyhzKSBvZiBhIHN1cHBsaWVkIGxhbmd1YWdlIHRhZy5cbiAgICAgKiBAcGFyYW0gc3RhdGUgLSBUaGUge0BsaW5rIEJjcDQ3LlBhcnNlclN0YXRlIHwgY3VycmVudCBzdGF0ZX0gb2YgdGhlXG4gICAgICogcGFyc2Ugb3BlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHN1cHBsaWVkIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc31cbiAgICAgKiB1cGRhdGVkIHRvIGluY2x1ZGUgdGhlIHZhcmlhbnQgc3VidGFncyBpZiBwcmVzZW50LCBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yXG4gICAgICogb2NjdXJzLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdGF0aWMgX3BhcnNlVmFyaWFudHMoc3RhdGU6IFBhcnNlclN0YXRlKTogUmVzdWx0PFN1YnRhZ3M+IHtcbiAgICAgICAgLy8gb3B0aW9uYWwgdmFyaWFudCBzdWJ0YWdzXG4gICAgICAgIHdoaWxlIChzdGF0ZS5pYW5hLnN1YnRhZ3MudmFyaWFudHMuaXNXZWxsRm9ybWVkKHN0YXRlLm5leHQpKSB7XG4gICAgICAgICAgICBpZiAoc3RhdGUucGFyc2VkU3VidGFncy52YXJpYW50cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUucGFyc2VkU3VidGFncy52YXJpYW50cyA9IFtzdGF0ZS5uZXh0XTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RhdGUucGFyc2VkU3VidGFncy52YXJpYW50cy5wdXNoKHN0YXRlLm5leHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhdGUubmV4dCA9IHN0YXRlLnN1YnRhZ3Muc2hpZnQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZChzdGF0ZS5wYXJzZWRTdWJ0YWdzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXJzZXMgdGhlIGV4dGVuc2lvbiBzdWJ0YWcocykgb2YgYSBzdXBwbGllZCBsYW5ndWFnZSB0YWcuXG4gICAgICogQHBhcmFtIHN0YXRlIC0gVGhlIHtAbGluayBCY3A0Ny5QYXJzZXJTdGF0ZSB8IGN1cnJlbnQgc3RhdGV9IG9mIHRoZVxuICAgICAqIHBhcnNlIG9wZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCBzdXBwbGllZCB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9XG4gICAgICogdXBkYXRlZCB0byBpbmNsdWRlIHRoZSBleHRlbnNpb24gc3VidGFncyBpZiBwcmVzZW50LCBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yXG4gICAgICogb2NjdXJzLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdGF0aWMgX3BhcnNlRXh0ZW5zaW9ucyhzdGF0ZTogUGFyc2VyU3RhdGUpOiBSZXN1bHQ8U3VidGFncz4ge1xuICAgICAgICAvLyBvcHRpb25hbCBleHRlbnNpb24gc3VidGFnc1xuICAgICAgICB3aGlsZSAoc3RhdGUubmV4dCAhPT0gdW5kZWZpbmVkICYmIFZhbGlkYXRlLmV4dGVuc2lvblNpbmdsZXRvbi5pc1dlbGxGb3JtZWQoc3RhdGUubmV4dCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHNpbmdsZXRvbiA9IHN0YXRlLm5leHQ7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZXM6IEV4dGVuc2lvblN1YnRhZ1tdID0gW107XG4gICAgICAgICAgICBzdGF0ZS5uZXh0ID0gc3RhdGUuc3VidGFncy5zaGlmdCgpO1xuXG4gICAgICAgICAgICB3aGlsZSAoVmFsaWRhdGUuZXh0ZW5zaW9uU3VidGFnLmlzV2VsbEZvcm1lZChzdGF0ZS5uZXh0KSkge1xuICAgICAgICAgICAgICAgIHZhbHVlcy5wdXNoKHN0YXRlLm5leHQpO1xuICAgICAgICAgICAgICAgIHN0YXRlLm5leHQgPSBzdGF0ZS5zdWJ0YWdzLnNoaWZ0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc3RhdGUubmV4dCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgIVZhbGlkYXRlLmV4dGVuc2lvblNpbmdsZXRvbi5pc1dlbGxGb3JtZWQoc3RhdGUubmV4dCkgJiZcbiAgICAgICAgICAgICAgICAhVmFsaWRhdGUuZXh0ZW5zaW9uU2luZ2xldG9uLmlzV2VsbEZvcm1lZChzdGF0ZS5uZXh0KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7c3RhdGUubmV4dH06IG1hbGZvcm1lZCBleHRlbnNpb24gc3VidGFnYCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlcy5sZW5ndGggPCAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7c3RhdGUudGFnfTogZXh0ZW5zaW9uICcke3NpbmdsZXRvbn0nIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgc3VidGFnLmApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlcy5qb2luKCctJykgYXMgRXh0ZW5zaW9uU3VidGFnO1xuICAgICAgICAgICAgaWYgKHN0YXRlLnBhcnNlZFN1YnRhZ3MuZXh0ZW5zaW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUucGFyc2VkU3VidGFncy5leHRlbnNpb25zID0gW3sgc2luZ2xldG9uLCB2YWx1ZSB9XTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RhdGUucGFyc2VkU3VidGFncy5leHRlbnNpb25zLnB1c2goeyBzaW5nbGV0b24sIHZhbHVlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHN0YXRlLnBhcnNlZFN1YnRhZ3MpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhcnNlcyB0aGUgcHJpdmF0ZSB1c2Ugc3VidGFncyBvZiBhIHN1cHBsaWVkIGxhbmd1YWdlIHRhZy5cbiAgICAgKiBAcGFyYW0gc3RhdGUgLSBUaGUge0BsaW5rIEJjcDQ3LlBhcnNlclN0YXRlIHwgY3VycmVudCBzdGF0ZX0gb2YgdGhlXG4gICAgICogcGFyc2Ugb3BlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHN1cHBsaWVkIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc31cbiAgICAgKiB1cGRhdGVkIHRvIGluY2x1ZGUgdGhlIHByaXZhdGUtdXNlIHN1YnRhZ3MgaWYgcHJlc2VudCwgb3IgYEZhaWx1cmVgIHdpdGggZGV0YWlscyBpZiBhbiBlcnJvclxuICAgICAqIG9jY3Vycy5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9wYXJzZVByaXZhdGVTdWJ0YWdzKHN0YXRlOiBQYXJzZXJTdGF0ZSk6IFJlc3VsdDxTdWJ0YWdzPiB7XG4gICAgICAgIC8vIG9wdGlvbmFsIHByaXZhdGUgdXNlIHN1YnRhZ3NcbiAgICAgICAgd2hpbGUgKHN0YXRlLm5leHQgIT0gdW5kZWZpbmVkICYmIFZhbGlkYXRlLnByaXZhdGVVc2VQcmVmaXguaXNXZWxsRm9ybWVkKHN0YXRlLm5leHQpKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZXM6IHN0cmluZ1tdID0gW107XG4gICAgICAgICAgICBzdGF0ZS5uZXh0ID0gc3RhdGUuc3VidGFncy5zaGlmdCgpO1xuXG4gICAgICAgICAgICB3aGlsZSAoXG4gICAgICAgICAgICAgICAgc3RhdGUubmV4dCAmJlxuICAgICAgICAgICAgICAgICFWYWxpZGF0ZS5wcml2YXRlVXNlUHJlZml4LmlzV2VsbEZvcm1lZChzdGF0ZS5uZXh0KSAmJlxuICAgICAgICAgICAgICAgIElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLlZhbGlkYXRlLmV4dGVuZGVkTGFuZ3VhZ2VSYW5nZS5pc1dlbGxGb3JtZWQoc3RhdGUubmV4dClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHZhbHVlcy5wdXNoKHN0YXRlLm5leHQpO1xuICAgICAgICAgICAgICAgIHN0YXRlLm5leHQgPSBzdGF0ZS5zdWJ0YWdzLnNoaWZ0KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzdGF0ZS5uZXh0ICE9PSB1bmRlZmluZWQgJiYgIVZhbGlkYXRlLnByaXZhdGVVc2VQcmVmaXguaXNXZWxsRm9ybWVkKHN0YXRlLm5leHQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7c3RhdGUubmV4dH06IG1hbGZvcm1lZCBwcml2YXRlLXVzZSBzdWJ0YWdgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWVzLmxlbmd0aCA8IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFpbChgJHtzdGF0ZS50YWd9OiBwcml2YXRlLXVzZSB0YWcgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBzdWJ0YWcuYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVzLmpvaW4oJy0nKSBhcyBJYW5hLkxhbmd1YWdlU3VidGFncy5FeHRlbmRlZExhbmd1YWdlUmFuZ2U7XG4gICAgICAgICAgICBpZiAoc3RhdGUucGFyc2VkU3VidGFncy5wcml2YXRlVXNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5wYXJzZWRTdWJ0YWdzLnByaXZhdGVVc2UgPSBbdmFsdWVdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5wYXJzZWRTdWJ0YWdzLnByaXZhdGVVc2UucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3RhdGUucGFyc2VkU3VidGFncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmVyaWZpZXMge0BsaW5rIEJjcDQ3LlBhcnNlclN0YXRlIHwgcGFyc2VyIHN0YXRlfSBhdCB0aGUgZW5kIG9mIGEgcGFyc2Ugb3BlcmF0aW9uLlxuICAgICAqIEBwYXJhbSBzdGF0ZSAtIFRoZSB7QGxpbmsgQmNwNDcuUGFyc2VyU3RhdGUgfCBjdXJyZW50IHN0YXRlfSBvZiB0aGVcbiAgICAgKiBwYXJzZSBvcGVyYXRpb24uXG4gICAgICogQHJldHVybnMgYFN1Y2Nlc3NgIGlmIHRoZSB0YWcgd2FzIGZ1bGx5IGNvbnN1bWVkLCBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzXG4gICAgICogaWYgdW5leHBlY3RlZCBzdWJ0YWdzIHJlbWFpbiB0byBiZSBwYXJzZWQuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfcGFyc2VUYWdFbmQoc3RhdGU6IFBhcnNlclN0YXRlKTogUmVzdWx0PFN1YnRhZ3M+IHtcbiAgICAgICAgaWYgKHN0YXRlLm5leHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7c3RhdGUubmV4dH06IHVuZXhwZWN0ZWQgc3VidGFnYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3RhdGUucGFyc2VkU3VidGFncyk7XG4gICAgfVxufVxuIl19
|
|
@@ -24,7 +24,7 @@ export interface MatchingLanguage {
|
|
|
24
24
|
languageTag: LanguageTag;
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
|
-
* Options for {@link Bcp47.
|
|
27
|
+
* Options for {@link Bcp47.choose | language tag list filter} functions.
|
|
28
28
|
* @public
|
|
29
29
|
*/
|
|
30
30
|
export interface LanguageChooserOptions {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chooser.d.ts","sourceRoot":"","sources":["../../../src/bcp47/match/chooser.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,WAAW,EAAE,WAAW,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACnC;;;OAGG;IACH,GAAG,CAAC,EAAE,iBAAiB,GAAG,mBAAmB,CAAC;IAE9C;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC;IAEpC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;CACrD;AAED;;;GAGG;AACH,eAAO,MAAM,6BAA6B,EAAE,sBAG1C,CAAC;AAEH;;;;GAIG;AACH,qBAAa,eAAe;IACxB;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAC;gBAEpC,IAAI,CAAC,EAAE,IAAI,CAAC,kBAAkB;IAI1C,6BAA6B,CAChC,gBAAgB,EAAE,WAAW,EAAE,EAC/B,kBAAkB,EAAE,WAAW,EAAE,EACjC,OAAO,CAAC,EAAE,sBAAsB,GACjC,gBAAgB,EAAE;IAgDd,kBAAkB,CACrB,gBAAgB,EAAE,WAAW,EAAE,EAC/B,kBAAkB,EAAE,WAAW,EAAE,EACjC,OAAO,CAAC,EAAE,sBAAsB,GACjC,WAAW,EAAE;CAGnB"}
|
|
@@ -0,0 +1,92 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.LanguageChooser = exports.defaultLanguageChooserOptions = void 0;
|
|
25
|
+
const similarity_1 = require("./similarity");
|
|
26
|
+
const languageTag_1 = require("../languageTag");
|
|
27
|
+
/**
|
|
28
|
+
* Default values for a{@link Bcp47.LanguageFilterOptions}.
|
|
29
|
+
* @public
|
|
30
|
+
*/
|
|
31
|
+
exports.defaultLanguageChooserOptions = Object.freeze({
|
|
32
|
+
use: 'availableLanguage',
|
|
33
|
+
filter: 'primaryLanguage',
|
|
34
|
+
});
|
|
35
|
+
/**
|
|
36
|
+
* Helper to compare a list of 'desired' languages to a list of 'available' language
|
|
37
|
+
* and return the intersection in order of preference, taking tag semantics into account.
|
|
38
|
+
* @public
|
|
39
|
+
*/
|
|
40
|
+
class LanguageChooser {
|
|
41
|
+
constructor(iana) {
|
|
42
|
+
this._matcher = new similarity_1.LanguageSimilarityMatcher(iana);
|
|
43
|
+
}
|
|
44
|
+
chooseLanguageTagsWithDetails(desiredLanguages, availableLanguages, options) {
|
|
45
|
+
var _a;
|
|
46
|
+
const matched = new Map();
|
|
47
|
+
const decrement = desiredLanguages.length < 10 ? 0.1 : 1.0 / desiredLanguages.length;
|
|
48
|
+
let base = 1.0;
|
|
49
|
+
// fill any missing fields from the default
|
|
50
|
+
options = { ...exports.defaultLanguageChooserOptions, ...options };
|
|
51
|
+
for (const want of desiredLanguages) {
|
|
52
|
+
base -= decrement;
|
|
53
|
+
for (const have of availableLanguages) {
|
|
54
|
+
const similarity = this._matcher.matchLanguageTags(want, have);
|
|
55
|
+
if (similarity > 0.0) {
|
|
56
|
+
const quality = base + similarity * decrement;
|
|
57
|
+
const languageTag = options.use === 'availableLanguage' ? have : want;
|
|
58
|
+
const tag = languageTag.tag;
|
|
59
|
+
const key = options.filter === 'primaryLanguage' ? (_a = languageTag.subtags.primaryLanguage) !== null && _a !== void 0 ? _a : tag : tag;
|
|
60
|
+
const match = {
|
|
61
|
+
quality,
|
|
62
|
+
tag,
|
|
63
|
+
languageTag,
|
|
64
|
+
};
|
|
65
|
+
const existing = matched.get(key);
|
|
66
|
+
if (!existing || existing.quality < quality) {
|
|
67
|
+
matched.set(key, match);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const values = Array.from(matched.values());
|
|
73
|
+
if (values.length > 1) {
|
|
74
|
+
// want descending order
|
|
75
|
+
values.sort((m1, m2) => m2.quality - m1.quality);
|
|
76
|
+
}
|
|
77
|
+
else if (values.length === 0 && options.ultimateFallback) {
|
|
78
|
+
const languageTag = options.ultimateFallback instanceof languageTag_1.LanguageTag
|
|
79
|
+
? options.ultimateFallback
|
|
80
|
+
: languageTag_1.LanguageTag.create(options.ultimateFallback).orDefault();
|
|
81
|
+
if (languageTag) {
|
|
82
|
+
return [{ languageTag, tag: languageTag.tag, quality: 0 }];
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return values;
|
|
86
|
+
}
|
|
87
|
+
filterLanguageTags(desiredLanguages, availableLanguages, options) {
|
|
88
|
+
return this.chooseLanguageTagsWithDetails(desiredLanguages, availableLanguages, options).map((t) => t.languageTag);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.LanguageChooser = LanguageChooser;
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvb3Nlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iY3A0Ny9tYXRjaC9jaG9vc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUlILDZDQUF5RDtBQUN6RCxnREFBNkM7QUFxRDdDOzs7R0FHRztBQUNVLFFBQUEsNkJBQTZCLEdBQTJCLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDL0UsR0FBRyxFQUFFLG1CQUFtQjtJQUN4QixNQUFNLEVBQUUsaUJBQWlCO0NBQzVCLENBQUMsQ0FBQztBQUVIOzs7O0dBSUc7QUFDSCxNQUFhLGVBQWU7SUFNeEIsWUFBbUIsSUFBOEI7UUFDN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHNDQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTSw2QkFBNkIsQ0FDaEMsZ0JBQStCLEVBQy9CLGtCQUFpQyxFQUNqQyxPQUFnQzs7UUFFaEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQTRCLENBQUM7UUFDcEQsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1FBQ3JGLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUVmLDJDQUEyQztRQUMzQyxPQUFPLEdBQUcsRUFBRSxHQUFHLHFDQUE2QixFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFFM0QsS0FBSyxNQUFNLElBQUksSUFBSSxnQkFBZ0IsRUFBRTtZQUNqQyxJQUFJLElBQUksU0FBUyxDQUFDO1lBQ2xCLEtBQUssTUFBTSxJQUFJLElBQUksa0JBQWtCLEVBQUU7Z0JBQ25DLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUMvRCxJQUFJLFVBQVUsR0FBRyxHQUFHLEVBQUU7b0JBQ2xCLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxVQUFVLEdBQUcsU0FBUyxDQUFDO29CQUM5QyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxLQUFLLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztvQkFDdEUsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQztvQkFDNUIsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQU0sS0FBSyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsTUFBQSxXQUFXLENBQUMsT0FBTyxDQUFDLGVBQWUsbUNBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7b0JBRXBHLE1BQU0sS0FBSyxHQUFxQjt3QkFDNUIsT0FBTzt3QkFDUCxHQUFHO3dCQUNILFdBQVc7cUJBQ2QsQ0FBQztvQkFFRixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNsQyxJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEdBQUcsT0FBTyxFQUFFO3dCQUN6QyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztxQkFDM0I7aUJBQ0o7YUFDSjtTQUNKO1FBRUQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUM1QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLHdCQUF3QjtZQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDcEQ7YUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtZQUN4RCxNQUFNLFdBQVcsR0FDYixPQUFPLENBQUMsZ0JBQWdCLFlBQVkseUJBQVc7Z0JBQzNDLENBQUMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCO2dCQUMxQixDQUFDLENBQUMseUJBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkUsSUFBSSxXQUFXLEVBQUU7Z0JBQ2IsT0FBTyxDQUFDLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQzlEO1NBQ0o7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU0sa0JBQWtCLENBQ3JCLGdCQUErQixFQUMvQixrQkFBaUMsRUFDakMsT0FBZ0M7UUFFaEMsT0FBTyxJQUFJLENBQUMsNkJBQTZCLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkgsQ0FBQztDQUNKO0FBckVELDBDQXFFQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjIgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBJYW5hIGZyb20gJy4uLy4uL2lhbmEnO1xuXG5pbXBvcnQgeyBMYW5ndWFnZVNpbWlsYXJpdHlNYXRjaGVyIH0gZnJvbSAnLi9zaW1pbGFyaXR5JztcbmltcG9ydCB7IExhbmd1YWdlVGFnIH0gZnJvbSAnLi4vbGFuZ3VhZ2VUYWcnO1xuaW1wb3J0IHsgU3VidGFncyB9IGZyb20gJy4uL2NvbW1vbic7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSBtYXRjaGluZyBmaWx0ZXJlZCBsYW5ndWFnZS5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXRjaGluZ0xhbmd1YWdlIHtcbiAgICAvKipcbiAgICAgKiBOdW1lcmljIGluZGljYXRpb24gb2YgaG93IHdlbGwgdGhlIGxhbmd1YWdlIG1hdGNoZXMsXG4gICAgICogZnJvbSBwZXJmZWN0IChgMS4wYCkgdG8gbm90IGF0IGFsbCAoYDAuMGApLiAgV2hlblxuICAgICAqIG1hdGNoaW5nIGFuIG9yZGVyZWQgbGlzdCwgbGFuZ3VhZ2VzIGF0IHRoZSBmcm9udCBvZlxuICAgICAqIHRoZSBkZXNpcmVkIGxhbmd1YWdlIGxpc3QgYXJlIGFsd2F5cyBoaWdoZXIgcXVhbGl0eS5cbiAgICAgKi9cbiAgICBxdWFsaXR5OiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogVGhlIGBzdHJpbmdgIHRhZyBvZiB0aGUgbWF0Y2hlZCBsYW5ndWFnZS5cbiAgICAgKi9cbiAgICB0YWc6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgbWF0Y2hlZCB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9LlxuICAgICAqL1xuICAgIGxhbmd1YWdlVGFnOiBMYW5ndWFnZVRhZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgQmNwNDcuY2hvb3NlIHwgbGFuZ3VhZ2UgdGFnIGxpc3QgZmlsdGVyfSBmdW5jdGlvbnMuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFuZ3VhZ2VDaG9vc2VyT3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZSBtYXRjaGluZyBsYW5ndWFnZSBmcm9tIHRoZVxuICAgICAqIGRlc2lyZWQgbGlzdCBvciB0aGUgYXZhaWxhYmxlIGxpc3QuIERlZmF1bHQgaXMgYCdhdmFpbGFibGVMYW5ndWFnZSdgLlxuICAgICAqL1xuICAgIHVzZT86ICdkZXNpcmVkTGFuZ3VhZ2UnIHwgJ2F2YWlsYWJsZUxhbmd1YWdlJztcblxuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyBob3cgdG8gZmlsdGVyIHRoZSBsYW5ndWFnZSBsaXN0IC0gYCdwcmltYXJ5TGFuZ3VhZ2UnYFxuICAgICAqIGluZGljYXRlcyB0aGUgZWFjaCBwcmltYXJ5IGxhbmd1YWdlIHNob3VsZCBhcHBlYXIgb25seSBvbmNlIGluXG4gICAgICogdGhlIGxpc3QgaW4gaXRzIG1vc3Qgc2ltaWxhciBmb3JtLiAgQSBmaWx0ZXIgdmFsdWUgb2YgYCdub25lJ2BcbiAgICAgKiByZXBvcnRzIGFsbCBtYXRjaGluZyB2YXJpYW50cyBvZiBhbnkgcHJpbWFyeSBsYW5ndWFnZSBpbiBvcmRlclxuICAgICAqIG9mIHNpbWlsYXJpdHkuICBEZWZhdWx0IGlzIGAncHJpbWFyeUxhbmd1YWdlJ2BcbiAgICAgKi9cbiAgICBmaWx0ZXI/OiAncHJpbWFyeUxhbmd1YWdlJyB8ICdub25lJztcblxuICAgIC8qKlxuICAgICAqIEFuIG9wdGlvbmFsIHtAbGluayBCY3A0Ny5MYW5ndWFnZVNwZWMgfCBsYW5ndWFnZSBzcGVjaWZpY2F0aW9ufVxuICAgICAqIGluZGljYXRpbmcgYSBsYW5ndWFnZSB0byBiZSByZXR1cm5lZCBpZiB0aGUgZmlsdGVyIGNhbGwgd291bGRcbiAgICAgKiBvdGhlcndpc2UgcmV0dXJuIGFuIGVtcHR5IGxpc3QgKGkuZS4gbm8gbGFuZ3VhZ2VzIG1hdGNoKS5cbiAgICAgKi9cbiAgICB1bHRpbWF0ZUZhbGxiYWNrPzogc3RyaW5nIHwgU3VidGFncyB8IExhbmd1YWdlVGFnO1xufVxuXG4vKipcbiAqIERlZmF1bHQgdmFsdWVzIGZvciBhe0BsaW5rIEJjcDQ3Lkxhbmd1YWdlRmlsdGVyT3B0aW9uc30uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0TGFuZ3VhZ2VDaG9vc2VyT3B0aW9uczogTGFuZ3VhZ2VDaG9vc2VyT3B0aW9ucyA9IE9iamVjdC5mcmVlemUoe1xuICAgIHVzZTogJ2F2YWlsYWJsZUxhbmd1YWdlJyxcbiAgICBmaWx0ZXI6ICdwcmltYXJ5TGFuZ3VhZ2UnLFxufSk7XG5cbi8qKlxuICogSGVscGVyIHRvIGNvbXBhcmUgYSBsaXN0IG9mICdkZXNpcmVkJyBsYW5ndWFnZXMgdG8gYSBsaXN0IG9mICdhdmFpbGFibGUnIGxhbmd1YWdlXG4gKiBhbmQgcmV0dXJuIHRoZSBpbnRlcnNlY3Rpb24gaW4gb3JkZXIgb2YgcHJlZmVyZW5jZSwgdGFraW5nIHRhZyBzZW1hbnRpY3MgaW50byBhY2NvdW50LlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VDaG9vc2VyIHtcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX21hdGNoZXI6IExhbmd1YWdlU2ltaWxhcml0eU1hdGNoZXI7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoaWFuYT86IElhbmEuTGFuZ3VhZ2VSZWdpc3RyaWVzKSB7XG4gICAgICAgIHRoaXMuX21hdGNoZXIgPSBuZXcgTGFuZ3VhZ2VTaW1pbGFyaXR5TWF0Y2hlcihpYW5hKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hvb3NlTGFuZ3VhZ2VUYWdzV2l0aERldGFpbHMoXG4gICAgICAgIGRlc2lyZWRMYW5ndWFnZXM6IExhbmd1YWdlVGFnW10sXG4gICAgICAgIGF2YWlsYWJsZUxhbmd1YWdlczogTGFuZ3VhZ2VUYWdbXSxcbiAgICAgICAgb3B0aW9ucz86IExhbmd1YWdlQ2hvb3Nlck9wdGlvbnNcbiAgICApOiBNYXRjaGluZ0xhbmd1YWdlW10ge1xuICAgICAgICBjb25zdCBtYXRjaGVkID0gbmV3IE1hcDxzdHJpbmcsIE1hdGNoaW5nTGFuZ3VhZ2U+KCk7XG4gICAgICAgIGNvbnN0IGRlY3JlbWVudCA9IGRlc2lyZWRMYW5ndWFnZXMubGVuZ3RoIDwgMTAgPyAwLjEgOiAxLjAgLyBkZXNpcmVkTGFuZ3VhZ2VzLmxlbmd0aDtcbiAgICAgICAgbGV0IGJhc2UgPSAxLjA7XG5cbiAgICAgICAgLy8gZmlsbCBhbnkgbWlzc2luZyBmaWVsZHMgZnJvbSB0aGUgZGVmYXVsdFxuICAgICAgICBvcHRpb25zID0geyAuLi5kZWZhdWx0TGFuZ3VhZ2VDaG9vc2VyT3B0aW9ucywgLi4ub3B0aW9ucyB9O1xuXG4gICAgICAgIGZvciAoY29uc3Qgd2FudCBvZiBkZXNpcmVkTGFuZ3VhZ2VzKSB7XG4gICAgICAgICAgICBiYXNlIC09IGRlY3JlbWVudDtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaGF2ZSBvZiBhdmFpbGFibGVMYW5ndWFnZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzaW1pbGFyaXR5ID0gdGhpcy5fbWF0Y2hlci5tYXRjaExhbmd1YWdlVGFncyh3YW50LCBoYXZlKTtcbiAgICAgICAgICAgICAgICBpZiAoc2ltaWxhcml0eSA+IDAuMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBxdWFsaXR5ID0gYmFzZSArIHNpbWlsYXJpdHkgKiBkZWNyZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhbmd1YWdlVGFnID0gb3B0aW9ucy51c2UgPT09ICdhdmFpbGFibGVMYW5ndWFnZScgPyBoYXZlIDogd2FudDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFnID0gbGFuZ3VhZ2VUYWcudGFnO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBvcHRpb25zLmZpbHRlciA9PT0gJ3ByaW1hcnlMYW5ndWFnZScgPyBsYW5ndWFnZVRhZy5zdWJ0YWdzLnByaW1hcnlMYW5ndWFnZSA/PyB0YWcgOiB0YWc7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2g6IE1hdGNoaW5nTGFuZ3VhZ2UgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBxdWFsaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VUYWcsXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBtYXRjaGVkLmdldChrZXkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWV4aXN0aW5nIHx8IGV4aXN0aW5nLnF1YWxpdHkgPCBxdWFsaXR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLnNldChrZXksIG1hdGNoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmZyb20obWF0Y2hlZC52YWx1ZXMoKSk7XG4gICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgLy8gd2FudCBkZXNjZW5kaW5nIG9yZGVyXG4gICAgICAgICAgICB2YWx1ZXMuc29ydCgobTEsIG0yKSA9PiBtMi5xdWFsaXR5IC0gbTEucXVhbGl0eSk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCAmJiBvcHRpb25zLnVsdGltYXRlRmFsbGJhY2spIHtcbiAgICAgICAgICAgIGNvbnN0IGxhbmd1YWdlVGFnID1cbiAgICAgICAgICAgICAgICBvcHRpb25zLnVsdGltYXRlRmFsbGJhY2sgaW5zdGFuY2VvZiBMYW5ndWFnZVRhZ1xuICAgICAgICAgICAgICAgICAgICA/IG9wdGlvbnMudWx0aW1hdGVGYWxsYmFja1xuICAgICAgICAgICAgICAgICAgICA6IExhbmd1YWdlVGFnLmNyZWF0ZShvcHRpb25zLnVsdGltYXRlRmFsbGJhY2spLm9yRGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKGxhbmd1YWdlVGFnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFt7IGxhbmd1YWdlVGFnLCB0YWc6IGxhbmd1YWdlVGFnLnRhZywgcXVhbGl0eTogMCB9XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaWx0ZXJMYW5ndWFnZVRhZ3MoXG4gICAgICAgIGRlc2lyZWRMYW5ndWFnZXM6IExhbmd1YWdlVGFnW10sXG4gICAgICAgIGF2YWlsYWJsZUxhbmd1YWdlczogTGFuZ3VhZ2VUYWdbXSxcbiAgICAgICAgb3B0aW9ucz86IExhbmd1YWdlQ2hvb3Nlck9wdGlvbnNcbiAgICApOiBMYW5ndWFnZVRhZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hvb3NlTGFuZ3VhZ2VUYWdzV2l0aERldGFpbHMoZGVzaXJlZExhbmd1YWdlcywgYXZhaWxhYmxlTGFuZ3VhZ2VzLCBvcHRpb25zKS5tYXAoKHQpID0+IHQubGFuZ3VhZ2VUYWcpO1xuICAgIH1cbn1cbiJdfQ==
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/bcp47/match/common.ts"],"names":[],"mappings":"AAsBA;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;CAYzB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,aAAa,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.tagSimilarity = void 0;
|
|
25
|
+
/**
|
|
26
|
+
* Common levels of match quality for a single language match.
|
|
27
|
+
* @public
|
|
28
|
+
*/
|
|
29
|
+
exports.tagSimilarity = {
|
|
30
|
+
exact: 1.0,
|
|
31
|
+
variant: 0.9,
|
|
32
|
+
region: 0.8,
|
|
33
|
+
macroRegion: 0.7,
|
|
34
|
+
neutralRegion: 0.6,
|
|
35
|
+
preferredAffinity: 0.55,
|
|
36
|
+
affinity: 0.5,
|
|
37
|
+
preferredRegion: 0.4,
|
|
38
|
+
sibling: 0.3,
|
|
39
|
+
undetermined: 0.2,
|
|
40
|
+
none: 0,
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JjcDQ3L21hdGNoL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7QUFFSDs7O0dBR0c7QUFDVSxRQUFBLGFBQWEsR0FBRztJQUN6QixLQUFLLEVBQUUsR0FBRztJQUNWLE9BQU8sRUFBRSxHQUFHO0lBQ1osTUFBTSxFQUFFLEdBQUc7SUFDWCxXQUFXLEVBQUUsR0FBRztJQUNoQixhQUFhLEVBQUUsR0FBRztJQUNsQixpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCLFFBQVEsRUFBRSxHQUFHO0lBQ2IsZUFBZSxFQUFFLEdBQUc7SUFDcEIsT0FBTyxFQUFFLEdBQUc7SUFDWixZQUFZLEVBQUUsR0FBRztJQUNqQixJQUFJLEVBQUUsQ0FBQztDQUNWLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuLyoqXG4gKiBDb21tb24gbGV2ZWxzIG9mIG1hdGNoIHF1YWxpdHkgZm9yIGEgc2luZ2xlIGxhbmd1YWdlIG1hdGNoLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdGFnU2ltaWxhcml0eSA9IHtcbiAgICBleGFjdDogMS4wLFxuICAgIHZhcmlhbnQ6IDAuOSxcbiAgICByZWdpb246IDAuOCxcbiAgICBtYWNyb1JlZ2lvbjogMC43LFxuICAgIG5ldXRyYWxSZWdpb246IDAuNixcbiAgICBwcmVmZXJyZWRBZmZpbml0eTogMC41NSxcbiAgICBhZmZpbml0eTogMC41LFxuICAgIHByZWZlcnJlZFJlZ2lvbjogMC40LFxuICAgIHNpYmxpbmc6IDAuMyxcbiAgICB1bmRldGVybWluZWQ6IDAuMixcbiAgICBub25lOiAwLFxufTtcblxuLyoqXG4gKiBOdW1lcmljIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBxdWFsaXR5IG9mIGEgbGFuZ3VhZ2UgbWF0Y2guXG4gKiBSYW5nZSBpcyAwIChubyBtYXRjaCkgdG8gMSAoZXhhY3QgbWF0Y2gpLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBUYWdTaW1pbGFyaXR5ID0ga2V5b2YgdHlwZW9mIHRhZ1NpbWlsYXJpdHk7XG4iXX0=
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bcp47/match/index.ts"],"names":[],"mappings":"AAuBA,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,eAAe,IAAI,cAAc,EAAE,sBAAsB,IAAI,qBAAqB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
* SOFTWARE.
|
|
22
22
|
*/
|
|
23
|
+
// istanbul ignore file
|
|
23
24
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
24
25
|
if (k2 === undefined) k2 = k;
|
|
25
26
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -31,28 +32,14 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
31
32
|
if (k2 === undefined) k2 = k;
|
|
32
33
|
o[k2] = m[k];
|
|
33
34
|
}));
|
|
34
|
-
var
|
|
35
|
-
|
|
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;
|
|
35
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
36
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
45
37
|
};
|
|
46
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
47
|
-
exports.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* @internal
|
|
56
|
-
*/
|
|
57
|
-
exports.registryScopeType = ts_utils_1.Converters.enumeratedValue(Model.allRegistryEntryScopes);
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9pYW5hL2phci9sYW5ndWFnZS1zdWJ0YWdzL3JlZ2lzdHJ5L2NvbnZlcnRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCwrQ0FBaUM7QUFFakMsNENBQTJDO0FBRTNDOztHQUVHO0FBQ1UsUUFBQSxpQkFBaUIsR0FBRyxxQkFBVSxDQUFDLGVBQWUsQ0FBMEIsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFFbEg7O0dBRUc7QUFDVSxRQUFBLGlCQUFpQixHQUFHLHFCQUFVLENBQUMsZUFBZSxDQUEyQixLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjIgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBNb2RlbCBmcm9tICcuL21vZGVsJztcblxuaW1wb3J0IHsgQ29udmVydGVycyB9IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgcmVnaXN0cnlFbnRyeVR5cGUgPSBDb252ZXJ0ZXJzLmVudW1lcmF0ZWRWYWx1ZTxNb2RlbC5SZWdpc3RyeUVudHJ5VHlwZT4oTW9kZWwuYWxsUmVnaXN0cnlFbnRyeVR5cGVzKTtcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHJlZ2lzdHJ5U2NvcGVUeXBlID0gQ29udmVydGVycy5lbnVtZXJhdGVkVmFsdWU8TW9kZWwuUmVnaXN0cnlFbnRyeVNjb3BlPihNb2RlbC5hbGxSZWdpc3RyeUVudHJ5U2NvcGVzKTtcbiJdfQ==
|
|
39
|
+
exports.LanguageFilter = exports.LanguageSimilarityMatcher = void 0;
|
|
40
|
+
__exportStar(require("./common"), exports);
|
|
41
|
+
var similarity_1 = require("./similarity");
|
|
42
|
+
Object.defineProperty(exports, "LanguageSimilarityMatcher", { enumerable: true, get: function () { return similarity_1.LanguageSimilarityMatcher; } });
|
|
43
|
+
var chooser_1 = require("./chooser");
|
|
44
|
+
Object.defineProperty(exports, "LanguageFilter", { enumerable: true, get: function () { return chooser_1.LanguageChooser; } });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmNwNDcvbWF0Y2gvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNILHVCQUF1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdkIsMkNBQXlCO0FBQ3pCLDJDQUF5RDtBQUFoRCx1SEFBQSx5QkFBeUIsT0FBQTtBQUNsQyxxQ0FBaUk7QUFBdEcseUdBQUEsZUFBZSxPQUFrQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjIgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuLy8gaXN0YW5idWwgaWdub3JlIGZpbGVcblxuZXhwb3J0ICogZnJvbSAnLi9jb21tb24nO1xuZXhwb3J0IHsgTGFuZ3VhZ2VTaW1pbGFyaXR5TWF0Y2hlciB9IGZyb20gJy4vc2ltaWxhcml0eSc7XG5leHBvcnQgeyBNYXRjaGluZ0xhbmd1YWdlLCBMYW5ndWFnZUNob29zZXIgYXMgTGFuZ3VhZ2VGaWx0ZXIsIExhbmd1YWdlQ2hvb3Nlck9wdGlvbnMgYXMgTGFuZ3VhZ2VGaWx0ZXJPcHRpb25zIH0gZnJvbSAnLi9jaG9vc2VyJztcbiJdfQ==
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"similarity.d.ts","sourceRoot":"","sources":["../../../src/bcp47/match/similarity.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AACnC,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAqB,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAKpE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C;;;;GAIG;AACH,qBAAa,yBAAyB;IAC3B,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC;IAC9B,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC;IACvB,SAAS,EAAE,iBAAiB,CAAC;gBAEjB,IAAI,CAAC,EAAE,IAAI,CAAC,kBAAkB;IAO1C,iBAAiB,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,GAAG,MAAM;IAkB3D,oBAAoB,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM;IAiBhE,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM;IAgBxD,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM;IAevD,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM;IA0EvD,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM;IAgBzD,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM;IAmB3D,mBAAmB,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM;CAezE"}
|