@fgv/ts-bcp47 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +141 -0
- package/bcp47/bcp47Subtags/converters.d.ts +9 -0
- package/bcp47/bcp47Subtags/converters.d.ts.map +1 -0
- package/bcp47/bcp47Subtags/converters.js +57 -0
- package/bcp47/bcp47Subtags/index.d.ts +5 -0
- package/bcp47/bcp47Subtags/index.d.ts.map +1 -0
- package/bcp47/bcp47Subtags/index.js +54 -0
- package/bcp47/bcp47Subtags/model.d.ts +18 -0
- package/bcp47/bcp47Subtags/model.d.ts.map +1 -0
- package/bcp47/bcp47Subtags/model.js +24 -0
- package/bcp47/bcp47Subtags/validate.d.ts +16 -0
- package/bcp47/bcp47Subtags/validate.d.ts.map +1 -0
- package/bcp47/bcp47Subtags/validate.js +74 -0
- package/bcp47/common.d.ts +38 -0
- package/bcp47/common.d.ts.map +1 -0
- package/bcp47/common.js +59 -0
- package/bcp47/helpers.d.ts +66 -0
- package/bcp47/helpers.d.ts.map +1 -0
- package/bcp47/helpers.js +103 -0
- package/bcp47/index.d.ts +7 -0
- package/bcp47/index.d.ts.map +1 -0
- package/bcp47/index.js +27 -0
- package/bcp47/languageTag.d.ts +208 -0
- package/bcp47/languageTag.d.ts.map +1 -0
- package/bcp47/languageTag.js +342 -0
- package/bcp47/languageTagParser.d.ts +123 -0
- package/bcp47/languageTagParser.d.ts.map +1 -0
- package/bcp47/languageTagParser.js +310 -0
- package/bcp47/match/chooser.d.ts +70 -0
- package/bcp47/match/chooser.d.ts.map +1 -0
- package/bcp47/match/chooser.js +92 -0
- package/bcp47/match/common.d.ts +24 -0
- package/bcp47/match/common.d.ts.map +1 -0
- package/bcp47/match/common.js +42 -0
- package/bcp47/match/index.d.ts +4 -0
- package/bcp47/match/index.d.ts.map +1 -0
- package/bcp47/match/index.js +45 -0
- package/bcp47/match/similarity.d.ts +24 -0
- package/bcp47/match/similarity.d.ts.map +1 -0
- package/bcp47/match/similarity.js +230 -0
- package/bcp47/normalization/baseNormalizer.d.ts +36 -0
- package/bcp47/normalization/baseNormalizer.d.ts.map +1 -0
- package/bcp47/normalization/baseNormalizer.js +114 -0
- package/bcp47/normalization/canonicalNormalizer.d.ts +22 -0
- package/bcp47/normalization/canonicalNormalizer.d.ts.map +1 -0
- package/bcp47/normalization/canonicalNormalizer.js +110 -0
- package/bcp47/normalization/common.d.ts +23 -0
- package/bcp47/normalization/common.d.ts.map +1 -0
- package/bcp47/normalization/common.js +82 -0
- package/bcp47/normalization/index.d.ts +5 -0
- package/bcp47/normalization/index.d.ts.map +1 -0
- package/bcp47/normalization/index.js +47 -0
- package/bcp47/normalization/normalizeTag.d.ts +59 -0
- package/bcp47/normalization/normalizeTag.d.ts.map +1 -0
- package/bcp47/normalization/normalizeTag.js +105 -0
- package/bcp47/normalization/preferredTagNormalizer.d.ts +26 -0
- package/bcp47/normalization/preferredTagNormalizer.d.ts.map +1 -0
- package/bcp47/normalization/preferredTagNormalizer.js +178 -0
- package/bcp47/overrides/converters.d.ts +19 -0
- package/bcp47/overrides/converters.d.ts.map +1 -0
- package/bcp47/overrides/converters.js +75 -0
- package/bcp47/overrides/defaultRegistries.d.ts +12 -0
- package/bcp47/overrides/defaultRegistries.d.ts.map +1 -0
- package/bcp47/overrides/defaultRegistries.js +42 -0
- package/bcp47/overrides/index.d.ts +3 -0
- package/bcp47/overrides/index.d.ts.map +1 -0
- package/bcp47/overrides/index.js +30 -0
- package/bcp47/overrides/model.d.ts +11 -0
- package/bcp47/overrides/model.d.ts.map +1 -0
- package/bcp47/overrides/model.js +24 -0
- package/bcp47/overrides/overridesRegistry.d.ts +32 -0
- package/bcp47/overrides/overridesRegistry.d.ts.map +1 -0
- package/bcp47/overrides/overridesRegistry.js +101 -0
- package/bcp47/validation/baseValidator.d.ts +35 -0
- package/bcp47/validation/baseValidator.d.ts.map +1 -0
- package/bcp47/validation/baseValidator.js +111 -0
- package/bcp47/validation/common.d.ts +23 -0
- package/bcp47/validation/common.d.ts.map +1 -0
- package/bcp47/validation/common.js +84 -0
- package/bcp47/validation/index.d.ts +7 -0
- package/bcp47/validation/index.d.ts.map +1 -0
- package/bcp47/validation/index.js +51 -0
- package/bcp47/validation/isCanonical.d.ts +22 -0
- package/bcp47/validation/isCanonical.d.ts.map +1 -0
- package/bcp47/validation/isCanonical.js +101 -0
- package/bcp47/validation/isInPreferredForm.d.ts +15 -0
- package/bcp47/validation/isInPreferredForm.d.ts.map +1 -0
- package/bcp47/validation/isInPreferredForm.js +73 -0
- package/bcp47/validation/isStrictlyValid.d.ts +18 -0
- package/bcp47/validation/isStrictlyValid.d.ts.map +1 -0
- package/bcp47/validation/isStrictlyValid.js +98 -0
- package/bcp47/validation/isValid.d.ts +24 -0
- package/bcp47/validation/isValid.d.ts.map +1 -0
- package/bcp47/validation/isValid.js +115 -0
- package/bcp47/validation/isWellFormed.d.ts +22 -0
- package/bcp47/validation/isWellFormed.d.ts.map +1 -0
- package/bcp47/validation/isWellFormed.js +98 -0
- package/bcp47/validation/validateTag.d.ts +97 -0
- package/bcp47/validation/validateTag.d.ts.map +1 -0
- package/bcp47/validation/validateTag.js +159 -0
- package/data/bcp/overrides.json +21 -0
- package/data/iana/language-subtags.json +77295 -0
- package/data/iana/language-tag-extensions.json +42 -0
- package/data/unsd/m49.csv +250 -0
- package/iana/common/converters.d.ts +31 -0
- package/iana/common/converters.d.ts.map +1 -0
- package/iana/common/converters.js +84 -0
- package/iana/common/model.d.ts +30 -0
- package/iana/common/model.d.ts.map +1 -0
- package/iana/common/model.js +24 -0
- package/iana/common/registeredItems.d.ts +30 -0
- package/iana/common/registeredItems.d.ts.map +1 -0
- package/iana/common/registeredItems.js +124 -0
- package/iana/common/utils.d.ts +7 -0
- package/iana/common/utils.d.ts.map +1 -0
- package/iana/common/utils.js +34 -0
- package/iana/common/validate.d.ts +19 -0
- package/iana/common/validate.d.ts.map +1 -0
- package/iana/common/validate.js +61 -0
- package/iana/converters.d.ts +4 -0
- package/iana/converters.d.ts.map +1 -0
- package/iana/converters.js +54 -0
- package/iana/defaultRegistries.d.ts +12 -0
- package/iana/defaultRegistries.d.ts.map +1 -0
- package/iana/defaultRegistries.js +42 -0
- package/iana/index.d.ts +9 -0
- package/iana/index.d.ts.map +1 -0
- package/iana/index.js +64 -0
- package/iana/jar/converters.d.ts +4 -0
- package/iana/jar/converters.d.ts.map +1 -0
- package/iana/jar/converters.js +54 -0
- package/iana/jar/index.d.ts +4 -0
- package/iana/jar/index.d.ts.map +1 -0
- package/iana/jar/index.js +52 -0
- package/iana/jar/jarConverters.d.ts +17 -0
- package/iana/jar/jarConverters.d.ts.map +1 -0
- package/iana/jar/jarConverters.js +85 -0
- package/iana/jar/jarModel.d.ts +11 -0
- package/iana/jar/jarModel.d.ts.map +1 -0
- package/iana/jar/jarModel.js +24 -0
- package/iana/jar/language-subtags/converters.d.ts +4 -0
- package/iana/jar/language-subtags/converters.d.ts.map +1 -0
- package/iana/jar/language-subtags/converters.js +52 -0
- package/iana/jar/language-subtags/index.d.ts +4 -0
- package/iana/jar/language-subtags/index.d.ts.map +1 -0
- package/iana/jar/language-subtags/index.js +54 -0
- package/iana/jar/language-subtags/model.d.ts +4 -0
- package/iana/jar/language-subtags/model.d.ts.map +1 -0
- package/iana/jar/language-subtags/model.js +52 -0
- package/iana/jar/language-subtags/registry/converters.d.ts +10 -0
- package/iana/jar/language-subtags/registry/converters.d.ts.map +1 -0
- package/iana/jar/language-subtags/registry/converters.js +58 -0
- package/iana/jar/language-subtags/registry/index.d.ts +4 -0
- package/iana/jar/language-subtags/registry/index.d.ts.map +1 -0
- package/iana/jar/language-subtags/registry/index.js +55 -0
- package/iana/jar/language-subtags/registry/model.d.ts +88 -0
- package/iana/jar/language-subtags/registry/model.d.ts.map +1 -0
- package/iana/jar/language-subtags/registry/model.js +41 -0
- package/iana/jar/language-subtags/tags/converters.d.ts +55 -0
- package/iana/jar/language-subtags/tags/converters.d.ts.map +1 -0
- package/iana/jar/language-subtags/tags/converters.js +128 -0
- package/iana/jar/language-subtags/tags/index.d.ts +5 -0
- package/iana/jar/language-subtags/tags/index.d.ts.map +1 -0
- package/iana/jar/language-subtags/tags/index.js +56 -0
- package/iana/jar/language-subtags/tags/model.d.ts +42 -0
- package/iana/jar/language-subtags/tags/model.d.ts.map +1 -0
- package/iana/jar/language-subtags/tags/model.js +24 -0
- package/iana/jar/language-subtags/tags/tagValidation.d.ts +11 -0
- package/iana/jar/language-subtags/tags/tagValidation.d.ts.map +1 -0
- package/iana/jar/language-subtags/tags/tagValidation.js +70 -0
- package/iana/jar/language-subtags/tags/validate.d.ts +36 -0
- package/iana/jar/language-subtags/tags/validate.d.ts.map +1 -0
- package/iana/jar/language-subtags/tags/validate.js +87 -0
- package/iana/jar/model.d.ts +4 -0
- package/iana/jar/model.d.ts.map +1 -0
- package/iana/jar/model.js +54 -0
- package/iana/language-subtags/common.d.ts +5 -0
- package/iana/language-subtags/common.d.ts.map +1 -0
- package/iana/language-subtags/common.js +24 -0
- package/iana/language-subtags/converters.d.ts +52 -0
- package/iana/language-subtags/converters.d.ts.map +1 -0
- package/iana/language-subtags/converters.js +200 -0
- package/iana/language-subtags/index.d.ts +7 -0
- package/iana/language-subtags/index.d.ts.map +1 -0
- package/iana/language-subtags/index.js +60 -0
- package/iana/language-subtags/jarConverters.d.ts +55 -0
- package/iana/language-subtags/jarConverters.d.ts.map +1 -0
- package/iana/language-subtags/jarConverters.js +213 -0
- package/iana/language-subtags/model.d.ts +144 -0
- package/iana/language-subtags/model.d.ts.map +1 -0
- package/iana/language-subtags/model.js +24 -0
- package/iana/language-subtags/scope.d.ts +77 -0
- package/iana/language-subtags/scope.d.ts.map +1 -0
- package/iana/language-subtags/scope.js +179 -0
- package/iana/language-subtags/subtagRegistry.d.ts +36 -0
- package/iana/language-subtags/subtagRegistry.d.ts.map +1 -0
- package/iana/language-subtags/subtagRegistry.js +139 -0
- package/iana/language-subtags/validate.d.ts +2 -0
- package/iana/language-subtags/validate.d.ts.map +1 -0
- package/iana/language-subtags/validate.js +39 -0
- package/iana/language-tag-extensions/converters.d.ts +23 -0
- package/iana/language-tag-extensions/converters.d.ts.map +1 -0
- package/iana/language-tag-extensions/converters.js +87 -0
- package/iana/language-tag-extensions/extensionsRegistry.d.ts +26 -0
- package/iana/language-tag-extensions/extensionsRegistry.d.ts.map +1 -0
- package/iana/language-tag-extensions/extensionsRegistry.js +94 -0
- package/iana/language-tag-extensions/extensionsScope.d.ts +20 -0
- package/iana/language-tag-extensions/extensionsScope.d.ts.map +1 -0
- package/iana/language-tag-extensions/extensionsScope.js +77 -0
- package/iana/language-tag-extensions/index.d.ts +6 -0
- package/iana/language-tag-extensions/index.d.ts.map +1 -0
- package/iana/language-tag-extensions/index.js +56 -0
- package/iana/language-tag-extensions/jarConverters.d.ts +28 -0
- package/iana/language-tag-extensions/jarConverters.d.ts.map +1 -0
- package/iana/language-tag-extensions/jarConverters.js +102 -0
- package/iana/language-tag-extensions/model.d.ts +40 -0
- package/iana/language-tag-extensions/model.d.ts.map +1 -0
- package/iana/language-tag-extensions/model.js +24 -0
- package/iana/language-tag-extensions/validate.d.ts +7 -0
- package/iana/language-tag-extensions/validate.d.ts.map +1 -0
- package/iana/language-tag-extensions/validate.js +36 -0
- package/iana/languageRegistries.d.ts +13 -0
- package/iana/languageRegistries.d.ts.map +1 -0
- package/iana/languageRegistries.js +49 -0
- package/iana/model.d.ts +4 -0
- package/iana/model.d.ts.map +1 -0
- package/iana/model.js +54 -0
- package/iana/validate.d.ts +2 -0
- package/iana/validate.d.ts.map +1 -0
- package/iana/validate.js +39 -0
- package/index.d.ts +5 -0
- package/index.d.ts.map +1 -0
- package/index.js +54 -0
- package/package.json +64 -0
- package/unsd/areas.d.ts +29 -0
- package/unsd/areas.d.ts.map +1 -0
- package/unsd/areas.js +96 -0
- package/unsd/common.d.ts +49 -0
- package/unsd/common.d.ts.map +1 -0
- package/unsd/common.js +24 -0
- package/unsd/csv/converters.d.ts +21 -0
- package/unsd/csv/converters.d.ts.map +1 -0
- package/unsd/csv/converters.js +70 -0
- package/unsd/csv/index.d.ts +4 -0
- package/unsd/csv/index.d.ts.map +1 -0
- package/unsd/csv/index.js +52 -0
- package/unsd/csv/model.d.ts +22 -0
- package/unsd/csv/model.d.ts.map +1 -0
- package/unsd/csv/model.js +24 -0
- package/unsd/defaultRegistries.d.ts +12 -0
- package/unsd/defaultRegistries.d.ts.map +1 -0
- package/unsd/defaultRegistries.js +42 -0
- package/unsd/index.d.ts +4 -0
- package/unsd/index.d.ts.map +1 -0
- package/unsd/index.js +44 -0
- package/unsd/regionCodes.d.ts +38 -0
- package/unsd/regionCodes.d.ts.map +1 -0
- package/unsd/regionCodes.js +111 -0
- package/unsd/regions.d.ts +21 -0
- package/unsd/regions.d.ts.map +1 -0
- package/unsd/regions.js +77 -0
- package/utils/index.d.ts +3 -0
- package/utils/index.d.ts.map +1 -0
- package/utils/index.js +40 -0
- package/utils/jsonHelpers.d.ts +2 -0
- package/utils/jsonHelpers.d.ts.map +1 -0
- package/utils/jsonHelpers.js +29 -0
- package/utils/validationHelpers.d.ts +47 -0
- package/utils/validationHelpers.d.ts.map +1 -0
- package/utils/validationHelpers.js +88 -0
|
@@ -0,0 +1,179 @@
|
|
|
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.RedundantTagScope = exports.GrandfatheredTagScope = exports.VariantSubtagScope = exports.RegionSubtagScope = exports.ScriptSubtagScope = exports.ExtLangSubtagScope = exports.LanguageSubtagScope = void 0;
|
|
25
|
+
const tags_1 = require("../jar/language-subtags/tags");
|
|
26
|
+
const ts_utils_1 = require("@fgv/ts-utils");
|
|
27
|
+
const utils_1 = require("../../utils");
|
|
28
|
+
const registeredItems_1 = require("../common/registeredItems");
|
|
29
|
+
/**
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
class SubtagScope extends registeredItems_1.RegisteredItemScope {
|
|
33
|
+
constructor(type, validate) {
|
|
34
|
+
super(type, validate);
|
|
35
|
+
}
|
|
36
|
+
add(entry) {
|
|
37
|
+
return this._validateEntry(entry).onSuccess(() => {
|
|
38
|
+
this._items.set(entry.subtag, entry);
|
|
39
|
+
return (0, ts_utils_1.succeed)(true);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
_validateEntry(entry) {
|
|
43
|
+
return this._validateKey(entry.subtag);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* @internal
|
|
48
|
+
*/
|
|
49
|
+
class SubtagScopeWithRange extends SubtagScope {
|
|
50
|
+
constructor(type, validate) {
|
|
51
|
+
super(type, validate);
|
|
52
|
+
}
|
|
53
|
+
add(entry) {
|
|
54
|
+
return this._validateEntry(entry).onSuccess(() => {
|
|
55
|
+
return this._addRange(entry);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
_validateEntry(entry) {
|
|
59
|
+
var _a;
|
|
60
|
+
const start = entry.subtag;
|
|
61
|
+
const end = (_a = entry.subtagRangeEnd) !== null && _a !== void 0 ? _a : '';
|
|
62
|
+
if (end) {
|
|
63
|
+
return (0, ts_utils_1.allSucceed)([this._validateKey(start), this._validateKey(end), this._validateRange(start, end)], true);
|
|
64
|
+
}
|
|
65
|
+
return this._validateKey(start);
|
|
66
|
+
}
|
|
67
|
+
_validateRange(start, end) {
|
|
68
|
+
return start < end ? (0, ts_utils_1.succeed)(true) : (0, ts_utils_1.fail)(`${start}..${end}: invalid range`);
|
|
69
|
+
}
|
|
70
|
+
_addRange(entry) {
|
|
71
|
+
this._items.set(entry.subtag, entry);
|
|
72
|
+
if (entry.subtagRangeEnd) {
|
|
73
|
+
let next = this._nextInRange(entry.subtag, entry.subtagRangeEnd);
|
|
74
|
+
while (next) {
|
|
75
|
+
const e = (0, utils_1.sanitizeJson)({ ...entry, subtag: next, subtagRangeEnd: undefined });
|
|
76
|
+
this._items.set(next, e);
|
|
77
|
+
next = this._nextInRange(next, entry.subtagRangeEnd);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return (0, ts_utils_1.succeed)(true);
|
|
81
|
+
}
|
|
82
|
+
_nextInRange(current, end) {
|
|
83
|
+
if (current >= end) {
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
86
|
+
const next = Array.from(current);
|
|
87
|
+
for (let i = next.length - 1; i >= 0; i--) {
|
|
88
|
+
if (next[i].toLowerCase() < 'z') {
|
|
89
|
+
next[i] = String.fromCharCode(next[i].charCodeAt(0) + 1);
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
next[i] = 'a';
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return this._validate.toCanonical(next.join('')).getValueOrThrow();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* @internal
|
|
101
|
+
*/
|
|
102
|
+
class TagScope extends registeredItems_1.RegisteredItemScope {
|
|
103
|
+
constructor(type, validate) {
|
|
104
|
+
super(type, validate);
|
|
105
|
+
}
|
|
106
|
+
add(entry) {
|
|
107
|
+
return this._validateEntry(entry).onSuccess(() => {
|
|
108
|
+
this._items.set(entry.tag, entry);
|
|
109
|
+
return (0, ts_utils_1.succeed)(true);
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
_validateEntry(entry) {
|
|
113
|
+
return this._validateKey(entry.tag);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* @public
|
|
118
|
+
*/
|
|
119
|
+
class LanguageSubtagScope extends SubtagScopeWithRange {
|
|
120
|
+
constructor() {
|
|
121
|
+
super('language', tags_1.Validate.languageSubtag);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
exports.LanguageSubtagScope = LanguageSubtagScope;
|
|
125
|
+
/**
|
|
126
|
+
* @public
|
|
127
|
+
*/
|
|
128
|
+
class ExtLangSubtagScope extends SubtagScope {
|
|
129
|
+
constructor() {
|
|
130
|
+
super('extlang', tags_1.Validate.extlangSubtag);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
exports.ExtLangSubtagScope = ExtLangSubtagScope;
|
|
134
|
+
/**
|
|
135
|
+
* @public
|
|
136
|
+
*/
|
|
137
|
+
class ScriptSubtagScope extends SubtagScopeWithRange {
|
|
138
|
+
constructor() {
|
|
139
|
+
super('script', tags_1.Validate.scriptSubtag);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
exports.ScriptSubtagScope = ScriptSubtagScope;
|
|
143
|
+
/**
|
|
144
|
+
* @public
|
|
145
|
+
*/
|
|
146
|
+
class RegionSubtagScope extends SubtagScopeWithRange {
|
|
147
|
+
constructor() {
|
|
148
|
+
super('region', tags_1.Validate.regionSubtag);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
exports.RegionSubtagScope = RegionSubtagScope;
|
|
152
|
+
/**
|
|
153
|
+
* @public
|
|
154
|
+
*/
|
|
155
|
+
class VariantSubtagScope extends SubtagScope {
|
|
156
|
+
constructor() {
|
|
157
|
+
super('variant', tags_1.Validate.variantSubtag);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
exports.VariantSubtagScope = VariantSubtagScope;
|
|
161
|
+
/**
|
|
162
|
+
* @public
|
|
163
|
+
*/
|
|
164
|
+
class GrandfatheredTagScope extends TagScope {
|
|
165
|
+
constructor() {
|
|
166
|
+
super('grandfathered', tags_1.Validate.grandfatheredTag);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
exports.GrandfatheredTagScope = GrandfatheredTagScope;
|
|
170
|
+
/**
|
|
171
|
+
* @public
|
|
172
|
+
*/
|
|
173
|
+
class RedundantTagScope extends TagScope {
|
|
174
|
+
constructor() {
|
|
175
|
+
super('redundant', tags_1.Validate.redundantTag);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
exports.RedundantTagScope = RedundantTagScope;
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWFuYS9sYW5ndWFnZS1zdWJ0YWdzL3Njb3BlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUtILHVEQVNzQztBQUN0Qyw0Q0FBa0U7QUFDbEUsdUNBQThEO0FBRTlELCtEQUFnRTtBQUVoRTs7R0FFRztBQUNILE1BQU0sV0FJSixTQUFRLHFDQUF1QztJQUM3QyxZQUFzQixJQUFXLEVBQUUsUUFBaUM7UUFDaEUsS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRU0sR0FBRyxDQUFDLEtBQVk7UUFDbkIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNyQyxPQUFPLElBQUEsa0JBQU8sRUFBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFUyxjQUFjLENBQUMsS0FBWTtRQUNqQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FDSjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxvQkFJSixTQUFRLFdBQStCO0lBQ3JDLFlBQXNCLElBQVcsRUFBRSxRQUFpQztRQUNoRSxLQUFLLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTSxHQUFHLENBQUMsS0FBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM3QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENB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QUFTLEVBQUUsZUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDSjtBQUpELGdEQUlDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLHFCQUFzQixTQUFRLFFBQTZFO0lBQ3BIO1FBQ0ksS0FBSyxDQUFDLGVBQWUsRUFBRSxlQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0o7QUFKRCxzREFJQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxpQkFBa0IsU0FBUSxRQUFpRTtJQUNwRztRQUNJLEtBQUssQ0FBQyxXQUFXLEVBQUUsZUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDSjtBQUpELDhDQUlDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMiBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCAqIGFzIEl0ZW1zIGZyb20gJy4vbW9kZWwnO1xuaW1wb3J0ICogYXMgTW9kZWwgZnJvbSAnLi4vamFyL2xhbmd1YWdlLXN1YnRhZ3MvcmVnaXN0cnkvbW9kZWwnO1xuXG5pbXBvcnQge1xuICAgIEV4dExhbmdTdWJ0YWcsXG4gICAgR3JhbmRmYXRoZXJlZFRhZyxcbiAgICBMYW5ndWFnZVN1YnRhZyxcbiAgICBSZWR1bmRhbnRUYWcsXG4gICAgUmVnaW9uU3VidGFnLFxuICAgIFNjcmlwdFN1YnRhZyxcbiAgICBWYWxpZGF0ZSxcbiAgICBWYXJpYW50U3VidGFnLFxufSBmcm9tICcuLi9qYXIvbGFuZ3VhZ2Utc3VidGFncy90YWdzJztcbmltcG9ydCB7IFJlc3VsdCwgYWxsU3VjY2VlZCwgZmFpbCwgc3VjY2VlZCB9IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbkhlbHBlcnMsIHNhbml0aXplSnNvbiB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuaW1wb3J0IHsgUmVnaXN0ZXJlZEl0ZW1TY29wZSB9IGZyb20gJy4uL2NvbW1vbi9yZWdpc3RlcmVkSXRlbXMnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5jbGFzcyBTdWJ0YWdTY29wZTxcbiAgICBUVFlQRSBleHRlbmRzIE1vZGVsLlJlZ2lzdHJ5RW50cnlUeXBlLFxuICAgIFRUQUcgZXh0ZW5kcyBzdHJpbmcsXG4gICAgVElURU0gZXh0ZW5kcyBJdGVtcy5SZWdpc3RlcmVkU3VidGFnPFRUWVBFLCBUVEFHPlxuPiBleHRlbmRzIFJlZ2lzdGVyZWRJdGVtU2NvcGU8VFRZUEUsIFRUQUcsIFRJVEVNPiB7XG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHR5cGU6IFRUWVBFLCB2YWxpZGF0ZTogVmFsaWRhdGlvbkhlbHBlcnM8VFRBRz4pIHtcbiAgICAgICAgc3VwZXIodHlwZSwgdmFsaWRhdGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGQoZW50cnk6IFRJVEVNKTogUmVzdWx0PHRydWU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRlRW50cnkoZW50cnkpLm9uU3VjY2VzcygoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9pdGVtcy5zZXQoZW50cnkuc3VidGFnLCBlbnRyeSk7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZCh0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF92YWxpZGF0ZUVudHJ5KGVudHJ5OiBUSVRFTSk6IFJlc3VsdDx0cnVlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWxpZGF0ZUtleShlbnRyeS5zdWJ0YWcpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuY2xhc3MgU3VidGFnU2NvcGVXaXRoUmFuZ2U8XG4gICAgVFRZUEUgZXh0ZW5kcyBNb2RlbC5SZWdpc3RyeUVudHJ5VHlwZSxcbiAgICBUVEFHIGV4dGVuZHMgc3RyaW5nLFxuICAgIFRJVEVNIGV4dGVuZHMgSXRlbXMuUmVnaXN0ZXJlZFN1YnRhZ1dpdGhSYW5nZTxUVFlQRSwgVFRBRz5cbj4gZXh0ZW5kcyBTdWJ0YWdTY29wZTxUVFlQRSwgVFRBRywgVElURU0+IHtcbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IodHlwZTogVFRZUEUsIHZhbGlkYXRlOiBWYWxpZGF0aW9uSGVscGVyczxUVEFHPikge1xuICAgICAgICBzdXBlcih0eXBlLCB2YWxpZGF0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZChlbnRyeTogVElURU0pOiBSZXN1bHQ8dHJ1ZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGVFbnRyeShlbnRyeSkub25TdWNjZXNzKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9hZGRSYW5nZShlbnRyeSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfdmFsaWRhdGVFbnRyeShlbnRyeTogVElURU0pOiBSZXN1bHQ8dHJ1ZT4ge1xuICAgICAgICBjb25zdCBzdGFydCA9IGVudHJ5LnN1YnRhZztcbiAgICAgICAgY29uc3QgZW5kID0gZW50cnkuc3VidGFnUmFuZ2VFbmQgPz8gKCcnIGFzIFRUQUcpO1xuICAgICAgICBpZiAoZW5kKSB7XG4gICAgICAgICAgICByZXR1cm4gYWxsU3VjY2VlZChbdGhpcy5fdmFsaWRhdGVLZXkoc3RhcnQpLCB0aGlzLl92YWxpZGF0ZUtleShlbmQpLCB0aGlzLl92YWxpZGF0ZVJhbmdlKHN0YXJ0LCBlbmQpXSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRlS2V5KHN0YXJ0KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3ZhbGlkYXRlUmFuZ2Uoc3RhcnQ6IFRUQUcsIGVuZDogVFRBRyk6IFJlc3VsdDx0cnVlPiB7XG4gICAgICAgIHJldHVybiBzdGFydCA8IGVuZCA/IHN1Y2NlZWQodHJ1ZSkgOiBmYWlsKGAke3N0YXJ0fS4uJHtlbmR9OiBpbnZhbGlkIHJhbmdlYCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9hZGRSYW5nZShlbnRyeTogVElURU0pOiBSZXN1bHQ8dHJ1ZT4ge1xuICAgICAgICB0aGlzLl9pdGVtcy5zZXQoZW50cnkuc3VidGFnLCBlbnRyeSk7XG4gICAgICAgIGlmIChlbnRyeS5zdWJ0YWdSYW5nZUVuZCkge1xuICAgICAgICAgICAgbGV0IG5leHQgPSB0aGlzLl9uZXh0SW5SYW5nZShlbnRyeS5zdWJ0YWcsIGVudHJ5LnN1YnRhZ1JhbmdlRW5kKTtcbiAgICAgICAgICAgIHdoaWxlIChuZXh0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZSA9IHNhbml0aXplSnNvbih7IC4uLmVudHJ5LCBzdWJ0YWc6IG5leHQsIHN1YnRhZ1JhbmdlRW5kOiB1bmRlZmluZWQgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5faXRlbXMuc2V0KG5leHQsIGUpO1xuICAgICAgICAgICAgICAgIG5leHQgPSB0aGlzLl9uZXh0SW5SYW5nZShuZXh0LCBlbnRyeS5zdWJ0YWdSYW5nZUVuZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQodHJ1ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9uZXh0SW5SYW5nZShjdXJyZW50OiBUVEFHLCBlbmQ6IFRUQUcpOiBUVEFHIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKGN1cnJlbnQgPj0gZW5kKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5leHQgPSBBcnJheS5mcm9tKGN1cnJlbnQpO1xuICAgICAgICBmb3IgKGxldCBpID0gbmV4dC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaWYgKG5leHRbaV0udG9Mb3dlckNhc2UoKSA8ICd6Jykge1xuICAgICAgICAgICAgICAgIG5leHRbaV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG5leHRbaV0uY2hhckNvZGVBdCgwKSArIDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXh0W2ldID0gJ2EnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl92YWxpZGF0ZS50b0Nhbm9uaWNhbChuZXh0LmpvaW4oJycpKS5nZXRWYWx1ZU9yVGhyb3coKTtcbiAgICB9XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmNsYXNzIFRhZ1Njb3BlPFxuICAgIFRUWVBFIGV4dGVuZHMgTW9kZWwuUmVnaXN0cnlFbnRyeVR5cGUsXG4gICAgVFRBRyBleHRlbmRzIHN0cmluZyxcbiAgICBUSVRFTSBleHRlbmRzIEl0ZW1zLlJlZ2lzdGVyZWRUYWc8VFRZUEUsIFRUQUc+XG4+IGV4dGVuZHMgUmVnaXN0ZXJlZEl0ZW1TY29wZTxUVFlQRSwgVFRBRywgVElURU0+IHtcbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IodHlwZTogVFRZUEUsIHZhbGlkYXRlOiBWYWxpZGF0aW9uSGVscGVyczxUVEFHPikge1xuICAgICAgICBzdXBlcih0eXBlLCB2YWxpZGF0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZChlbnRyeTogVElURU0pOiBSZXN1bHQ8dHJ1ZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGVFbnRyeShlbnRyeSkub25TdWNjZXNzKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1zLnNldChlbnRyeS50YWcsIGVudHJ5KTtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKHRydWUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3ZhbGlkYXRlRW50cnkoZW50cnk6IFRJVEVNKTogUmVzdWx0PHRydWU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRlS2V5KGVudHJ5LnRhZyk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNsYXNzIExhbmd1YWdlU3VidGFnU2NvcGUgZXh0ZW5kcyBTdWJ0YWdTY29wZVdpdGhSYW5nZTwnbGFuZ3VhZ2UnLCBMYW5ndWFnZVN1YnRhZywgSXRlbXMuUmVnaXN0ZXJlZExhbmd1YWdlPiB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcignbGFuZ3VhZ2UnLCBWYWxpZGF0ZS5sYW5ndWFnZVN1YnRhZyk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNsYXNzIEV4dExhbmdTdWJ0YWdTY29wZSBleHRlbmRzIFN1YnRhZ1Njb3BlPCdleHRsYW5nJywgRXh0TGFuZ1N1YnRhZywgSXRlbXMuUmVnaXN0ZXJlZEV4dExhbmc+IHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCdleHRsYW5nJywgVmFsaWRhdGUuZXh0bGFuZ1N1YnRhZyk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNsYXNzIFNjcmlwdFN1YnRhZ1Njb3BlIGV4dGVuZHMgU3VidGFnU2NvcGVXaXRoUmFuZ2U8J3NjcmlwdCcsIFNjcmlwdFN1YnRhZywgSXRlbXMuUmVnaXN0ZXJlZFNjcmlwdD4ge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoJ3NjcmlwdCcsIFZhbGlkYXRlLnNjcmlwdFN1YnRhZyk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNsYXNzIFJlZ2lvblN1YnRhZ1Njb3BlIGV4dGVuZHMgU3VidGFnU2NvcGVXaXRoUmFuZ2U8J3JlZ2lvbicsIFJlZ2lvblN1YnRhZywgSXRlbXMuUmVnaXN0ZXJlZFJlZ2lvbj4ge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoJ3JlZ2lvbicsIFZhbGlkYXRlLnJlZ2lvblN1YnRhZyk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNsYXNzIFZhcmlhbnRTdWJ0YWdTY29wZSBleHRlbmRzIFN1YnRhZ1Njb3BlPCd2YXJpYW50JywgVmFyaWFudFN1YnRhZywgSXRlbXMuUmVnaXN0ZXJlZFZhcmlhbnQ+IHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCd2YXJpYW50JywgVmFsaWRhdGUudmFyaWFudFN1YnRhZyk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNsYXNzIEdyYW5kZmF0aGVyZWRUYWdTY29wZSBleHRlbmRzIFRhZ1Njb3BlPCdncmFuZGZhdGhlcmVkJywgR3JhbmRmYXRoZXJlZFRhZywgSXRlbXMuUmVnaXN0ZXJlZEdyYW5kZmF0aGVyZWRUYWc+IHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCdncmFuZGZhdGhlcmVkJywgVmFsaWRhdGUuZ3JhbmRmYXRoZXJlZFRhZyk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNsYXNzIFJlZHVuZGFudFRhZ1Njb3BlIGV4dGVuZHMgVGFnU2NvcGU8J3JlZHVuZGFudCcsIFJlZHVuZGFudFRhZywgSXRlbXMuUmVnaXN0ZXJlZFJlZHVuZGFudFRhZz4ge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoJ3JlZHVuZGFudCcsIFZhbGlkYXRlLnJlZHVuZGFudFRhZyk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import * as Scope from './scope';
|
|
2
|
+
import { RegisteredItem, RegistryFile } from './model';
|
|
3
|
+
import { Result } from '@fgv/ts-utils';
|
|
4
|
+
import { YearMonthDaySpec } from '../jar/language-subtags/registry/model';
|
|
5
|
+
/**
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
export declare class LanguageSubtagRegistry {
|
|
9
|
+
readonly fileDate: YearMonthDaySpec;
|
|
10
|
+
readonly languages: Scope.LanguageSubtagScope;
|
|
11
|
+
readonly extlangs: Scope.ExtLangSubtagScope;
|
|
12
|
+
readonly scripts: Scope.ScriptSubtagScope;
|
|
13
|
+
readonly regions: Scope.RegionSubtagScope;
|
|
14
|
+
readonly variants: Scope.VariantSubtagScope;
|
|
15
|
+
readonly collections: Scope.LanguageSubtagScope;
|
|
16
|
+
readonly macrolanguages: Scope.LanguageSubtagScope;
|
|
17
|
+
readonly privateUse: Scope.LanguageSubtagScope;
|
|
18
|
+
readonly special: Scope.LanguageSubtagScope;
|
|
19
|
+
readonly grandfathered: Scope.GrandfatheredTagScope;
|
|
20
|
+
readonly redundant: Scope.RedundantTagScope;
|
|
21
|
+
/**
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
protected readonly _all: RegisteredItem[];
|
|
25
|
+
/**
|
|
26
|
+
* @param registry - The contents of the registry file
|
|
27
|
+
* from which the data is loaded.
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
30
|
+
protected constructor(registry: RegistryFile);
|
|
31
|
+
static create(registry: RegistryFile): Result<LanguageSubtagRegistry>;
|
|
32
|
+
static load(root: string): Result<LanguageSubtagRegistry>;
|
|
33
|
+
static loadJsonRegistryFile(root: string): Result<LanguageSubtagRegistry>;
|
|
34
|
+
static loadTxtRegistryFile(root: string): Result<LanguageSubtagRegistry>;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=subtagRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subtagRegistry.d.ts","sourceRoot":"","sources":["../../../src/iana/language-subtags/subtagRegistry.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAGjC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,MAAM,EAAiB,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAE1E;;GAEG;AACH,qBAAa,sBAAsB;IAC/B,SAAgB,QAAQ,EAAE,gBAAgB,CAAC;IAC3C,SAAgB,SAAS,EAAE,KAAK,CAAC,mBAAmB,CAAmC;IACvF,SAAgB,QAAQ,EAAE,KAAK,CAAC,kBAAkB,CAAkC;IACpF,SAAgB,OAAO,EAAE,KAAK,CAAC,iBAAiB,CAAiC;IACjF,SAAgB,OAAO,EAAE,KAAK,CAAC,iBAAiB,CAAiC;IACjF,SAAgB,QAAQ,EAAE,KAAK,CAAC,kBAAkB,CAAkC;IAEpF,SAAgB,WAAW,EAAE,KAAK,CAAC,mBAAmB,CAAmC;IACzF,SAAgB,cAAc,EAAE,KAAK,CAAC,mBAAmB,CAAmC;IAC5F,SAAgB,UAAU,EAAE,KAAK,CAAC,mBAAmB,CAAmC;IACxF,SAAgB,OAAO,EAAE,KAAK,CAAC,mBAAmB,CAAmC;IAErF,SAAgB,aAAa,EAAE,KAAK,CAAC,qBAAqB,CAAqC;IAC/F,SAAgB,SAAS,EAAE,KAAK,CAAC,iBAAiB,CAAiC;IAEnF;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC;IAE1C;;;;OAIG;IACH,SAAS,aAAa,QAAQ,EAAE,YAAY;WAuC9B,MAAM,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAAC,sBAAsB,CAAC;WAM9D,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,sBAAsB,CAAC;WAOlD,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,sBAAsB,CAAC;WAOlE,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,sBAAsB,CAAC;CAMlF"}
|
|
@@ -0,0 +1,139 @@
|
|
|
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.LanguageSubtagRegistry = void 0;
|
|
48
|
+
const Converters = __importStar(require("./converters"));
|
|
49
|
+
const JarConverters = __importStar(require("./jarConverters"));
|
|
50
|
+
const Scope = __importStar(require("./scope"));
|
|
51
|
+
const path = __importStar(require("path"));
|
|
52
|
+
const ts_utils_1 = require("@fgv/ts-utils");
|
|
53
|
+
/**
|
|
54
|
+
* @public
|
|
55
|
+
*/
|
|
56
|
+
class LanguageSubtagRegistry {
|
|
57
|
+
/**
|
|
58
|
+
* @param registry - The contents of the registry file
|
|
59
|
+
* from which the data is loaded.
|
|
60
|
+
* @internal
|
|
61
|
+
*/
|
|
62
|
+
constructor(registry) {
|
|
63
|
+
this.languages = new Scope.LanguageSubtagScope();
|
|
64
|
+
this.extlangs = new Scope.ExtLangSubtagScope();
|
|
65
|
+
this.scripts = new Scope.ScriptSubtagScope();
|
|
66
|
+
this.regions = new Scope.RegionSubtagScope();
|
|
67
|
+
this.variants = new Scope.VariantSubtagScope();
|
|
68
|
+
this.collections = new Scope.LanguageSubtagScope();
|
|
69
|
+
this.macrolanguages = new Scope.LanguageSubtagScope();
|
|
70
|
+
this.privateUse = new Scope.LanguageSubtagScope();
|
|
71
|
+
this.special = new Scope.LanguageSubtagScope();
|
|
72
|
+
this.grandfathered = new Scope.GrandfatheredTagScope();
|
|
73
|
+
this.redundant = new Scope.RedundantTagScope();
|
|
74
|
+
this.fileDate = registry.fileDate;
|
|
75
|
+
this._all = registry.entries;
|
|
76
|
+
for (const entry of this._all) {
|
|
77
|
+
switch (entry.type) {
|
|
78
|
+
case 'language':
|
|
79
|
+
this.languages.add(entry);
|
|
80
|
+
if (entry.scope === 'macrolanguage') {
|
|
81
|
+
this.macrolanguages.add(entry);
|
|
82
|
+
}
|
|
83
|
+
else if (entry.scope === 'collection') {
|
|
84
|
+
this.collections.add(entry);
|
|
85
|
+
}
|
|
86
|
+
else if (entry.scope === 'private-use') {
|
|
87
|
+
this.privateUse.add(entry);
|
|
88
|
+
}
|
|
89
|
+
else if (entry.scope === 'special') {
|
|
90
|
+
this.special.add(entry);
|
|
91
|
+
}
|
|
92
|
+
break;
|
|
93
|
+
case 'extlang':
|
|
94
|
+
this.extlangs.add(entry);
|
|
95
|
+
break;
|
|
96
|
+
case 'script':
|
|
97
|
+
this.scripts.add(entry);
|
|
98
|
+
break;
|
|
99
|
+
case 'region':
|
|
100
|
+
this.regions.add(entry);
|
|
101
|
+
break;
|
|
102
|
+
case 'variant':
|
|
103
|
+
this.variants.add(entry);
|
|
104
|
+
break;
|
|
105
|
+
case 'grandfathered':
|
|
106
|
+
this.grandfathered.add(entry);
|
|
107
|
+
break;
|
|
108
|
+
case 'redundant':
|
|
109
|
+
this.redundant.add(entry);
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
static create(registry) {
|
|
115
|
+
return (0, ts_utils_1.captureResult)(() => {
|
|
116
|
+
return new LanguageSubtagRegistry(registry);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
static load(root) {
|
|
120
|
+
return (0, ts_utils_1.captureResult)(() => {
|
|
121
|
+
const registry = Converters.loadLanguageSubtagsJsonFileSync(path.join(root)).orThrow();
|
|
122
|
+
return new LanguageSubtagRegistry(registry);
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
static loadJsonRegistryFile(root) {
|
|
126
|
+
return (0, ts_utils_1.captureResult)(() => {
|
|
127
|
+
const registry = JarConverters.loadJsonSubtagRegistryFileSync(path.join(root)).orThrow();
|
|
128
|
+
return new LanguageSubtagRegistry(registry);
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
static loadTxtRegistryFile(root) {
|
|
132
|
+
return (0, ts_utils_1.captureResult)(() => {
|
|
133
|
+
const registry = JarConverters.loadTxtSubtagRegistryFileSync(path.join(root)).orThrow();
|
|
134
|
+
return new LanguageSubtagRegistry(registry);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
exports.LanguageSubtagRegistry = LanguageSubtagRegistry;
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VidGFnUmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWFuYS9sYW5ndWFnZS1zdWJ0YWdzL3N1YnRhZ1JlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgseURBQTJDO0FBQzNDLCtEQUFpRDtBQUNqRCwrQ0FBaUM7QUFDakMsMkNBQTZCO0FBRzdCLDRDQUFzRDtBQUd0RDs7R0FFRztBQUNILE1BQWEsc0JBQXNCO0lBcUIvQjs7OztPQUlHO0lBQ0gsWUFBc0IsUUFBc0I7UUF4QjVCLGNBQVMsR0FBOEIsSUFBSSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUN2RSxhQUFRLEdBQTZCLElBQUksS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDcEUsWUFBTyxHQUE0QixJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ2pFLFlBQU8sR0FBNEIsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNqRSxhQUFRLEdBQTZCLElBQUksS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFcEUsZ0JBQVcsR0FBOEIsSUFBSSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUN6RSxtQkFBYyxHQUE4QixJQUFJLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzVFLGVBQVUsR0FBOEIsSUFBSSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUN4RSxZQUFPLEdBQThCLElBQUksS0FBSyxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFFckUsa0JBQWEsR0FBZ0MsSUFBSSxLQUFLLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMvRSxjQUFTLEdBQTRCLElBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFhL0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFR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RUFBRTtZQUN0QixNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3hGLE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSjtBQTNGRCx3REEyRkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0ICogYXMgQ29udmVydGVycyBmcm9tICcuL2NvbnZlcnRlcnMnO1xuaW1wb3J0ICogYXMgSmFyQ29udmVydGVycyBmcm9tICcuL2phckNvbnZlcnRlcnMnO1xuaW1wb3J0ICogYXMgU2NvcGUgZnJvbSAnLi9zY29wZSc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgeyBSZWdpc3RlcmVkSXRlbSwgUmVnaXN0cnlGaWxlIH0gZnJvbSAnLi9tb2RlbCc7XG5pbXBvcnQgeyBSZXN1bHQsIGNhcHR1cmVSZXN1bHQgfSBmcm9tICdAZmd2L3RzLXV0aWxzJztcbmltcG9ydCB7IFllYXJNb250aERheVNwZWMgfSBmcm9tICcuLi9qYXIvbGFuZ3VhZ2Utc3VidGFncy9yZWdpc3RyeS9tb2RlbCc7XG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VTdWJ0YWdSZWdpc3RyeSB7XG4gICAgcHVibGljIHJlYWRvbmx5IGZpbGVEYXRlOiBZZWFyTW9udGhEYXlTcGVjO1xuICAgIHB1YmxpYyByZWFkb25seSBsYW5ndWFnZXM6IFNjb3BlLkxhbmd1YWdlU3VidGFnU2NvcGUgPSBuZXcgU2NvcGUuTGFuZ3VhZ2VTdWJ0YWdTY29wZSgpO1xuICAgIHB1YmxpYyByZWFkb25seSBleHRsYW5nczogU2NvcGUuRXh0TGFuZ1N1YnRhZ1Njb3BlID0gbmV3IFNjb3BlLkV4dExhbmdTdWJ0YWdTY29wZSgpO1xuICAgIHB1YmxpYyByZWFkb25seSBzY3JpcHRzOiBTY29wZS5TY3JpcHRTdWJ0YWdTY29wZSA9IG5ldyBTY29wZS5TY3JpcHRTdWJ0YWdTY29wZSgpO1xuICAgIHB1YmxpYyByZWFkb25seSByZWdpb25zOiBTY29wZS5SZWdpb25TdWJ0YWdTY29wZSA9IG5ldyBTY29wZS5SZWdpb25TdWJ0YWdTY29wZSgpO1xuICAgIHB1YmxpYyByZWFkb25seSB2YXJpYW50czogU2NvcGUuVmFyaWFudFN1YnRhZ1Njb3BlID0gbmV3IFNjb3BlLlZhcmlhbnRTdWJ0YWdTY29wZSgpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbGxlY3Rpb25zOiBTY29wZS5MYW5ndWFnZVN1YnRhZ1Njb3BlID0gbmV3IFNjb3BlLkxhbmd1YWdlU3VidGFnU2NvcGUoKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbWFjcm9sYW5ndWFnZXM6IFNjb3BlLkxhbmd1YWdlU3VidGFnU2NvcGUgPSBuZXcgU2NvcGUuTGFuZ3VhZ2VTdWJ0YWdTY29wZSgpO1xuICAgIHB1YmxpYyByZWFkb25seSBwcml2YXRlVXNlOiBTY29wZS5MYW5ndWFnZVN1YnRhZ1Njb3BlID0gbmV3IFNjb3BlLkxhbmd1YWdlU3VidGFnU2NvcGUoKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3BlY2lhbDogU2NvcGUuTGFuZ3VhZ2VTdWJ0YWdTY29wZSA9IG5ldyBTY29wZS5MYW5ndWFnZVN1YnRhZ1Njb3BlKCk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgZ3JhbmRmYXRoZXJlZDogU2NvcGUuR3JhbmRmYXRoZXJlZFRhZ1Njb3BlID0gbmV3IFNjb3BlLkdyYW5kZmF0aGVyZWRUYWdTY29wZSgpO1xuICAgIHB1YmxpYyByZWFkb25seSByZWR1bmRhbnQ6IFNjb3BlLlJlZHVuZGFudFRhZ1Njb3BlID0gbmV3IFNjb3BlLlJlZHVuZGFudFRhZ1Njb3BlKCk7XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2FsbDogUmVnaXN0ZXJlZEl0ZW1bXTtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSByZWdpc3RyeSAtIFRoZSBjb250ZW50cyBvZiB0aGUgcmVnaXN0cnkgZmlsZVxuICAgICAqIGZyb20gd2hpY2ggdGhlIGRhdGEgaXMgbG9hZGVkLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihyZWdpc3RyeTogUmVnaXN0cnlGaWxlKSB7XG4gICAgICAgIHRoaXMuZmlsZURhdGUgPSByZWdpc3RyeS5maWxlRGF0ZTtcbiAgICAgICAgdGhpcy5fYWxsID0gcmVnaXN0cnkuZW50cmllcztcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiB0aGlzLl9hbGwpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoZW50cnkudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2xhbmd1YWdlJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZXMuYWRkKGVudHJ5KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LnNjb3BlID09PSAnbWFjcm9sYW5ndWFnZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFjcm9sYW5ndWFnZXMuYWRkKGVudHJ5KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbnRyeS5zY29wZSA9PT0gJ2NvbGxlY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbGxlY3Rpb25zLmFkZChlbnRyeSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZW50cnkuc2NvcGUgPT09ICdwcml2YXRlLXVzZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJpdmF0ZVVzZS5hZGQoZW50cnkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVudHJ5LnNjb3BlID09PSAnc3BlY2lhbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3BlY2lhbC5hZGQoZW50cnkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2V4dGxhbmcnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmV4dGxhbmdzLmFkZChlbnRyeSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3NjcmlwdCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2NyaXB0cy5hZGQoZW50cnkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdyZWdpb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2lvbnMuYWRkKGVudHJ5KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAndmFyaWFudCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFyaWFudHMuYWRkKGVudHJ5KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZ3JhbmRmYXRoZXJlZCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JhbmRmYXRoZXJlZC5hZGQoZW50cnkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdyZWR1bmRhbnQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZHVuZGFudC5hZGQoZW50cnkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlKHJlZ2lzdHJ5OiBSZWdpc3RyeUZpbGUpOiBSZXN1bHQ8TGFuZ3VhZ2VTdWJ0YWdSZWdpc3RyeT4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IExhbmd1YWdlU3VidGFnUmVnaXN0cnkocmVnaXN0cnkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGxvYWQocm9vdDogc3RyaW5nKTogUmVzdWx0PExhbmd1YWdlU3VidGFnUmVnaXN0cnk+IHtcbiAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVnaXN0cnkgPSBDb252ZXJ0ZXJzLmxvYWRMYW5ndWFnZVN1YnRhZ3NKc29uRmlsZVN5bmMocGF0aC5qb2luKHJvb3QpKS5vclRocm93KCk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IExhbmd1YWdlU3VidGFnUmVnaXN0cnkocmVnaXN0cnkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGxvYWRKc29uUmVnaXN0cnlGaWxlKHJvb3Q6IHN0cmluZyk6IFJlc3VsdDxMYW5ndWFnZVN1YnRhZ1JlZ2lzdHJ5PiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gSmFyQ29udmVydGVycy5sb2FkSnNvblN1YnRhZ1JlZ2lzdHJ5RmlsZVN5bmMocGF0aC5qb2luKHJvb3QpKS5vclRocm93KCk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IExhbmd1YWdlU3VidGFnUmVnaXN0cnkocmVnaXN0cnkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGxvYWRUeHRSZWdpc3RyeUZpbGUocm9vdDogc3RyaW5nKTogUmVzdWx0PExhbmd1YWdlU3VidGFnUmVnaXN0cnk+IHtcbiAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVnaXN0cnkgPSBKYXJDb252ZXJ0ZXJzLmxvYWRUeHRTdWJ0YWdSZWdpc3RyeUZpbGVTeW5jKHBhdGguam9pbihyb290KSkub3JUaHJvdygpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBMYW5ndWFnZVN1YnRhZ1JlZ2lzdHJ5KHJlZ2lzdHJ5KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/iana/language-subtags/validate.ts"],"names":[],"mappings":"AAsBA,cAAc,uCAAuC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
35
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
__exportStar(require("../jar/language-subtags/tags/validate"), exports);
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWFuYS9sYW5ndWFnZS1zdWJ0YWdzL3ZhbGlkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCx3RUFBc0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi4vamFyL2xhbmd1YWdlLXN1YnRhZ3MvdGFncy92YWxpZGF0ZSc7XG4iXX0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as Iana from '../../iana';
|
|
2
|
+
import * as Model from './model';
|
|
3
|
+
import { Converters, Result } from '@fgv/ts-utils';
|
|
4
|
+
/**
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
export declare const extensionSingleton: import("@fgv/ts-utils").Converter<Iana.LanguageTagExtensions.Model.ExtensionSingleton, unknown>;
|
|
8
|
+
/**
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
export declare const languageTagExtension: Converters.ObjectConverter<Iana.LanguageTagExtensions.Model.LanguageTagExtension, unknown>;
|
|
12
|
+
/**
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
export declare const languageTagExtensions: import("@fgv/ts-utils").Converter<Iana.Model.DatedRegistry<Iana.LanguageTagExtensions.Model.LanguageTagExtension>, unknown>;
|
|
16
|
+
/**
|
|
17
|
+
* @internal
|
|
18
|
+
* @param path - path from which the extensions registry is to be loaded.
|
|
19
|
+
* @returns `Success` with the loaded language tag extensions data, o
|
|
20
|
+
* or `Failure` with details if an error occurs.
|
|
21
|
+
*/
|
|
22
|
+
export declare function loadLanguageTagExtensionsJsonFileSync(path: string): Result<Model.LanguageTagExtensions>;
|
|
23
|
+
//# sourceMappingURL=converters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"converters.d.ts","sourceRoot":"","sources":["../../../src/iana/language-tag-extensions/converters.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAGjC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAInD;;GAEG;AACH,eAAO,MAAM,kBAAkB,iGAAwC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,oBAAoB,4FAehC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,6HAAsC,CAAC;AAEzE;;;;;GAKG;AACH,wBAAgB,qCAAqC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAEvG"}
|
|
@@ -0,0 +1,87 @@
|
|
|
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.loadLanguageTagExtensionsJsonFileSync = exports.languageTagExtensions = exports.languageTagExtension = exports.extensionSingleton = void 0;
|
|
48
|
+
const Iana = __importStar(require("../../iana"));
|
|
49
|
+
const Validate = __importStar(require("./validate"));
|
|
50
|
+
const ts_utils_1 = require("@fgv/ts-utils");
|
|
51
|
+
const file_1 = require("@fgv/ts-json/file");
|
|
52
|
+
const converters_1 = require("../common/converters");
|
|
53
|
+
/**
|
|
54
|
+
* @public
|
|
55
|
+
*/
|
|
56
|
+
exports.extensionSingleton = Validate.extensionSingleton.converter;
|
|
57
|
+
/**
|
|
58
|
+
* @internal
|
|
59
|
+
*/
|
|
60
|
+
exports.languageTagExtension = ts_utils_1.Converters.strictObject({
|
|
61
|
+
identifier: exports.extensionSingleton,
|
|
62
|
+
description: ts_utils_1.Converters.stringArray,
|
|
63
|
+
comments: ts_utils_1.Converters.stringArray,
|
|
64
|
+
added: Iana.Converters.yearMonthDaySpec,
|
|
65
|
+
rfc: ts_utils_1.Converters.string,
|
|
66
|
+
authority: ts_utils_1.Converters.string,
|
|
67
|
+
contactEmail: ts_utils_1.Converters.string,
|
|
68
|
+
mailingList: ts_utils_1.Converters.string,
|
|
69
|
+
url: ts_utils_1.Converters.string,
|
|
70
|
+
}, {
|
|
71
|
+
description: 'registered language tag extension',
|
|
72
|
+
});
|
|
73
|
+
/**
|
|
74
|
+
* @internal
|
|
75
|
+
*/
|
|
76
|
+
exports.languageTagExtensions = (0, converters_1.datedRegistry)(exports.languageTagExtension);
|
|
77
|
+
/**
|
|
78
|
+
* @internal
|
|
79
|
+
* @param path - path from which the extensions registry is to be loaded.
|
|
80
|
+
* @returns `Success` with the loaded language tag extensions data, o
|
|
81
|
+
* or `Failure` with details if an error occurs.
|
|
82
|
+
*/
|
|
83
|
+
function loadLanguageTagExtensionsJsonFileSync(path) {
|
|
84
|
+
return (0, file_1.convertJsonFileSync)(path, exports.languageTagExtensions);
|
|
85
|
+
}
|
|
86
|
+
exports.loadLanguageTagExtensionsJsonFileSync = loadLanguageTagExtensionsJsonFileSync;
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pYW5hL2xhbmd1YWdlLXRhZy1leHRlbnNpb25zL2NvbnZlcnRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCxpREFBbUM7QUFHbkMscURBQXVDO0FBRXZDLDRDQUFtRDtBQUNuRCw0Q0FBd0Q7QUFDeEQscURBQXFEO0FBRXJEOztHQUVHO0FBQ1UsUUFBQSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDO0FBRXhFOztHQUVHO0FBQ1UsUUFBQSxvQkFBb0IsR0FBRyxxQkFBVSxDQUFDLFlBQVksQ0FDdkQ7SUFDSSxVQUFVLEVBQUUsMEJBQWtCO0lBQzlCLFdBQVcsRUFBRSxxQkFBVSxDQUFDLFdBQVc7SUFDbkMsUUFBUSxFQUFFLHFCQUFVLENBQUMsV0FBVztJQUNoQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0I7SUFDdkMsR0FBRyxFQUFFLHFCQUFVLENBQUMsTUFBTTtJQUN0QixTQUFTLEVBQUUscUJBQVUsQ0FBQyxNQUFNO0lBQzVCLFlBQVksRUFBRSxxQkFBVSxDQUFDLE1BQU07SUFDL0IsV0FBVyxFQUFFLHFCQUFVLENBQUMsTUFBTTtJQUM5QixHQUFHLEVBQUUscUJBQVUsQ0FBQyxNQUFNO0NBQ3pCLEVBQ0Q7SUFDSSxXQUFXLEVBQUUsbUNBQW1DO0NBQ25ELENBQ0osQ0FBQztBQUVGOztHQUVHO0FBQ1UsUUFBQSxxQkFBcUIsR0FBRyxJQUFBLDBCQUFhLEVBQUMsNEJBQW9CLENBQUMsQ0FBQztBQUV6RTs7Ozs7R0FLRztBQUNILFNBQWdCLHFDQUFxQyxDQUFDLElBQVk7SUFDOUQsT0FBTyxJQUFBLDBCQUFtQixFQUFDLElBQUksRUFBRSw2QkFBcUIsQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFGRCxzRkFFQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjIgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBJYW5hIGZyb20gJy4uLy4uL2lhbmEnO1xuXG5pbXBvcnQgKiBhcyBNb2RlbCBmcm9tICcuL21vZGVsJztcbmltcG9ydCAqIGFzIFZhbGlkYXRlIGZyb20gJy4vdmFsaWRhdGUnO1xuXG5pbXBvcnQgeyBDb252ZXJ0ZXJzLCBSZXN1bHQgfSBmcm9tICdAZmd2L3RzLXV0aWxzJztcbmltcG9ydCB7IGNvbnZlcnRKc29uRmlsZVN5bmMgfSBmcm9tICdAZmd2L3RzLWpzb24vZmlsZSc7XG5pbXBvcnQgeyBkYXRlZFJlZ2lzdHJ5IH0gZnJvbSAnLi4vY29tbW9uL2NvbnZlcnRlcnMnO1xuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGV4dGVuc2lvblNpbmdsZXRvbiA9IFZhbGlkYXRlLmV4dGVuc2lvblNpbmdsZXRvbi5jb252ZXJ0ZXI7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBsYW5ndWFnZVRhZ0V4dGVuc2lvbiA9IENvbnZlcnRlcnMuc3RyaWN0T2JqZWN0PE1vZGVsLkxhbmd1YWdlVGFnRXh0ZW5zaW9uPihcbiAgICB7XG4gICAgICAgIGlkZW50aWZpZXI6IGV4dGVuc2lvblNpbmdsZXRvbixcbiAgICAgICAgZGVzY3JpcHRpb246IENvbnZlcnRlcnMuc3RyaW5nQXJyYXksXG4gICAgICAgIGNvbW1lbnRzOiBDb252ZXJ0ZXJzLnN0cmluZ0FycmF5LFxuICAgICAgICBhZGRlZDogSWFuYS5Db252ZXJ0ZXJzLnllYXJNb250aERheVNwZWMsXG4gICAgICAgIHJmYzogQ29udmVydGVycy5zdHJpbmcsXG4gICAgICAgIGF1dGhvcml0eTogQ29udmVydGVycy5zdHJpbmcsXG4gICAgICAgIGNvbnRhY3RFbWFpbDogQ29udmVydGVycy5zdHJpbmcsXG4gICAgICAgIG1haWxpbmdMaXN0OiBDb252ZXJ0ZXJzLnN0cmluZyxcbiAgICAgICAgdXJsOiBDb252ZXJ0ZXJzLnN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdyZWdpc3RlcmVkIGxhbmd1YWdlIHRhZyBleHRlbnNpb24nLFxuICAgIH1cbik7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBsYW5ndWFnZVRhZ0V4dGVuc2lvbnMgPSBkYXRlZFJlZ2lzdHJ5KGxhbmd1YWdlVGFnRXh0ZW5zaW9uKTtcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSBwYXRoIC0gcGF0aCBmcm9tIHdoaWNoIHRoZSBleHRlbnNpb25zIHJlZ2lzdHJ5IGlzIHRvIGJlIGxvYWRlZC5cbiAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHRoZSBsb2FkZWQgbGFuZ3VhZ2UgdGFnIGV4dGVuc2lvbnMgZGF0YSwgb1xuICogb3IgYEZhaWx1cmVgIHdpdGggZGV0YWlscyBpZiBhbiBlcnJvciBvY2N1cnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkTGFuZ3VhZ2VUYWdFeHRlbnNpb25zSnNvbkZpbGVTeW5jKHBhdGg6IHN0cmluZyk6IFJlc3VsdDxNb2RlbC5MYW5ndWFnZVRhZ0V4dGVuc2lvbnM+IHtcbiAgICByZXR1cm4gY29udmVydEpzb25GaWxlU3luYyhwYXRoLCBsYW5ndWFnZVRhZ0V4dGVuc2lvbnMpO1xufVxuIl19
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as Model from '../../iana/language-tag-extensions/model';
|
|
2
|
+
import { Result } from '@fgv/ts-utils';
|
|
3
|
+
import { TagExtensionsScope } from './extensionsScope';
|
|
4
|
+
import { YearMonthDaySpec } from '../model';
|
|
5
|
+
/**
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
export declare class LanguageTagExtensionRegistry {
|
|
9
|
+
readonly fileDate: YearMonthDaySpec;
|
|
10
|
+
readonly extensions: TagExtensionsScope;
|
|
11
|
+
/**
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
protected readonly _all: Model.LanguageTagExtension[];
|
|
15
|
+
/**
|
|
16
|
+
* Constructs an {@link Iana.LanguageTagExtensions.LanguageTagExtensionRegistry}.
|
|
17
|
+
* @param registry - Registry file from which the registry is to be constructed.
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
20
|
+
protected constructor(registry: Model.LanguageTagExtensions);
|
|
21
|
+
static create(registry: Model.LanguageTagExtensions): Result<LanguageTagExtensionRegistry>;
|
|
22
|
+
static load(path: string): Result<LanguageTagExtensionRegistry>;
|
|
23
|
+
static loadJsonRegistryFile(path: string): Result<LanguageTagExtensionRegistry>;
|
|
24
|
+
static loadTxtRegistryFile(path: string): Result<LanguageTagExtensionRegistry>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=extensionsRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensionsRegistry.d.ts","sourceRoot":"","sources":["../../../src/iana/language-tag-extensions/extensionsRegistry.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,KAAK,MAAM,0CAA0C,CAAC;AAElE,OAAO,EAAE,MAAM,EAAiB,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C;;GAEG;AACH,qBAAa,4BAA4B;IACrC,SAAgB,QAAQ,EAAE,gBAAgB,CAAC;IAC3C,SAAgB,UAAU,EAAE,kBAAkB,CAA4B;IAE1E;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,oBAAoB,EAAE,CAAC;IAEtD;;;;OAIG;IACH,SAAS,aAAa,QAAQ,EAAE,KAAK,CAAC,qBAAqB;WAQ7C,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,qBAAqB,GAAG,MAAM,CAAC,4BAA4B,CAAC;WAMnF,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,4BAA4B,CAAC;WAOxD,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,4BAA4B,CAAC;WAOxE,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,4BAA4B,CAAC;CAMxF"}
|