@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,144 @@
|
|
|
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.LanguageRegistryData = void 0;
|
|
25
|
+
const common_1 = require("./common");
|
|
26
|
+
/**
|
|
27
|
+
* Returns all of the data in the IANA language subtags registry for
|
|
28
|
+
* a set of supplied {@link Bcp47.Subtags | subtags}.
|
|
29
|
+
* @public
|
|
30
|
+
*/
|
|
31
|
+
class LanguageRegistryData {
|
|
32
|
+
/**
|
|
33
|
+
* Constructs a new {@link Bcp47.LanguageTagRegistryData | Bcp47.LanguageTagRegistryData}
|
|
34
|
+
* from a supplied {@link Bcp47.Subtags | subtags} and {@link Iana.LanguageRegistries | language registries}.
|
|
35
|
+
* @public
|
|
36
|
+
*/
|
|
37
|
+
constructor(subtags, iana) {
|
|
38
|
+
this._iana = iana;
|
|
39
|
+
this._subtags = subtags;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Registry data associated with the primary language subtag of the language tag from
|
|
43
|
+
* which this {@link Bcp47.LanguageTagRegistryData | Bcp47.LanguageTagRegistryData}
|
|
44
|
+
* was constructed, or `undefined` if the primary language is missing or invalid.
|
|
45
|
+
* @public
|
|
46
|
+
*/
|
|
47
|
+
get primaryLanguage() {
|
|
48
|
+
var _a;
|
|
49
|
+
if (this._primaryLanguage === undefined) {
|
|
50
|
+
this._primaryLanguage = (_a = this._iana.subtags.languages.tryGet(this._subtags.primaryLanguage)) !== null && _a !== void 0 ? _a : false;
|
|
51
|
+
}
|
|
52
|
+
return this._primaryLanguage ? this._primaryLanguage : undefined;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Registry data associated with the extlang subtag of the language tag from
|
|
56
|
+
* which this {@link Bcp47.LanguageTagRegistryData | Bcp47.LanguageTagRegistryData}
|
|
57
|
+
* was constructed, or `undefined` if extlang is missing or invalid.
|
|
58
|
+
* @public
|
|
59
|
+
*/
|
|
60
|
+
get extlangs() {
|
|
61
|
+
if (this._extlangs === undefined) {
|
|
62
|
+
if (this._subtags.extlangs !== undefined) {
|
|
63
|
+
this._extlangs = this._subtags.extlangs
|
|
64
|
+
.map((e) => this._iana.subtags.extlangs.tryGet(e))
|
|
65
|
+
.filter((e) => e !== undefined);
|
|
66
|
+
}
|
|
67
|
+
if (!this._subtags.extlangs || this._subtags.extlangs.length === 0) {
|
|
68
|
+
this._extlangs = false;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return this._extlangs ? this._extlangs : undefined;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Registry data associated with the script of the language tag from
|
|
75
|
+
* which this {@link Bcp47.LanguageTagRegistryData | Bcp47.LanguageTagRegistryData}
|
|
76
|
+
* was constructed, or `undefined` if the script cannot be determined.
|
|
77
|
+
*
|
|
78
|
+
* Note that script will default to the registry `Suppress-Script` value of the
|
|
79
|
+
* primary language if no script subtag is present.
|
|
80
|
+
* @public
|
|
81
|
+
*/
|
|
82
|
+
get script() {
|
|
83
|
+
var _a;
|
|
84
|
+
if (this._script === undefined) {
|
|
85
|
+
if (this._subtags.script) {
|
|
86
|
+
this._script = this._iana.subtags.scripts.tryGet(this._subtags.script);
|
|
87
|
+
}
|
|
88
|
+
if (!this._script) {
|
|
89
|
+
const suppressed = (_a = this.primaryLanguage) === null || _a === void 0 ? void 0 : _a.suppressScript;
|
|
90
|
+
if (suppressed) {
|
|
91
|
+
this._script = this._iana.subtags.scripts.tryGet(suppressed);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (!this._script) {
|
|
95
|
+
this._script = false;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return this._script ? this._script : undefined;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Registry data associated with the region subtag of the language tag from
|
|
102
|
+
* which this {@link Bcp47.LanguageTagRegistryData | Bcp47.LanguageTagRegistryData}
|
|
103
|
+
* was constructed, or `undefined` if the region is missing or invalid.
|
|
104
|
+
* @public
|
|
105
|
+
*/
|
|
106
|
+
get region() {
|
|
107
|
+
if (this._region === undefined) {
|
|
108
|
+
if (this._subtags.region) {
|
|
109
|
+
this._region = this._iana.subtags.regions.tryGet(this._subtags.region);
|
|
110
|
+
}
|
|
111
|
+
if (!this._region) {
|
|
112
|
+
this._region = false;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return this._region ? this._region : undefined;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Registry data for grandfathered tags, or `undefined` if the tag is not recognized
|
|
119
|
+
* as a grandfathered tag.
|
|
120
|
+
* @public
|
|
121
|
+
*/
|
|
122
|
+
get grandfathered() {
|
|
123
|
+
if (this._grandfathered === undefined) {
|
|
124
|
+
if (this._subtags.grandfathered) {
|
|
125
|
+
this._grandfathered = this._iana.subtags.grandfathered.tryGet(this._subtags.grandfathered);
|
|
126
|
+
}
|
|
127
|
+
if (!this._grandfathered) {
|
|
128
|
+
this._grandfathered = false;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return this._grandfathered ? this._grandfathered : undefined;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* @returns A string representation of the subtags from which this
|
|
135
|
+
* {@link Bcp47.LanguageTagRegistryData | Bcp47.LanguageTagRegistryData}
|
|
136
|
+
* was created.
|
|
137
|
+
* @public
|
|
138
|
+
*/
|
|
139
|
+
toString() {
|
|
140
|
+
return (0, common_1.subtagsToString)(this._subtags);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
exports.LanguageRegistryData = LanguageRegistryData;
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2VSZWdpc3RyeURhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmNwNDcvbGFuZ3VhZ2VSZWdpc3RyeURhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBSUgscUNBQW9EO0FBRXBEOzs7O0dBSUc7QUFDSCxNQUFhLG9CQUFvQjtJQThCN0I7Ozs7T0FJRztJQUNILFlBQW1CLE9BQWdCLEVBQUUsSUFBNkI7UUFDOUQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBVyxlQUFlOztRQUN0QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLEVBQUU7WUFDckMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxtQ0FBSSxLQUFLLENBQUM7U0FDdkc7UUFDRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDckUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBVyxRQUFRO1FBQ2YsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRTtZQUM5QixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRTtnQkFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVE7cUJBQ2xDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1B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LEVBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDSjtBQWhKRCxvREFnSkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0ICogYXMgSWFuYSBmcm9tICcuLi9pYW5hJztcblxuaW1wb3J0IHsgU3VidGFncywgc3VidGFnc1RvU3RyaW5nIH0gZnJvbSAnLi9jb21tb24nO1xuXG4vKipcbiAqIFJldHVybnMgYWxsIG9mIHRoZSBkYXRhIGluIHRoZSBJQU5BIGxhbmd1YWdlIHN1YnRhZ3MgcmVnaXN0cnkgZm9yXG4gKiBhIHNldCBvZiBzdXBwbGllZCB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9LlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VSZWdpc3RyeURhdGEge1xuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfaWFuYTogSWFuYS5MYW5ndWFnZVJlZ2lzdHJpZXM7XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9zdWJ0YWdzOiBTdWJ0YWdzO1xuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfcHJpbWFyeUxhbmd1YWdlPzogSWFuYS5MYW5ndWFnZVN1YnRhZ3MuTW9kZWwuUmVnaXN0ZXJlZExhbmd1YWdlIHwgZmFsc2U7XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9leHRsYW5ncz86IElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLk1vZGVsLlJlZ2lzdGVyZWRFeHRMYW5nW10gfCBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3NjcmlwdD86IElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLk1vZGVsLlJlZ2lzdGVyZWRTY3JpcHQgfCBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3JlZ2lvbj86IElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLk1vZGVsLlJlZ2lzdGVyZWRSZWdpb24gfCBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2dyYW5kZmF0aGVyZWQ/OiBJYW5hLkxhbmd1YWdlU3VidGFncy5Nb2RlbC5SZWdpc3RlcmVkR3JhbmRmYXRoZXJlZFRhZyB8IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWdSZWdpc3RyeURhdGEgfCBCY3A0Ny5MYW5ndWFnZVRhZ1JlZ2lzdHJ5RGF0YX1cbiAgICAgKiBmcm9tIGEgc3VwcGxpZWQge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfSBhbmQge0BsaW5rIElhbmEuTGFuZ3VhZ2VSZWdpc3RyaWVzIHwgbGFuZ3VhZ2UgcmVnaXN0cmllc30uXG4gICAgICogQHB1YmxpY1xuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihzdWJ0YWdzOiBTdWJ0YWdzLCBpYW5hOiBJYW5hLkxhbmd1YWdlUmVnaXN0cmllcykge1xuICAgICAgICB0aGlzLl9pYW5hID0gaWFuYTtcbiAgICAgICAgdGhpcy5fc3VidGFncyA9IHN1YnRhZ3M7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0cnkgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIHByaW1hcnkgbGFuZ3VhZ2Ugc3VidGFnIG9mIHRoZSBsYW5ndWFnZSB0YWcgZnJvbVxuICAgICAqIHdoaWNoIHRoaXMge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnUmVnaXN0cnlEYXRhIHwgQmNwNDcuTGFuZ3VhZ2VUYWdSZWdpc3RyeURhdGF9XG4gICAgICogd2FzIGNvbnN0cnVjdGVkLCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgcHJpbWFyeSBsYW5ndWFnZSBpcyBtaXNzaW5nIG9yIGludmFsaWQuXG4gICAgICogQHB1YmxpY1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcHJpbWFyeUxhbmd1YWdlKCk6IElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLk1vZGVsLlJlZ2lzdGVyZWRMYW5ndWFnZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0aGlzLl9wcmltYXJ5TGFuZ3VhZ2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5fcHJpbWFyeUxhbmd1YWdlID0gdGhpcy5faWFuYS5zdWJ0YWdzLmxhbmd1YWdlcy50cnlHZXQodGhpcy5fc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UpID8/IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9wcmltYXJ5TGFuZ3VhZ2UgPyB0aGlzLl9wcmltYXJ5TGFuZ3VhZ2UgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0cnkgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIGV4dGxhbmcgc3VidGFnIG9mIHRoZSBsYW5ndWFnZSB0YWcgZnJvbVxuICAgICAqIHdoaWNoIHRoaXMge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnUmVnaXN0cnlEYXRhIHwgQmNwNDcuTGFuZ3VhZ2VUYWdSZWdpc3RyeURhdGF9XG4gICAgICogd2FzIGNvbnN0cnVjdGVkLCBvciBgdW5kZWZpbmVkYCBpZiBleHRsYW5nIGlzIG1pc3Npbmcgb3IgaW52YWxpZC5cbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgcHVibGljIGdldCBleHRsYW5ncygpOiBJYW5hLkxhbmd1YWdlU3VidGFncy5Nb2RlbC5SZWdpc3RlcmVkRXh0TGFuZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRoaXMuX2V4dGxhbmdzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9zdWJ0YWdzLmV4dGxhbmdzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9leHRsYW5ncyA9IHRoaXMuX3N1YnRhZ3MuZXh0bGFuZ3NcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoZSkgPT4gdGhpcy5faWFuYS5zdWJ0YWdzLmV4dGxhbmdzLnRyeUdldChlKSlcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoZSk6IGUgaXMgSWFuYS5MYW5ndWFnZVN1YnRhZ3MuTW9kZWwuUmVnaXN0ZXJlZEV4dExhbmcgPT4gZSAhPT0gdW5kZWZpbmVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5fc3VidGFncy5leHRsYW5ncyB8fCB0aGlzLl9zdWJ0YWdzLmV4dGxhbmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2V4dGxhbmdzID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4dGxhbmdzID8gdGhpcy5fZXh0bGFuZ3MgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0cnkgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIHNjcmlwdCBvZiB0aGUgbGFuZ3VhZ2UgdGFnIGZyb21cbiAgICAgKiB3aGljaCB0aGlzIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ1JlZ2lzdHJ5RGF0YSB8IEJjcDQ3Lkxhbmd1YWdlVGFnUmVnaXN0cnlEYXRhfVxuICAgICAqIHdhcyBjb25zdHJ1Y3RlZCwgb3IgYHVuZGVmaW5lZGAgaWYgdGhlIHNjcmlwdCBjYW5ub3QgYmUgZGV0ZXJtaW5lZC5cbiAgICAgKlxuICAgICAqIE5vdGUgdGhhdCBzY3JpcHQgd2lsbCBkZWZhdWx0IHRvIHRoZSByZWdpc3RyeSBgU3VwcHJlc3MtU2NyaXB0YCB2YWx1ZSBvZiB0aGVcbiAgICAgKiBwcmltYXJ5IGxhbmd1YWdlIGlmIG5vIHNjcmlwdCBzdWJ0YWcgaXMgcHJlc2VudC5cbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgcHVibGljIGdldCBzY3JpcHQoKTogSWFuYS5MYW5ndWFnZVN1YnRhZ3MuTW9kZWwuUmVnaXN0ZXJlZFNjcmlwdCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0aGlzLl9zY3JpcHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3N1YnRhZ3Muc2NyaXB0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2NyaXB0ID0gdGhpcy5faWFuYS5zdWJ0YWdzLnNjcmlwdHMudHJ5R2V0KHRoaXMuX3N1YnRhZ3Muc2NyaXB0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5fc2NyaXB0KSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3VwcHJlc3NlZCA9IHRoaXMucHJpbWFyeUxhbmd1YWdlPy5zdXBwcmVzc1NjcmlwdDtcbiAgICAgICAgICAgICAgICBpZiAoc3VwcHJlc3NlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zY3JpcHQgPSB0aGlzLl9pYW5hLnN1YnRhZ3Muc2NyaXB0cy50cnlHZXQoc3VwcHJlc3NlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLl9zY3JpcHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zY3JpcHQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fc2NyaXB0ID8gdGhpcy5fc2NyaXB0IDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdHJ5IGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSByZWdpb24gc3VidGFnIG9mIHRoZSBsYW5ndWFnZSB0YWcgZnJvbVxuICAgICAqIHdoaWNoIHRoaXMge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnUmVnaXN0cnlEYXRhIHwgQmNwNDcuTGFuZ3VhZ2VUYWdSZWdpc3RyeURhdGF9XG4gICAgICogd2FzIGNvbnN0cnVjdGVkLCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgcmVnaW9uIGlzIG1pc3Npbmcgb3IgaW52YWxpZC5cbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgcHVibGljIGdldCByZWdpb24oKTogSWFuYS5MYW5ndWFnZVN1YnRhZ3MuTW9kZWwuUmVnaXN0ZXJlZFJlZ2lvbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0aGlzLl9yZWdpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3N1YnRhZ3MucmVnaW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVnaW9uID0gdGhpcy5faWFuYS5zdWJ0YWdzLnJlZ2lvbnMudHJ5R2V0KHRoaXMuX3N1YnRhZ3MucmVnaW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5fcmVnaW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVnaW9uID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlZ2lvbiA/IHRoaXMuX3JlZ2lvbiA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RyeSBkYXRhIGZvciBncmFuZGZhdGhlcmVkIHRhZ3MsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSB0YWcgaXMgbm90IHJlY29nbml6ZWRcbiAgICAgKiBhcyBhIGdyYW5kZmF0aGVyZWQgdGFnLlxuICAgICAqIEBwdWJsaWNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGdyYW5kZmF0aGVyZWQoKTogSWFuYS5MYW5ndWFnZVN1YnRhZ3MuTW9kZWwuUmVnaXN0ZXJlZEdyYW5kZmF0aGVyZWRUYWcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodGhpcy5fZ3JhbmRmYXRoZXJlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fc3VidGFncy5ncmFuZGZhdGhlcmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZ3JhbmRmYXRoZXJlZCA9IHRoaXMuX2lhbmEuc3VidGFncy5ncmFuZGZhdGhlcmVkLnRyeUdldCh0aGlzLl9zdWJ0YWdzLmdyYW5kZmF0aGVyZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLl9ncmFuZGZhdGhlcmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZ3JhbmRmYXRoZXJlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9ncmFuZGZhdGhlcmVkID8gdGhpcy5fZ3JhbmRmYXRoZXJlZCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgc3VidGFncyBmcm9tIHdoaWNoIHRoaXNcbiAgICAgKiB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWdSZWdpc3RyeURhdGEgfCBCY3A0Ny5MYW5ndWFnZVRhZ1JlZ2lzdHJ5RGF0YX1cbiAgICAgKiB3YXMgY3JlYXRlZC5cbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBzdWJ0YWdzVG9TdHJpbmcodGhpcy5fc3VidGFncyk7XG4gICAgfVxufVxuIl19
|
|
@@ -3,6 +3,7 @@ import { Result } from '@fgv/ts-utils';
|
|
|
3
3
|
import { Subtags } from './common';
|
|
4
4
|
import { TagNormalization } from './normalization/common';
|
|
5
5
|
import { TagValidity } from './validation/common';
|
|
6
|
+
import { LanguageRegistryData } from './languageRegistryData';
|
|
6
7
|
import { ScriptSubtag } from '../iana/language-subtags';
|
|
7
8
|
/**
|
|
8
9
|
* Initialization options for parsing or creation of {@link Bcp47.LanguageTag | language tag} objects.
|
|
@@ -37,6 +38,11 @@ export declare class LanguageTag {
|
|
|
37
38
|
* A string representation of this language tag.
|
|
38
39
|
*/
|
|
39
40
|
readonly tag: string;
|
|
41
|
+
/**
|
|
42
|
+
* Details about this language tag from the IANA language
|
|
43
|
+
* registries.
|
|
44
|
+
*/
|
|
45
|
+
readonly registry: LanguageRegistryData;
|
|
40
46
|
/**
|
|
41
47
|
* @internal
|
|
42
48
|
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languageTag.d.ts","sourceRoot":"","sources":["../../src/bcp47/languageTag.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,344 @@
|
|
|
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.LanguageTag = void 0;
|
|
48
|
+
const Iana = __importStar(require("../iana"));
|
|
49
|
+
const ts_utils_1 = require("@fgv/ts-utils");
|
|
50
|
+
const common_1 = require("./common");
|
|
51
|
+
const common_2 = require("./normalization/common");
|
|
52
|
+
const common_3 = require("./validation/common");
|
|
53
|
+
const languageRegistryData_1 = require("./languageRegistryData");
|
|
54
|
+
const languageTagParser_1 = require("./languageTagParser");
|
|
55
|
+
const normalization_1 = require("./normalization");
|
|
56
|
+
const validation_1 = require("./validation");
|
|
57
|
+
/**
|
|
58
|
+
* Represents a single BCP-47 language tag.
|
|
59
|
+
* @public
|
|
60
|
+
*/
|
|
61
|
+
class LanguageTag {
|
|
62
|
+
/**
|
|
63
|
+
* Constructs a {@link Bcp47.LanguageTag | LanguageTag }.
|
|
64
|
+
* @param subtags - The {@link Bcp47.Subtags | subtags } from
|
|
65
|
+
* which the tag is constructed.
|
|
66
|
+
* @param validity - Known {@link Bcp47.TagValidity | validation level} of the
|
|
67
|
+
* supplied subtags.
|
|
68
|
+
* @param normalization - Known {@link Bcp47.TagNormalization | normalization level}
|
|
69
|
+
* of the supplied subtags.
|
|
70
|
+
* @param iana - The {@link Iana.LanguageRegistries} used to validate and normalize
|
|
71
|
+
* this tag.
|
|
72
|
+
* @internal
|
|
73
|
+
*/
|
|
74
|
+
constructor(subtags, validity, normalization, iana) {
|
|
75
|
+
this.subtags = Object.freeze({ ...subtags });
|
|
76
|
+
this._normalization = normalization;
|
|
77
|
+
this._validity = validity;
|
|
78
|
+
this.tag = (0, common_1.subtagsToString)(subtags);
|
|
79
|
+
this._iana = iana;
|
|
80
|
+
this.registry = new languageRegistryData_1.LanguageRegistryData(this.subtags, iana);
|
|
81
|
+
if (validity === 'strictly-valid') {
|
|
82
|
+
this._isStrictlyValid = true;
|
|
83
|
+
this._isValid = true;
|
|
84
|
+
}
|
|
85
|
+
else if (validity === 'valid') {
|
|
86
|
+
this._isValid = true;
|
|
87
|
+
}
|
|
88
|
+
if (normalization === 'preferred') {
|
|
89
|
+
this._isPreferred = true;
|
|
90
|
+
this._isCanonical = true;
|
|
91
|
+
}
|
|
92
|
+
else if (normalization === 'canonical') {
|
|
93
|
+
this._isCanonical = true;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* The effective script of this language tag, if known.
|
|
98
|
+
* The effective script is the script subtag in the tag itself,
|
|
99
|
+
* if present, or the `Suppress-Script` defined in the
|
|
100
|
+
* {@link https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry | IANA subtag registry}
|
|
101
|
+
* for the primary language of this tag. Can be `undefined`
|
|
102
|
+
* if neither the tag nor the IANA registry define a script.
|
|
103
|
+
*/
|
|
104
|
+
get effectiveScript() {
|
|
105
|
+
var _a;
|
|
106
|
+
return (_a = this.subtags.script) !== null && _a !== void 0 ? _a : this.getSuppressedScript();
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Determines if this tag represents the special `undetermined` language.
|
|
110
|
+
*/
|
|
111
|
+
get isUndetermined() {
|
|
112
|
+
var _a;
|
|
113
|
+
// istanbul ignore next
|
|
114
|
+
return ((_a = this.subtags.primaryLanguage) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === common_1.UndeterminedLanguage;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Whether this language tag is valid.
|
|
118
|
+
*/
|
|
119
|
+
get isValid() {
|
|
120
|
+
if (this._isValid === undefined) {
|
|
121
|
+
this._isValid = validation_1.ValidateTag.isValid(this.subtags);
|
|
122
|
+
if (this._isValid) {
|
|
123
|
+
this._validity = 'valid';
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return this._isValid === true;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Whether if this language tag is strictly valid.
|
|
130
|
+
*/
|
|
131
|
+
get isStrictlyValid() {
|
|
132
|
+
if (this._isStrictlyValid === undefined) {
|
|
133
|
+
this._isStrictlyValid = validation_1.ValidateTag.isStrictlyValid(this.subtags);
|
|
134
|
+
if (this._isStrictlyValid) {
|
|
135
|
+
this._validity = 'strictly-valid';
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return this._isStrictlyValid === true;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Whether this language tag is in canonical form.
|
|
142
|
+
*/
|
|
143
|
+
get isCanonical() {
|
|
144
|
+
if (this._isCanonical === undefined) {
|
|
145
|
+
this._isCanonical = validation_1.ValidateTag.isCanonical(this.subtags);
|
|
146
|
+
if (this._isCanonical) {
|
|
147
|
+
this._normalization = 'canonical';
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return this._isCanonical === true;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Whether this language tag is in preferred form.
|
|
154
|
+
*/
|
|
155
|
+
get isPreferred() {
|
|
156
|
+
if (this._isPreferred === undefined) {
|
|
157
|
+
this._isPreferred = validation_1.ValidateTag.isInPreferredForm(this.subtags);
|
|
158
|
+
if (this._isPreferred) {
|
|
159
|
+
this._normalization = 'preferred';
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return this._isPreferred === true;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Creates a new {@link Bcp47.LanguageTag | language tag} from a supplied `string` tag
|
|
166
|
+
* using optional configuration, if supplied.
|
|
167
|
+
* @param tag - The `string` tag from which the {@link Bcp47.LanguageTag | language tag}
|
|
168
|
+
* is te be constructed.
|
|
169
|
+
* @param options - (optional) set of {@link Bcp47.LanguageTagInitOptions | init options}
|
|
170
|
+
* to guide the validation and normalization of this tag.
|
|
171
|
+
* @returns `Success` with the new {@link Bcp47.LanguageTag | language tag} or `Failure`
|
|
172
|
+
* with details if an error occurs.
|
|
173
|
+
*/
|
|
174
|
+
static createFromTag(tag, options) {
|
|
175
|
+
options = this._getOptions(options);
|
|
176
|
+
return languageTagParser_1.LanguageTagParser.parse(tag, options.iana).onSuccess((subtags) => {
|
|
177
|
+
return this._createTransformed(subtags, 'unknown', 'unknown', options);
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Creates a new {@link Bcp47.LanguageTag | language tag} from a supplied
|
|
182
|
+
* {@link Bcp47.Subtags | subtags} using optional configuration,
|
|
183
|
+
* if supplied.
|
|
184
|
+
* @param tag - The {@link Bcp47.Subtags | subtags} from which the
|
|
185
|
+
* {@link Bcp47.LanguageTag | language tag} is te be constructed.
|
|
186
|
+
* @param options - (optional) set of {@link Bcp47.LanguageTagInitOptions | init options}
|
|
187
|
+
* to guide the validation and normalization of this tag.
|
|
188
|
+
* @returns `Success` with the new {@link Bcp47.LanguageTag | language tag} or `Failure`
|
|
189
|
+
* with details if an error occurs.
|
|
190
|
+
*/
|
|
191
|
+
static createFromSubtags(subtags, options) {
|
|
192
|
+
return this._createTransformed(subtags, 'unknown', 'unknown', options);
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Creates a new {@link Bcp47.LanguageTag | language tag} from a supplied `string`
|
|
196
|
+
* tag or {@link Bcp47.Subtags | subtags} using optional configuration,
|
|
197
|
+
* if supplied.
|
|
198
|
+
* @param from - The `string` tag or {@link Bcp47.Subtags | subtags} from
|
|
199
|
+
* which the {@link Bcp47.LanguageTag | language tag} is te be constructed.
|
|
200
|
+
* @param options - (optional) set of {@link Bcp47.LanguageTagInitOptions | init options}
|
|
201
|
+
* to guide the validation and normalization of this tag.
|
|
202
|
+
* @returns `Success` with the new {@link Bcp47.LanguageTag | language tag} or `Failure`
|
|
203
|
+
* with details if an error occurs.
|
|
204
|
+
*/
|
|
205
|
+
static create(from, options) {
|
|
206
|
+
if (typeof from === 'string') {
|
|
207
|
+
return this.createFromTag(from, options);
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
return this.createFromSubtags(from, options);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Constructs a new {@link Bcp47.LanguageTag | language tag} by applying appropriate transformations
|
|
215
|
+
* to as supplied {@link Bcp47.Subtags | Bcp47.Subtags}.
|
|
216
|
+
* @param subtags - The {@link Bcp47.Subtags | subtags} which represent the tag.
|
|
217
|
+
* @param fromValidity - The {@link Bcp47.TagValidity | validation level} of the supplied subtags.
|
|
218
|
+
* @param fromNormalization - The {@link Bcp47.TagNormalization | normalization level} fo the
|
|
219
|
+
* supplied subtags.
|
|
220
|
+
* @param partialOptions - Any {@link Bcp47.LanguageTagInitOptions | initialization options}.
|
|
221
|
+
* @returns `Success` with the corresponding {@link Bcp47.LanguageTag | language tag} or `Failure`
|
|
222
|
+
* with details if an error occurs.
|
|
223
|
+
* @internal
|
|
224
|
+
*/
|
|
225
|
+
static _createTransformed(subtags, fromValidity, fromNormalization, partialOptions) {
|
|
226
|
+
const options = this._getOptions(partialOptions);
|
|
227
|
+
return validation_1.ValidateTag.validateSubtags(subtags, options.validity, fromValidity)
|
|
228
|
+
.onSuccess(() => {
|
|
229
|
+
return normalization_1.NormalizeTag.normalizeSubtags(subtags, options.normalization, fromNormalization);
|
|
230
|
+
})
|
|
231
|
+
.onSuccess((normalized) => {
|
|
232
|
+
const validity = (0, common_3.mostValid)(fromValidity, options.validity);
|
|
233
|
+
const normalization = (0, common_2.mostNormalized)(fromNormalization, options.normalization);
|
|
234
|
+
return (0, ts_utils_1.captureResult)(() => new LanguageTag(normalized, validity, normalization, options.iana));
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Gets a fully-specified {@link Bcp47.LanguageTagInitOptions} from partial or undefined
|
|
239
|
+
* options, substituting defaults as appropriate.
|
|
240
|
+
* @param options - The {@link Bcp47.LanguageTagInitOptions} to be expanded, or `undefined`
|
|
241
|
+
* for default options.
|
|
242
|
+
* @returns Fully-specified {@link Bcp47.LanguageTagInitOptions | init options}.
|
|
243
|
+
* @internal
|
|
244
|
+
*/
|
|
245
|
+
static _getOptions(options) {
|
|
246
|
+
var _a, _b, _c;
|
|
247
|
+
return {
|
|
248
|
+
iana: (_a = options === null || options === void 0 ? void 0 : options.iana) !== null && _a !== void 0 ? _a : Iana.DefaultRegistries.languageRegistries,
|
|
249
|
+
validity: (_b = options === null || options === void 0 ? void 0 : options.validity) !== null && _b !== void 0 ? _b : 'well-formed',
|
|
250
|
+
normalization: (_c = options === null || options === void 0 ? void 0 : options.normalization) !== null && _c !== void 0 ? _c : 'none',
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Returns the `Suppress-Script` value defined for the primary language of this tag,
|
|
255
|
+
* regardless of whether a different script is defined in this subtag.
|
|
256
|
+
* @returns The suppress-script defined for the primary language, or undefined if
|
|
257
|
+
* the primary language is invalid or has no defined suppressed script.
|
|
258
|
+
*/
|
|
259
|
+
getSuppressedScript() {
|
|
260
|
+
if (this._suppressedScript === undefined) {
|
|
261
|
+
this._suppressedScript = false;
|
|
262
|
+
if (this.subtags.primaryLanguage) {
|
|
263
|
+
const language = this._iana.subtags.languages.tryGet(this.subtags.primaryLanguage);
|
|
264
|
+
if ((language === null || language === void 0 ? void 0 : language.suppressScript) !== undefined) {
|
|
265
|
+
this._suppressedScript = language.suppressScript;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
return this._suppressedScript ? this._suppressedScript : undefined;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Gets a confirmed valid representation of this language tag.
|
|
273
|
+
* @returns `Success` with a valid representation of this {@link Bcp47.LanguageTag | language tag},
|
|
274
|
+
* or `Failure` with details if the tag cannot be validated.
|
|
275
|
+
*/
|
|
276
|
+
toValid() {
|
|
277
|
+
if (this.isValid) {
|
|
278
|
+
return (0, ts_utils_1.succeed)(this);
|
|
279
|
+
}
|
|
280
|
+
const options = {
|
|
281
|
+
iana: this._iana,
|
|
282
|
+
validity: 'valid',
|
|
283
|
+
normalization: this._normalization,
|
|
284
|
+
};
|
|
285
|
+
return LanguageTag._createTransformed(this.subtags, this._validity, this._normalization, options);
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Gets a confirmed strictly valid representation of this language tag.
|
|
289
|
+
* @returns `Success` with a strictly valid representation of this {@link Bcp47.LanguageTag | language tag},
|
|
290
|
+
* or `Failure` with details if the tag cannot be strictly validated.
|
|
291
|
+
*/
|
|
292
|
+
toStrictlyValid() {
|
|
293
|
+
if (this.isStrictlyValid) {
|
|
294
|
+
return (0, ts_utils_1.succeed)(this);
|
|
295
|
+
}
|
|
296
|
+
const options = {
|
|
297
|
+
iana: this._iana,
|
|
298
|
+
validity: 'strictly-valid',
|
|
299
|
+
normalization: this._normalization,
|
|
300
|
+
};
|
|
301
|
+
return LanguageTag._createTransformed(this.subtags, this._validity, this._normalization, options);
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Gets a confirmed canonical representation of this language tag.
|
|
305
|
+
* @returns `Success` with a canonical representation of this {@link Bcp47.LanguageTag | language tag},
|
|
306
|
+
* or `Failure` with details if the tag cannot be normalized to canonical form.
|
|
307
|
+
*/
|
|
308
|
+
toCanonical() {
|
|
309
|
+
if (this.isCanonical) {
|
|
310
|
+
return (0, ts_utils_1.succeed)(this);
|
|
311
|
+
}
|
|
312
|
+
const options = {
|
|
313
|
+
iana: this._iana,
|
|
314
|
+
validity: this._validity,
|
|
315
|
+
normalization: 'canonical',
|
|
316
|
+
};
|
|
317
|
+
return LanguageTag._createTransformed(this.subtags, this._validity, this._normalization, options);
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Gets a confirmed preferred representation of this language tag.
|
|
321
|
+
* @returns `Success` with a preferred representation of this {@link Bcp47.LanguageTag | language tag},
|
|
322
|
+
* or `Failure` with details if the tag cannot be normalized to preferred form.
|
|
323
|
+
*/
|
|
324
|
+
toPreferred() {
|
|
325
|
+
if (this.isPreferred) {
|
|
326
|
+
return (0, ts_utils_1.succeed)(this);
|
|
327
|
+
}
|
|
328
|
+
const options = {
|
|
329
|
+
iana: this._iana,
|
|
330
|
+
validity: 'valid',
|
|
331
|
+
normalization: 'preferred',
|
|
332
|
+
};
|
|
333
|
+
return LanguageTag._createTransformed(this.subtags, this._validity, this._normalization, options);
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Gets a string representation of this language tag.
|
|
337
|
+
* @returns A string representation of this language tag.
|
|
338
|
+
*/
|
|
339
|
+
toString() {
|
|
340
|
+
return this.tag;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
exports.LanguageTag = LanguageTag;
|
|
344
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2VUYWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmNwNDcvbGFuZ3VhZ2VUYWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCw4Q0FBZ0M7QUFFaEMsNENBQStEO0FBQy9ELHFDQUEwRTtBQUMxRSxtREFBMEU7QUFDMUUsZ0RBQTZEO0FBRTdELGlFQUE4RDtBQUM5RCwyREFBd0Q7QUFDeEQsbURBQStDO0FBRS9DLDZDQUEyQztBQXNCM0M7OztHQUdHO0FBQ0gsTUFBYSxXQUFXO0lBMERwQjs7Ozs7Ozs7Ozs7T0FXRztJQUNILFlBQXNCLE9BQWdCLEVBQUUsUUFBcUIsRUFBRSxhQUErQixFQUFFLElBQTZCO1FBQ3pILElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztRQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUEsd0JBQWUsRUFBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksMkNBQW9CLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU3RCxJQUFJLFFBQVEsS0FBSyxnQkFBZ0IsRUFBRTtZQUMvQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ3hCO2FBQU0sSUFBSSxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ3hCO1FB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LENBQUMsS0FBSztZQUNoQixRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDeEIsYUFBYSxFQUFFLFdBQVc7U0FDN0IsQ0FBQztRQUNGLE9BQU8sV0FBVyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RHLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksV0FBVztRQUNkLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixPQUFPLElBQUEsa0JBQU8sRUFBQyxJQUFJLENBQUMsQ0FBQztTQUN4QjtRQUNELE1BQU0sT0FBTyxHQUEyQjtZQUNwQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDaEIsUUFBUSxFQUFFLE9BQU87WUFDakIsYUFBYSxFQUFFLFdBQVc7U0FDN0IsQ0FBQztRQUNGLE9BQU8sV0FBVyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RHLENBQUM7SUFFRDs7O09BR0c7SUFDSSxRQUFRO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3BCLENBQUM7Q0FDSjtBQXJXRCxrQ0FxV0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0ICogYXMgSWFuYSBmcm9tICcuLi9pYW5hJztcblxuaW1wb3J0IHsgUmVzdWx0LCBjYXB0dXJlUmVzdWx0LCBzdWNjZWVkIH0gZnJvbSAnQGZndi90cy11dGlscyc7XG5pbXBvcnQgeyBTdWJ0YWdzLCBVbmRldGVybWluZWRMYW5ndWFnZSwgc3VidGFnc1RvU3RyaW5nIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgVGFnTm9ybWFsaXphdGlvbiwgbW9zdE5vcm1hbGl6ZWQgfSBmcm9tICcuL25vcm1hbGl6YXRpb24vY29tbW9uJztcbmltcG9ydCB7IFRhZ1ZhbGlkaXR5LCBtb3N0VmFsaWQgfSBmcm9tICcuL3ZhbGlkYXRpb24vY29tbW9uJztcblxuaW1wb3J0IHsgTGFuZ3VhZ2VSZWdpc3RyeURhdGEgfSBmcm9tICcuL2xhbmd1YWdlUmVnaXN0cnlEYXRhJztcbmltcG9ydCB7IExhbmd1YWdlVGFnUGFyc2VyIH0gZnJvbSAnLi9sYW5ndWFnZVRhZ1BhcnNlcic7XG5pbXBvcnQgeyBOb3JtYWxpemVUYWcgfSBmcm9tICcuL25vcm1hbGl6YXRpb24nO1xuaW1wb3J0IHsgU2NyaXB0U3VidGFnIH0gZnJvbSAnLi4vaWFuYS9sYW5ndWFnZS1zdWJ0YWdzJztcbmltcG9ydCB7IFZhbGlkYXRlVGFnIH0gZnJvbSAnLi92YWxpZGF0aW9uJztcblxuLyoqXG4gKiBJbml0aWFsaXphdGlvbiBvcHRpb25zIGZvciBwYXJzaW5nIG9yIGNyZWF0aW9uIG9mIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gb2JqZWN0cy5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYW5ndWFnZVRhZ0luaXRPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBEZXNpcmVkIHtAbGluayBCY3A0Ny5UYWdWYWxpZGl0eSB8IHZhbGlkaXR5IGxldmVsfSAob3B0aW9uYWwpLlxuICAgICAqL1xuICAgIHZhbGlkaXR5PzogVGFnVmFsaWRpdHk7XG4gICAgLyoqXG4gICAgICogRGVzaXJlZCB7QGxpbmsgQmNwNDcuVGFnTm9ybWFsaXphdGlvbiB8IG5vcm1hbGl6YXRpb24gbGV2ZWx9IChvcHRpb25hbCkuXG4gICAgICovXG4gICAgbm9ybWFsaXphdGlvbj86IFRhZ05vcm1hbGl6YXRpb247XG4gICAgLyoqXG4gICAgICogVGhlIHtAbGluayBJYW5hLkxhbmd1YWdlUmVnaXN0cmllcyB8IElBTkEgbGFuZ3VhZ2Ugc3VidGFnIGFuZCBleHRlbnNpb24gcmVnaXN0cmllc30gdG9cbiAgICAgKiBiZSB1c2VkIGZvciB0aGUgcmVxdWVzdCAob3B0aW9uYWwpLlxuICAgICAqL1xuICAgIGlhbmE/OiBJYW5hLkxhbmd1YWdlUmVnaXN0cmllcztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2luZ2xlIEJDUC00NyBsYW5ndWFnZSB0YWcuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjbGFzcyBMYW5ndWFnZVRhZyB7XG4gICAgLyoqXG4gICAgICogVGhlIGluZGl2aWR1YWwge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfSBmb3JcbiAgICAgKiB0aGlzIGxhbmd1YWdlIHRhZy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgc3VidGFnczogUmVhZG9ubHk8U3VidGFncz47XG5cbiAgICAvKipcbiAgICAgKiBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGxhbmd1YWdlIHRhZy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgdGFnOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBEZXRhaWxzIGFib3V0IHRoaXMgbGFuZ3VhZ2UgdGFnIGZyb20gdGhlIElBTkEgbGFuZ3VhZ2VcbiAgICAgKiByZWdpc3RyaWVzLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSByZWdpc3RyeTogTGFuZ3VhZ2VSZWdpc3RyeURhdGE7XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2lhbmE6IElhbmEuTGFuZ3VhZ2VSZWdpc3RyaWVzO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF92YWxpZGl0eTogVGFnVmFsaWRpdHk7XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX25vcm1hbGl6YXRpb246IFRhZ05vcm1hbGl6YXRpb247XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2lzVmFsaWQ6IHVuZGVmaW5lZCB8IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2lzU3RyaWN0bHlWYWxpZDogdW5kZWZpbmVkIHwgYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfaXNDYW5vbmljYWw6IHVuZGVmaW5lZCB8IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2lzUHJlZmVycmVkOiB1bmRlZmluZWQgfCBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9zdXBwcmVzc2VkU2NyaXB0OiB1bmRlZmluZWQgfCBTY3JpcHRTdWJ0YWcgfCBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBMYW5ndWFnZVRhZyB9LlxuICAgICAqIEBwYXJhbSBzdWJ0YWdzIC0gVGhlIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFncyB9IGZyb21cbiAgICAgKiB3aGljaCB0aGUgdGFnIGlzIGNvbnN0cnVjdGVkLlxuICAgICAqIEBwYXJhbSB2YWxpZGl0eSAtIEtub3duIHtAbGluayBCY3A0Ny5UYWdWYWxpZGl0eSB8IHZhbGlkYXRpb24gbGV2ZWx9IG9mIHRoZVxuICAgICAqIHN1cHBsaWVkIHN1YnRhZ3MuXG4gICAgICogQHBhcmFtIG5vcm1hbGl6YXRpb24gLSBLbm93biB7QGxpbmsgQmNwNDcuVGFnTm9ybWFsaXphdGlvbiB8IG5vcm1hbGl6YXRpb24gbGV2ZWx9XG4gICAgICogb2YgdGhlIHN1cHBsaWVkIHN1YnRhZ3MuXG4gICAgICogQHBhcmFtIGlhbmEgLSBUaGUge0BsaW5rIElhbmEuTGFuZ3VhZ2VSZWdpc3RyaWVzfSB1c2VkIHRvIHZhbGlkYXRlIGFuZCBub3JtYWxpemVcbiAgICAgKiB0aGlzIHRhZy5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3Ioc3VidGFnczogU3VidGFncywgdmFsaWRpdHk6IFRhZ1ZhbGlkaXR5LCBub3JtYWxpemF0aW9uOiBUYWdOb3JtYWxpemF0aW9uLCBpYW5hOiBJYW5hLkxhbmd1YWdlUmVnaXN0cmllcykge1xuICAgICAgICB0aGlzLnN1YnRhZ3MgPSBPYmplY3QuZnJlZXplKHsgLi4uc3VidGFncyB9KTtcbiAgICAgICAgdGhpcy5fbm9ybWFsaXphdGlvbiA9IG5vcm1hbGl6YXRpb247XG4gICAgICAgIHRoaXMuX3ZhbGlkaXR5ID0gdmFsaWRpdHk7XG4gICAgICAgIHRoaXMudGFnID0gc3VidGFnc1RvU3RyaW5nKHN1YnRhZ3MpO1xuICAgICAgICB0aGlzLl9pYW5hID0gaWFuYTtcbiAgICAgICAgdGhpcy5yZWdpc3RyeSA9IG5ldyBMYW5ndWFnZVJlZ2lzdHJ5RGF0YSh0aGlzLnN1YnRhZ3MsIGlhbmEpO1xuXG4gICAgICAgIGlmICh2YWxpZGl0eSA9PT0gJ3N0cmljdGx5LXZhbGlkJykge1xuICAgICAgICAgICAgdGhpcy5faXNTdHJpY3RseVZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2lzVmFsaWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbGlkaXR5ID09PSAndmFsaWQnKSB7XG4gICAgICAgICAgICB0aGlzLl9pc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub3JtYWxpemF0aW9uID09PSAncHJlZmVycmVkJykge1xuICAgICAgICAgICAgdGhpcy5faXNQcmVmZXJyZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5faXNDYW5vbmljYWwgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKG5vcm1hbGl6YXRpb24gPT09ICdjYW5vbmljYWwnKSB7XG4gICAgICAgICAgICB0aGlzLl9pc0Nhbm9uaWNhbCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZWZmZWN0aXZlIHNjcmlwdCBvZiB0aGlzIGxhbmd1YWdlIHRhZywgaWYga25vd24uXG4gICAgICogVGhlIGVmZmVjdGl2ZSBzY3JpcHQgaXMgdGhlIHNjcmlwdCBzdWJ0YWcgaW4gdGhlIHRhZyBpdHNlbGYsXG4gICAgICogaWYgcHJlc2VudCwgb3IgdGhlIGBTdXBwcmVzcy1TY3JpcHRgIGRlZmluZWQgaW4gdGhlXG4gICAgICoge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2Fzc2lnbm1lbnRzL2xhbmd1YWdlLXN1YnRhZy1yZWdpc3RyeS9sYW5ndWFnZS1zdWJ0YWctcmVnaXN0cnkgfCBJQU5BIHN1YnRhZyByZWdpc3RyeX1cbiAgICAgKiBmb3IgdGhlIHByaW1hcnkgbGFuZ3VhZ2Ugb2YgdGhpcyB0YWcuICBDYW4gYmUgYHVuZGVmaW5lZGBcbiAgICAgKiBpZiBuZWl0aGVyIHRoZSB0YWcgbm9yIHRoZSBJQU5BIHJlZ2lzdHJ5IGRlZmluZSBhIHNjcmlwdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGVmZmVjdGl2ZVNjcmlwdCgpOiBTY3JpcHRTdWJ0YWcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5zdWJ0YWdzLnNjcmlwdCA/PyB0aGlzLmdldFN1cHByZXNzZWRTY3JpcHQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIGlmIHRoaXMgdGFnIHJlcHJlc2VudHMgdGhlIHNwZWNpYWwgYHVuZGV0ZXJtaW5lZGAgbGFuZ3VhZ2UuXG4gICAgICovXG4gICAgcHVibGljIGdldCBpc1VuZGV0ZXJtaW5lZCgpOiBib29sZWFuIHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgcmV0dXJuIHRoaXMuc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2U/LnRvTG93ZXJDYXNlKCkgPT09IFVuZGV0ZXJtaW5lZExhbmd1YWdlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhpcyBsYW5ndWFnZSB0YWcgaXMgdmFsaWQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5faXNWYWxpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLl9pc1ZhbGlkID0gVmFsaWRhdGVUYWcuaXNWYWxpZCh0aGlzLnN1YnRhZ3MpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2lzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl92YWxpZGl0eSA9ICd2YWxpZCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVmFsaWQgPT09IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBpZiB0aGlzIGxhbmd1YWdlIHRhZyBpcyBzdHJpY3RseSB2YWxpZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzU3RyaWN0bHlWYWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzU3RyaWN0bHlWYWxpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLl9pc1N0cmljdGx5VmFsaWQgPSBWYWxpZGF0ZVRhZy5pc1N0cmljdGx5VmFsaWQodGhpcy5zdWJ0YWdzKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc1N0cmljdGx5VmFsaWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl92YWxpZGl0eSA9ICdzdHJpY3RseS12YWxpZCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzU3RyaWN0bHlWYWxpZCA9PT0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoaXMgbGFuZ3VhZ2UgdGFnIGlzIGluIGNhbm9uaWNhbCBmb3JtLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNDYW5vbmljYWwoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLl9pc0Nhbm9uaWNhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLl9pc0Nhbm9uaWNhbCA9IFZhbGlkYXRlVGFnLmlzQ2Fub25pY2FsKHRoaXMuc3VidGFncyk7XG4gICAgICAgICAgICBpZiAodGhpcy5faXNDYW5vbmljYWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3JtYWxpemF0aW9uID0gJ2Nhbm9uaWNhbCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ2Fub25pY2FsID09PSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhpcyBsYW5ndWFnZSB0YWcgaXMgaW4gcHJlZmVycmVkIGZvcm0uXG4gICAgICovXG4gICAgcHVibGljIGdldCBpc1ByZWZlcnJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzUHJlZmVycmVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2lzUHJlZmVycmVkID0gVmFsaWRhdGVUYWcuaXNJblByZWZlcnJlZEZvcm0odGhpcy5zdWJ0YWdzKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc1ByZWZlcnJlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX25vcm1hbGl6YXRpb24gPSAncHJlZmVycmVkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5faXNQcmVmZXJyZWQgPT09IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9IGZyb20gYSBzdXBwbGllZCBgc3RyaW5nYCB0YWdcbiAgICAgKiB1c2luZyBvcHRpb25hbCBjb25maWd1cmF0aW9uLCBpZiBzdXBwbGllZC5cbiAgICAgKiBAcGFyYW0gdGFnIC0gVGhlIGBzdHJpbmdgIHRhZyBmcm9tIHdoaWNoIHRoZSB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9XG4gICAgICogaXMgdGUgYmUgY29uc3RydWN0ZWQuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSAob3B0aW9uYWwpIHNldCBvZiB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyB8IGluaXQgb3B0aW9uc31cbiAgICAgKiB0byBndWlkZSB0aGUgdmFsaWRhdGlvbiBhbmQgbm9ybWFsaXphdGlvbiBvZiB0aGlzIHRhZy5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCB0aGUgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gb3IgYEZhaWx1cmVgXG4gICAgICogd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yIG9jY3Vycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUZyb21UYWcodGFnOiBzdHJpbmcsIG9wdGlvbnM/OiBMYW5ndWFnZVRhZ0luaXRPcHRpb25zKTogUmVzdWx0PExhbmd1YWdlVGFnPiB7XG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLl9nZXRPcHRpb25zKG9wdGlvbnMpO1xuXG4gICAgICAgIHJldHVybiBMYW5ndWFnZVRhZ1BhcnNlci5wYXJzZSh0YWcsIG9wdGlvbnMuaWFuYSkub25TdWNjZXNzKChzdWJ0YWdzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlVHJhbnNmb3JtZWQoc3VidGFncywgJ3Vua25vd24nLCAndW5rbm93bicsIG9wdGlvbnMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gZnJvbSBhIHN1cHBsaWVkXG4gICAgICoge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfSB1c2luZyBvcHRpb25hbCBjb25maWd1cmF0aW9uLFxuICAgICAqIGlmIHN1cHBsaWVkLlxuICAgICAqIEBwYXJhbSB0YWcgLSBUaGUge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfSBmcm9tIHdoaWNoIHRoZVxuICAgICAqIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gaXMgdGUgYmUgY29uc3RydWN0ZWQuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSAob3B0aW9uYWwpIHNldCBvZiB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyB8IGluaXQgb3B0aW9uc31cbiAgICAgKiB0byBndWlkZSB0aGUgdmFsaWRhdGlvbiBhbmQgbm9ybWFsaXphdGlvbiBvZiB0aGlzIHRhZy5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCB0aGUgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gb3IgYEZhaWx1cmVgXG4gICAgICogd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yIG9jY3Vycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUZyb21TdWJ0YWdzKHN1YnRhZ3M6IFN1YnRhZ3MsIG9wdGlvbnM/OiBMYW5ndWFnZVRhZ0luaXRPcHRpb25zKTogUmVzdWx0PExhbmd1YWdlVGFnPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVUcmFuc2Zvcm1lZChzdWJ0YWdzLCAndW5rbm93bicsICd1bmtub3duJywgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9IGZyb20gYSBzdXBwbGllZCBgc3RyaW5nYFxuICAgICAqIHRhZyBvciB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9IHVzaW5nIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24sXG4gICAgICogaWYgc3VwcGxpZWQuXG4gICAgICogQHBhcmFtIGZyb20gLSBUaGUgYHN0cmluZ2AgdGFnIG9yIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc30gZnJvbVxuICAgICAqIHdoaWNoIHRoZSB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9IGlzIHRlIGJlIGNvbnN0cnVjdGVkLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gKG9wdGlvbmFsKSBzZXQgb2Yge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnSW5pdE9wdGlvbnMgfCBpbml0IG9wdGlvbnN9XG4gICAgICogdG8gZ3VpZGUgdGhlIHZhbGlkYXRpb24gYW5kIG5vcm1hbGl6YXRpb24gb2YgdGhpcyB0YWcuXG4gICAgICogQHJldHVybnMgYFN1Y2Nlc3NgIHdpdGggdGhlIG5ldyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9IG9yIGBGYWlsdXJlYFxuICAgICAqIHdpdGggZGV0YWlscyBpZiBhbiBlcnJvciBvY2N1cnMuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUoZnJvbTogc3RyaW5nIHwgU3VidGFncywgb3B0aW9ucz86IExhbmd1YWdlVGFnSW5pdE9wdGlvbnMpOiBSZXN1bHQ8TGFuZ3VhZ2VUYWc+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBmcm9tID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRnJvbVRhZyhmcm9tLCBvcHRpb25zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUZyb21TdWJ0YWdzKGZyb20sIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9IGJ5IGFwcGx5aW5nIGFwcHJvcHJpYXRlIHRyYW5zZm9ybWF0aW9uc1xuICAgICAqIHRvIGFzIHN1cHBsaWVkIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgQmNwNDcuU3VidGFnc30uXG4gICAgICogQHBhcmFtIHN1YnRhZ3MgLSBUaGUge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfSB3aGljaCByZXByZXNlbnQgdGhlIHRhZy5cbiAgICAgKiBAcGFyYW0gZnJvbVZhbGlkaXR5IC0gVGhlIHtAbGluayBCY3A0Ny5UYWdWYWxpZGl0eSB8IHZhbGlkYXRpb24gbGV2ZWx9IG9mIHRoZSBzdXBwbGllZCBzdWJ0YWdzLlxuICAgICAqIEBwYXJhbSBmcm9tTm9ybWFsaXphdGlvbiAtIFRoZSB7QGxpbmsgQmNwNDcuVGFnTm9ybWFsaXphdGlvbiB8IG5vcm1hbGl6YXRpb24gbGV2ZWx9IGZvIHRoZVxuICAgICAqIHN1cHBsaWVkIHN1YnRhZ3MuXG4gICAgICogQHBhcmFtIHBhcnRpYWxPcHRpb25zIC0gQW55IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ0luaXRPcHRpb25zIHwgaW5pdGlhbGl6YXRpb24gb3B0aW9uc30uXG4gICAgICogQHJldHVybnMgYFN1Y2Nlc3NgIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSBvciBgRmFpbHVyZWBcbiAgICAgKiB3aXRoIGRldGFpbHMgaWYgYW4gZXJyb3Igb2NjdXJzLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdGF0aWMgX2NyZWF0ZVRyYW5zZm9ybWVkKFxuICAgICAgICBzdWJ0YWdzOiBTdWJ0YWdzLFxuICAgICAgICBmcm9tVmFsaWRpdHk6IFRhZ1ZhbGlkaXR5LFxuICAgICAgICBmcm9tTm9ybWFsaXphdGlvbjogVGFnTm9ybWFsaXphdGlvbixcbiAgICAgICAgcGFydGlhbE9wdGlvbnM/OiBMYW5ndWFnZVRhZ0luaXRPcHRpb25zXG4gICAgKTogUmVzdWx0PExhbmd1YWdlVGFnPiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLl9nZXRPcHRpb25zKHBhcnRpYWxPcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIFZhbGlkYXRlVGFnLnZhbGlkYXRlU3VidGFncyhzdWJ0YWdzLCBvcHRpb25zLnZhbGlkaXR5LCBmcm9tVmFsaWRpdHkpXG4gICAgICAgICAgICAub25TdWNjZXNzKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gTm9ybWFsaXplVGFnLm5vcm1hbGl6ZVN1YnRhZ3Moc3VidGFncywgb3B0aW9ucy5ub3JtYWxpemF0aW9uLCBmcm9tTm9ybWFsaXphdGlvbik7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLm9uU3VjY2Vzcygobm9ybWFsaXplZCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkaXR5ID0gbW9zdFZhbGlkKGZyb21WYWxpZGl0eSwgb3B0aW9ucy52YWxpZGl0eSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXphdGlvbiA9IG1vc3ROb3JtYWxpemVkKGZyb21Ob3JtYWxpemF0aW9uLCBvcHRpb25zLm5vcm1hbGl6YXRpb24pO1xuICAgICAgICAgICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBMYW5ndWFnZVRhZyhub3JtYWxpemVkLCB2YWxpZGl0eSwgbm9ybWFsaXphdGlvbiwgb3B0aW9ucy5pYW5hKSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgZnVsbHktc3BlY2lmaWVkIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ0luaXRPcHRpb25zfSBmcm9tIHBhcnRpYWwgb3IgdW5kZWZpbmVkXG4gICAgICogb3B0aW9ucywgc3Vic3RpdHV0aW5nIGRlZmF1bHRzIGFzIGFwcHJvcHJpYXRlLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ0luaXRPcHRpb25zfSB0byBiZSBleHBhbmRlZCwgb3IgYHVuZGVmaW5lZGBcbiAgICAgKiBmb3IgZGVmYXVsdCBvcHRpb25zLlxuICAgICAqIEByZXR1cm5zIEZ1bGx5LXNwZWNpZmllZCB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyB8IGluaXQgb3B0aW9uc30uXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfZ2V0T3B0aW9ucyhvcHRpb25zPzogTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyk6IFJlcXVpcmVkPExhbmd1YWdlVGFnSW5pdE9wdGlvbnM+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlhbmE6IG9wdGlvbnM/LmlhbmEgPz8gSWFuYS5EZWZhdWx0UmVnaXN0cmllcy5sYW5ndWFnZVJlZ2lzdHJpZXMsXG4gICAgICAgICAgICB2YWxpZGl0eTogb3B0aW9ucz8udmFsaWRpdHkgPz8gJ3dlbGwtZm9ybWVkJyxcbiAgICAgICAgICAgIG5vcm1hbGl6YXRpb246IG9wdGlvbnM/Lm5vcm1hbGl6YXRpb24gPz8gJ25vbmUnLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGBTdXBwcmVzcy1TY3JpcHRgIHZhbHVlIGRlZmluZWQgZm9yIHRoZSBwcmltYXJ5IGxhbmd1YWdlIG9mIHRoaXMgdGFnLFxuICAgICAqIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBhIGRpZmZlcmVudCBzY3JpcHQgaXMgZGVmaW5lZCBpbiB0aGlzIHN1YnRhZy5cbiAgICAgKiBAcmV0dXJucyBUaGUgc3VwcHJlc3Mtc2NyaXB0IGRlZmluZWQgZm9yIHRoZSBwcmltYXJ5IGxhbmd1YWdlLCBvciB1bmRlZmluZWQgaWZcbiAgICAgKiB0aGUgcHJpbWFyeSBsYW5ndWFnZSBpcyBpbnZhbGlkIG9yIGhhcyBubyBkZWZpbmVkIHN1cHByZXNzZWQgc2NyaXB0LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTdXBwcmVzc2VkU2NyaXB0KCk6IFNjcmlwdFN1YnRhZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0aGlzLl9zdXBwcmVzc2VkU2NyaXB0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3N1cHByZXNzZWRTY3JpcHQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICh0aGlzLnN1YnRhZ3MucHJpbWFyeUxhbmd1YWdlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFuZ3VhZ2UgPSB0aGlzLl9pYW5hLnN1YnRhZ3MubGFuZ3VhZ2VzLnRyeUdldCh0aGlzLnN1YnRhZ3MucHJpbWFyeUxhbmd1YWdlKTtcbiAgICAgICAgICAgICAgICBpZiAobGFuZ3VhZ2U/LnN1cHByZXNzU2NyaXB0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3VwcHJlc3NlZFNjcmlwdCA9IGxhbmd1YWdlLnN1cHByZXNzU2NyaXB0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fc3VwcHJlc3NlZFNjcmlwdCA/IHRoaXMuX3N1cHByZXNzZWRTY3JpcHQgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGNvbmZpcm1lZCB2YWxpZCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGxhbmd1YWdlIHRhZy5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCBhIHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSxcbiAgICAgKiBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIHRoZSB0YWcgY2Fubm90IGJlIHZhbGlkYXRlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgdG9WYWxpZCgpOiBSZXN1bHQ8TGFuZ3VhZ2VUYWc+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3B0aW9uczogTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGlhbmE6IHRoaXMuX2lhbmEsXG4gICAgICAgICAgICB2YWxpZGl0eTogJ3ZhbGlkJyxcbiAgICAgICAgICAgIG5vcm1hbGl6YXRpb246IHRoaXMuX25vcm1hbGl6YXRpb24sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBMYW5ndWFnZVRhZy5fY3JlYXRlVHJhbnNmb3JtZWQodGhpcy5zdWJ0YWdzLCB0aGlzLl92YWxpZGl0eSwgdGhpcy5fbm9ybWFsaXphdGlvbiwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGNvbmZpcm1lZCBzdHJpY3RseSB2YWxpZCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGxhbmd1YWdlIHRhZy5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCBhIHN0cmljdGx5IHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSxcbiAgICAgKiBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIHRoZSB0YWcgY2Fubm90IGJlIHN0cmljdGx5IHZhbGlkYXRlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgdG9TdHJpY3RseVZhbGlkKCk6IFJlc3VsdDxMYW5ndWFnZVRhZz4ge1xuICAgICAgICBpZiAodGhpcy5pc1N0cmljdGx5VmFsaWQpIHtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IExhbmd1YWdlVGFnSW5pdE9wdGlvbnMgPSB7XG4gICAgICAgICAgICBpYW5hOiB0aGlzLl9pYW5hLFxuICAgICAgICAgICAgdmFsaWRpdHk6ICdzdHJpY3RseS12YWxpZCcsXG4gICAgICAgICAgICBub3JtYWxpemF0aW9uOiB0aGlzLl9ub3JtYWxpemF0aW9uLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gTGFuZ3VhZ2VUYWcuX2NyZWF0ZVRyYW5zZm9ybWVkKHRoaXMuc3VidGFncywgdGhpcy5fdmFsaWRpdHksIHRoaXMuX25vcm1hbGl6YXRpb24sIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBjb25maXJtZWQgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIGEgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSxcbiAgICAgKiBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIHRoZSB0YWcgY2Fubm90IGJlIG5vcm1hbGl6ZWQgdG8gY2Fub25pY2FsIGZvcm0uXG4gICAgICovXG4gICAgcHVibGljIHRvQ2Fub25pY2FsKCk6IFJlc3VsdDxMYW5ndWFnZVRhZz4ge1xuICAgICAgICBpZiAodGhpcy5pc0Nhbm9uaWNhbCkge1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3B0aW9uczogTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGlhbmE6IHRoaXMuX2lhbmEsXG4gICAgICAgICAgICB2YWxpZGl0eTogdGhpcy5fdmFsaWRpdHksXG4gICAgICAgICAgICBub3JtYWxpemF0aW9uOiAnY2Fub25pY2FsJyxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIExhbmd1YWdlVGFnLl9jcmVhdGVUcmFuc2Zvcm1lZCh0aGlzLnN1YnRhZ3MsIHRoaXMuX3ZhbGlkaXR5LCB0aGlzLl9ub3JtYWxpemF0aW9uLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgY29uZmlybWVkIHByZWZlcnJlZCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGxhbmd1YWdlIHRhZy5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCBhIHByZWZlcnJlZCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30sXG4gICAgICogb3IgYEZhaWx1cmVgIHdpdGggZGV0YWlscyBpZiB0aGUgdGFnIGNhbm5vdCBiZSBub3JtYWxpemVkIHRvIHByZWZlcnJlZCBmb3JtLlxuICAgICAqL1xuICAgIHB1YmxpYyB0b1ByZWZlcnJlZCgpOiBSZXN1bHQ8TGFuZ3VhZ2VUYWc+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNQcmVmZXJyZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IExhbmd1YWdlVGFnSW5pdE9wdGlvbnMgPSB7XG4gICAgICAgICAgICBpYW5hOiB0aGlzLl9pYW5hLFxuICAgICAgICAgICAgdmFsaWRpdHk6ICd2YWxpZCcsIC8vIHByZWZlcnJlZCByZXF1aXJlcyB2YWxpZGl0eVxuICAgICAgICAgICAgbm9ybWFsaXphdGlvbjogJ3ByZWZlcnJlZCcsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBMYW5ndWFnZVRhZy5fY3JlYXRlVHJhbnNmb3JtZWQodGhpcy5zdWJ0YWdzLCB0aGlzLl92YWxpZGl0eSwgdGhpcy5fbm9ybWFsaXphdGlvbiwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGxhbmd1YWdlIHRhZy5cbiAgICAgKiBAcmV0dXJucyBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGxhbmd1YWdlIHRhZy5cbiAgICAgKi9cbiAgICBwdWJsaWMgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFnO1xuICAgIH1cbn1cbiJdfQ==
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languageTagParser.d.ts","sourceRoot":"","sources":["../../src/bcp47/languageTagParser.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,OAAO,EAA6B,MAAM,eAAe,CAAC;AAG3E,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC;;GAEG;AACH,UAAU,WAAW;IACjB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAG1B,OAAO;IAEP;;;;;;;;;;OAUG;WACW,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC;IA6BjF;;;;;;;;;OASG;IACH,SAAS,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAW7E;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IAiB3E;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IAenE;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IASlE;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IASlE;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IAapE;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IA+BtE;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IA+B1E;;;;;;;OAOG;IACH,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;CAMrE"}
|