@fgv/ts-bcp47 0.5.0 → 0.5.1

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.
Files changed (411) hide show
  1. package/data/unsd/m49.json +251 -0
  2. package/package.json +1 -1
  3. package/{bcp47 → src/bcp47}/bcp47Subtags/converters.d.ts +0 -0
  4. package/src/bcp47/bcp47Subtags/converters.d.ts.map +1 -0
  5. package/{bcp47 → src/bcp47}/bcp47Subtags/converters.js +1 -1
  6. package/{bcp47 → src/bcp47}/bcp47Subtags/index.d.ts +0 -0
  7. package/src/bcp47/bcp47Subtags/index.d.ts.map +1 -0
  8. package/{iana/jar/language-subtags/registry → src/bcp47/bcp47Subtags}/index.js +27 -28
  9. package/{bcp47 → src/bcp47}/bcp47Subtags/model.d.ts +0 -0
  10. package/src/bcp47/bcp47Subtags/model.d.ts.map +1 -0
  11. package/{iana/defaultRegistries.js → src/bcp47/bcp47Subtags/model.js} +1 -19
  12. package/{bcp47 → src/bcp47}/bcp47Subtags/validate.d.ts +0 -0
  13. package/src/bcp47/bcp47Subtags/validate.d.ts.map +1 -0
  14. package/src/bcp47/bcp47Subtags/validate.js +74 -0
  15. package/{bcp47 → src/bcp47}/common.d.ts +0 -0
  16. package/src/bcp47/common.d.ts.map +1 -0
  17. package/src/bcp47/common.js +59 -0
  18. package/{bcp47 → src/bcp47}/helpers.d.ts +0 -0
  19. package/src/bcp47/helpers.d.ts.map +1 -0
  20. package/src/bcp47/helpers.js +103 -0
  21. package/{bcp47 → src/bcp47}/index.d.ts +0 -0
  22. package/src/bcp47/index.d.ts.map +1 -0
  23. package/src/bcp47/index.js +27 -0
  24. package/{bcp47 → src/bcp47}/languageTag.d.ts +0 -0
  25. package/src/bcp47/languageTag.d.ts.map +1 -0
  26. package/src/bcp47/languageTag.js +342 -0
  27. package/{bcp47 → src/bcp47}/languageTagParser.d.ts +0 -0
  28. package/src/bcp47/languageTagParser.d.ts.map +1 -0
  29. package/src/bcp47/languageTagParser.js +310 -0
  30. package/{bcp47 → src/bcp47}/match/chooser.d.ts +0 -0
  31. package/src/bcp47/match/chooser.d.ts.map +1 -0
  32. package/src/bcp47/match/chooser.js +92 -0
  33. package/{bcp47 → src/bcp47}/match/common.d.ts +0 -0
  34. package/src/bcp47/match/common.d.ts.map +1 -0
  35. package/src/bcp47/match/common.js +42 -0
  36. package/{bcp47 → src/bcp47}/match/index.d.ts +0 -0
  37. package/src/bcp47/match/index.d.ts.map +1 -0
  38. package/src/bcp47/match/index.js +45 -0
  39. package/{bcp47 → src/bcp47}/match/similarity.d.ts +0 -0
  40. package/src/bcp47/match/similarity.d.ts.map +1 -0
  41. package/src/bcp47/match/similarity.js +230 -0
  42. package/{bcp47 → src/bcp47}/normalization/baseNormalizer.d.ts +0 -0
  43. package/src/bcp47/normalization/baseNormalizer.d.ts.map +1 -0
  44. package/src/bcp47/normalization/baseNormalizer.js +114 -0
  45. package/{bcp47 → src/bcp47}/normalization/canonicalNormalizer.d.ts +0 -0
  46. package/src/bcp47/normalization/canonicalNormalizer.d.ts.map +1 -0
  47. package/src/bcp47/normalization/canonicalNormalizer.js +110 -0
  48. package/{bcp47 → src/bcp47}/normalization/common.d.ts +0 -0
  49. package/src/bcp47/normalization/common.d.ts.map +1 -0
  50. package/src/bcp47/normalization/common.js +82 -0
  51. package/{bcp47 → src/bcp47}/normalization/index.d.ts +0 -0
  52. package/src/bcp47/normalization/index.d.ts.map +1 -0
  53. package/{bcp47 → src/bcp47}/normalization/index.js +1 -1
  54. package/{bcp47 → src/bcp47}/normalization/normalizeTag.d.ts +0 -0
  55. package/src/bcp47/normalization/normalizeTag.d.ts.map +1 -0
  56. package/src/bcp47/normalization/normalizeTag.js +105 -0
  57. package/{bcp47 → src/bcp47}/normalization/preferredTagNormalizer.d.ts +0 -0
  58. package/src/bcp47/normalization/preferredTagNormalizer.d.ts.map +1 -0
  59. package/src/bcp47/normalization/preferredTagNormalizer.js +178 -0
  60. package/{bcp47 → src/bcp47}/overrides/converters.d.ts +0 -0
  61. package/src/bcp47/overrides/converters.d.ts.map +1 -0
  62. package/src/bcp47/overrides/converters.js +75 -0
  63. package/{bcp47 → src/bcp47}/overrides/defaultRegistries.d.ts +0 -0
  64. package/src/bcp47/overrides/defaultRegistries.d.ts.map +1 -0
  65. package/{iana/language-tag-extensions/model.js → src/bcp47/overrides/defaultRegistries.js} +19 -1
  66. package/{bcp47 → src/bcp47}/overrides/index.d.ts +0 -0
  67. package/src/bcp47/overrides/index.d.ts.map +1 -0
  68. package/src/bcp47/overrides/index.js +30 -0
  69. package/{bcp47 → src/bcp47}/overrides/model.d.ts +0 -0
  70. package/src/bcp47/overrides/model.d.ts.map +1 -0
  71. package/{bcp47/bcp47Subtags → src/bcp47/overrides}/model.js +1 -1
  72. package/{bcp47 → src/bcp47}/overrides/overridesRegistry.d.ts +2 -0
  73. package/src/bcp47/overrides/overridesRegistry.d.ts.map +1 -0
  74. package/src/bcp47/overrides/overridesRegistry.js +112 -0
  75. package/{bcp47 → src/bcp47}/validation/baseValidator.d.ts +0 -0
  76. package/src/bcp47/validation/baseValidator.d.ts.map +1 -0
  77. package/src/bcp47/validation/baseValidator.js +111 -0
  78. package/{bcp47 → src/bcp47}/validation/common.d.ts +0 -0
  79. package/src/bcp47/validation/common.d.ts.map +1 -0
  80. package/src/bcp47/validation/common.js +84 -0
  81. package/{bcp47 → src/bcp47}/validation/index.d.ts +0 -0
  82. package/src/bcp47/validation/index.d.ts.map +1 -0
  83. package/src/bcp47/validation/index.js +51 -0
  84. package/{bcp47 → src/bcp47}/validation/isCanonical.d.ts +0 -0
  85. package/src/bcp47/validation/isCanonical.d.ts.map +1 -0
  86. package/src/bcp47/validation/isCanonical.js +101 -0
  87. package/{bcp47 → src/bcp47}/validation/isInPreferredForm.d.ts +0 -0
  88. package/src/bcp47/validation/isInPreferredForm.d.ts.map +1 -0
  89. package/src/bcp47/validation/isInPreferredForm.js +73 -0
  90. package/{bcp47 → src/bcp47}/validation/isStrictlyValid.d.ts +0 -0
  91. package/src/bcp47/validation/isStrictlyValid.d.ts.map +1 -0
  92. package/src/bcp47/validation/isStrictlyValid.js +98 -0
  93. package/{bcp47 → src/bcp47}/validation/isValid.d.ts +0 -0
  94. package/src/bcp47/validation/isValid.d.ts.map +1 -0
  95. package/src/bcp47/validation/isValid.js +115 -0
  96. package/{bcp47 → src/bcp47}/validation/isWellFormed.d.ts +0 -0
  97. package/src/bcp47/validation/isWellFormed.d.ts.map +1 -0
  98. package/src/bcp47/validation/isWellFormed.js +98 -0
  99. package/{bcp47 → src/bcp47}/validation/validateTag.d.ts +0 -0
  100. package/src/bcp47/validation/validateTag.d.ts.map +1 -0
  101. package/src/bcp47/validation/validateTag.js +159 -0
  102. package/{iana → src/iana}/common/converters.d.ts +0 -0
  103. package/src/iana/common/converters.d.ts.map +1 -0
  104. package/src/iana/common/converters.js +84 -0
  105. package/{iana → src/iana}/common/model.d.ts +0 -0
  106. package/src/iana/common/model.d.ts.map +1 -0
  107. package/{iana/jar/jarModel.js → src/iana/common/model.js} +1 -1
  108. package/{iana → src/iana}/common/registeredItems.d.ts +0 -0
  109. package/src/iana/common/registeredItems.d.ts.map +1 -0
  110. package/src/iana/common/registeredItems.js +124 -0
  111. package/{iana → src/iana}/common/utils.d.ts +0 -0
  112. package/src/iana/common/utils.d.ts.map +1 -0
  113. package/src/iana/common/utils.js +34 -0
  114. package/{iana → src/iana}/common/validate.d.ts +0 -0
  115. package/src/iana/common/validate.d.ts.map +1 -0
  116. package/src/iana/common/validate.js +61 -0
  117. package/{iana → src/iana}/converters.d.ts +0 -0
  118. package/src/iana/converters.d.ts.map +1 -0
  119. package/{iana/jar/language-subtags/tags/index.js → src/iana/converters.js} +8 -10
  120. package/{iana → src/iana}/defaultRegistries.d.ts +0 -0
  121. package/src/iana/defaultRegistries.d.ts.map +1 -0
  122. package/src/iana/defaultRegistries.js +42 -0
  123. package/{iana → src/iana}/index.d.ts +0 -0
  124. package/src/iana/index.d.ts.map +1 -0
  125. package/{iana → src/iana}/index.js +1 -1
  126. package/{iana → src/iana}/jar/converters.d.ts +0 -0
  127. package/src/iana/jar/converters.d.ts.map +1 -0
  128. package/{iana → src/iana}/jar/converters.js +1 -1
  129. package/{iana → src/iana}/jar/index.d.ts +0 -0
  130. package/src/iana/jar/index.d.ts.map +1 -0
  131. package/{iana/jar/language-subtags/tags/model.js → src/iana/jar/index.js} +29 -1
  132. package/{iana → src/iana}/jar/jarConverters.d.ts +0 -0
  133. package/src/iana/jar/jarConverters.d.ts.map +1 -0
  134. package/src/iana/jar/jarConverters.js +85 -0
  135. package/{iana → src/iana}/jar/jarModel.d.ts +0 -0
  136. package/src/iana/jar/jarModel.d.ts.map +1 -0
  137. package/src/iana/jar/jarModel.js +24 -0
  138. package/{iana → src/iana}/jar/language-subtags/converters.d.ts +0 -0
  139. package/src/iana/jar/language-subtags/converters.d.ts.map +1 -0
  140. package/{bcp47/bcp47Subtags/index.js → src/iana/jar/language-subtags/converters.js} +6 -8
  141. package/{iana → src/iana}/jar/language-subtags/index.d.ts +0 -0
  142. package/src/iana/jar/language-subtags/index.d.ts.map +1 -0
  143. package/{bcp47/validation → src/iana/jar/language-subtags}/index.js +17 -14
  144. package/{iana → src/iana}/jar/language-subtags/model.d.ts +0 -0
  145. package/src/iana/jar/language-subtags/model.d.ts.map +1 -0
  146. package/{iana/jar/language-subtags/converters.js → src/iana/jar/language-subtags/model.js} +3 -3
  147. package/{iana → src/iana}/jar/language-subtags/registry/converters.d.ts +0 -0
  148. package/src/iana/jar/language-subtags/registry/converters.d.ts.map +1 -0
  149. package/{bcp47/match/index.js → src/iana/jar/language-subtags/registry/converters.js} +23 -10
  150. package/{iana → src/iana}/jar/language-subtags/registry/index.d.ts +0 -0
  151. package/src/iana/jar/language-subtags/registry/index.d.ts.map +1 -0
  152. package/{iana/jar/model.js → src/iana/jar/language-subtags/registry/index.js} +27 -26
  153. package/{iana → src/iana}/jar/language-subtags/registry/model.d.ts +0 -0
  154. package/src/iana/jar/language-subtags/registry/model.d.ts.map +1 -0
  155. package/src/iana/jar/language-subtags/registry/model.js +41 -0
  156. package/{iana → src/iana}/jar/language-subtags/tags/converters.d.ts +0 -0
  157. package/src/iana/jar/language-subtags/tags/converters.d.ts.map +1 -0
  158. package/src/iana/jar/language-subtags/tags/converters.js +128 -0
  159. package/{iana → src/iana}/jar/language-subtags/tags/index.d.ts +0 -0
  160. package/src/iana/jar/language-subtags/tags/index.d.ts.map +1 -0
  161. package/{unsd/csv → src/iana/jar/language-subtags/tags}/index.js +8 -4
  162. package/{iana → src/iana}/jar/language-subtags/tags/model.d.ts +0 -0
  163. package/src/iana/jar/language-subtags/tags/model.d.ts.map +1 -0
  164. package/{utils/jsonHelpers.js → src/iana/jar/language-subtags/tags/model.js} +2 -7
  165. package/{iana → src/iana}/jar/language-subtags/tags/tagValidation.d.ts +0 -0
  166. package/src/iana/jar/language-subtags/tags/tagValidation.d.ts.map +1 -0
  167. package/src/iana/jar/language-subtags/tags/tagValidation.js +70 -0
  168. package/{iana → src/iana}/jar/language-subtags/tags/validate.d.ts +0 -0
  169. package/src/iana/jar/language-subtags/tags/validate.d.ts.map +1 -0
  170. package/src/iana/jar/language-subtags/tags/validate.js +87 -0
  171. package/{iana → src/iana}/jar/model.d.ts +0 -0
  172. package/src/iana/jar/model.d.ts.map +1 -0
  173. package/{iana/converters.js → src/iana/jar/model.js} +8 -8
  174. package/{iana → src/iana}/language-subtags/common.d.ts +0 -0
  175. package/src/iana/language-subtags/common.d.ts.map +1 -0
  176. package/{iana/jar/language-subtags/registry/converters.js → src/iana/language-subtags/common.js} +1 -35
  177. package/{iana → src/iana}/language-subtags/converters.d.ts +0 -0
  178. package/src/iana/language-subtags/converters.d.ts.map +1 -0
  179. package/src/iana/language-subtags/converters.js +200 -0
  180. package/{iana → src/iana}/language-subtags/index.d.ts +0 -0
  181. package/src/iana/language-subtags/index.d.ts.map +1 -0
  182. package/{iana → src/iana}/language-subtags/index.js +1 -1
  183. package/{iana → src/iana}/language-subtags/jarConverters.d.ts +0 -0
  184. package/src/iana/language-subtags/jarConverters.d.ts.map +1 -0
  185. package/src/iana/language-subtags/jarConverters.js +213 -0
  186. package/{iana → src/iana}/language-subtags/model.d.ts +0 -0
  187. package/src/iana/language-subtags/model.d.ts.map +1 -0
  188. package/src/iana/language-subtags/model.js +24 -0
  189. package/{iana → src/iana}/language-subtags/scope.d.ts +0 -0
  190. package/src/iana/language-subtags/scope.d.ts.map +1 -0
  191. package/src/iana/language-subtags/scope.js +179 -0
  192. package/{iana → src/iana}/language-subtags/subtagRegistry.d.ts +2 -0
  193. package/src/iana/language-subtags/subtagRegistry.d.ts.map +1 -0
  194. package/src/iana/language-subtags/subtagRegistry.js +149 -0
  195. package/{iana → src/iana}/language-subtags/validate.d.ts +0 -0
  196. package/src/iana/language-subtags/validate.d.ts.map +1 -0
  197. package/{iana → src/iana}/language-subtags/validate.js +1 -1
  198. package/{iana → src/iana}/language-tag-extensions/converters.d.ts +0 -0
  199. package/src/iana/language-tag-extensions/converters.d.ts.map +1 -0
  200. package/src/iana/language-tag-extensions/converters.js +87 -0
  201. package/{iana → src/iana}/language-tag-extensions/extensionsRegistry.d.ts +2 -0
  202. package/src/iana/language-tag-extensions/extensionsRegistry.d.ts.map +1 -0
  203. package/src/iana/language-tag-extensions/extensionsRegistry.js +104 -0
  204. package/{iana → src/iana}/language-tag-extensions/extensionsScope.d.ts +0 -0
  205. package/src/iana/language-tag-extensions/extensionsScope.d.ts.map +1 -0
  206. package/src/iana/language-tag-extensions/extensionsScope.js +77 -0
  207. package/{iana → src/iana}/language-tag-extensions/index.d.ts +0 -0
  208. package/src/iana/language-tag-extensions/index.d.ts.map +1 -0
  209. package/{iana → src/iana}/language-tag-extensions/index.js +1 -1
  210. package/{iana → src/iana}/language-tag-extensions/jarConverters.d.ts +0 -0
  211. package/src/iana/language-tag-extensions/jarConverters.d.ts.map +1 -0
  212. package/src/iana/language-tag-extensions/jarConverters.js +102 -0
  213. package/{iana → src/iana}/language-tag-extensions/model.d.ts +0 -0
  214. package/src/iana/language-tag-extensions/model.d.ts.map +1 -0
  215. package/src/iana/language-tag-extensions/model.js +24 -0
  216. package/{iana → src/iana}/language-tag-extensions/validate.d.ts +0 -0
  217. package/src/iana/language-tag-extensions/validate.d.ts.map +1 -0
  218. package/src/iana/language-tag-extensions/validate.js +36 -0
  219. package/{iana → src/iana}/languageRegistries.d.ts +1 -0
  220. package/src/iana/languageRegistries.d.ts.map +1 -0
  221. package/src/iana/languageRegistries.js +56 -0
  222. package/{iana → src/iana}/model.d.ts +0 -0
  223. package/src/iana/model.d.ts.map +1 -0
  224. package/{iana → src/iana}/model.js +1 -1
  225. package/{iana → src/iana}/validate.d.ts +0 -0
  226. package/src/iana/validate.d.ts.map +1 -0
  227. package/{bcp47/overrides/defaultRegistries.js → src/iana/validate.js} +17 -20
  228. package/{index.d.ts → src/index.d.ts} +0 -0
  229. package/src/index.d.ts.map +1 -0
  230. package/{index.js → src/index.js} +1 -1
  231. package/{unsd → src/unsd}/areas.d.ts +0 -0
  232. package/src/unsd/areas.d.ts.map +1 -0
  233. package/src/unsd/areas.js +96 -0
  234. package/{unsd → src/unsd}/common.d.ts +0 -0
  235. package/src/unsd/common.d.ts.map +1 -0
  236. package/{iana/jar/language-subtags/model.js → src/unsd/common.js} +1 -29
  237. package/{unsd → src/unsd}/csv/converters.d.ts +0 -0
  238. package/src/unsd/csv/converters.d.ts.map +1 -0
  239. package/src/unsd/csv/converters.js +70 -0
  240. package/{unsd → src/unsd}/csv/index.d.ts +0 -0
  241. package/src/unsd/csv/index.d.ts.map +1 -0
  242. package/{iana/jar → src/unsd/csv}/index.js +1 -1
  243. package/{unsd → src/unsd}/csv/model.d.ts +0 -0
  244. package/src/unsd/csv/model.d.ts.map +1 -0
  245. package/{iana/common → src/unsd/csv}/model.js +1 -1
  246. package/{unsd → src/unsd}/defaultRegistries.d.ts +0 -0
  247. package/src/unsd/defaultRegistries.d.ts.map +1 -0
  248. package/src/unsd/defaultRegistries.js +42 -0
  249. package/{unsd → src/unsd}/index.d.ts +0 -0
  250. package/src/unsd/index.d.ts.map +1 -0
  251. package/{unsd/csv/model.js → src/unsd/index.js} +21 -1
  252. package/{unsd → src/unsd}/regionCodes.d.ts +4 -2
  253. package/src/unsd/regionCodes.d.ts.map +1 -0
  254. package/src/unsd/regionCodes.js +121 -0
  255. package/{unsd → src/unsd}/regions.d.ts +0 -0
  256. package/src/unsd/regions.d.ts.map +1 -0
  257. package/src/unsd/regions.js +77 -0
  258. package/{utils → src/utils}/index.d.ts +0 -0
  259. package/src/utils/index.d.ts.map +1 -0
  260. package/{iana/jar/language-subtags → src/utils}/index.js +4 -18
  261. package/{utils → src/utils}/jsonHelpers.d.ts +0 -0
  262. package/src/utils/jsonHelpers.d.ts.map +1 -0
  263. package/{utils/index.js → src/utils/jsonHelpers.js} +6 -17
  264. package/{utils → src/utils}/validationHelpers.d.ts +0 -0
  265. package/src/utils/validationHelpers.d.ts.map +1 -0
  266. package/src/utils/validationHelpers.js +88 -0
  267. package/bcp47/bcp47Subtags/converters.d.ts.map +0 -1
  268. package/bcp47/bcp47Subtags/index.d.ts.map +0 -1
  269. package/bcp47/bcp47Subtags/model.d.ts.map +0 -1
  270. package/bcp47/bcp47Subtags/validate.d.ts.map +0 -1
  271. package/bcp47/bcp47Subtags/validate.js +0 -74
  272. package/bcp47/common.d.ts.map +0 -1
  273. package/bcp47/common.js +0 -59
  274. package/bcp47/helpers.d.ts.map +0 -1
  275. package/bcp47/helpers.js +0 -103
  276. package/bcp47/index.d.ts.map +0 -1
  277. package/bcp47/index.js +0 -27
  278. package/bcp47/languageTag.d.ts.map +0 -1
  279. package/bcp47/languageTag.js +0 -342
  280. package/bcp47/languageTagParser.d.ts.map +0 -1
  281. package/bcp47/languageTagParser.js +0 -310
  282. package/bcp47/match/chooser.d.ts.map +0 -1
  283. package/bcp47/match/chooser.js +0 -92
  284. package/bcp47/match/common.d.ts.map +0 -1
  285. package/bcp47/match/common.js +0 -42
  286. package/bcp47/match/index.d.ts.map +0 -1
  287. package/bcp47/match/similarity.d.ts.map +0 -1
  288. package/bcp47/match/similarity.js +0 -230
  289. package/bcp47/normalization/baseNormalizer.d.ts.map +0 -1
  290. package/bcp47/normalization/baseNormalizer.js +0 -114
  291. package/bcp47/normalization/canonicalNormalizer.d.ts.map +0 -1
  292. package/bcp47/normalization/canonicalNormalizer.js +0 -110
  293. package/bcp47/normalization/common.d.ts.map +0 -1
  294. package/bcp47/normalization/common.js +0 -82
  295. package/bcp47/normalization/index.d.ts.map +0 -1
  296. package/bcp47/normalization/normalizeTag.d.ts.map +0 -1
  297. package/bcp47/normalization/normalizeTag.js +0 -105
  298. package/bcp47/normalization/preferredTagNormalizer.d.ts.map +0 -1
  299. package/bcp47/normalization/preferredTagNormalizer.js +0 -178
  300. package/bcp47/overrides/converters.d.ts.map +0 -1
  301. package/bcp47/overrides/converters.js +0 -75
  302. package/bcp47/overrides/defaultRegistries.d.ts.map +0 -1
  303. package/bcp47/overrides/index.d.ts.map +0 -1
  304. package/bcp47/overrides/index.js +0 -30
  305. package/bcp47/overrides/model.d.ts.map +0 -1
  306. package/bcp47/overrides/model.js +0 -24
  307. package/bcp47/overrides/overridesRegistry.d.ts.map +0 -1
  308. package/bcp47/overrides/overridesRegistry.js +0 -101
  309. package/bcp47/validation/baseValidator.d.ts.map +0 -1
  310. package/bcp47/validation/baseValidator.js +0 -111
  311. package/bcp47/validation/common.d.ts.map +0 -1
  312. package/bcp47/validation/common.js +0 -84
  313. package/bcp47/validation/index.d.ts.map +0 -1
  314. package/bcp47/validation/isCanonical.d.ts.map +0 -1
  315. package/bcp47/validation/isCanonical.js +0 -101
  316. package/bcp47/validation/isInPreferredForm.d.ts.map +0 -1
  317. package/bcp47/validation/isInPreferredForm.js +0 -73
  318. package/bcp47/validation/isStrictlyValid.d.ts.map +0 -1
  319. package/bcp47/validation/isStrictlyValid.js +0 -98
  320. package/bcp47/validation/isValid.d.ts.map +0 -1
  321. package/bcp47/validation/isValid.js +0 -115
  322. package/bcp47/validation/isWellFormed.d.ts.map +0 -1
  323. package/bcp47/validation/isWellFormed.js +0 -98
  324. package/bcp47/validation/validateTag.d.ts.map +0 -1
  325. package/bcp47/validation/validateTag.js +0 -159
  326. package/data/unsd/m49.csv +0 -250
  327. package/iana/common/converters.d.ts.map +0 -1
  328. package/iana/common/converters.js +0 -84
  329. package/iana/common/model.d.ts.map +0 -1
  330. package/iana/common/registeredItems.d.ts.map +0 -1
  331. package/iana/common/registeredItems.js +0 -124
  332. package/iana/common/utils.d.ts.map +0 -1
  333. package/iana/common/utils.js +0 -34
  334. package/iana/common/validate.d.ts.map +0 -1
  335. package/iana/common/validate.js +0 -61
  336. package/iana/converters.d.ts.map +0 -1
  337. package/iana/defaultRegistries.d.ts.map +0 -1
  338. package/iana/index.d.ts.map +0 -1
  339. package/iana/jar/converters.d.ts.map +0 -1
  340. package/iana/jar/index.d.ts.map +0 -1
  341. package/iana/jar/jarConverters.d.ts.map +0 -1
  342. package/iana/jar/jarConverters.js +0 -85
  343. package/iana/jar/jarModel.d.ts.map +0 -1
  344. package/iana/jar/language-subtags/converters.d.ts.map +0 -1
  345. package/iana/jar/language-subtags/index.d.ts.map +0 -1
  346. package/iana/jar/language-subtags/model.d.ts.map +0 -1
  347. package/iana/jar/language-subtags/registry/converters.d.ts.map +0 -1
  348. package/iana/jar/language-subtags/registry/index.d.ts.map +0 -1
  349. package/iana/jar/language-subtags/registry/model.d.ts.map +0 -1
  350. package/iana/jar/language-subtags/registry/model.js +0 -41
  351. package/iana/jar/language-subtags/tags/converters.d.ts.map +0 -1
  352. package/iana/jar/language-subtags/tags/converters.js +0 -128
  353. package/iana/jar/language-subtags/tags/index.d.ts.map +0 -1
  354. package/iana/jar/language-subtags/tags/model.d.ts.map +0 -1
  355. package/iana/jar/language-subtags/tags/tagValidation.d.ts.map +0 -1
  356. package/iana/jar/language-subtags/tags/tagValidation.js +0 -70
  357. package/iana/jar/language-subtags/tags/validate.d.ts.map +0 -1
  358. package/iana/jar/language-subtags/tags/validate.js +0 -87
  359. package/iana/jar/model.d.ts.map +0 -1
  360. package/iana/language-subtags/common.d.ts.map +0 -1
  361. package/iana/language-subtags/common.js +0 -24
  362. package/iana/language-subtags/converters.d.ts.map +0 -1
  363. package/iana/language-subtags/converters.js +0 -200
  364. package/iana/language-subtags/index.d.ts.map +0 -1
  365. package/iana/language-subtags/jarConverters.d.ts.map +0 -1
  366. package/iana/language-subtags/jarConverters.js +0 -213
  367. package/iana/language-subtags/model.d.ts.map +0 -1
  368. package/iana/language-subtags/model.js +0 -24
  369. package/iana/language-subtags/scope.d.ts.map +0 -1
  370. package/iana/language-subtags/scope.js +0 -179
  371. package/iana/language-subtags/subtagRegistry.d.ts.map +0 -1
  372. package/iana/language-subtags/subtagRegistry.js +0 -139
  373. package/iana/language-subtags/validate.d.ts.map +0 -1
  374. package/iana/language-tag-extensions/converters.d.ts.map +0 -1
  375. package/iana/language-tag-extensions/converters.js +0 -87
  376. package/iana/language-tag-extensions/extensionsRegistry.d.ts.map +0 -1
  377. package/iana/language-tag-extensions/extensionsRegistry.js +0 -94
  378. package/iana/language-tag-extensions/extensionsScope.d.ts.map +0 -1
  379. package/iana/language-tag-extensions/extensionsScope.js +0 -77
  380. package/iana/language-tag-extensions/index.d.ts.map +0 -1
  381. package/iana/language-tag-extensions/jarConverters.d.ts.map +0 -1
  382. package/iana/language-tag-extensions/jarConverters.js +0 -102
  383. package/iana/language-tag-extensions/model.d.ts.map +0 -1
  384. package/iana/language-tag-extensions/validate.d.ts.map +0 -1
  385. package/iana/language-tag-extensions/validate.js +0 -36
  386. package/iana/languageRegistries.d.ts.map +0 -1
  387. package/iana/languageRegistries.js +0 -49
  388. package/iana/model.d.ts.map +0 -1
  389. package/iana/validate.d.ts.map +0 -1
  390. package/iana/validate.js +0 -39
  391. package/index.d.ts.map +0 -1
  392. package/unsd/areas.d.ts.map +0 -1
  393. package/unsd/areas.js +0 -96
  394. package/unsd/common.d.ts.map +0 -1
  395. package/unsd/common.js +0 -24
  396. package/unsd/csv/converters.d.ts.map +0 -1
  397. package/unsd/csv/converters.js +0 -70
  398. package/unsd/csv/index.d.ts.map +0 -1
  399. package/unsd/csv/model.d.ts.map +0 -1
  400. package/unsd/defaultRegistries.d.ts.map +0 -1
  401. package/unsd/defaultRegistries.js +0 -42
  402. package/unsd/index.d.ts.map +0 -1
  403. package/unsd/index.js +0 -44
  404. package/unsd/regionCodes.d.ts.map +0 -1
  405. package/unsd/regionCodes.js +0 -111
  406. package/unsd/regions.d.ts.map +0 -1
  407. package/unsd/regions.js +0 -77
  408. package/utils/index.d.ts.map +0 -1
  409. package/utils/jsonHelpers.d.ts.map +0 -1
  410. package/utils/validationHelpers.d.ts.map +0 -1
  411. package/utils/validationHelpers.js +0 -88
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWFuYS9sYW5ndWFnZS1zdWJ0YWdzL3Njb3BlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUtILHVEQVNzQztBQUN0Qyw0Q0FBa0U7QUFDbEUsdUNBQThEO0FBRTlELCtEQUFnRTtBQUVoRTs7R0FFRztBQUNILE1BQU0sV0FJSixTQUFRLHFDQUF1QztJQUM3QyxZQUFzQixJQUFXLEVBQUUsUUFBaUM7UUFDaEUsS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRU0sR0FBRyxDQUFDLEtBQVk7UUFDbkIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNyQyxPQUFPLElBQUEsa0JBQU8sRUFBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFUyxjQUFjLENBQUMsS0FBWTtRQUNqQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FDSjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxvQkFJSixTQUFRLFdBQStCO0lBQ3JDLFlBQXNCLElBQVcsRUFBRSxRQUFpQztRQUNoRSxLQUFLLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTSxHQUFHLENBQUMsS0FBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM3QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFD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QyxTQUFTLEVBQUUsZUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDSjtBQUpELGdEQUlDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLHFCQUFzQixTQUFRLFFBQTZFO0lBQ3BIO1FBQ0ksS0FBSyxDQUFDLGVBQWUsRUFBRSxlQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0o7QUFKRCxzREFJQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxpQkFBa0IsU0FBUSxRQUFpRTtJQUNwRztRQUNJLEtBQUssQ0FBQyxXQUFXLEVBQUUsZUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDSjtBQUpELDhDQUlDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMiBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCAqIGFzIEl0ZW1zIGZyb20gJy4vbW9kZWwnO1xuaW1wb3J0ICogYXMgTW9kZWwgZnJvbSAnLi4vamFyL2xhbmd1YWdlLXN1YnRhZ3MvcmVnaXN0cnkvbW9kZWwnO1xuXG5pbXBvcnQge1xuICAgIEV4dExhbmdTdWJ0YWcsXG4gICAgR3JhbmRmYXRoZXJlZFRhZyxcbiAgICBMYW5ndWFnZVN1YnRhZyxcbiAgICBSZWR1bmRhbnRUYWcsXG4gICAgUmVnaW9uU3VidGFnLFxuICAgIFNjcmlwdFN1YnRhZyxcbiAgICBWYWxpZGF0ZSxcbiAgICBWYXJpYW50U3VidGFnLFxufSBmcm9tICcuLi9qYXIvbGFuZ3VhZ2Utc3VidGFncy90YWdzJztcbmltcG9ydCB7IFJlc3VsdCwgYWxsU3VjY2VlZCwgZmFpbCwgc3VjY2VlZCB9IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbkhlbHBlcnMsIHNhbml0aXplSnNvbiB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuaW1wb3J0IHsgUmVnaXN0ZXJlZEl0ZW1TY29wZSB9IGZyb20gJy4uL2NvbW1vbi9yZWdpc3RlcmVkSXRlbXMnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5jbGFzcyBTdWJ0YWdTY29wZTxcbiAgICBUVFlQRSBleHRlbmRzIE1vZGVsLlJlZ2lzdHJ5RW50cnlUeXBlLFxuICAgIFRUQUcgZXh0ZW5kcyBzdHJpbmcsXG4gICAgVElURU0gZXh0ZW5kcyBJdGVtcy5SZWdpc3RlcmVkU3VidGFnPFRUWVBFLCBUVEFHPlxuPiBleHRlbmRzIFJlZ2lzdGVyZWRJdGVtU2NvcGU8VFRZUEUsIFRUQUcsIFRJVEVNPiB7XG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHR5cGU6IFRUWVBFLCB2YWxpZGF0ZTogVmFsaWRhdGlvbkhlbHBlcnM8VFRBRz4pIHtcbiAgICAgICAgc3VwZXIodHlwZSwgdmFsaWRhdGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGQoZW50cnk6IFRJVEVNKTogUmVzdWx0PHRydWU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRlRW50cnkoZW50cnkpLm9uU3VjY2VzcygoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9pdGVtcy5zZXQoZW50cnkuc3VidGFnLCBlbnRyeSk7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZCh0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF92YWxpZGF0ZUVudHJ5KGVudHJ5OiBUSVRFTSk6IFJlc3VsdDx0cnVlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWxpZGF0ZUtleShlbnRyeS5zdWJ0YWcpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuY2xhc3MgU3VidGFnU2NvcGVXaXRoUmFuZ2U8XG4gICAgVFRZUEUgZXh0ZW5kcyBNb2RlbC5SZWdpc3RyeUVudHJ5VHlwZSxcbiAgICBUVEFHIGV4dGVuZHMgc3RyaW5nLFxuICAgIFRJVEVNIGV4dGVuZHMgSXRlbXMuUmVnaXN0ZXJlZFN1YnRhZ1dpdGhSYW5nZTxUVFlQRSwgVFRBRz5cbj4gZXh0ZW5kcyBTdWJ0YWdTY29wZTxUVFlQRSwgVFRBRywgVElURU0+IHtcbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IodHlwZTogVFRZUEUsIHZhbGlkYXRlOiBWYWxpZGF0aW9uSGVscGVyczxUVEFHPikge1xuICAgICAgICBzdXBlcih0eXBlLCB2YWxpZGF0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZChlbnRyeTogVElURU0pOiBSZXN1bHQ8dHJ1ZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGVFbnRyeShlbnRyeSkub25TdWNjZXNzKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9hZGRSYW5nZShlbnRyeSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfdmFsaWRhdGVFbnRyeShlbnRyeTogVElURU0pOiBSZXN1bHQ8dHJ1ZT4ge1xuICAgICAgICBjb25zdCBzdGFydCA9IGVudHJ5LnN1YnRhZztcbiAgICAgICAgY29uc3QgZW5kID0gZW50cnkuc3VidGFnUmFuZ2VFbmQgPz8gKCcnIGFzIFRUQUcpO1xuICAgICAgICBpZiAoZW5kKSB7XG4gICAgICAgICAgICByZXR1cm4gYWxsU3VjY2VlZChbdGhpcy5fdmFsaWRhdGVLZXkoc3RhcnQpLCB0aGlzLl92YWxpZGF0ZUtleShlbmQpLCB0aGlzLl92YWxpZGF0ZVJhbmdlKHN0YXJ0LCBlbmQpXSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRlS2V5KHN0YXJ0KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3ZhbGlkYXRlUmFuZ2Uoc3RhcnQ6IFRUQUcsIGVuZDogVFRBRyk6IFJlc3VsdDx0cnVlPiB7XG4gICAgICAgIHJldHVybiBzdGFydCA8IGVuZCA/IHN1Y2NlZWQodHJ1ZSkgOiBmYWlsKGAke3N0YXJ0fS4uJHtlbmR9OiBpbnZhbGlkIHJhbmdlYCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9hZGRSYW5nZShlbnRyeTogVElURU0pOiBSZXN1bHQ8dHJ1ZT4ge1xuICAgICAgICB0aGlzLl9pdGVtcy5zZXQoZW50cnkuc3VidGFnLCBlbnRyeSk7XG4gICAgICAgIGlmIChlbnRyeS5zdWJ0YWdSYW5nZUVuZCkge1xuICAgICAgICAgICAgbGV0IG5leHQgPSB0aGlzLl9uZXh0SW5SYW5nZShlbnRyeS5zdWJ0YWcsIGVudHJ5LnN1YnRhZ1JhbmdlRW5kKTtcbiAgICAgICAgICAgIHdoaWxlIChuZXh0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZSA9IHNhbml0aXplSnNvbih7IC4uLmVudHJ5LCBzdWJ0YWc6IG5leHQsIHN1YnRhZ1JhbmdlRW5kOiB1bmRlZmluZWQgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5faXRlbXMuc2V0KG5leHQsIGUpO1xuICAgICAgICAgICAgICAgIG5leHQgPSB0aGlzLl9uZXh0SW5SYW5nZShuZXh0LCBlbnRyeS5zdWJ0YWdSYW5nZUVuZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQodHJ1ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9uZXh0SW5SYW5nZShjdXJyZW50OiBUVEFHLCBlbmQ6IFRUQUcpOiBUVEFHIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKGN1cnJlbnQgPj0gZW5kKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5leHQgPSBBcnJheS5mcm9tKGN1cnJlbnQpO1xuICAgICAgICBmb3IgKGxldCBpID0gbmV4dC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaWYgKG5leHRbaV0udG9Mb3dlckNhc2UoKSA8ICd6Jykge1xuICAgICAgICAgICAgICAgIG5leHRbaV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG5leHRbaV0uY2hhckNvZGVBdCgwKSArIDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXh0W2ldID0gJ2EnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl92YWxpZGF0ZS50b0Nhbm9uaWNhbChuZXh0LmpvaW4oJycpKS5nZXRWYWx1ZU9yVGhyb3coKTtcbiAgICB9XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmNsYXNzIFRhZ1Njb3BlPFxuICAgIFRUWVBFIGV4dGVuZHMgTW9kZWwuUmVnaXN0cnlFbnRyeVR5cGUsXG4gICAgVFRBRyBleHRlbmRzIHN0cmluZyxcbiAgICBUSVRFTSBleHRlbmRzIEl0ZW1zLlJlZ2lzdGVyZWRUYWc8VFRZUEUsIFRUQUc+XG4+IGV4dGVuZHMgUmVnaXN0ZXJlZEl0ZW1TY29wZTxUVFlQRSwgVFRBRywgVElURU0+IHtcbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IodHlwZTogVFRZUEUsIHZhbGlkYXRlOiBWYWxpZGF0aW9uSGVscGVyczxUVEFHPikge1xuICAgICAgICBzdXBlcih0eXBlLCB2YWxpZGF0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZChlbnRyeTogVElURU0pOiBSZXN1bHQ8dHJ1ZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGVFbnRyeShlbnRyeSkub25TdWNjZXNzKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1zLnNldChlbnRyeS50YWcsIGVudHJ5KTtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKHRydWUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3ZhbGlkYXRlRW50cnkoZW50cnk6IFRJVEVNKTogUmVzdWx0PHRydWU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRlS2V5KGVudHJ5LnRhZyk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNsYXNzIExhbmd1YWdlU3VidGFnU2NvcGUgZXh0ZW5kcyBTdWJ0YWdTY29wZVdpdGhSYW5nZTwnbGFuZ3VhZ2UnLCBMYW5ndWFnZVN1YnRhZywgSXRlbXMuUmVnaXN0ZXJlZExhbmd1YWdlPiB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcignbGFuZ3VhZ2UnLCBWYWxpZGF0ZS5sYW5ndWFnZVN1YnRhZyk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNsYXNzIEV4dExhbmdTdWJ0YWdTY29wZSBleHRlbmRzIFN1YnRhZ1Njb3BlPCdleHRsYW5nJywgRXh0TGFuZ1N1YnRhZywgSXRlbXMuUmVnaXN0ZXJlZEV4dExhbmc+IHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCdleHRsYW5nJywgVmFsaWRhdGUuZXh0bGFuZ1N1YnRhZyk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNsYXNzIFNjcmlwdFN1YnRhZ1Njb3BlIGV4dGVuZHMgU3VidGFnU2NvcGVXaXRoUmFuZ2U8J3NjcmlwdCcsIFNjcmlwdFN1YnRhZywgSXRlbXMuUmVnaXN0ZXJlZFNjcmlwdD4ge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoJ3NjcmlwdCcsIFZhbGlkYXRlLnNjcmlwdFN1YnRhZyk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNsYXNzIFJlZ2lvblN1YnRhZ1Njb3BlIGV4dGVuZHMgU3VidGFnU2NvcGVXaXRoUmFuZ2U8J3JlZ2lvbicsIFJlZ2lvblN1YnRhZywgSXRlbXMuUmVnaXN0ZXJlZFJlZ2lvbj4ge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoJ3JlZ2lvbicsIFZhbGlkYXRlLnJlZ2lvblN1YnRhZyk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNsYXNzIFZhcmlhbnRTdWJ0YWdTY29wZSBleHRlbmRzIFN1YnRhZ1Njb3BlPCd2YXJpYW50JywgVmFyaWFudFN1YnRhZywgSXRlbXMuUmVnaXN0ZXJlZFZhcmlhbnQ+IHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCd2YXJpYW50JywgVmFsaWRhdGUudmFyaWFudFN1YnRhZyk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNsYXNzIEdyYW5kZmF0aGVyZWRUYWdTY29wZSBleHRlbmRzIFRhZ1Njb3BlPCdncmFuZGZhdGhlcmVkJywgR3JhbmRmYXRoZXJlZFRhZywgSXRlbXMuUmVnaXN0ZXJlZEdyYW5kZmF0aGVyZWRUYWc+IHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCdncmFuZGZhdGhlcmVkJywgVmFsaWRhdGUuZ3JhbmRmYXRoZXJlZFRhZyk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNsYXNzIFJlZHVuZGFudFRhZ1Njb3BlIGV4dGVuZHMgVGFnU2NvcGU8J3JlZHVuZGFudCcsIFJlZHVuZGFudFRhZywgSXRlbXMuUmVnaXN0ZXJlZFJlZHVuZGFudFRhZz4ge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoJ3JlZHVuZGFudCcsIFZhbGlkYXRlLnJlZHVuZGFudFRhZyk7XG4gICAgfVxufVxuIl19
@@ -29,6 +29,8 @@ export declare class LanguageSubtagRegistry {
29
29
  */
30
30
  protected constructor(registry: RegistryFile);
31
31
  static create(registry: RegistryFile): Result<LanguageSubtagRegistry>;
32
+ static createFromJson(from: unknown): Result<LanguageSubtagRegistry>;
33
+ static loadDefault(): Result<LanguageSubtagRegistry>;
32
34
  static load(root: string): Result<LanguageSubtagRegistry>;
33
35
  static loadJsonRegistryFile(root: string): Result<LanguageSubtagRegistry>;
34
36
  static loadTxtRegistryFile(root: string): Result<LanguageSubtagRegistry>;
@@ -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;AAG1E;;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,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,sBAAsB,CAAC;WAI7D,WAAW,IAAI,MAAM,CAAC,sBAAsB,CAAC;WAI7C,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,149 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
47
+ return (mod && mod.__esModule) ? mod : { "default": mod };
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.LanguageSubtagRegistry = void 0;
51
+ const Converters = __importStar(require("./converters"));
52
+ const JarConverters = __importStar(require("./jarConverters"));
53
+ const Scope = __importStar(require("./scope"));
54
+ const path = __importStar(require("path"));
55
+ const ts_utils_1 = require("@fgv/ts-utils");
56
+ const language_subtags_json_1 = __importDefault(require("../../../data/iana/language-subtags.json"));
57
+ /**
58
+ * @public
59
+ */
60
+ class LanguageSubtagRegistry {
61
+ /**
62
+ * @param registry - The contents of the registry file
63
+ * from which the data is loaded.
64
+ * @internal
65
+ */
66
+ constructor(registry) {
67
+ this.languages = new Scope.LanguageSubtagScope();
68
+ this.extlangs = new Scope.ExtLangSubtagScope();
69
+ this.scripts = new Scope.ScriptSubtagScope();
70
+ this.regions = new Scope.RegionSubtagScope();
71
+ this.variants = new Scope.VariantSubtagScope();
72
+ this.collections = new Scope.LanguageSubtagScope();
73
+ this.macrolanguages = new Scope.LanguageSubtagScope();
74
+ this.privateUse = new Scope.LanguageSubtagScope();
75
+ this.special = new Scope.LanguageSubtagScope();
76
+ this.grandfathered = new Scope.GrandfatheredTagScope();
77
+ this.redundant = new Scope.RedundantTagScope();
78
+ this.fileDate = registry.fileDate;
79
+ this._all = registry.entries;
80
+ for (const entry of this._all) {
81
+ switch (entry.type) {
82
+ case 'language':
83
+ this.languages.add(entry);
84
+ if (entry.scope === 'macrolanguage') {
85
+ this.macrolanguages.add(entry);
86
+ }
87
+ else if (entry.scope === 'collection') {
88
+ this.collections.add(entry);
89
+ }
90
+ else if (entry.scope === 'private-use') {
91
+ this.privateUse.add(entry);
92
+ }
93
+ else if (entry.scope === 'special') {
94
+ this.special.add(entry);
95
+ }
96
+ break;
97
+ case 'extlang':
98
+ this.extlangs.add(entry);
99
+ break;
100
+ case 'script':
101
+ this.scripts.add(entry);
102
+ break;
103
+ case 'region':
104
+ this.regions.add(entry);
105
+ break;
106
+ case 'variant':
107
+ this.variants.add(entry);
108
+ break;
109
+ case 'grandfathered':
110
+ this.grandfathered.add(entry);
111
+ break;
112
+ case 'redundant':
113
+ this.redundant.add(entry);
114
+ break;
115
+ }
116
+ }
117
+ }
118
+ static create(registry) {
119
+ return (0, ts_utils_1.captureResult)(() => {
120
+ return new LanguageSubtagRegistry(registry);
121
+ });
122
+ }
123
+ static createFromJson(from) {
124
+ return Converters.registryFile.convert(from).onSuccess(LanguageSubtagRegistry.create);
125
+ }
126
+ static loadDefault() {
127
+ return this.createFromJson(language_subtags_json_1.default);
128
+ }
129
+ static load(root) {
130
+ return (0, ts_utils_1.captureResult)(() => {
131
+ const registry = Converters.loadLanguageSubtagsJsonFileSync(path.join(root)).orThrow();
132
+ return new LanguageSubtagRegistry(registry);
133
+ });
134
+ }
135
+ static loadJsonRegistryFile(root) {
136
+ return (0, ts_utils_1.captureResult)(() => {
137
+ const registry = JarConverters.loadJsonSubtagRegistryFileSync(path.join(root)).orThrow();
138
+ return new LanguageSubtagRegistry(registry);
139
+ });
140
+ }
141
+ static loadTxtRegistryFile(root) {
142
+ return (0, ts_utils_1.captureResult)(() => {
143
+ const registry = JarConverters.loadTxtSubtagRegistryFileSync(path.join(root)).orThrow();
144
+ return new LanguageSubtagRegistry(registry);
145
+ });
146
+ }
147
+ }
148
+ exports.LanguageSubtagRegistry = LanguageSubtagRegistry;
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VidGFnUmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWFuYS9sYW5ndWFnZS1zdWJ0YWdzL3N1YnRhZ1JlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgseURBQTJDO0FBQzNDLCtEQUFpRDtBQUNqRCwrQ0FBaUM7QUFDakMsMkNBQTZCO0FBRzdCLDRDQUFzRDtBQUV0RCxxR0FBc0U7QUFFdEU7O0dBRUc7QUFDSCxNQUFhLHNCQUFzQjtJQXFCL0I7Ozs7T0FJRztJQUNILFlBQXNCLFFBQXNCO1FBeEI1QixjQUFTLEdBQThCLElBQUksS0FBSyxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDdkUsYUFBUSxHQUE2QixJQUFJLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3BFLFlBQU8sR0FBNEIsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNqRSxZQUFPLEdBQTRCLElBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDakUsYUFBUSxHQUE2QixJQUFJLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRXBFLGdCQUFXLEdBQThCLElBQUksS0FBSyxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDekUsbUJBQWMsR0FBOEIsSUFBSSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUM1RSxlQUFVLEdBQThCLElBQUksS0FBSyxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDeEUsWUFBTyxHQUE4QixJQUFJLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRXJFLGtCQUFhLEdBQWdDLElBQUksS0FBSyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDL0UsY0FBUyxHQUE0QixJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBYS9FLElBQUks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LE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDekYsT0FBTyxJQUFJLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFZO1FBQzFDLE9BQU8sSUFBQSx3QkFBYSxFQUFDLEdBQUcsRUFBRTtZQUN0QixNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3hGLE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSjtBQW5HRCx3REFtR0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0ICogYXMgQ29udmVydGVycyBmcm9tICcuL2NvbnZlcnRlcnMnO1xuaW1wb3J0ICogYXMgSmFyQ29udmVydGVycyBmcm9tICcuL2phckNvbnZlcnRlcnMnO1xuaW1wb3J0ICogYXMgU2NvcGUgZnJvbSAnLi9zY29wZSc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgeyBSZWdpc3RlcmVkSXRlbSwgUmVnaXN0cnlGaWxlIH0gZnJvbSAnLi9tb2RlbCc7XG5pbXBvcnQgeyBSZXN1bHQsIGNhcHR1cmVSZXN1bHQgfSBmcm9tICdAZmd2L3RzLXV0aWxzJztcbmltcG9ydCB7IFllYXJNb250aERheVNwZWMgfSBmcm9tICcuLi9qYXIvbGFuZ3VhZ2Utc3VidGFncy9yZWdpc3RyeS9tb2RlbCc7XG5pbXBvcnQgZGVmYXVsdFN1YnRhZ3MgZnJvbSAnLi4vLi4vLi4vZGF0YS9pYW5hL2xhbmd1YWdlLXN1YnRhZ3MuanNvbic7XG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VTdWJ0YWdSZWdpc3RyeSB7XG4gICAgcHVibGljIHJlYWRvbmx5IGZpbGVEYXRlOiBZZWFyTW9udGhEYXlTcGVjO1xuICAgIHB1YmxpYyByZWFkb25seSBsYW5ndWFnZXM6IFNjb3BlLkxhbmd1YWdlU3VidGFnU2NvcGUgPSBuZXcgU2NvcGUuTGFuZ3VhZ2VTdWJ0YWdTY29wZSgpO1xuICAgIHB1YmxpYyByZWFkb25seSBleHRsYW5nczogU2NvcGUuRXh0TGFuZ1N1YnRhZ1Njb3BlID0gbmV3IFNjb3BlLkV4dExhbmdTdWJ0YWdTY29wZSgpO1xuICAgIHB1YmxpYyByZWFkb25seSBzY3JpcHRzOiBTY29wZS5TY3JpcHRTdWJ0YWdTY29wZSA9IG5ldyBTY29wZS5TY3JpcHRTdWJ0YWdTY29wZSgpO1xuICAgIHB1YmxpYyByZWFkb25seSByZWdpb25zOiBTY29wZS5SZWdpb25TdWJ0YWdTY29wZSA9IG5ldyBTY29wZS5SZWdpb25TdWJ0YWdTY29wZSgpO1xuICAgIHB1YmxpYyByZWFkb25seSB2YXJpYW50czogU2NvcGUuVmFyaWFudFN1YnRhZ1Njb3BlID0gbmV3IFNjb3BlLlZhcmlhbnRTdWJ0YWdTY29wZSgpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbGxlY3Rpb25zOiBTY29wZS5MYW5ndWFnZVN1YnRhZ1Njb3BlID0gbmV3IFNjb3BlLkxhbmd1YWdlU3VidGFnU2NvcGUoKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbWFjcm9sYW5ndWFnZXM6IFNjb3BlLkxhbmd1YWdlU3VidGFnU2NvcGUgPSBuZXcgU2NvcGUuTGFuZ3VhZ2VTdWJ0YWdTY29wZSgpO1xuICAgIHB1YmxpYyByZWFkb25seSBwcml2YXRlVXNlOiBTY29wZS5MYW5ndWFnZVN1YnRhZ1Njb3BlID0gbmV3IFNjb3BlLkxhbmd1YWdlU3VidGFnU2NvcGUoKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3BlY2lhbDogU2NvcGUuTGFuZ3VhZ2VTdWJ0YWdTY29wZSA9IG5ldyBTY29wZS5MYW5ndWFnZVN1YnRhZ1Njb3BlKCk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgZ3JhbmRmYXRoZXJlZDogU2NvcGUuR3JhbmRmYXRoZXJlZFRhZ1Njb3BlID0gbmV3IFNjb3BlLkdyYW5kZmF0aGVyZWRUYWdTY29wZSgpO1xuICAgIHB1YmxpYyByZWFkb25seSByZWR1bmRhbnQ6IFNjb3BlLlJlZHVuZGFudFRhZ1Njb3BlID0gbmV3IFNjb3BlLlJlZHVuZGFudFRhZ1Njb3BlKCk7XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2FsbDogUmVnaXN0ZXJlZEl0ZW1bXTtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSByZWdpc3RyeSAtIFRoZSBjb250ZW50cyBvZiB0aGUgcmVnaXN0cnkgZmlsZVxuICAgICAqIGZyb20gd2hpY2ggdGhlIGRhdGEgaXMgbG9hZGVkLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihyZWdpc3RyeTogUmVnaXN0cnlGaWxlKSB7XG4gICAgICAgIHRoaXMuZmlsZURhdGUgPSByZWdpc3RyeS5maWxlRGF0ZTtcbiAgICAgICAgdGhpcy5fYWxsID0gcmVnaXN0cnkuZW50cmllcztcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiB0aGlzLl9hbGwpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoZW50cnkudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2xhbmd1YWdlJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZXMuYWRkKGVudHJ5KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LnNjb3BlID09PSAnbWFjcm9sYW5ndWFnZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFjcm9sYW5ndWFnZXMuYWRkKGVudHJ5KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbnRyeS5zY29wZSA9PT0gJ2NvbGxlY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbGxlY3Rpb25zLmFkZChlbnRyeSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZW50cnkuc2NvcGUgPT09ICdwcml2YXRlLXVzZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJpdmF0ZVVzZS5hZGQoZW50cnkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVudHJ5LnNjb3BlID09PSAnc3BlY2lhbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3BlY2lhbC5hZGQoZW50cnkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2V4dGxhbmcnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmV4dGxhbmdzLmFkZChlbnRyeSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3NjcmlwdCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2NyaXB0cy5hZGQoZW50cnkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdyZWdpb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2lvbnMuYWRkKGVudHJ5KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAndmFyaWFudCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFyaWFudHMuYWRkKGVudHJ5KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZ3JhbmRmYXRoZXJlZCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JhbmRmYXRoZXJlZC5hZGQoZW50cnkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdyZWR1bmRhbnQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZHVuZGFudC5hZGQoZW50cnkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlKHJlZ2lzdHJ5OiBSZWdpc3RyeUZpbGUpOiBSZXN1bHQ8TGFuZ3VhZ2VTdWJ0YWdSZWdpc3RyeT4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IExhbmd1YWdlU3VidGFnUmVnaXN0cnkocmVnaXN0cnkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUZyb21Kc29uKGZyb206IHVua25vd24pOiBSZXN1bHQ8TGFuZ3VhZ2VTdWJ0YWdSZWdpc3RyeT4ge1xuICAgICAgICByZXR1cm4gQ29udmVydGVycy5yZWdpc3RyeUZpbGUuY29udmVydChmcm9tKS5vblN1Y2Nlc3MoTGFuZ3VhZ2VTdWJ0YWdSZWdpc3RyeS5jcmVhdGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgbG9hZERlZmF1bHQoKTogUmVzdWx0PExhbmd1YWdlU3VidGFnUmVnaXN0cnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRnJvbUpzb24oZGVmYXVsdFN1YnRhZ3MpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgbG9hZChyb290OiBzdHJpbmcpOiBSZXN1bHQ8TGFuZ3VhZ2VTdWJ0YWdSZWdpc3RyeT4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZWdpc3RyeSA9IENvbnZlcnRlcnMubG9hZExhbmd1YWdlU3VidGFnc0pzb25GaWxlU3luYyhwYXRoLmpvaW4ocm9vdCkpLm9yVGhyb3coKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTGFuZ3VhZ2VTdWJ0YWdSZWdpc3RyeShyZWdpc3RyeSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgbG9hZEpzb25SZWdpc3RyeUZpbGUocm9vdDogc3RyaW5nKTogUmVzdWx0PExhbmd1YWdlU3VidGFnUmVnaXN0cnk+IHtcbiAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVnaXN0cnkgPSBKYXJDb252ZXJ0ZXJzLmxvYWRKc29uU3VidGFnUmVnaXN0cnlGaWxlU3luYyhwYXRoLmpvaW4ocm9vdCkpLm9yVGhyb3coKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTGFuZ3VhZ2VTdWJ0YWdSZWdpc3RyeShyZWdpc3RyeSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgbG9hZFR4dFJlZ2lzdHJ5RmlsZShyb290OiBzdHJpbmcpOiBSZXN1bHQ8TGFuZ3VhZ2VTdWJ0YWdSZWdpc3RyeT4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZWdpc3RyeSA9IEphckNvbnZlcnRlcnMubG9hZFR4dFN1YnRhZ1JlZ2lzdHJ5RmlsZVN5bmMocGF0aC5qb2luKHJvb3QpKS5vclRocm93KCk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IExhbmd1YWdlU3VidGFnUmVnaXN0cnkocmVnaXN0cnkpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../../src/iana/language-subtags/validate.ts"],"names":[],"mappings":"AAsBA,cAAc,uCAAuC,CAAC"}
@@ -36,4 +36,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
36
  };
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
38
  __exportStar(require("../jar/language-subtags/tags/validate"), exports);
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWFuYS9sYW5ndWFnZS1zdWJ0YWdzL3ZhbGlkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCx3RUFBc0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi4vamFyL2xhbmd1YWdlLXN1YnRhZ3MvdGFncy92YWxpZGF0ZSc7XG4iXX0=
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWFuYS9sYW5ndWFnZS1zdWJ0YWdzL3ZhbGlkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCx3RUFBc0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi4vamFyL2xhbmd1YWdlLXN1YnRhZ3MvdGFncy92YWxpZGF0ZSc7XG4iXX0=
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pYW5hL2xhbmd1YWdlLXRhZy1leHRlbnNpb25zL2NvbnZlcnRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCxpREFBbUM7QUFHbkMscURBQXVDO0FBRXZDLDRDQUFtRDtBQUNuRCw0Q0FBd0Q7QUFDeEQscURBQXFEO0FBRXJEOztHQUVHO0FBQ1UsUUFBQSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDO0FBRXhFOztHQUVHO0FBQ1UsUUFBQSxvQkFBb0IsR0FBRyxxQkFBVSxDQUFDLFlBQVksQ0FDdkQ7SUFDSSxVQUFVLEVBQUUsMEJBQWtCO0lBQzlCLFdBQVcsRUFBRSxxQkFBVSxDQUFDLFdBQVc7SUFDbkMsUUFBUSxFQUFFLHFCQUFVLENBQUMsV0FBVztJQUNoQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0I7SUFDdkMsR0FBRyxFQUFFLHFCQUFVLENBQUMsTUFBTTtJQUN0QixTQUFTLEVBQUUscUJBQVUsQ0FBQyxNQUFNO0lBQzVCLFlBQVksRUFBRSxxQkFBVSxDQUFDLE1BQU07SUFDL0IsV0FBVyxFQUFFLHFCQUFVLENBQUMsTUFBTTtJQUM5QixHQUFHLEVBQUUscUJBQVUsQ0FBQyxNQUFNO0NBQ3pCLEVBQ0Q7SUFDSSxXQUFXLEVBQUUsbUNBQW1DO0NBQ25ELENBQ0osQ0FBQztBQUVGOztHQUVHO0FBQ1UsUUFBQSxxQkFBcUIsR0FBRyxJQUFBLDBCQUFhLEVBQUMsNEJBQW9CLENBQUMsQ0FBQztBQUV6RTs7Ozs7R0FLRztBQUNILFNBQWdCLHFDQUFxQyxDQUFDLElBQVk7SUFDOUQsT0FBTyxJQUFBLDBCQUFtQixFQUFDLElBQUksRUFBRSw2QkFBcUIsQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFGRCxzRkFFQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjIgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBJYW5hIGZyb20gJy4uLy4uL2lhbmEnO1xuXG5pbXBvcnQgKiBhcyBNb2RlbCBmcm9tICcuL21vZGVsJztcbmltcG9ydCAqIGFzIFZhbGlkYXRlIGZyb20gJy4vdmFsaWRhdGUnO1xuXG5pbXBvcnQgeyBDb252ZXJ0ZXJzLCBSZXN1bHQgfSBmcm9tICdAZmd2L3RzLXV0aWxzJztcbmltcG9ydCB7IGNvbnZlcnRKc29uRmlsZVN5bmMgfSBmcm9tICdAZmd2L3RzLWpzb24vZmlsZSc7XG5pbXBvcnQgeyBkYXRlZFJlZ2lzdHJ5IH0gZnJvbSAnLi4vY29tbW9uL2NvbnZlcnRlcnMnO1xuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGV4dGVuc2lvblNpbmdsZXRvbiA9IFZhbGlkYXRlLmV4dGVuc2lvblNpbmdsZXRvbi5jb252ZXJ0ZXI7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBsYW5ndWFnZVRhZ0V4dGVuc2lvbiA9IENvbnZlcnRlcnMuc3RyaWN0T2JqZWN0PE1vZGVsLkxhbmd1YWdlVGFnRXh0ZW5zaW9uPihcbiAgICB7XG4gICAgICAgIGlkZW50aWZpZXI6IGV4dGVuc2lvblNpbmdsZXRvbixcbiAgICAgICAgZGVzY3JpcHRpb246IENvbnZlcnRlcnMuc3RyaW5nQXJyYXksXG4gICAgICAgIGNvbW1lbnRzOiBDb252ZXJ0ZXJzLnN0cmluZ0FycmF5LFxuICAgICAgICBhZGRlZDogSWFuYS5Db252ZXJ0ZXJzLnllYXJNb250aERheVNwZWMsXG4gICAgICAgIHJmYzogQ29udmVydGVycy5zdHJpbmcsXG4gICAgICAgIGF1dGhvcml0eTogQ29udmVydGVycy5zdHJpbmcsXG4gICAgICAgIGNvbnRhY3RFbWFpbDogQ29udmVydGVycy5zdHJpbmcsXG4gICAgICAgIG1haWxpbmdMaXN0OiBDb252ZXJ0ZXJzLnN0cmluZyxcbiAgICAgICAgdXJsOiBDb252ZXJ0ZXJzLnN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdyZWdpc3RlcmVkIGxhbmd1YWdlIHRhZyBleHRlbnNpb24nLFxuICAgIH1cbik7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBsYW5ndWFnZVRhZ0V4dGVuc2lvbnMgPSBkYXRlZFJlZ2lzdHJ5KGxhbmd1YWdlVGFnRXh0ZW5zaW9uKTtcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSBwYXRoIC0gcGF0aCBmcm9tIHdoaWNoIHRoZSBleHRlbnNpb25zIHJlZ2lzdHJ5IGlzIHRvIGJlIGxvYWRlZC5cbiAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHRoZSBsb2FkZWQgbGFuZ3VhZ2UgdGFnIGV4dGVuc2lvbnMgZGF0YSwgb1xuICogb3IgYEZhaWx1cmVgIHdpdGggZGV0YWlscyBpZiBhbiBlcnJvciBvY2N1cnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkTGFuZ3VhZ2VUYWdFeHRlbnNpb25zSnNvbkZpbGVTeW5jKHBhdGg6IHN0cmluZyk6IFJlc3VsdDxNb2RlbC5MYW5ndWFnZVRhZ0V4dGVuc2lvbnM+IHtcbiAgICByZXR1cm4gY29udmVydEpzb25GaWxlU3luYyhwYXRoLCBsYW5ndWFnZVRhZ0V4dGVuc2lvbnMpO1xufVxuIl19
@@ -19,6 +19,8 @@ export declare class LanguageTagExtensionRegistry {
19
19
  */
20
20
  protected constructor(registry: Model.LanguageTagExtensions);
21
21
  static create(registry: Model.LanguageTagExtensions): Result<LanguageTagExtensionRegistry>;
22
+ static createFromJson(from: unknown): Result<LanguageTagExtensionRegistry>;
23
+ static loadDefault(): Result<LanguageTagExtensionRegistry>;
22
24
  static load(path: string): Result<LanguageTagExtensionRegistry>;
23
25
  static loadJsonRegistryFile(path: string): Result<LanguageTagExtensionRegistry>;
24
26
  static loadTxtRegistryFile(path: string): Result<LanguageTagExtensionRegistry>;
@@ -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,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,4BAA4B,CAAC;WAInE,WAAW,IAAI,MAAM,CAAC,4BAA4B,CAAC;WAInD,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"}
@@ -0,0 +1,104 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
47
+ return (mod && mod.__esModule) ? mod : { "default": mod };
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.LanguageTagExtensionRegistry = void 0;
51
+ const Converters = __importStar(require("./converters"));
52
+ const JarConverters = __importStar(require("./jarConverters"));
53
+ const ts_utils_1 = require("@fgv/ts-utils");
54
+ const extensionsScope_1 = require("./extensionsScope");
55
+ const language_tag_extensions_json_1 = __importDefault(require("../../../data/iana/language-tag-extensions.json"));
56
+ /**
57
+ * @public
58
+ */
59
+ class LanguageTagExtensionRegistry {
60
+ /**
61
+ * Constructs an {@link Iana.LanguageTagExtensions.LanguageTagExtensionRegistry}.
62
+ * @param registry - Registry file from which the registry is to be constructed.
63
+ * @internal
64
+ */
65
+ constructor(registry) {
66
+ this.extensions = new extensionsScope_1.TagExtensionsScope();
67
+ this.fileDate = registry.fileDate;
68
+ this._all = registry.entries;
69
+ for (const entry of this._all) {
70
+ this.extensions.add(entry).orThrow();
71
+ }
72
+ }
73
+ static create(registry) {
74
+ return (0, ts_utils_1.captureResult)(() => {
75
+ return new LanguageTagExtensionRegistry(registry);
76
+ });
77
+ }
78
+ static createFromJson(from) {
79
+ return Converters.languageTagExtensions.convert(from).onSuccess(LanguageTagExtensionRegistry.create);
80
+ }
81
+ static loadDefault() {
82
+ return this.createFromJson(language_tag_extensions_json_1.default);
83
+ }
84
+ static load(path) {
85
+ return (0, ts_utils_1.captureResult)(() => {
86
+ const registry = Converters.loadLanguageTagExtensionsJsonFileSync(path).orThrow();
87
+ return new LanguageTagExtensionRegistry(registry);
88
+ });
89
+ }
90
+ static loadJsonRegistryFile(path) {
91
+ return (0, ts_utils_1.captureResult)(() => {
92
+ const registry = JarConverters.loadJsonLanguageTagExtensionsRegistryFileSync(path).orThrow();
93
+ return new LanguageTagExtensionRegistry(registry);
94
+ });
95
+ }
96
+ static loadTxtRegistryFile(path) {
97
+ return (0, ts_utils_1.captureResult)(() => {
98
+ const registry = JarConverters.loadTxtLanguageTagExtensionsRegistryFileSync(path).orThrow();
99
+ return new LanguageTagExtensionRegistry(registry);
100
+ });
101
+ }
102
+ }
103
+ exports.LanguageTagExtensionRegistry = LanguageTagExtensionRegistry;
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9uc1JlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2lhbmEvbGFuZ3VhZ2UtdGFnLWV4dGVuc2lvbnMvZXh0ZW5zaW9uc1JlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgseURBQTJDO0FBQzNDLCtEQUFpRDtBQUdqRCw0Q0FBc0Q7QUFFdEQsdURBQXVEO0FBRXZELG1IQUFnRjtBQUNoRjs7R0FFRztBQUNILE1BQWEsNEJBQTRCO0lBU3JDOzs7O09BSUc7SUFDSCxZQUFzQixRQUFxQztRQVozQyxlQUFVLEdBQXVCLElBQUksb0NBQWtCLEVBQUUsQ0FBQztRQWF0RSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDbEMsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO1FBQzdCLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUN4QztJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQXFDO1FBQ3RELE9BQU8sSUFBQSx3QkFBYSxFQUFDLEdBQUcsRUFBRTtZQUN0QixPQUFPLElBQUksNEJBQTRCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFhO1FBQ3RDLE9BQU8sVUFBVSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsNEJBQTRCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekcsQ0FBQztJQUVNLE1BQU0sQ0FBQyxXQUFXO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQ0FBaUIsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQVk7UUFDM0IsT0FBTyxJQUFBLHdCQUFhLEVBQUMsR0FBRyxFQUFFO1lBQ3RCLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxxQ0FBcUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsRixPQUFPLElBQUksNEJBQTRCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sTUFBTSxDQUFDLG9CQUFvQixDQUFDLElBQVk7UUFDM0MsT0FBTyxJQUFBLHdCQUFhLEVBQUMsR0FBRyxFQUFFO1lBQ3RCLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyw2Q0FBNkMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM3RixPQUFPLElBQUksNEJBQTRCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLElBQVk7UUFDMUMsT0FBTyxJQUFBLHdCQUFhLEVBQUMsR0FBRyxFQUFFO1lBQ3RCLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyw0Q0FBNEMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM1RixPQUFPLElBQUksNEJBQTRCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0o7QUF4REQsb0VBd0RDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMiBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCAqIGFzIENvbnZlcnRlcnMgZnJvbSAnLi9jb252ZXJ0ZXJzJztcbmltcG9ydCAqIGFzIEphckNvbnZlcnRlcnMgZnJvbSAnLi9qYXJDb252ZXJ0ZXJzJztcbmltcG9ydCAqIGFzIE1vZGVsIGZyb20gJy4uLy4uL2lhbmEvbGFuZ3VhZ2UtdGFnLWV4dGVuc2lvbnMvbW9kZWwnO1xuXG5pbXBvcnQgeyBSZXN1bHQsIGNhcHR1cmVSZXN1bHQgfSBmcm9tICdAZmd2L3RzLXV0aWxzJztcblxuaW1wb3J0IHsgVGFnRXh0ZW5zaW9uc1Njb3BlIH0gZnJvbSAnLi9leHRlbnNpb25zU2NvcGUnO1xuaW1wb3J0IHsgWWVhck1vbnRoRGF5U3BlYyB9IGZyb20gJy4uL21vZGVsJztcbmltcG9ydCBkZWZhdWx0RXh0ZW5zaW9ucyBmcm9tICcuLi8uLi8uLi9kYXRhL2lhbmEvbGFuZ3VhZ2UtdGFnLWV4dGVuc2lvbnMuanNvbic7XG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNsYXNzIExhbmd1YWdlVGFnRXh0ZW5zaW9uUmVnaXN0cnkge1xuICAgIHB1YmxpYyByZWFkb25seSBmaWxlRGF0ZTogWWVhck1vbnRoRGF5U3BlYztcbiAgICBwdWJsaWMgcmVhZG9ubHkgZXh0ZW5zaW9uczogVGFnRXh0ZW5zaW9uc1Njb3BlID0gbmV3IFRhZ0V4dGVuc2lvbnNTY29wZSgpO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9hbGw6IE1vZGVsLkxhbmd1YWdlVGFnRXh0ZW5zaW9uW107XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGFuIHtAbGluayBJYW5hLkxhbmd1YWdlVGFnRXh0ZW5zaW9ucy5MYW5ndWFnZVRhZ0V4dGVuc2lvblJlZ2lzdHJ5fS5cbiAgICAgKiBAcGFyYW0gcmVnaXN0cnkgLSBSZWdpc3RyeSBmaWxlIGZyb20gd2hpY2ggdGhlIHJlZ2lzdHJ5IGlzIHRvIGJlIGNvbnN0cnVjdGVkLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihyZWdpc3RyeTogTW9kZWwuTGFuZ3VhZ2VUYWdFeHRlbnNpb25zKSB7XG4gICAgICAgIHRoaXMuZmlsZURhdGUgPSByZWdpc3RyeS5maWxlRGF0ZTtcbiAgICAgICAgdGhpcy5fYWxsID0gcmVnaXN0cnkuZW50cmllcztcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiB0aGlzLl9hbGwpIHtcbiAgICAgICAgICAgIHRoaXMuZXh0ZW5zaW9ucy5hZGQoZW50cnkpLm9yVGhyb3coKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlKHJlZ2lzdHJ5OiBNb2RlbC5MYW5ndWFnZVRhZ0V4dGVuc2lvbnMpOiBSZXN1bHQ8TGFuZ3VhZ2VUYWdFeHRlbnNpb25SZWdpc3RyeT4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IExhbmd1YWdlVGFnRXh0ZW5zaW9uUmVnaXN0cnkocmVnaXN0cnkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUZyb21Kc29uKGZyb206IHVua25vd24pOiBSZXN1bHQ8TGFuZ3VhZ2VUYWdFeHRlbnNpb25SZWdpc3RyeT4ge1xuICAgICAgICByZXR1cm4gQ29udmVydGVycy5sYW5ndWFnZVRhZ0V4dGVuc2lvbnMuY29udmVydChmcm9tKS5vblN1Y2Nlc3MoTGFuZ3VhZ2VUYWdFeHRlbnNpb25SZWdpc3RyeS5jcmVhdGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgbG9hZERlZmF1bHQoKTogUmVzdWx0PExhbmd1YWdlVGFnRXh0ZW5zaW9uUmVnaXN0cnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRnJvbUpzb24oZGVmYXVsdEV4dGVuc2lvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgbG9hZChwYXRoOiBzdHJpbmcpOiBSZXN1bHQ8TGFuZ3VhZ2VUYWdFeHRlbnNpb25SZWdpc3RyeT4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZWdpc3RyeSA9IENvbnZlcnRlcnMubG9hZExhbmd1YWdlVGFnRXh0ZW5zaW9uc0pzb25GaWxlU3luYyhwYXRoKS5vclRocm93KCk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IExhbmd1YWdlVGFnRXh0ZW5zaW9uUmVnaXN0cnkocmVnaXN0cnkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGxvYWRKc29uUmVnaXN0cnlGaWxlKHBhdGg6IHN0cmluZyk6IFJlc3VsdDxMYW5ndWFnZVRhZ0V4dGVuc2lvblJlZ2lzdHJ5PiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gSmFyQ29udmVydGVycy5sb2FkSnNvbkxhbmd1YWdlVGFnRXh0ZW5zaW9uc1JlZ2lzdHJ5RmlsZVN5bmMocGF0aCkub3JUaHJvdygpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBMYW5ndWFnZVRhZ0V4dGVuc2lvblJlZ2lzdHJ5KHJlZ2lzdHJ5KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBsb2FkVHh0UmVnaXN0cnlGaWxlKHBhdGg6IHN0cmluZyk6IFJlc3VsdDxMYW5ndWFnZVRhZ0V4dGVuc2lvblJlZ2lzdHJ5PiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gSmFyQ29udmVydGVycy5sb2FkVHh0TGFuZ3VhZ2VUYWdFeHRlbnNpb25zUmVnaXN0cnlGaWxlU3luYyhwYXRoKS5vclRocm93KCk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IExhbmd1YWdlVGFnRXh0ZW5zaW9uUmVnaXN0cnkocmVnaXN0cnkpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=