@fgv/ts-bcp47 5.0.0-2 → 5.0.0-21
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/.vscode/settings.json +58 -0
- package/config/api-extractor.json +343 -0
- package/config/rig.json +16 -0
- package/dist/tsdoc-metadata.json +1 -1
- package/lib/packlets/iana/jar/language-subtags/tags/converters.js +1 -0
- package/lib/test/data/iana/language-subtag-registry.json +57435 -0
- package/lib/test/data/iana/language-tag-extension-registry.json +38 -0
- package/lib/test/unit/bcp47/bcp47Tags/validate.test.d.ts +2 -0
- package/lib/test/unit/bcp47/canonicalTag.test.d.ts +2 -0
- package/lib/test/unit/bcp47/common.test.d.ts +2 -0
- package/lib/test/unit/bcp47/commonTestCases.d.ts +5 -0
- package/lib/test/unit/bcp47/commonTestCases.js +478 -0
- package/lib/test/unit/bcp47/helpers.test.d.ts +2 -0
- package/lib/test/unit/bcp47/languageRegistryData.test.d.ts +2 -0
- package/lib/test/unit/bcp47/languageTag.test.d.ts +2 -0
- package/lib/test/unit/bcp47/languageTagHelpers.d.ts +70 -0
- package/lib/test/unit/bcp47/languageTagHelpers.js +184 -0
- package/lib/test/unit/bcp47/match/chooser.test.d.ts +2 -0
- package/lib/test/unit/bcp47/match/similarity.test.d.ts +2 -0
- package/lib/test/unit/bcp47/normalizeTag.test.d.ts +2 -0
- package/lib/test/unit/bcp47/overrides.test.d.ts +2 -0
- package/lib/test/unit/bcp47/validTag.test.d.ts +2 -0
- package/lib/test/unit/bcp47/validateTag.test.d.ts +2 -0
- package/lib/test/unit/bcp47/wellFormedTag.test.d.ts +2 -0
- package/lib/test/unit/examples.test.d.ts +2 -0
- package/lib/test/unit/iana/common/datedRegistry.test.d.ts +2 -0
- package/lib/test/unit/iana/common/validate.test.d.ts +2 -0
- package/lib/test/unit/iana/jar/jarConverters.test.d.ts +2 -0
- package/lib/test/unit/iana/jar/language-subtags/tags/converters.test.d.ts +2 -0
- package/lib/test/unit/iana/jar/language-subtags/tags/validate.test.d.ts +2 -0
- package/lib/test/unit/iana/language-subtags/data.test.d.ts +2 -0
- package/lib/test/unit/iana/language-subtags/jarConverters.test.d.ts +2 -0
- package/lib/test/unit/iana/language-subtags/registry.test.d.ts +2 -0
- package/lib/test/unit/iana/language-subtags/scope.test.d.ts +2 -0
- package/lib/test/unit/iana/language-tag-extensions/extensionsRegistry.test.d.ts +2 -0
- package/lib/test/unit/iana/language-tag-extensions/validate.test.d.ts +2 -0
- package/lib/test/unit/unsd/csv.test.d.ts +2 -0
- package/lib/test/unit/unsd/regionCodes.test.d.ts +2 -0
- package/package.json +20 -20
- package/src/data/bcp/overrides.json +20 -0
- package/src/data/iana/language-subtags.json +57439 -0
- package/src/data/iana/language-tag-extensions.json +38 -0
- package/src/data/unsd/m49.json +3723 -0
- package/src/index.ts +29 -0
- package/src/packlets/bcp47/bcp47Subtags/converters.ts +33 -0
- package/src/packlets/bcp47/bcp47Subtags/index.ts +27 -0
- package/src/packlets/bcp47/bcp47Subtags/model.ts +46 -0
- package/src/packlets/bcp47/bcp47Subtags/validate.ts +55 -0
- package/src/packlets/bcp47/common.ts +85 -0
- package/src/packlets/bcp47/helpers.ts +117 -0
- package/src/packlets/bcp47/index.ts +38 -0
- package/src/packlets/bcp47/languageRegistryData.ts +304 -0
- package/src/packlets/bcp47/languageTag.ts +467 -0
- package/src/packlets/bcp47/languageTagParser.ts +307 -0
- package/src/packlets/bcp47/match/chooser.ts +164 -0
- package/src/packlets/bcp47/match/common.ts +57 -0
- package/src/packlets/bcp47/match/index.ts +26 -0
- package/src/packlets/bcp47/match/similarity.ts +243 -0
- package/src/packlets/bcp47/normalization/baseNormalizer.ts +146 -0
- package/src/packlets/bcp47/normalization/canonicalNormalizer.ts +102 -0
- package/src/packlets/bcp47/normalization/common.ts +84 -0
- package/src/packlets/bcp47/normalization/index.ts +27 -0
- package/src/packlets/bcp47/normalization/normalizeTag.ts +116 -0
- package/src/packlets/bcp47/normalization/preferredTagNormalizer.ts +213 -0
- package/src/packlets/bcp47/overrides/converters.ts +58 -0
- package/src/packlets/bcp47/overrides/defaultRegistries.ts +40 -0
- package/src/packlets/bcp47/overrides/index.ts +25 -0
- package/src/packlets/bcp47/overrides/model.ts +33 -0
- package/src/packlets/bcp47/overrides/overridesRegistry.ts +104 -0
- package/src/packlets/bcp47/validation/baseValidator.ts +132 -0
- package/src/packlets/bcp47/validation/common.ts +86 -0
- package/src/packlets/bcp47/validation/index.ts +29 -0
- package/src/packlets/bcp47/validation/isCanonical.ts +103 -0
- package/src/packlets/bcp47/validation/isInPreferredForm.ts +53 -0
- package/src/packlets/bcp47/validation/isStrictlyValid.ts +117 -0
- package/src/packlets/bcp47/validation/isValid.ts +122 -0
- package/src/packlets/bcp47/validation/isWellFormed.ts +102 -0
- package/src/packlets/bcp47/validation/validateTag.ts +175 -0
- package/src/packlets/iana/common/converters.ts +67 -0
- package/src/packlets/iana/common/model.ts +56 -0
- package/src/packlets/iana/common/registeredItems.ts +145 -0
- package/src/packlets/iana/common/utils.ts +32 -0
- package/src/packlets/iana/common/validate.ts +64 -0
- package/src/packlets/iana/converters.ts +26 -0
- package/src/packlets/iana/defaultRegistries.ts +40 -0
- package/src/packlets/iana/index.ts +33 -0
- package/src/packlets/iana/jar/converters.ts +26 -0
- package/src/packlets/iana/jar/index.ts +27 -0
- package/src/packlets/iana/jar/jarConverters.ts +70 -0
- package/src/packlets/iana/jar/jarModel.ts +34 -0
- package/src/packlets/iana/jar/language-subtags/converters.ts +26 -0
- package/src/packlets/iana/jar/language-subtags/index.ts +27 -0
- package/src/packlets/iana/jar/language-subtags/model.ts +26 -0
- package/src/packlets/iana/jar/language-subtags/registry/converters.ts +40 -0
- package/src/packlets/iana/jar/language-subtags/registry/index.ts +26 -0
- package/src/packlets/iana/jar/language-subtags/registry/model.ts +171 -0
- package/src/packlets/iana/jar/language-subtags/tags/converters.ts +120 -0
- package/src/packlets/iana/jar/language-subtags/tags/index.ts +28 -0
- package/src/packlets/iana/jar/language-subtags/tags/model.ts +71 -0
- package/src/packlets/iana/jar/language-subtags/tags/tagValidation.ts +67 -0
- package/src/packlets/iana/jar/language-subtags/tags/validate.ts +106 -0
- package/src/packlets/iana/jar/model.ts +26 -0
- package/src/packlets/iana/language-subtags/common.ts +46 -0
- package/src/packlets/iana/language-subtags/converters.ts +226 -0
- package/src/packlets/iana/language-subtags/index.ts +30 -0
- package/src/packlets/iana/language-subtags/jarConverters.ts +269 -0
- package/src/packlets/iana/language-subtags/model.ts +213 -0
- package/src/packlets/iana/language-subtags/scope.ts +222 -0
- package/src/packlets/iana/language-subtags/subtagRegistry.ts +136 -0
- package/src/packlets/iana/language-subtags/validate.ts +23 -0
- package/src/packlets/iana/language-tag-extensions/converters.ts +71 -0
- package/src/packlets/iana/language-tag-extensions/extensionsRegistry.ts +92 -0
- package/src/packlets/iana/language-tag-extensions/extensionsScope.ts +60 -0
- package/src/packlets/iana/language-tag-extensions/index.ts +29 -0
- package/src/packlets/iana/language-tag-extensions/jarConverters.ts +91 -0
- package/src/packlets/iana/language-tag-extensions/model.ts +67 -0
- package/src/packlets/iana/language-tag-extensions/validate.ts +36 -0
- package/src/packlets/iana/languageRegistries.ts +57 -0
- package/src/packlets/iana/model.ts +26 -0
- package/src/packlets/iana/validate.ts +23 -0
- package/src/packlets/unsd/areas.ts +105 -0
- package/src/packlets/unsd/common.ts +79 -0
- package/src/packlets/unsd/csv/converters.ts +82 -0
- package/src/packlets/unsd/csv/index.ts +26 -0
- package/src/packlets/unsd/csv/model.ts +44 -0
- package/src/packlets/unsd/defaultRegistries.ts +40 -0
- package/src/packlets/unsd/index.ts +28 -0
- package/src/packlets/unsd/regionCodes.ts +144 -0
- package/src/packlets/unsd/regions.ts +95 -0
- package/src/packlets/utils/index.ts +24 -0
- package/src/packlets/utils/jsonHelpers.ts +25 -0
- package/src/packlets/utils/public.ts +28 -0
- package/src/packlets/utils/validationHelpers.ts +180 -0
- package/CHANGELOG.md +0 -109
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/packlets/bcp47/bcp47Subtags/converters.d.ts.map +0 -1
- package/lib/packlets/bcp47/bcp47Subtags/converters.js.map +0 -1
- package/lib/packlets/bcp47/bcp47Subtags/index.d.ts.map +0 -1
- package/lib/packlets/bcp47/bcp47Subtags/index.js.map +0 -1
- package/lib/packlets/bcp47/bcp47Subtags/model.d.ts.map +0 -1
- package/lib/packlets/bcp47/bcp47Subtags/model.js.map +0 -1
- package/lib/packlets/bcp47/bcp47Subtags/validate.d.ts.map +0 -1
- package/lib/packlets/bcp47/bcp47Subtags/validate.js.map +0 -1
- package/lib/packlets/bcp47/common.d.ts.map +0 -1
- package/lib/packlets/bcp47/common.js.map +0 -1
- package/lib/packlets/bcp47/helpers.d.ts.map +0 -1
- package/lib/packlets/bcp47/helpers.js.map +0 -1
- package/lib/packlets/bcp47/index.d.ts.map +0 -1
- package/lib/packlets/bcp47/index.js.map +0 -1
- package/lib/packlets/bcp47/languageRegistryData.d.ts.map +0 -1
- package/lib/packlets/bcp47/languageRegistryData.js.map +0 -1
- package/lib/packlets/bcp47/languageTag.d.ts.map +0 -1
- package/lib/packlets/bcp47/languageTag.js.map +0 -1
- package/lib/packlets/bcp47/languageTagParser.d.ts.map +0 -1
- package/lib/packlets/bcp47/languageTagParser.js.map +0 -1
- package/lib/packlets/bcp47/match/chooser.d.ts.map +0 -1
- package/lib/packlets/bcp47/match/chooser.js.map +0 -1
- package/lib/packlets/bcp47/match/common.d.ts.map +0 -1
- package/lib/packlets/bcp47/match/common.js.map +0 -1
- package/lib/packlets/bcp47/match/index.d.ts.map +0 -1
- package/lib/packlets/bcp47/match/index.js.map +0 -1
- package/lib/packlets/bcp47/match/similarity.d.ts.map +0 -1
- package/lib/packlets/bcp47/match/similarity.js.map +0 -1
- package/lib/packlets/bcp47/normalization/baseNormalizer.d.ts.map +0 -1
- package/lib/packlets/bcp47/normalization/baseNormalizer.js.map +0 -1
- package/lib/packlets/bcp47/normalization/canonicalNormalizer.d.ts.map +0 -1
- package/lib/packlets/bcp47/normalization/canonicalNormalizer.js.map +0 -1
- package/lib/packlets/bcp47/normalization/common.d.ts.map +0 -1
- package/lib/packlets/bcp47/normalization/common.js.map +0 -1
- package/lib/packlets/bcp47/normalization/index.d.ts.map +0 -1
- package/lib/packlets/bcp47/normalization/index.js.map +0 -1
- package/lib/packlets/bcp47/normalization/normalizeTag.d.ts.map +0 -1
- package/lib/packlets/bcp47/normalization/normalizeTag.js.map +0 -1
- package/lib/packlets/bcp47/normalization/preferredTagNormalizer.d.ts.map +0 -1
- package/lib/packlets/bcp47/normalization/preferredTagNormalizer.js.map +0 -1
- package/lib/packlets/bcp47/overrides/converters.d.ts.map +0 -1
- package/lib/packlets/bcp47/overrides/converters.js.map +0 -1
- package/lib/packlets/bcp47/overrides/defaultRegistries.d.ts.map +0 -1
- package/lib/packlets/bcp47/overrides/defaultRegistries.js.map +0 -1
- package/lib/packlets/bcp47/overrides/index.d.ts.map +0 -1
- package/lib/packlets/bcp47/overrides/index.js.map +0 -1
- package/lib/packlets/bcp47/overrides/model.d.ts.map +0 -1
- package/lib/packlets/bcp47/overrides/model.js.map +0 -1
- package/lib/packlets/bcp47/overrides/overridesRegistry.d.ts.map +0 -1
- package/lib/packlets/bcp47/overrides/overridesRegistry.js.map +0 -1
- package/lib/packlets/bcp47/validation/baseValidator.d.ts.map +0 -1
- package/lib/packlets/bcp47/validation/baseValidator.js.map +0 -1
- package/lib/packlets/bcp47/validation/common.d.ts.map +0 -1
- package/lib/packlets/bcp47/validation/common.js.map +0 -1
- package/lib/packlets/bcp47/validation/index.d.ts.map +0 -1
- package/lib/packlets/bcp47/validation/index.js.map +0 -1
- package/lib/packlets/bcp47/validation/isCanonical.d.ts.map +0 -1
- package/lib/packlets/bcp47/validation/isCanonical.js.map +0 -1
- package/lib/packlets/bcp47/validation/isInPreferredForm.d.ts.map +0 -1
- package/lib/packlets/bcp47/validation/isInPreferredForm.js.map +0 -1
- package/lib/packlets/bcp47/validation/isStrictlyValid.d.ts.map +0 -1
- package/lib/packlets/bcp47/validation/isStrictlyValid.js.map +0 -1
- package/lib/packlets/bcp47/validation/isValid.d.ts.map +0 -1
- package/lib/packlets/bcp47/validation/isValid.js.map +0 -1
- package/lib/packlets/bcp47/validation/isWellFormed.d.ts.map +0 -1
- package/lib/packlets/bcp47/validation/isWellFormed.js.map +0 -1
- package/lib/packlets/bcp47/validation/validateTag.d.ts.map +0 -1
- package/lib/packlets/bcp47/validation/validateTag.js.map +0 -1
- package/lib/packlets/iana/common/converters.d.ts.map +0 -1
- package/lib/packlets/iana/common/converters.js.map +0 -1
- package/lib/packlets/iana/common/model.d.ts.map +0 -1
- package/lib/packlets/iana/common/model.js.map +0 -1
- package/lib/packlets/iana/common/registeredItems.d.ts.map +0 -1
- package/lib/packlets/iana/common/registeredItems.js.map +0 -1
- package/lib/packlets/iana/common/utils.d.ts.map +0 -1
- package/lib/packlets/iana/common/utils.js.map +0 -1
- package/lib/packlets/iana/common/validate.d.ts.map +0 -1
- package/lib/packlets/iana/common/validate.js.map +0 -1
- package/lib/packlets/iana/converters.d.ts.map +0 -1
- package/lib/packlets/iana/converters.js.map +0 -1
- package/lib/packlets/iana/defaultRegistries.d.ts.map +0 -1
- package/lib/packlets/iana/defaultRegistries.js.map +0 -1
- package/lib/packlets/iana/index.d.ts.map +0 -1
- package/lib/packlets/iana/index.js.map +0 -1
- package/lib/packlets/iana/jar/converters.d.ts.map +0 -1
- package/lib/packlets/iana/jar/converters.js.map +0 -1
- package/lib/packlets/iana/jar/index.d.ts.map +0 -1
- package/lib/packlets/iana/jar/index.js.map +0 -1
- package/lib/packlets/iana/jar/jarConverters.d.ts.map +0 -1
- package/lib/packlets/iana/jar/jarConverters.js.map +0 -1
- package/lib/packlets/iana/jar/jarModel.d.ts.map +0 -1
- package/lib/packlets/iana/jar/jarModel.js.map +0 -1
- package/lib/packlets/iana/jar/language-subtags/converters.d.ts.map +0 -1
- package/lib/packlets/iana/jar/language-subtags/converters.js.map +0 -1
- package/lib/packlets/iana/jar/language-subtags/index.d.ts.map +0 -1
- package/lib/packlets/iana/jar/language-subtags/index.js.map +0 -1
- package/lib/packlets/iana/jar/language-subtags/model.d.ts.map +0 -1
- package/lib/packlets/iana/jar/language-subtags/model.js.map +0 -1
- package/lib/packlets/iana/jar/language-subtags/registry/converters.d.ts.map +0 -1
- package/lib/packlets/iana/jar/language-subtags/registry/converters.js.map +0 -1
- package/lib/packlets/iana/jar/language-subtags/registry/index.d.ts.map +0 -1
- package/lib/packlets/iana/jar/language-subtags/registry/index.js.map +0 -1
- package/lib/packlets/iana/jar/language-subtags/registry/model.d.ts.map +0 -1
- package/lib/packlets/iana/jar/language-subtags/registry/model.js.map +0 -1
- package/lib/packlets/iana/jar/language-subtags/tags/converters.d.ts.map +0 -1
- package/lib/packlets/iana/jar/language-subtags/tags/converters.js.map +0 -1
- package/lib/packlets/iana/jar/language-subtags/tags/index.d.ts.map +0 -1
- package/lib/packlets/iana/jar/language-subtags/tags/index.js.map +0 -1
- package/lib/packlets/iana/jar/language-subtags/tags/model.d.ts.map +0 -1
- package/lib/packlets/iana/jar/language-subtags/tags/model.js.map +0 -1
- package/lib/packlets/iana/jar/language-subtags/tags/tagValidation.d.ts.map +0 -1
- package/lib/packlets/iana/jar/language-subtags/tags/tagValidation.js.map +0 -1
- package/lib/packlets/iana/jar/language-subtags/tags/validate.d.ts.map +0 -1
- package/lib/packlets/iana/jar/language-subtags/tags/validate.js.map +0 -1
- package/lib/packlets/iana/jar/model.d.ts.map +0 -1
- package/lib/packlets/iana/jar/model.js.map +0 -1
- package/lib/packlets/iana/language-subtags/common.d.ts.map +0 -1
- package/lib/packlets/iana/language-subtags/common.js.map +0 -1
- package/lib/packlets/iana/language-subtags/converters.d.ts.map +0 -1
- package/lib/packlets/iana/language-subtags/converters.js.map +0 -1
- package/lib/packlets/iana/language-subtags/index.d.ts.map +0 -1
- package/lib/packlets/iana/language-subtags/index.js.map +0 -1
- package/lib/packlets/iana/language-subtags/jarConverters.d.ts.map +0 -1
- package/lib/packlets/iana/language-subtags/jarConverters.js.map +0 -1
- package/lib/packlets/iana/language-subtags/model.d.ts.map +0 -1
- package/lib/packlets/iana/language-subtags/model.js.map +0 -1
- package/lib/packlets/iana/language-subtags/scope.d.ts.map +0 -1
- package/lib/packlets/iana/language-subtags/scope.js.map +0 -1
- package/lib/packlets/iana/language-subtags/subtagRegistry.d.ts.map +0 -1
- package/lib/packlets/iana/language-subtags/subtagRegistry.js.map +0 -1
- package/lib/packlets/iana/language-subtags/validate.d.ts.map +0 -1
- package/lib/packlets/iana/language-subtags/validate.js.map +0 -1
- package/lib/packlets/iana/language-tag-extensions/converters.d.ts.map +0 -1
- package/lib/packlets/iana/language-tag-extensions/converters.js.map +0 -1
- package/lib/packlets/iana/language-tag-extensions/extensionsRegistry.d.ts.map +0 -1
- package/lib/packlets/iana/language-tag-extensions/extensionsRegistry.js.map +0 -1
- package/lib/packlets/iana/language-tag-extensions/extensionsScope.d.ts.map +0 -1
- package/lib/packlets/iana/language-tag-extensions/extensionsScope.js.map +0 -1
- package/lib/packlets/iana/language-tag-extensions/index.d.ts.map +0 -1
- package/lib/packlets/iana/language-tag-extensions/index.js.map +0 -1
- package/lib/packlets/iana/language-tag-extensions/jarConverters.d.ts.map +0 -1
- package/lib/packlets/iana/language-tag-extensions/jarConverters.js.map +0 -1
- package/lib/packlets/iana/language-tag-extensions/model.d.ts.map +0 -1
- package/lib/packlets/iana/language-tag-extensions/model.js.map +0 -1
- package/lib/packlets/iana/language-tag-extensions/validate.d.ts.map +0 -1
- package/lib/packlets/iana/language-tag-extensions/validate.js.map +0 -1
- package/lib/packlets/iana/languageRegistries.d.ts.map +0 -1
- package/lib/packlets/iana/languageRegistries.js.map +0 -1
- package/lib/packlets/iana/model.d.ts.map +0 -1
- package/lib/packlets/iana/model.js.map +0 -1
- package/lib/packlets/iana/validate.d.ts.map +0 -1
- package/lib/packlets/iana/validate.js.map +0 -1
- package/lib/packlets/unsd/areas.d.ts.map +0 -1
- package/lib/packlets/unsd/areas.js.map +0 -1
- package/lib/packlets/unsd/common.d.ts.map +0 -1
- package/lib/packlets/unsd/common.js.map +0 -1
- package/lib/packlets/unsd/csv/converters.d.ts.map +0 -1
- package/lib/packlets/unsd/csv/converters.js.map +0 -1
- package/lib/packlets/unsd/csv/index.d.ts.map +0 -1
- package/lib/packlets/unsd/csv/index.js.map +0 -1
- package/lib/packlets/unsd/csv/model.d.ts.map +0 -1
- package/lib/packlets/unsd/csv/model.js.map +0 -1
- package/lib/packlets/unsd/defaultRegistries.d.ts.map +0 -1
- package/lib/packlets/unsd/defaultRegistries.js.map +0 -1
- package/lib/packlets/unsd/index.d.ts.map +0 -1
- package/lib/packlets/unsd/index.js.map +0 -1
- package/lib/packlets/unsd/regionCodes.d.ts.map +0 -1
- package/lib/packlets/unsd/regionCodes.js.map +0 -1
- package/lib/packlets/unsd/regions.d.ts.map +0 -1
- package/lib/packlets/unsd/regions.js.map +0 -1
- package/lib/packlets/utils/index.d.ts.map +0 -1
- package/lib/packlets/utils/index.js.map +0 -1
- package/lib/packlets/utils/jsonHelpers.d.ts.map +0 -1
- package/lib/packlets/utils/jsonHelpers.js.map +0 -1
- package/lib/packlets/utils/public.d.ts.map +0 -1
- package/lib/packlets/utils/public.js.map +0 -1
- package/lib/packlets/utils/validationHelpers.d.ts.map +0 -1
- package/lib/packlets/utils/validationHelpers.js.map +0 -1
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fileDate": "2014-04-02",
|
|
3
|
+
"entries": [
|
|
4
|
+
{
|
|
5
|
+
"Identifier": "t",
|
|
6
|
+
"Description": ["Specifying Transformed Content"],
|
|
7
|
+
"Comments": [
|
|
8
|
+
"Subtags for the identification of content that has been",
|
|
9
|
+
"transformed, including but not limited to:",
|
|
10
|
+
"transliteration, transcription, and translation."
|
|
11
|
+
],
|
|
12
|
+
"Added": "2011-12-16",
|
|
13
|
+
"RFC": "[RFC6497]",
|
|
14
|
+
"Authority": "Unicode Consortium",
|
|
15
|
+
"Contact_Email": "cldr-contact&unicode.org",
|
|
16
|
+
"Mailing_List": "cldr-users&unicode.org",
|
|
17
|
+
"URL": "http://www.unicode.org/Public/cldr/latest/core.zip"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"Identifier": "u",
|
|
21
|
+
"Description": ["Unicode Locale"],
|
|
22
|
+
"Comments": [
|
|
23
|
+
"Subtags for the identification of language and cultural",
|
|
24
|
+
"variations. Used to set behavior in locale APIs. Data is located in",
|
|
25
|
+
"the \"common/bcp47\" directory inside the referenced URL. Unicode",
|
|
26
|
+
"Technical Standard #35 (LDML) provides additional reference material",
|
|
27
|
+
"defining the keys and values. For more details please see",
|
|
28
|
+
"<http://cldr.unicode.org/index/bcp47-extension>."
|
|
29
|
+
],
|
|
30
|
+
"Added": "2010-09-02",
|
|
31
|
+
"RFC": "[RFC6067]",
|
|
32
|
+
"Authority": "Unicode Consortium",
|
|
33
|
+
"Contact_Email": "cldr-contact&unicode.org",
|
|
34
|
+
"Mailing_List": "cldr-users&unicode.org",
|
|
35
|
+
"URL": "http://www.unicode.org/Public/cldr/latest/core.zip"
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as Bcp47 from '../../../packlets/bcp47';
|
|
2
|
+
import { GenericLanguageTagTest } from './languageTagHelpers';
|
|
3
|
+
export declare const tagTestCases: GenericLanguageTagTest<string, string | RegExp>[];
|
|
4
|
+
export declare const subtagsTestCases: GenericLanguageTagTest<Bcp47.ISubtags, string | RegExp>[];
|
|
5
|
+
//# sourceMappingURL=commonTestCases.d.ts.map
|
|
@@ -0,0 +1,478 @@
|
|
|
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.subtagsTestCases = exports.tagTestCases = void 0;
|
|
25
|
+
const languageTagHelpers_1 = require("./languageTagHelpers");
|
|
26
|
+
const testCaseInit = [
|
|
27
|
+
{
|
|
28
|
+
description: 'valid canonical primary language',
|
|
29
|
+
from: 'en',
|
|
30
|
+
expected: [['en', languageTagHelpers_1.allTestKeys]],
|
|
31
|
+
expectedDescription: [['English', languageTagHelpers_1.allTestKeys]]
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
description: 'valid non-canonical primary language',
|
|
35
|
+
from: 'EN',
|
|
36
|
+
expected: [
|
|
37
|
+
['EN', languageTagHelpers_1.allNonCanonicalTestKeys],
|
|
38
|
+
['en', languageTagHelpers_1.allCanonicalTestKeys]
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
description: 'valid but deprecated primary language',
|
|
43
|
+
from: 'in',
|
|
44
|
+
expected: [
|
|
45
|
+
['in', [...languageTagHelpers_1.allNonCanonicalTestKeys, ...languageTagHelpers_1.allNonPreferredCanonicalKeys]],
|
|
46
|
+
['id', languageTagHelpers_1.allPreferredKeys]
|
|
47
|
+
],
|
|
48
|
+
expectedDescription: [['Indonesian', languageTagHelpers_1.allTestKeys]]
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
description: 'valid private primary language',
|
|
52
|
+
from: 'qpn',
|
|
53
|
+
expected: [['qpn', languageTagHelpers_1.allTestKeys]],
|
|
54
|
+
expectedDescription: [['Private use', languageTagHelpers_1.allTestKeys]]
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
description: 'invalid primary language',
|
|
58
|
+
from: 'ENG-US',
|
|
59
|
+
expected: [
|
|
60
|
+
['ENG-US', ['default', 'wellFormed']],
|
|
61
|
+
['eng-US', ['wellFormedCanonical']],
|
|
62
|
+
[/invalid language/i, languageTagHelpers_1.allValidatingKeys]
|
|
63
|
+
],
|
|
64
|
+
expectedDescription: [['ENG as spoken in United States', ['wellFormed']]]
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
description: 'valid canonical extlang',
|
|
68
|
+
from: 'zh-cmn',
|
|
69
|
+
expected: [
|
|
70
|
+
['zh-cmn', [...languageTagHelpers_1.allNonCanonicalTestKeys, ...languageTagHelpers_1.allNonPreferredCanonicalKeys]],
|
|
71
|
+
['cmn', languageTagHelpers_1.allPreferredKeys]
|
|
72
|
+
],
|
|
73
|
+
expectedDescription: [
|
|
74
|
+
['Chinese / Mandarin Chinese', ['wellFormed']],
|
|
75
|
+
['Mandarin Chinese', ['preferred']]
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
description: 'valid canonical extlang with additional tags',
|
|
80
|
+
from: 'zh-cmn-CN-x-private',
|
|
81
|
+
expected: [
|
|
82
|
+
['zh-cmn-CN-x-private', [...languageTagHelpers_1.allNonCanonicalTestKeys, ...languageTagHelpers_1.allNonPreferredCanonicalKeys]],
|
|
83
|
+
['cmn-CN-x-private', languageTagHelpers_1.allPreferredKeys]
|
|
84
|
+
],
|
|
85
|
+
expectedDescription: [
|
|
86
|
+
['Chinese / Mandarin Chinese as spoken in China (-x "private")', ['wellFormed']],
|
|
87
|
+
['Mandarin Chinese as spoken in China (-x "private")', ['preferred']]
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
description: 'valid non-canonical extlang',
|
|
92
|
+
from: 'ZH-Cmn',
|
|
93
|
+
expected: [
|
|
94
|
+
['ZH-Cmn', languageTagHelpers_1.allNonCanonicalTestKeys],
|
|
95
|
+
['zh-cmn', languageTagHelpers_1.allCanonicalTestKeys],
|
|
96
|
+
['cmn', languageTagHelpers_1.allPreferredKeys]
|
|
97
|
+
]
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
description: 'invalid extlang',
|
|
101
|
+
from: 'zh-Han',
|
|
102
|
+
expected: [
|
|
103
|
+
['zh-Han', ['default', 'wellFormed']],
|
|
104
|
+
['zh-han', ['wellFormedCanonical']],
|
|
105
|
+
[/invalid extlang/i, languageTagHelpers_1.allValidatingKeys]
|
|
106
|
+
],
|
|
107
|
+
expectedDescription: [['Chinese / Han', ['wellFormed']]]
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
description: 'valid extlang with invalid prefix',
|
|
111
|
+
from: 'en-cmn-us',
|
|
112
|
+
expected: [
|
|
113
|
+
['en-cmn-us', ['default', 'wellFormed', 'valid']],
|
|
114
|
+
['en-cmn-US', ['wellFormedCanonical', 'validCanonical', 'preferred']],
|
|
115
|
+
[/invalid prefix/i, ['strictlyValid', 'strictlyValidCanonical', 'strictlyValidPreferred']]
|
|
116
|
+
],
|
|
117
|
+
expectedDescription: [['English / Mandarin Chinese as spoken in United States', ['wellFormed']]]
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
description: 'multiple extlang',
|
|
121
|
+
from: 'zh-cmn-yue',
|
|
122
|
+
expected: [
|
|
123
|
+
['zh-cmn-yue', ['default', 'wellFormed', 'wellFormedCanonical']],
|
|
124
|
+
[/multiple extlang/i, languageTagHelpers_1.allValidatingKeys]
|
|
125
|
+
],
|
|
126
|
+
expectedDescription: [['Chinese / Mandarin Chinese / Yue Chinese', ['wellFormed']]]
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
description: 'valid non-canonical, non-suppressed script',
|
|
130
|
+
from: 'zh-LATN',
|
|
131
|
+
expected: [
|
|
132
|
+
['zh-LATN', languageTagHelpers_1.allNonCanonicalTestKeys],
|
|
133
|
+
['zh-Latn', languageTagHelpers_1.allCanonicalTestKeys]
|
|
134
|
+
],
|
|
135
|
+
expectedDescription: [['Chinese in Latin script', ['wellFormed', 'preferred']]]
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
description: 'valid non-canonical, suppressed script',
|
|
139
|
+
from: 'en-LATN',
|
|
140
|
+
expected: [
|
|
141
|
+
['en-LATN', languageTagHelpers_1.allNonCanonicalTestKeys],
|
|
142
|
+
['en-Latn', languageTagHelpers_1.allNonPreferredCanonicalKeys],
|
|
143
|
+
['en', languageTagHelpers_1.allPreferredKeys]
|
|
144
|
+
],
|
|
145
|
+
expectedDescription: [
|
|
146
|
+
['English in Latin script', ['wellFormed']],
|
|
147
|
+
['English', ['preferred']]
|
|
148
|
+
]
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
description: 'invalid script',
|
|
152
|
+
from: 'en-AaaA',
|
|
153
|
+
expected: [
|
|
154
|
+
['en-AaaA', ['default', 'wellFormed']],
|
|
155
|
+
['en-Aaaa', ['wellFormedCanonical']],
|
|
156
|
+
[/invalid script/i, languageTagHelpers_1.allValidatingKeys]
|
|
157
|
+
],
|
|
158
|
+
expectedDescription: [['English in AaaA script', ['wellFormed']]]
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
description: 'valid non-canonical iso3166-2 region',
|
|
162
|
+
from: 'en-aq',
|
|
163
|
+
expected: [
|
|
164
|
+
['en-aq', languageTagHelpers_1.allNonCanonicalTestKeys],
|
|
165
|
+
['en-AQ', languageTagHelpers_1.allCanonicalTestKeys]
|
|
166
|
+
],
|
|
167
|
+
expectedDescription: [['English as spoken in Antarctica', ['wellFormed', 'preferred']]]
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
description: 'valid non-canonical UN M.49 region',
|
|
171
|
+
from: 'es-419',
|
|
172
|
+
expected: [['es-419', languageTagHelpers_1.allTestKeys]],
|
|
173
|
+
expectedDescription: [['Spanish as spoken in Latin America and the Caribbean', languageTagHelpers_1.allTestKeys]]
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
description: 'invalid region',
|
|
177
|
+
from: 'en-AJ',
|
|
178
|
+
expected: [
|
|
179
|
+
['en-AJ', ['default', 'wellFormed', 'wellFormedCanonical']],
|
|
180
|
+
[/invalid region/i, languageTagHelpers_1.allValidatingKeys]
|
|
181
|
+
],
|
|
182
|
+
expectedDescription: [['English as spoken in AJ', ['wellFormed']]]
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
description: 'strictly valid non-canonical variant',
|
|
186
|
+
from: 'ca-Valencia',
|
|
187
|
+
expected: [
|
|
188
|
+
['ca-Valencia', languageTagHelpers_1.allNonCanonicalTestKeys],
|
|
189
|
+
['ca-valencia', languageTagHelpers_1.allCanonicalTestKeys]
|
|
190
|
+
],
|
|
191
|
+
expectedDescription: [['Catalan (Valencian)', ['wellFormed']]]
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
description: 'not strictly-valid non-canonical variant',
|
|
195
|
+
from: 'fr-Valencia',
|
|
196
|
+
expected: [
|
|
197
|
+
['fr-Valencia', ['default', 'wellFormed', 'valid']],
|
|
198
|
+
['fr-valencia', ['wellFormedCanonical', 'validCanonical', 'preferred']],
|
|
199
|
+
[/invalid prefix/i, ['strictlyValid', 'strictlyValidCanonical', 'strictlyValidPreferred']]
|
|
200
|
+
],
|
|
201
|
+
expectedDescription: [['French (Valencian)', ['wellFormed']]]
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
description: 'valid but deprecated region',
|
|
205
|
+
from: 'en-BU',
|
|
206
|
+
expected: [
|
|
207
|
+
['en-BU', [...languageTagHelpers_1.allNonCanonicalTestKeys, ...languageTagHelpers_1.allNonPreferredCanonicalKeys]],
|
|
208
|
+
['en-MM', languageTagHelpers_1.allPreferredKeys]
|
|
209
|
+
],
|
|
210
|
+
expectedDescription: [
|
|
211
|
+
['English as spoken in Burma', ['wellFormed']],
|
|
212
|
+
['English as spoken in Myanmar', ['preferred']]
|
|
213
|
+
]
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
description: 'any prefix for variant with no registered prefix',
|
|
217
|
+
from: 'en-alalc97',
|
|
218
|
+
expected: [['en-alalc97', languageTagHelpers_1.allTestKeys]],
|
|
219
|
+
expectedDescription: [['English (ALA-LC Romanization, 1997 edition)', ['wellFormed']]]
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
description: 'strictly valid with two variants',
|
|
223
|
+
from: 'SL-Rozaj-Lipaw',
|
|
224
|
+
expected: [
|
|
225
|
+
['SL-Rozaj-Lipaw', languageTagHelpers_1.allNonCanonicalTestKeys],
|
|
226
|
+
['sl-rozaj-lipaw', languageTagHelpers_1.allCanonicalTestKeys]
|
|
227
|
+
],
|
|
228
|
+
expectedDescription: [['Slovenian (Resian) (The Lipovaz dialect of Resian)', ['wellFormed']]]
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
description: 'strictly valid with multiple variants',
|
|
232
|
+
from: 'SL-Rozaj-biske-1994',
|
|
233
|
+
expected: [
|
|
234
|
+
['SL-Rozaj-biske-1994', languageTagHelpers_1.allNonCanonicalTestKeys],
|
|
235
|
+
['sl-rozaj-biske-1994', languageTagHelpers_1.allCanonicalTestKeys]
|
|
236
|
+
],
|
|
237
|
+
expectedDescription: [
|
|
238
|
+
[
|
|
239
|
+
'Slovenian (Resian) (The San Giorgio dialect of Resian) (Standardized Resian orthography)',
|
|
240
|
+
['wellFormed']
|
|
241
|
+
]
|
|
242
|
+
]
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
description: 'not strictly valid with multiple variants',
|
|
246
|
+
from: 'SL-Rozaj-1996',
|
|
247
|
+
expected: [
|
|
248
|
+
['SL-Rozaj-1996', ['default', 'wellFormed', 'valid']],
|
|
249
|
+
['sl-rozaj-1996', ['wellFormedCanonical', 'validCanonical', 'preferred']],
|
|
250
|
+
[/invalid prefix/i, ['strictlyValid', 'strictlyValidCanonical', 'strictlyValidPreferred']]
|
|
251
|
+
],
|
|
252
|
+
expectedDescription: [['Slovenian (Resian) (German orthography of 1996)', ['wellFormed']]]
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
description: 'invalid variant',
|
|
256
|
+
from: 'ca-ES-xyzzy',
|
|
257
|
+
expected: [
|
|
258
|
+
['ca-ES-xyzzy', ['default', 'wellFormed', 'wellFormedCanonical']],
|
|
259
|
+
[/invalid variant/i, languageTagHelpers_1.allValidatingKeys]
|
|
260
|
+
],
|
|
261
|
+
expectedDescription: [['Catalan as spoken in Spain (xyzzy)', ['wellFormed']]]
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
description: 'invalid duplicate variant',
|
|
265
|
+
from: 'ca-valencia-valencia',
|
|
266
|
+
expected: [
|
|
267
|
+
['ca-valencia-valencia', ['default', 'wellFormed', 'wellFormedCanonical']],
|
|
268
|
+
[/duplicate variant/i, languageTagHelpers_1.allValidatingKeys]
|
|
269
|
+
],
|
|
270
|
+
expectedDescription: [['Catalan (Valencian) (Valencian)', ['wellFormed']]]
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
description: 'valid extensions',
|
|
274
|
+
from: 'en-us-u-en-US-t-MT',
|
|
275
|
+
expected: [
|
|
276
|
+
['en-us-u-en-US-t-MT', languageTagHelpers_1.allNonCanonicalTestKeys],
|
|
277
|
+
['en-US-u-en-US-t-mt', languageTagHelpers_1.allCanonicalTestKeys]
|
|
278
|
+
],
|
|
279
|
+
expectedDescription: [
|
|
280
|
+
[
|
|
281
|
+
'English as spoken in United States (Unicode Locale "en-US") (Specifying Transformed Content "MT")',
|
|
282
|
+
['wellFormed']
|
|
283
|
+
]
|
|
284
|
+
]
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
description: 'invalid extension',
|
|
288
|
+
from: 'es-us-a-extend',
|
|
289
|
+
expected: [
|
|
290
|
+
['es-us-a-extend', ['default', 'wellFormed']],
|
|
291
|
+
['es-US-a-extend', ['wellFormedCanonical']],
|
|
292
|
+
[/invalid.*extension/i, languageTagHelpers_1.allValidatingKeys]
|
|
293
|
+
],
|
|
294
|
+
expectedDescription: [['Spanish as spoken in United States (-a "extend")', ['wellFormed']]]
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
description: 'duplicate extension',
|
|
298
|
+
from: 'es-us-u-US-u-GB',
|
|
299
|
+
expected: [
|
|
300
|
+
['es-us-u-US-u-GB', ['default', 'wellFormed']],
|
|
301
|
+
['es-US-u-us-u-gb', ['wellFormedCanonical']],
|
|
302
|
+
[/duplicate.*extension/i, languageTagHelpers_1.allValidatingKeys]
|
|
303
|
+
]
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
description: 'valid private-use subtag',
|
|
307
|
+
from: 'en-x-Pig-Latin',
|
|
308
|
+
expected: [
|
|
309
|
+
['en-x-Pig-Latin', languageTagHelpers_1.allNonCanonicalTestKeys],
|
|
310
|
+
['en-x-pig-latin', languageTagHelpers_1.allCanonicalTestKeys]
|
|
311
|
+
],
|
|
312
|
+
expectedDescription: [
|
|
313
|
+
['English (-x "Pig-Latin")', ['wellFormed']],
|
|
314
|
+
['English (-x "pig-latin")', ['preferred']]
|
|
315
|
+
]
|
|
316
|
+
},
|
|
317
|
+
{
|
|
318
|
+
description: 'valid extension and private use subtag',
|
|
319
|
+
from: 'en-US-u-us-x-test',
|
|
320
|
+
expected: [['en-US-u-us-x-test', languageTagHelpers_1.allTestKeys]],
|
|
321
|
+
expectedDescription: [
|
|
322
|
+
['English as spoken in United States (Unicode Locale "us") (-x "test")', ['wellFormed']]
|
|
323
|
+
]
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
description: 'valid grandfathered tag with no preferredValue',
|
|
327
|
+
from: 'i-Mingo',
|
|
328
|
+
expected: [
|
|
329
|
+
['i-Mingo', languageTagHelpers_1.allNonCanonicalTestKeys],
|
|
330
|
+
['i-mingo', languageTagHelpers_1.allCanonicalTestKeys]
|
|
331
|
+
],
|
|
332
|
+
expectedDescription: [
|
|
333
|
+
['i-Mingo (grandfathered)', ['wellFormed']],
|
|
334
|
+
['i-mingo (grandfathered)', ['preferred']]
|
|
335
|
+
]
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
description: 'valid grandfathered tag with preferredValue',
|
|
339
|
+
from: 'art-lojban',
|
|
340
|
+
expected: [
|
|
341
|
+
['art-lojban', [...languageTagHelpers_1.allNonCanonicalTestKeys, ...languageTagHelpers_1.allNonPreferredCanonicalKeys]],
|
|
342
|
+
['jbo', languageTagHelpers_1.allPreferredKeys]
|
|
343
|
+
],
|
|
344
|
+
expectedDescription: [
|
|
345
|
+
['art-lojban (grandfathered)', ['wellFormed']],
|
|
346
|
+
['Lojban', ['preferred']]
|
|
347
|
+
]
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
description: 'valid grandfathered tag with complex preferred value',
|
|
351
|
+
from: 'en-gb-oed',
|
|
352
|
+
expected: [
|
|
353
|
+
['en-gb-oed', languageTagHelpers_1.allNonCanonicalTestKeys],
|
|
354
|
+
['en-GB-oed', languageTagHelpers_1.allNonPreferredCanonicalKeys],
|
|
355
|
+
['en-GB-oxendict', languageTagHelpers_1.allPreferredKeys]
|
|
356
|
+
],
|
|
357
|
+
expectedDescription: [
|
|
358
|
+
['en-gb-oed (grandfathered)', ['wellFormed']],
|
|
359
|
+
['English as spoken in United Kingdom (Oxford English Dictionary spelling)', ['preferred']]
|
|
360
|
+
]
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
description: 'valid redundant tag with no preferredValue',
|
|
364
|
+
from: 'mn-Mong',
|
|
365
|
+
expected: [['mn-Mong', languageTagHelpers_1.allTestKeys]],
|
|
366
|
+
expectedDescription: [['Mongolian in Mongolian script', languageTagHelpers_1.allTestKeys]]
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
description: 'valid redundant tag with preferred value',
|
|
370
|
+
from: 'sgn-BR',
|
|
371
|
+
expected: [
|
|
372
|
+
['sgn-BR', [...languageTagHelpers_1.allNonCanonicalTestKeys, ...languageTagHelpers_1.allNonPreferredCanonicalKeys]],
|
|
373
|
+
['bzs', languageTagHelpers_1.allPreferredKeys]
|
|
374
|
+
],
|
|
375
|
+
expectedDescription: [
|
|
376
|
+
['Sign languages as spoken in Brazil', ['wellFormed']],
|
|
377
|
+
['Brazilian Sign Language', ['preferred']]
|
|
378
|
+
]
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
description: 'invalid private tag',
|
|
382
|
+
from: 'x-thing-x-other-thing-x-last-thing',
|
|
383
|
+
expected: [[/malformed private-use/i, languageTagHelpers_1.allTestKeys]]
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
description: 'completely private tag with multiple tags',
|
|
387
|
+
from: 'x-some-bunch-of-things',
|
|
388
|
+
expected: [
|
|
389
|
+
['x-some-bunch-of-things', languageTagHelpers_1.allNonCanonicalTestKeys],
|
|
390
|
+
['x-some-bunch-OF-things', languageTagHelpers_1.allCanonicalTestKeys]
|
|
391
|
+
],
|
|
392
|
+
expectedDescription: [
|
|
393
|
+
['(-x "some-bunch-of-things")', ['wellFormed']],
|
|
394
|
+
['(-x "some-bunch-OF-things")', ['preferred']]
|
|
395
|
+
]
|
|
396
|
+
}
|
|
397
|
+
];
|
|
398
|
+
const subtagsTestCaseInit = [
|
|
399
|
+
{
|
|
400
|
+
description: 'valid non-canonical tag with suppressed script',
|
|
401
|
+
from: {
|
|
402
|
+
primaryLanguage: 'en',
|
|
403
|
+
script: 'latn',
|
|
404
|
+
region: 'us',
|
|
405
|
+
privateUse: ['Non', 'Canon']
|
|
406
|
+
},
|
|
407
|
+
expected: [
|
|
408
|
+
['en-latn-us-x-Non-Canon', ['default', 'wellFormed', 'valid', 'strictlyValid']],
|
|
409
|
+
['en-Latn-US-x-non-canon', ['wellFormedCanonical', 'validCanonical', 'strictlyValidCanonical']],
|
|
410
|
+
['en-US-x-non-canon', ['preferred', 'strictlyValidPreferred']]
|
|
411
|
+
]
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
description: 'missing primary language',
|
|
415
|
+
from: {
|
|
416
|
+
extlangs: ['cmn', 'yue']
|
|
417
|
+
},
|
|
418
|
+
expected: [[/missing primary language/i, languageTagHelpers_1.allTestKeys]]
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
// the grammar allows for up to three extlang tags but the specification reserves
|
|
422
|
+
// and forbids them, so two tags only fails for validating forms.
|
|
423
|
+
description: 'multiple extlang tags',
|
|
424
|
+
from: {
|
|
425
|
+
primaryLanguage: 'zh',
|
|
426
|
+
extlangs: ['cmn', 'yue']
|
|
427
|
+
},
|
|
428
|
+
expected: [
|
|
429
|
+
['zh-cmn-yue', ['default', 'wellFormed', 'wellFormedCanonical']],
|
|
430
|
+
[/multiple extlang/, languageTagHelpers_1.allValidatingKeys]
|
|
431
|
+
]
|
|
432
|
+
},
|
|
433
|
+
{
|
|
434
|
+
// the grammar forbids > 3 extlang tags so this fails for all forms
|
|
435
|
+
description: 'too many extlang tags',
|
|
436
|
+
from: {
|
|
437
|
+
primaryLanguage: 'zh',
|
|
438
|
+
extlangs: ['cmn', 'yue', 'cdo', 'cjy']
|
|
439
|
+
},
|
|
440
|
+
expected: [[/too many extlang/, languageTagHelpers_1.allTestKeys]]
|
|
441
|
+
},
|
|
442
|
+
{
|
|
443
|
+
description: 'invalid script tag',
|
|
444
|
+
from: {
|
|
445
|
+
primaryLanguage: 'en',
|
|
446
|
+
script: 'Xyzy'
|
|
447
|
+
},
|
|
448
|
+
expected: [
|
|
449
|
+
['en-Xyzy', ['default', 'preferred', 'wellFormed', 'wellFormedCanonical']],
|
|
450
|
+
[/invalid script/i, languageTagHelpers_1.allValidatingKeys]
|
|
451
|
+
]
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
description: 'duplicate variant tags',
|
|
455
|
+
from: {
|
|
456
|
+
primaryLanguage: 'ca',
|
|
457
|
+
variants: ['valencia', 'Valencia']
|
|
458
|
+
},
|
|
459
|
+
expected: [
|
|
460
|
+
['ca-valencia-Valencia', ['default', 'wellFormed']],
|
|
461
|
+
['ca-valencia-valencia', ['wellFormedCanonical']],
|
|
462
|
+
[/duplicate variant/, languageTagHelpers_1.allValidatingKeys]
|
|
463
|
+
]
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
description: 'invalid grandfathered tag',
|
|
467
|
+
from: { grandfathered: 'i-dothraki' },
|
|
468
|
+
expected: [
|
|
469
|
+
['i-dothraki', ['default', 'wellFormed', 'wellFormedCanonical']],
|
|
470
|
+
[/invalid grandfathered/i, [...languageTagHelpers_1.allValidatingKeys]]
|
|
471
|
+
]
|
|
472
|
+
}
|
|
473
|
+
];
|
|
474
|
+
// eslint-disable-next-line @rushstack/typedef-var
|
|
475
|
+
exports.tagTestCases = testCaseInit.map(languageTagHelpers_1.GenericLanguageTagTest.mapInitToTestCases);
|
|
476
|
+
// eslint-disable-next-line @rushstack/typedef-var
|
|
477
|
+
exports.subtagsTestCases = subtagsTestCaseInit.map(languageTagHelpers_1.GenericLanguageTagTest.mapInitToTestCases);
|
|
478
|
+
//# sourceMappingURL=commonTestCases.js.map
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import '@fgv/ts-utils-jest';
|
|
2
|
+
import * as Bcp47 from '../../../packlets/bcp47';
|
|
3
|
+
interface IGenericLanguageTagTestExpected<TEXPECTED = string | RegExp> {
|
|
4
|
+
default?: TEXPECTED;
|
|
5
|
+
wellFormed?: TEXPECTED;
|
|
6
|
+
wellFormedCanonical?: TEXPECTED;
|
|
7
|
+
valid?: TEXPECTED;
|
|
8
|
+
validCanonical?: TEXPECTED;
|
|
9
|
+
preferred?: TEXPECTED;
|
|
10
|
+
strictlyValid?: TEXPECTED;
|
|
11
|
+
strictlyValidCanonical?: TEXPECTED;
|
|
12
|
+
strictlyValidPreferred?: TEXPECTED;
|
|
13
|
+
}
|
|
14
|
+
export type TestKey = keyof IGenericLanguageTagTestExpected;
|
|
15
|
+
export declare const allTestKeys: TestKey[];
|
|
16
|
+
export declare const allNonCanonicalTestKeys: TestKey[];
|
|
17
|
+
export declare const allCanonicalTestKeys: TestKey[];
|
|
18
|
+
export declare const allNonPreferredCanonicalKeys: TestKey[];
|
|
19
|
+
export declare const allPreferredKeys: TestKey[];
|
|
20
|
+
export declare const allValidatingKeys: TestKey[];
|
|
21
|
+
export interface IGenericLanguageTagTestInit<TFROM, TEXPECTED = string | RegExp> {
|
|
22
|
+
description: string;
|
|
23
|
+
from: TFROM;
|
|
24
|
+
expected: [TEXPECTED | undefined, TestKey[]][];
|
|
25
|
+
expectedDescription?: [string | undefined, TestKey[]][];
|
|
26
|
+
}
|
|
27
|
+
export declare class GenericLanguageTagTest<TFROM, TEXPECTED = string | RegExp> {
|
|
28
|
+
readonly description: string;
|
|
29
|
+
readonly from: TFROM;
|
|
30
|
+
readonly expected: IGenericLanguageTagTestExpected<TEXPECTED>;
|
|
31
|
+
readonly expectedDescription?: IGenericLanguageTagTestExpected<string>;
|
|
32
|
+
constructor(init: IGenericLanguageTagTestInit<TFROM, TEXPECTED>);
|
|
33
|
+
static mapInitToTestCases<TFROM, TEXPECTED = string | RegExp>(init: IGenericLanguageTagTestInit<TFROM, TEXPECTED>): GenericLanguageTagTest<TFROM, TEXPECTED>;
|
|
34
|
+
}
|
|
35
|
+
export interface ITagTestCase<TFROM, TEXPECTED = string | RegExp> {
|
|
36
|
+
description: string;
|
|
37
|
+
from: TFROM;
|
|
38
|
+
expected?: TEXPECTED;
|
|
39
|
+
expectedDescription?: string;
|
|
40
|
+
invoke(): void;
|
|
41
|
+
}
|
|
42
|
+
export type TagTestCaseEntry<TFROM, TTESTCASE extends ITagTestCase<TFROM>> = [string, TTESTCASE];
|
|
43
|
+
export declare abstract class TagTestCaseFactoryBase<TFROM, TTESTCASE extends ITagTestCase<TFROM>> {
|
|
44
|
+
emitOne(gtc: GenericLanguageTagTest<TFROM>, which: TestKey): TagTestCaseEntry<TFROM, TTESTCASE> | undefined;
|
|
45
|
+
emit(which: TestKey | TestKey[], all: GenericLanguageTagTest<TFROM>[]): TagTestCaseEntry<TFROM, TTESTCASE>[];
|
|
46
|
+
protected abstract _construct(gtc: GenericLanguageTagTest<TFROM>, which: TestKey): TTESTCASE;
|
|
47
|
+
}
|
|
48
|
+
export declare class GenericTagTestCaseFactory<TFROM, TTESTCASE extends ITagTestCase<TFROM>> extends TagTestCaseFactoryBase<TFROM, TTESTCASE> {
|
|
49
|
+
protected _construct: (gtc: GenericLanguageTagTest<TFROM>, which: TestKey) => TTESTCASE;
|
|
50
|
+
constructor(construct: (gtc: GenericLanguageTagTest<TFROM>, which: TestKey) => TTESTCASE);
|
|
51
|
+
}
|
|
52
|
+
export declare abstract class SimpleTagTestCaseBase<TFROM> implements ITagTestCase<TFROM> {
|
|
53
|
+
readonly description: string;
|
|
54
|
+
readonly from: TFROM;
|
|
55
|
+
readonly options: Bcp47.ILanguageTagInitOptions | undefined;
|
|
56
|
+
readonly expected?: string | RegExp;
|
|
57
|
+
readonly expectedDescription?: string;
|
|
58
|
+
constructor(gtc: GenericLanguageTagTest<TFROM>, which: TestKey);
|
|
59
|
+
get isSuccessTest(): boolean;
|
|
60
|
+
get isFailureTest(): boolean;
|
|
61
|
+
get isIgnoredTest(): boolean;
|
|
62
|
+
protected _getExpectedValue(__which: TestKey, __gtc: GenericLanguageTagTest<TFROM>, expected: string | RegExp | undefined): string | RegExp | undefined;
|
|
63
|
+
protected _getTestTarget(which: TestKey, __gtc: GenericLanguageTagTest<TFROM>): string;
|
|
64
|
+
protected _getSuccessTestDescription(testTarget: string, from: TFROM, description: string): string;
|
|
65
|
+
protected _getFailureTestDescription(testTarget: string, from: TFROM, description: string): string;
|
|
66
|
+
protected _getIgnoredTestDescription(testTarget: string, from: TFROM, description: string): string;
|
|
67
|
+
abstract invoke(): void;
|
|
68
|
+
}
|
|
69
|
+
export {};
|
|
70
|
+
//# sourceMappingURL=languageTagHelpers.d.ts.map
|