@fgv/ts-bcp47 0.9.6 → 2.0.1-alpha.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.
Files changed (555) hide show
  1. package/.cache/build.lint/_eslint-R7SFxnrl.json +481 -0
  2. package/dist/ts-bcp47.d.ts +2554 -0
  3. package/dist/tsdoc-metadata.json +11 -0
  4. package/lib/data/bcp/overrides.json +20 -0
  5. package/lib/data/iana/language-subtags.json +57439 -0
  6. package/{data → lib/data}/iana/language-tag-extensions.json +2 -6
  7. package/lib/data/unsd/m49.json +3723 -0
  8. package/lib/index.d.ts +6 -0
  9. package/lib/index.d.ts.map +1 -0
  10. package/lib/index.js +57 -0
  11. package/lib/index.js.map +1 -0
  12. package/lib/packlets/bcp47/bcp47Subtags/converters.d.ts.map +1 -0
  13. package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/converters.js +2 -1
  14. package/lib/packlets/bcp47/bcp47Subtags/converters.js.map +1 -0
  15. package/lib/packlets/bcp47/bcp47Subtags/index.d.ts.map +1 -0
  16. package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/index.js +1 -1
  17. package/lib/packlets/bcp47/bcp47Subtags/index.js.map +1 -0
  18. package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/model.d.ts +3 -1
  19. package/lib/packlets/bcp47/bcp47Subtags/model.d.ts.map +1 -0
  20. package/lib/packlets/bcp47/bcp47Subtags/model.js +24 -0
  21. package/lib/packlets/bcp47/bcp47Subtags/model.js.map +1 -0
  22. package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/validate.d.ts +2 -2
  23. package/lib/packlets/bcp47/bcp47Subtags/validate.d.ts.map +1 -0
  24. package/lib/packlets/bcp47/bcp47Subtags/validate.js +74 -0
  25. package/lib/packlets/bcp47/bcp47Subtags/validate.js.map +1 -0
  26. package/{bcp47 → lib/packlets/bcp47}/common.d.ts +4 -4
  27. package/lib/packlets/bcp47/common.d.ts.map +1 -0
  28. package/lib/packlets/bcp47/common.js +59 -0
  29. package/lib/packlets/bcp47/common.js.map +1 -0
  30. package/{bcp47 → lib/packlets/bcp47}/helpers.d.ts +8 -8
  31. package/lib/packlets/bcp47/helpers.d.ts.map +1 -0
  32. package/lib/packlets/bcp47/helpers.js +103 -0
  33. package/lib/packlets/bcp47/helpers.js.map +1 -0
  34. package/lib/packlets/bcp47/index.d.ts +10 -0
  35. package/lib/packlets/bcp47/index.d.ts.map +1 -0
  36. package/lib/packlets/bcp47/index.js +68 -0
  37. package/lib/packlets/bcp47/index.js.map +1 -0
  38. package/{bcp47 → lib/packlets/bcp47}/languageRegistryData.d.ts +26 -27
  39. package/lib/packlets/bcp47/languageRegistryData.d.ts.map +1 -0
  40. package/lib/packlets/bcp47/languageRegistryData.js +206 -0
  41. package/lib/packlets/bcp47/languageRegistryData.js.map +1 -0
  42. package/{bcp47 → lib/packlets/bcp47}/languageTag.d.ts +12 -13
  43. package/lib/packlets/bcp47/languageTag.d.ts.map +1 -0
  44. package/lib/packlets/bcp47/languageTag.js +390 -0
  45. package/lib/packlets/bcp47/languageTag.js.map +1 -0
  46. package/{bcp47 → lib/packlets/bcp47}/languageTagParser.d.ts +13 -14
  47. package/lib/packlets/bcp47/languageTagParser.d.ts.map +1 -0
  48. package/lib/packlets/bcp47/languageTagParser.js +303 -0
  49. package/lib/packlets/bcp47/languageTagParser.js.map +1 -0
  50. package/{bcp47 → lib/packlets/bcp47}/match/chooser.d.ts +8 -8
  51. package/lib/packlets/bcp47/match/chooser.d.ts.map +1 -0
  52. package/lib/packlets/bcp47/match/chooser.js +92 -0
  53. package/lib/packlets/bcp47/match/chooser.js.map +1 -0
  54. package/lib/packlets/bcp47/match/common.d.ts.map +1 -0
  55. package/lib/packlets/bcp47/match/common.js +52 -0
  56. package/lib/packlets/bcp47/match/common.js.map +1 -0
  57. package/lib/packlets/bcp47/match/index.d.ts +4 -0
  58. package/lib/packlets/bcp47/match/index.d.ts.map +1 -0
  59. package/lib/packlets/bcp47/match/index.js +45 -0
  60. package/lib/packlets/bcp47/match/index.js.map +1 -0
  61. package/lib/packlets/bcp47/match/similarity.d.ts.map +1 -0
  62. package/lib/packlets/bcp47/match/similarity.js +230 -0
  63. package/lib/packlets/bcp47/match/similarity.js.map +1 -0
  64. package/lib/packlets/bcp47/normalization/baseNormalizer.d.ts +35 -0
  65. package/lib/packlets/bcp47/normalization/baseNormalizer.d.ts.map +1 -0
  66. package/lib/packlets/bcp47/normalization/baseNormalizer.js +116 -0
  67. package/lib/packlets/bcp47/normalization/baseNormalizer.js.map +1 -0
  68. package/lib/packlets/bcp47/normalization/canonicalNormalizer.d.ts +22 -0
  69. package/lib/packlets/bcp47/normalization/canonicalNormalizer.d.ts.map +1 -0
  70. package/lib/packlets/bcp47/normalization/canonicalNormalizer.js +113 -0
  71. package/lib/packlets/bcp47/normalization/canonicalNormalizer.js.map +1 -0
  72. package/{bcp47 → lib/packlets/bcp47}/normalization/common.d.ts +1 -1
  73. package/lib/packlets/bcp47/normalization/common.d.ts.map +1 -0
  74. package/lib/packlets/bcp47/normalization/common.js +82 -0
  75. package/lib/packlets/bcp47/normalization/common.js.map +1 -0
  76. package/lib/packlets/bcp47/normalization/index.d.ts.map +1 -0
  77. package/{bcp47 → lib/packlets/bcp47}/normalization/index.js +1 -1
  78. package/lib/packlets/bcp47/normalization/index.js.map +1 -0
  79. package/{bcp47 → lib/packlets/bcp47}/normalization/normalizeTag.d.ts +6 -6
  80. package/lib/packlets/bcp47/normalization/normalizeTag.d.ts.map +1 -0
  81. package/lib/packlets/bcp47/normalization/normalizeTag.js +105 -0
  82. package/lib/packlets/bcp47/normalization/normalizeTag.js.map +1 -0
  83. package/lib/packlets/bcp47/normalization/preferredTagNormalizer.d.ts +27 -0
  84. package/lib/packlets/bcp47/normalization/preferredTagNormalizer.d.ts.map +1 -0
  85. package/lib/packlets/bcp47/normalization/preferredTagNormalizer.js +204 -0
  86. package/lib/packlets/bcp47/normalization/preferredTagNormalizer.js.map +1 -0
  87. package/lib/packlets/bcp47/overrides/converters.d.ts +19 -0
  88. package/lib/packlets/bcp47/overrides/converters.d.ts.map +1 -0
  89. package/lib/packlets/bcp47/overrides/converters.js +76 -0
  90. package/lib/packlets/bcp47/overrides/converters.js.map +1 -0
  91. package/lib/packlets/bcp47/overrides/defaultRegistries.d.ts.map +1 -0
  92. package/lib/packlets/bcp47/overrides/defaultRegistries.js +42 -0
  93. package/lib/packlets/bcp47/overrides/defaultRegistries.js.map +1 -0
  94. package/lib/packlets/bcp47/overrides/index.d.ts.map +1 -0
  95. package/lib/packlets/bcp47/overrides/index.js +30 -0
  96. package/lib/packlets/bcp47/overrides/index.js.map +1 -0
  97. package/lib/packlets/bcp47/overrides/model.d.ts +11 -0
  98. package/lib/packlets/bcp47/overrides/model.d.ts.map +1 -0
  99. package/lib/packlets/bcp47/overrides/model.js +24 -0
  100. package/lib/packlets/bcp47/overrides/model.js.map +1 -0
  101. package/{bcp47 → lib/packlets/bcp47}/overrides/overridesRegistry.d.ts +8 -8
  102. package/lib/packlets/bcp47/overrides/overridesRegistry.d.ts.map +1 -0
  103. package/lib/packlets/bcp47/overrides/overridesRegistry.js +113 -0
  104. package/lib/packlets/bcp47/overrides/overridesRegistry.js.map +1 -0
  105. package/lib/packlets/bcp47/validation/baseValidator.d.ts +35 -0
  106. package/lib/packlets/bcp47/validation/baseValidator.d.ts.map +1 -0
  107. package/lib/packlets/bcp47/validation/baseValidator.js +113 -0
  108. package/lib/packlets/bcp47/validation/baseValidator.js.map +1 -0
  109. package/{bcp47 → lib/packlets/bcp47}/validation/common.d.ts +1 -1
  110. package/lib/packlets/bcp47/validation/common.d.ts.map +1 -0
  111. package/lib/packlets/bcp47/validation/common.js +84 -0
  112. package/lib/packlets/bcp47/validation/common.js.map +1 -0
  113. package/lib/packlets/bcp47/validation/index.d.ts.map +1 -0
  114. package/{bcp47 → lib/packlets/bcp47}/validation/index.js +1 -1
  115. package/lib/packlets/bcp47/validation/index.js.map +1 -0
  116. package/lib/packlets/bcp47/validation/isCanonical.d.ts +22 -0
  117. package/lib/packlets/bcp47/validation/isCanonical.d.ts.map +1 -0
  118. package/lib/packlets/bcp47/validation/isCanonical.js +106 -0
  119. package/lib/packlets/bcp47/validation/isCanonical.js.map +1 -0
  120. package/{bcp47 → lib/packlets/bcp47}/validation/isInPreferredForm.d.ts +4 -4
  121. package/lib/packlets/bcp47/validation/isInPreferredForm.d.ts.map +1 -0
  122. package/lib/packlets/bcp47/validation/isInPreferredForm.js +73 -0
  123. package/lib/packlets/bcp47/validation/isInPreferredForm.js.map +1 -0
  124. package/lib/packlets/bcp47/validation/isStrictlyValid.d.ts +18 -0
  125. package/lib/packlets/bcp47/validation/isStrictlyValid.d.ts.map +1 -0
  126. package/lib/packlets/bcp47/validation/isStrictlyValid.js +98 -0
  127. package/lib/packlets/bcp47/validation/isStrictlyValid.js.map +1 -0
  128. package/lib/packlets/bcp47/validation/isValid.d.ts +24 -0
  129. package/lib/packlets/bcp47/validation/isValid.d.ts.map +1 -0
  130. package/lib/packlets/bcp47/validation/isValid.js +119 -0
  131. package/lib/packlets/bcp47/validation/isValid.js.map +1 -0
  132. package/lib/packlets/bcp47/validation/isWellFormed.d.ts +22 -0
  133. package/lib/packlets/bcp47/validation/isWellFormed.d.ts.map +1 -0
  134. package/lib/packlets/bcp47/validation/isWellFormed.js +102 -0
  135. package/lib/packlets/bcp47/validation/isWellFormed.js.map +1 -0
  136. package/{bcp47 → lib/packlets/bcp47}/validation/validateTag.d.ts +9 -9
  137. package/lib/packlets/bcp47/validation/validateTag.d.ts.map +1 -0
  138. package/lib/packlets/bcp47/validation/validateTag.js +159 -0
  139. package/lib/packlets/bcp47/validation/validateTag.js.map +1 -0
  140. package/{iana → lib/packlets/iana}/common/converters.d.ts +2 -2
  141. package/lib/packlets/iana/common/converters.d.ts.map +1 -0
  142. package/lib/packlets/iana/common/converters.js +85 -0
  143. package/lib/packlets/iana/common/converters.js.map +1 -0
  144. package/{iana → lib/packlets/iana}/common/model.d.ts +1 -1
  145. package/lib/packlets/iana/common/model.d.ts.map +1 -0
  146. package/lib/packlets/iana/common/model.js +24 -0
  147. package/lib/packlets/iana/common/model.js.map +1 -0
  148. package/lib/packlets/iana/common/registeredItems.d.ts.map +1 -0
  149. package/lib/packlets/iana/common/registeredItems.js +124 -0
  150. package/lib/packlets/iana/common/registeredItems.js.map +1 -0
  151. package/lib/packlets/iana/common/utils.d.ts.map +1 -0
  152. package/lib/packlets/iana/common/utils.js +34 -0
  153. package/lib/packlets/iana/common/utils.js.map +1 -0
  154. package/{iana → lib/packlets/iana}/common/validate.d.ts +1 -1
  155. package/lib/packlets/iana/common/validate.d.ts.map +1 -0
  156. package/lib/packlets/iana/common/validate.js +62 -0
  157. package/lib/packlets/iana/common/validate.js.map +1 -0
  158. package/lib/packlets/iana/converters.d.ts.map +1 -0
  159. package/{iana → lib/packlets/iana}/converters.js +1 -1
  160. package/lib/packlets/iana/converters.js.map +1 -0
  161. package/lib/packlets/iana/defaultRegistries.d.ts.map +1 -0
  162. package/lib/packlets/iana/defaultRegistries.js +42 -0
  163. package/lib/packlets/iana/defaultRegistries.js.map +1 -0
  164. package/{iana → lib/packlets/iana}/index.d.ts +4 -2
  165. package/lib/packlets/iana/index.d.ts.map +1 -0
  166. package/{iana/jar/language-subtags/tags → lib/packlets/iana}/index.js +18 -6
  167. package/lib/packlets/iana/index.js.map +1 -0
  168. package/lib/packlets/iana/jar/converters.d.ts.map +1 -0
  169. package/{iana → lib/packlets/iana}/jar/converters.js +1 -1
  170. package/lib/packlets/iana/jar/converters.js.map +1 -0
  171. package/lib/packlets/iana/jar/index.d.ts +5 -0
  172. package/lib/packlets/iana/jar/index.d.ts.map +1 -0
  173. package/{unsd/csv → lib/packlets/iana/jar}/index.js +4 -2
  174. package/lib/packlets/iana/jar/index.js.map +1 -0
  175. package/{iana → lib/packlets/iana}/jar/jarConverters.d.ts +5 -5
  176. package/lib/packlets/iana/jar/jarConverters.d.ts.map +1 -0
  177. package/lib/packlets/iana/jar/jarConverters.js +86 -0
  178. package/lib/packlets/iana/jar/jarConverters.js.map +1 -0
  179. package/{iana → lib/packlets/iana}/jar/jarModel.d.ts +1 -1
  180. package/lib/packlets/iana/jar/jarModel.d.ts.map +1 -0
  181. package/lib/packlets/iana/jar/jarModel.js +24 -0
  182. package/lib/packlets/iana/jar/jarModel.js.map +1 -0
  183. package/lib/packlets/iana/jar/language-subtags/converters.d.ts.map +1 -0
  184. package/{iana → lib/packlets/iana}/jar/language-subtags/converters.js +1 -1
  185. package/lib/packlets/iana/jar/language-subtags/converters.js.map +1 -0
  186. package/lib/packlets/iana/jar/language-subtags/index.d.ts +5 -0
  187. package/lib/packlets/iana/jar/language-subtags/index.d.ts.map +1 -0
  188. package/{iana/jar/language-subtags/registry → lib/packlets/iana/jar/language-subtags}/index.js +29 -28
  189. package/lib/packlets/iana/jar/language-subtags/index.js.map +1 -0
  190. package/lib/packlets/iana/jar/language-subtags/model.d.ts.map +1 -0
  191. package/{iana → lib/packlets/iana}/jar/language-subtags/model.js +1 -1
  192. package/lib/packlets/iana/jar/language-subtags/model.js.map +1 -0
  193. package/lib/packlets/iana/jar/language-subtags/registry/converters.d.ts.map +1 -0
  194. package/lib/packlets/iana/jar/language-subtags/registry/converters.js +59 -0
  195. package/lib/packlets/iana/jar/language-subtags/registry/converters.js.map +1 -0
  196. package/lib/packlets/iana/jar/language-subtags/registry/index.d.ts.map +1 -0
  197. package/{iana/jar/language-subtags → lib/packlets/iana/jar/language-subtags/registry}/index.js +23 -22
  198. package/lib/packlets/iana/jar/language-subtags/registry/index.js.map +1 -0
  199. package/{iana → lib/packlets/iana}/jar/language-subtags/registry/model.d.ts +12 -12
  200. package/lib/packlets/iana/jar/language-subtags/registry/model.d.ts.map +1 -0
  201. package/lib/packlets/iana/jar/language-subtags/registry/model.js +46 -0
  202. package/lib/packlets/iana/jar/language-subtags/registry/model.js.map +1 -0
  203. package/lib/packlets/iana/jar/language-subtags/tags/converters.d.ts +55 -0
  204. package/lib/packlets/iana/jar/language-subtags/tags/converters.d.ts.map +1 -0
  205. package/lib/packlets/iana/jar/language-subtags/tags/converters.js +129 -0
  206. package/lib/packlets/iana/jar/language-subtags/tags/converters.js.map +1 -0
  207. package/lib/packlets/iana/jar/language-subtags/tags/index.d.ts +6 -0
  208. package/lib/packlets/iana/jar/language-subtags/tags/index.d.ts.map +1 -0
  209. package/lib/packlets/iana/jar/language-subtags/tags/index.js +58 -0
  210. package/lib/packlets/iana/jar/language-subtags/tags/index.js.map +1 -0
  211. package/lib/packlets/iana/jar/language-subtags/tags/model.d.ts.map +1 -0
  212. package/lib/packlets/iana/jar/language-subtags/tags/model.js +24 -0
  213. package/lib/packlets/iana/jar/language-subtags/tags/model.js.map +1 -0
  214. package/lib/packlets/iana/jar/language-subtags/tags/tagValidation.d.ts.map +1 -0
  215. package/lib/packlets/iana/jar/language-subtags/tags/tagValidation.js +70 -0
  216. package/lib/packlets/iana/jar/language-subtags/tags/tagValidation.js.map +1 -0
  217. package/lib/packlets/iana/jar/language-subtags/tags/validate.d.ts.map +1 -0
  218. package/lib/packlets/iana/jar/language-subtags/tags/validate.js +88 -0
  219. package/lib/packlets/iana/jar/language-subtags/tags/validate.js.map +1 -0
  220. package/lib/packlets/iana/jar/model.d.ts.map +1 -0
  221. package/{iana → lib/packlets/iana}/jar/model.js +1 -1
  222. package/lib/packlets/iana/jar/model.js.map +1 -0
  223. package/lib/packlets/iana/language-subtags/common.d.ts.map +1 -0
  224. package/lib/packlets/iana/language-subtags/common.js +24 -0
  225. package/lib/packlets/iana/language-subtags/common.js.map +1 -0
  226. package/lib/packlets/iana/language-subtags/converters.d.ts +52 -0
  227. package/lib/packlets/iana/language-subtags/converters.d.ts.map +1 -0
  228. package/lib/packlets/iana/language-subtags/converters.js +209 -0
  229. package/lib/packlets/iana/language-subtags/converters.js.map +1 -0
  230. package/{iana → lib/packlets/iana}/language-subtags/index.d.ts +4 -3
  231. package/lib/packlets/iana/language-subtags/index.d.ts.map +1 -0
  232. package/{iana → lib/packlets/iana}/language-subtags/index.js +10 -8
  233. package/lib/packlets/iana/language-subtags/index.js.map +1 -0
  234. package/{iana → lib/packlets/iana}/language-subtags/jarConverters.d.ts +8 -8
  235. package/lib/packlets/iana/language-subtags/jarConverters.d.ts.map +1 -0
  236. package/lib/packlets/iana/language-subtags/jarConverters.js +237 -0
  237. package/lib/packlets/iana/language-subtags/jarConverters.js.map +1 -0
  238. package/{iana → lib/packlets/iana}/language-subtags/model.d.ts +15 -15
  239. package/lib/packlets/iana/language-subtags/model.d.ts.map +1 -0
  240. package/lib/packlets/iana/language-subtags/model.js +24 -0
  241. package/lib/packlets/iana/language-subtags/model.js.map +1 -0
  242. package/{iana → lib/packlets/iana}/language-subtags/scope.d.ts +12 -12
  243. package/lib/packlets/iana/language-subtags/scope.d.ts.map +1 -0
  244. package/lib/packlets/iana/language-subtags/scope.js +179 -0
  245. package/lib/packlets/iana/language-subtags/scope.js.map +1 -0
  246. package/{iana → lib/packlets/iana}/language-subtags/subtagRegistry.d.ts +1 -1
  247. package/lib/packlets/iana/language-subtags/subtagRegistry.d.ts.map +1 -0
  248. package/lib/packlets/iana/language-subtags/subtagRegistry.js +150 -0
  249. package/lib/packlets/iana/language-subtags/subtagRegistry.js.map +1 -0
  250. package/lib/packlets/iana/language-subtags/validate.d.ts.map +1 -0
  251. package/{iana → lib/packlets/iana}/language-subtags/validate.js +1 -1
  252. package/lib/packlets/iana/language-subtags/validate.js.map +1 -0
  253. package/lib/packlets/iana/language-tag-extensions/converters.d.ts +22 -0
  254. package/lib/packlets/iana/language-tag-extensions/converters.d.ts.map +1 -0
  255. package/lib/packlets/iana/language-tag-extensions/converters.js +86 -0
  256. package/lib/packlets/iana/language-tag-extensions/converters.js.map +1 -0
  257. package/{iana → lib/packlets/iana}/language-tag-extensions/extensionsRegistry.d.ts +2 -2
  258. package/lib/packlets/iana/language-tag-extensions/extensionsRegistry.d.ts.map +1 -0
  259. package/lib/packlets/iana/language-tag-extensions/extensionsRegistry.js +105 -0
  260. package/lib/packlets/iana/language-tag-extensions/extensionsRegistry.js.map +1 -0
  261. package/{iana → lib/packlets/iana}/language-tag-extensions/extensionsScope.d.ts +3 -3
  262. package/lib/packlets/iana/language-tag-extensions/extensionsScope.d.ts.map +1 -0
  263. package/lib/packlets/iana/language-tag-extensions/extensionsScope.js +77 -0
  264. package/lib/packlets/iana/language-tag-extensions/extensionsScope.js.map +1 -0
  265. package/{iana → lib/packlets/iana}/language-tag-extensions/index.d.ts +3 -2
  266. package/lib/packlets/iana/language-tag-extensions/index.d.ts.map +1 -0
  267. package/{iana → lib/packlets/iana}/language-tag-extensions/index.js +6 -4
  268. package/lib/packlets/iana/language-tag-extensions/index.js.map +1 -0
  269. package/{iana → lib/packlets/iana}/language-tag-extensions/jarConverters.d.ts +2 -3
  270. package/lib/packlets/iana/language-tag-extensions/jarConverters.d.ts.map +1 -0
  271. package/lib/packlets/iana/language-tag-extensions/jarConverters.js +79 -0
  272. package/lib/packlets/iana/language-tag-extensions/jarConverters.js.map +1 -0
  273. package/{iana → lib/packlets/iana}/language-tag-extensions/model.d.ts +5 -6
  274. package/lib/packlets/iana/language-tag-extensions/model.d.ts.map +1 -0
  275. package/lib/packlets/iana/language-tag-extensions/model.js +25 -0
  276. package/lib/packlets/iana/language-tag-extensions/model.js.map +1 -0
  277. package/{iana → lib/packlets/iana}/language-tag-extensions/validate.d.ts +2 -2
  278. package/lib/packlets/iana/language-tag-extensions/validate.d.ts.map +1 -0
  279. package/lib/packlets/iana/language-tag-extensions/validate.js +36 -0
  280. package/lib/packlets/iana/language-tag-extensions/validate.js.map +1 -0
  281. package/lib/packlets/iana/languageRegistries.d.ts.map +1 -0
  282. package/lib/packlets/iana/languageRegistries.js +56 -0
  283. package/lib/packlets/iana/languageRegistries.js.map +1 -0
  284. package/lib/packlets/iana/model.d.ts.map +1 -0
  285. package/{iana → lib/packlets/iana}/model.js +1 -1
  286. package/lib/packlets/iana/model.js.map +1 -0
  287. package/lib/packlets/iana/validate.d.ts.map +1 -0
  288. package/{iana → lib/packlets/iana}/validate.js +1 -1
  289. package/lib/packlets/iana/validate.js.map +1 -0
  290. package/lib/packlets/unsd/areas.d.ts +29 -0
  291. package/lib/packlets/unsd/areas.d.ts.map +1 -0
  292. package/lib/packlets/unsd/areas.js +96 -0
  293. package/lib/packlets/unsd/areas.js.map +1 -0
  294. package/lib/packlets/unsd/common.d.ts +49 -0
  295. package/lib/packlets/unsd/common.d.ts.map +1 -0
  296. package/lib/packlets/unsd/common.js +24 -0
  297. package/lib/packlets/unsd/common.js.map +1 -0
  298. package/{unsd → lib/packlets/unsd}/csv/converters.d.ts +7 -4
  299. package/lib/packlets/unsd/csv/converters.d.ts.map +1 -0
  300. package/lib/packlets/unsd/csv/converters.js +78 -0
  301. package/lib/packlets/unsd/csv/converters.js.map +1 -0
  302. package/lib/packlets/unsd/csv/index.d.ts.map +1 -0
  303. package/{iana/jar → lib/packlets/unsd/csv}/index.js +1 -1
  304. package/lib/packlets/unsd/csv/index.js.map +1 -0
  305. package/lib/packlets/unsd/csv/model.d.ts +22 -0
  306. package/lib/packlets/unsd/csv/model.d.ts.map +1 -0
  307. package/lib/packlets/unsd/csv/model.js +24 -0
  308. package/lib/packlets/unsd/csv/model.js.map +1 -0
  309. package/lib/packlets/unsd/defaultRegistries.d.ts.map +1 -0
  310. package/lib/packlets/unsd/defaultRegistries.js +42 -0
  311. package/lib/packlets/unsd/defaultRegistries.js.map +1 -0
  312. package/{unsd → lib/packlets/unsd}/index.d.ts +2 -0
  313. package/lib/packlets/unsd/index.d.ts.map +1 -0
  314. package/lib/packlets/unsd/index.js +58 -0
  315. package/lib/packlets/unsd/index.js.map +1 -0
  316. package/{unsd → lib/packlets/unsd}/regionCodes.d.ts +7 -7
  317. package/lib/packlets/unsd/regionCodes.d.ts.map +1 -0
  318. package/lib/packlets/unsd/regionCodes.js +122 -0
  319. package/lib/packlets/unsd/regionCodes.js.map +1 -0
  320. package/lib/packlets/unsd/regions.d.ts +21 -0
  321. package/lib/packlets/unsd/regions.d.ts.map +1 -0
  322. package/lib/packlets/unsd/regions.js +77 -0
  323. package/lib/packlets/unsd/regions.js.map +1 -0
  324. package/lib/packlets/utils/index.d.ts.map +1 -0
  325. package/{utils → lib/packlets/utils}/index.js +1 -1
  326. package/lib/packlets/utils/index.js.map +1 -0
  327. package/lib/packlets/utils/jsonHelpers.d.ts.map +1 -0
  328. package/lib/packlets/utils/jsonHelpers.js +29 -0
  329. package/lib/packlets/utils/jsonHelpers.js.map +1 -0
  330. package/lib/packlets/utils/public.d.ts +2 -0
  331. package/lib/packlets/utils/public.d.ts.map +1 -0
  332. package/lib/packlets/utils/public.js +28 -0
  333. package/lib/packlets/utils/public.js.map +1 -0
  334. package/{utils → lib/packlets/utils}/validationHelpers.d.ts +9 -10
  335. package/lib/packlets/utils/validationHelpers.d.ts.map +1 -0
  336. package/lib/packlets/utils/validationHelpers.js +120 -0
  337. package/lib/packlets/utils/validationHelpers.js.map +1 -0
  338. package/package.json +73 -67
  339. package/bcp47/bcp47Subtags/converters.d.ts.map +0 -1
  340. package/bcp47/bcp47Subtags/index.d.ts.map +0 -1
  341. package/bcp47/bcp47Subtags/model.d.ts.map +0 -1
  342. package/bcp47/bcp47Subtags/model.js +0 -24
  343. package/bcp47/bcp47Subtags/validate.d.ts.map +0 -1
  344. package/bcp47/bcp47Subtags/validate.js +0 -74
  345. package/bcp47/common.d.ts.map +0 -1
  346. package/bcp47/common.js +0 -59
  347. package/bcp47/helpers.d.ts.map +0 -1
  348. package/bcp47/helpers.js +0 -103
  349. package/bcp47/index.d.ts +0 -7
  350. package/bcp47/index.d.ts.map +0 -1
  351. package/bcp47/index.js +0 -27
  352. package/bcp47/languageRegistryData.d.ts.map +0 -1
  353. package/bcp47/languageRegistryData.js +0 -209
  354. package/bcp47/languageTag.d.ts.map +0 -1
  355. package/bcp47/languageTag.js +0 -390
  356. package/bcp47/languageTagParser.d.ts.map +0 -1
  357. package/bcp47/languageTagParser.js +0 -302
  358. package/bcp47/match/chooser.d.ts.map +0 -1
  359. package/bcp47/match/chooser.js +0 -92
  360. package/bcp47/match/common.d.ts.map +0 -1
  361. package/bcp47/match/common.js +0 -51
  362. package/bcp47/match/index.d.ts +0 -4
  363. package/bcp47/match/index.d.ts.map +0 -1
  364. package/bcp47/match/index.js +0 -45
  365. package/bcp47/match/similarity.d.ts.map +0 -1
  366. package/bcp47/match/similarity.js +0 -230
  367. package/bcp47/normalization/baseNormalizer.d.ts +0 -36
  368. package/bcp47/normalization/baseNormalizer.d.ts.map +0 -1
  369. package/bcp47/normalization/baseNormalizer.js +0 -114
  370. package/bcp47/normalization/canonicalNormalizer.d.ts +0 -22
  371. package/bcp47/normalization/canonicalNormalizer.d.ts.map +0 -1
  372. package/bcp47/normalization/canonicalNormalizer.js +0 -113
  373. package/bcp47/normalization/common.d.ts.map +0 -1
  374. package/bcp47/normalization/common.js +0 -82
  375. package/bcp47/normalization/index.d.ts.map +0 -1
  376. package/bcp47/normalization/normalizeTag.d.ts.map +0 -1
  377. package/bcp47/normalization/normalizeTag.js +0 -105
  378. package/bcp47/normalization/preferredTagNormalizer.d.ts +0 -27
  379. package/bcp47/normalization/preferredTagNormalizer.d.ts.map +0 -1
  380. package/bcp47/normalization/preferredTagNormalizer.js +0 -209
  381. package/bcp47/overrides/converters.d.ts +0 -19
  382. package/bcp47/overrides/converters.d.ts.map +0 -1
  383. package/bcp47/overrides/converters.js +0 -75
  384. package/bcp47/overrides/defaultRegistries.d.ts.map +0 -1
  385. package/bcp47/overrides/defaultRegistries.js +0 -42
  386. package/bcp47/overrides/index.d.ts.map +0 -1
  387. package/bcp47/overrides/index.js +0 -30
  388. package/bcp47/overrides/model.d.ts +0 -11
  389. package/bcp47/overrides/model.d.ts.map +0 -1
  390. package/bcp47/overrides/model.js +0 -24
  391. package/bcp47/overrides/overridesRegistry.d.ts.map +0 -1
  392. package/bcp47/overrides/overridesRegistry.js +0 -112
  393. package/bcp47/validation/baseValidator.d.ts +0 -35
  394. package/bcp47/validation/baseValidator.d.ts.map +0 -1
  395. package/bcp47/validation/baseValidator.js +0 -111
  396. package/bcp47/validation/common.d.ts.map +0 -1
  397. package/bcp47/validation/common.js +0 -84
  398. package/bcp47/validation/index.d.ts.map +0 -1
  399. package/bcp47/validation/isCanonical.d.ts +0 -22
  400. package/bcp47/validation/isCanonical.d.ts.map +0 -1
  401. package/bcp47/validation/isCanonical.js +0 -104
  402. package/bcp47/validation/isInPreferredForm.d.ts.map +0 -1
  403. package/bcp47/validation/isInPreferredForm.js +0 -73
  404. package/bcp47/validation/isStrictlyValid.d.ts +0 -18
  405. package/bcp47/validation/isStrictlyValid.d.ts.map +0 -1
  406. package/bcp47/validation/isStrictlyValid.js +0 -98
  407. package/bcp47/validation/isValid.d.ts +0 -24
  408. package/bcp47/validation/isValid.d.ts.map +0 -1
  409. package/bcp47/validation/isValid.js +0 -115
  410. package/bcp47/validation/isWellFormed.d.ts +0 -22
  411. package/bcp47/validation/isWellFormed.d.ts.map +0 -1
  412. package/bcp47/validation/isWellFormed.js +0 -98
  413. package/bcp47/validation/validateTag.d.ts.map +0 -1
  414. package/bcp47/validation/validateTag.js +0 -159
  415. package/data/bcp/overrides.json +0 -21
  416. package/data/iana/language-subtags.json +0 -77295
  417. package/data/unsd/m49.json +0 -251
  418. package/iana/common/converters.d.ts.map +0 -1
  419. package/iana/common/converters.js +0 -84
  420. package/iana/common/model.d.ts.map +0 -1
  421. package/iana/common/model.js +0 -24
  422. package/iana/common/registeredItems.d.ts.map +0 -1
  423. package/iana/common/registeredItems.js +0 -124
  424. package/iana/common/utils.d.ts.map +0 -1
  425. package/iana/common/utils.js +0 -34
  426. package/iana/common/validate.d.ts.map +0 -1
  427. package/iana/common/validate.js +0 -61
  428. package/iana/converters.d.ts.map +0 -1
  429. package/iana/defaultRegistries.d.ts.map +0 -1
  430. package/iana/defaultRegistries.js +0 -42
  431. package/iana/index.d.ts.map +0 -1
  432. package/iana/index.js +0 -64
  433. package/iana/jar/converters.d.ts.map +0 -1
  434. package/iana/jar/index.d.ts.map +0 -1
  435. package/iana/jar/jarConverters.d.ts.map +0 -1
  436. package/iana/jar/jarConverters.js +0 -85
  437. package/iana/jar/jarModel.d.ts.map +0 -1
  438. package/iana/jar/jarModel.js +0 -24
  439. package/iana/jar/language-subtags/converters.d.ts.map +0 -1
  440. package/iana/jar/language-subtags/index.d.ts.map +0 -1
  441. package/iana/jar/language-subtags/model.d.ts.map +0 -1
  442. package/iana/jar/language-subtags/registry/converters.d.ts.map +0 -1
  443. package/iana/jar/language-subtags/registry/converters.js +0 -58
  444. package/iana/jar/language-subtags/registry/index.d.ts +0 -4
  445. package/iana/jar/language-subtags/registry/index.d.ts.map +0 -1
  446. package/iana/jar/language-subtags/registry/model.d.ts.map +0 -1
  447. package/iana/jar/language-subtags/registry/model.js +0 -41
  448. package/iana/jar/language-subtags/tags/converters.d.ts +0 -55
  449. package/iana/jar/language-subtags/tags/converters.d.ts.map +0 -1
  450. package/iana/jar/language-subtags/tags/converters.js +0 -128
  451. package/iana/jar/language-subtags/tags/index.d.ts +0 -5
  452. package/iana/jar/language-subtags/tags/index.d.ts.map +0 -1
  453. package/iana/jar/language-subtags/tags/model.d.ts.map +0 -1
  454. package/iana/jar/language-subtags/tags/model.js +0 -24
  455. package/iana/jar/language-subtags/tags/tagValidation.d.ts.map +0 -1
  456. package/iana/jar/language-subtags/tags/tagValidation.js +0 -70
  457. package/iana/jar/language-subtags/tags/validate.d.ts.map +0 -1
  458. package/iana/jar/language-subtags/tags/validate.js +0 -87
  459. package/iana/jar/model.d.ts.map +0 -1
  460. package/iana/language-subtags/common.d.ts.map +0 -1
  461. package/iana/language-subtags/common.js +0 -24
  462. package/iana/language-subtags/converters.d.ts +0 -52
  463. package/iana/language-subtags/converters.d.ts.map +0 -1
  464. package/iana/language-subtags/converters.js +0 -200
  465. package/iana/language-subtags/index.d.ts.map +0 -1
  466. package/iana/language-subtags/jarConverters.d.ts.map +0 -1
  467. package/iana/language-subtags/jarConverters.js +0 -213
  468. package/iana/language-subtags/model.d.ts.map +0 -1
  469. package/iana/language-subtags/model.js +0 -24
  470. package/iana/language-subtags/scope.d.ts.map +0 -1
  471. package/iana/language-subtags/scope.js +0 -179
  472. package/iana/language-subtags/subtagRegistry.d.ts.map +0 -1
  473. package/iana/language-subtags/subtagRegistry.js +0 -149
  474. package/iana/language-subtags/validate.d.ts.map +0 -1
  475. package/iana/language-tag-extensions/converters.d.ts +0 -23
  476. package/iana/language-tag-extensions/converters.d.ts.map +0 -1
  477. package/iana/language-tag-extensions/converters.js +0 -87
  478. package/iana/language-tag-extensions/extensionsRegistry.d.ts.map +0 -1
  479. package/iana/language-tag-extensions/extensionsRegistry.js +0 -104
  480. package/iana/language-tag-extensions/extensionsScope.d.ts.map +0 -1
  481. package/iana/language-tag-extensions/extensionsScope.js +0 -77
  482. package/iana/language-tag-extensions/index.d.ts.map +0 -1
  483. package/iana/language-tag-extensions/jarConverters.d.ts.map +0 -1
  484. package/iana/language-tag-extensions/jarConverters.js +0 -102
  485. package/iana/language-tag-extensions/model.d.ts.map +0 -1
  486. package/iana/language-tag-extensions/model.js +0 -24
  487. package/iana/language-tag-extensions/validate.d.ts.map +0 -1
  488. package/iana/language-tag-extensions/validate.js +0 -36
  489. package/iana/languageRegistries.d.ts.map +0 -1
  490. package/iana/languageRegistries.js +0 -56
  491. package/iana/model.d.ts.map +0 -1
  492. package/iana/validate.d.ts.map +0 -1
  493. package/index.d.ts +0 -6
  494. package/index.d.ts.map +0 -1
  495. package/index.js +0 -56
  496. package/unsd/areas.d.ts +0 -29
  497. package/unsd/areas.d.ts.map +0 -1
  498. package/unsd/areas.js +0 -96
  499. package/unsd/common.d.ts +0 -49
  500. package/unsd/common.d.ts.map +0 -1
  501. package/unsd/common.js +0 -24
  502. package/unsd/csv/converters.d.ts.map +0 -1
  503. package/unsd/csv/converters.js +0 -70
  504. package/unsd/csv/index.d.ts +0 -4
  505. package/unsd/csv/index.d.ts.map +0 -1
  506. package/unsd/csv/model.d.ts +0 -22
  507. package/unsd/csv/model.d.ts.map +0 -1
  508. package/unsd/csv/model.js +0 -24
  509. package/unsd/defaultRegistries.d.ts.map +0 -1
  510. package/unsd/defaultRegistries.js +0 -42
  511. package/unsd/index.d.ts.map +0 -1
  512. package/unsd/index.js +0 -44
  513. package/unsd/regionCodes.d.ts.map +0 -1
  514. package/unsd/regionCodes.js +0 -121
  515. package/unsd/regions.d.ts +0 -21
  516. package/unsd/regions.d.ts.map +0 -1
  517. package/unsd/regions.js +0 -77
  518. package/utils/index.d.ts.map +0 -1
  519. package/utils/jsonHelpers.d.ts.map +0 -1
  520. package/utils/jsonHelpers.js +0 -29
  521. package/utils/public.d.ts +0 -2
  522. package/utils/public.d.ts.map +0 -1
  523. package/utils/public.js +0 -28
  524. package/utils/validationHelpers.d.ts.map +0 -1
  525. package/utils/validationHelpers.js +0 -120
  526. /package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/converters.d.ts +0 -0
  527. /package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/index.d.ts +0 -0
  528. /package/{bcp47 → lib/packlets/bcp47}/match/common.d.ts +0 -0
  529. /package/{bcp47 → lib/packlets/bcp47}/match/similarity.d.ts +0 -0
  530. /package/{bcp47 → lib/packlets/bcp47}/normalization/index.d.ts +0 -0
  531. /package/{bcp47 → lib/packlets/bcp47}/overrides/defaultRegistries.d.ts +0 -0
  532. /package/{bcp47 → lib/packlets/bcp47}/overrides/index.d.ts +0 -0
  533. /package/{bcp47 → lib/packlets/bcp47}/validation/index.d.ts +0 -0
  534. /package/{iana → lib/packlets/iana}/common/registeredItems.d.ts +0 -0
  535. /package/{iana → lib/packlets/iana}/common/utils.d.ts +0 -0
  536. /package/{iana → lib/packlets/iana}/converters.d.ts +0 -0
  537. /package/{iana → lib/packlets/iana}/defaultRegistries.d.ts +0 -0
  538. /package/{iana → lib/packlets/iana}/jar/converters.d.ts +0 -0
  539. /package/{iana → lib/packlets/iana}/jar/language-subtags/converters.d.ts +0 -0
  540. /package/{iana → lib/packlets/iana}/jar/language-subtags/model.d.ts +0 -0
  541. /package/{iana → lib/packlets/iana}/jar/language-subtags/registry/converters.d.ts +0 -0
  542. /package/{iana/jar/language-subtags → lib/packlets/iana/jar/language-subtags/registry}/index.d.ts +0 -0
  543. /package/{iana → lib/packlets/iana}/jar/language-subtags/tags/model.d.ts +0 -0
  544. /package/{iana → lib/packlets/iana}/jar/language-subtags/tags/tagValidation.d.ts +0 -0
  545. /package/{iana → lib/packlets/iana}/jar/language-subtags/tags/validate.d.ts +0 -0
  546. /package/{iana → lib/packlets/iana}/jar/model.d.ts +0 -0
  547. /package/{iana → lib/packlets/iana}/language-subtags/common.d.ts +0 -0
  548. /package/{iana → lib/packlets/iana}/language-subtags/validate.d.ts +0 -0
  549. /package/{iana → lib/packlets/iana}/languageRegistries.d.ts +0 -0
  550. /package/{iana → lib/packlets/iana}/model.d.ts +0 -0
  551. /package/{iana → lib/packlets/iana}/validate.d.ts +0 -0
  552. /package/{iana/jar → lib/packlets/unsd/csv}/index.d.ts +0 -0
  553. /package/{unsd → lib/packlets/unsd}/defaultRegistries.d.ts +0 -0
  554. /package/{utils → lib/packlets/utils}/index.d.ts +0 -0
  555. /package/{utils → lib/packlets/utils}/jsonHelpers.d.ts +0 -0
@@ -0,0 +1,76 @@
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
+ /* eslint-disable @rushstack/typedef-var */
24
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
25
+ if (k2 === undefined) k2 = k;
26
+ var desc = Object.getOwnPropertyDescriptor(m, k);
27
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
28
+ desc = { enumerable: true, get: function() { return m[k]; } };
29
+ }
30
+ Object.defineProperty(o, k2, desc);
31
+ }) : (function(o, m, k, k2) {
32
+ if (k2 === undefined) k2 = k;
33
+ o[k2] = m[k];
34
+ }));
35
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
36
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
37
+ }) : function(o, v) {
38
+ o["default"] = v;
39
+ });
40
+ var __importStar = (this && this.__importStar) || function (mod) {
41
+ if (mod && mod.__esModule) return mod;
42
+ var result = {};
43
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
44
+ __setModuleDefault(result, mod);
45
+ return result;
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.loadLanguageOverridesFileSync = exports.languageOverridesFile = exports.languageOverrideRecord = void 0;
49
+ const Iana = __importStar(require("../../iana"));
50
+ const ts_json_1 = require("@fgv/ts-json");
51
+ const ts_utils_1 = require("@fgv/ts-utils");
52
+ /**
53
+ * @internal
54
+ */
55
+ exports.languageOverrideRecord = ts_utils_1.Converters.strictObject({
56
+ language: Iana.LanguageSubtags.Converters.Tags.languageSubtag,
57
+ preferredRegion: Iana.LanguageSubtags.Converters.Tags.regionSubtag,
58
+ defaultAffinity: ts_utils_1.Converters.string,
59
+ affinity: ts_utils_1.Converters.recordOf(ts_utils_1.Converters.arrayOf(Iana.LanguageSubtags.Converters.Tags.regionSubtag))
60
+ }, { optionalFields: ['affinity', 'defaultAffinity', 'preferredRegion'] });
61
+ /**
62
+ * @internal
63
+ */
64
+ exports.languageOverridesFile = ts_utils_1.Converters.arrayOf(exports.languageOverrideRecord);
65
+ /**
66
+ * Loads a language overrides JSON file.
67
+ * @internal
68
+ * @param path - Path from which overrides should be loaded.
69
+ * @returns `Success` with the loaded overrides or `Failure` with details if an
70
+ * error occurs.
71
+ */
72
+ function loadLanguageOverridesFileSync(path) {
73
+ return ts_json_1.File.convertJsonFileSync(path, exports.languageOverridesFile);
74
+ }
75
+ exports.loadLanguageOverridesFileSync = loadLanguageOverridesFileSync;
76
+ //# sourceMappingURL=converters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"converters.js","sourceRoot":"","sources":["../../../../src/packlets/bcp47/overrides/converters.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,2CAA2C;;;;;;;;;;;;;;;;;;;;;;;;;;AAE3C,iDAAmC;AAGnC,0CAAoC;AACpC,4CAA8D;AAE9D;;GAEG;AACU,QAAA,sBAAsB,GACjC,qBAAU,CAAC,YAAY,CACrB;IACE,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc;IAC7D,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY;IAClE,eAAe,EAAE,qBAAU,CAAC,MAAM;IAClC,QAAQ,EAAE,qBAAU,CAAC,QAAQ,CAAC,qBAAU,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;CACrG,EACD,EAAE,cAAc,EAAE,CAAC,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,EAAE,CACvE,CAAC;AAEJ;;GAEG;AACU,QAAA,qBAAqB,GAAG,qBAAU,CAAC,OAAO,CAAC,8BAAsB,CAAC,CAAC;AAEhF;;;;;;GAMG;AACH,SAAgB,6BAA6B,CAAC,IAAY;IACxD,OAAO,cAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,6BAAqB,CAAC,CAAC;AAC/D,CAAC;AAFD,sEAEC","sourcesContent":["/*\n * Copyright (c) 2022 Erik Fortune\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n/* eslint-disable @rushstack/typedef-var */\n\nimport * as Iana from '../../iana';\nimport * as Model from './model';\n\nimport { File } from '@fgv/ts-json';\nimport { Converter, Converters, Result } from '@fgv/ts-utils';\n\n/**\n * @internal\n */\nexport const languageOverrideRecord: Converter<Model.ILanguageOverrideRecord, unknown> =\n Converters.strictObject<Model.ILanguageOverrideRecord>(\n {\n language: Iana.LanguageSubtags.Converters.Tags.languageSubtag,\n preferredRegion: Iana.LanguageSubtags.Converters.Tags.regionSubtag,\n defaultAffinity: Converters.string,\n affinity: Converters.recordOf(Converters.arrayOf(Iana.LanguageSubtags.Converters.Tags.regionSubtag))\n },\n { optionalFields: ['affinity', 'defaultAffinity', 'preferredRegion'] }\n );\n\n/**\n * @internal\n */\nexport const languageOverridesFile = Converters.arrayOf(languageOverrideRecord);\n\n/**\n * Loads a language overrides JSON file.\n * @internal\n * @param path - Path from which overrides should be loaded.\n * @returns `Success` with the loaded overrides or `Failure` with details if an\n * error occurs.\n */\nexport function loadLanguageOverridesFileSync(path: string): Result<Model.ILanguageOverrideRecord[]> {\n return File.convertJsonFileSync(path, languageOverridesFile);\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultRegistries.d.ts","sourceRoot":"","sources":["../../../../src/packlets/bcp47/overrides/defaultRegistries.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;GAEG;AACH,qBAAa,iBAAiB;IAC5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAgC;IAElE,WAAkB,iBAAiB,IAAI,iBAAiB,CAKvD;CACF"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2022 Erik Fortune
4
+ *
5
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ * of this software and associated documentation files (the "Software"), to deal
7
+ * in the Software without restriction, including without limitation the rights
8
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ * copies of the Software, and to permit persons to whom the Software is
10
+ * furnished to do so, subject to the following conditions:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in all
13
+ * copies or substantial portions of the Software.
14
+ *
15
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ * SOFTWARE.
22
+ */
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.DefaultRegistries = void 0;
25
+ const overridesRegistry_1 = require("./overridesRegistry");
26
+ /**
27
+ * @public
28
+ */
29
+ class DefaultRegistries {
30
+ static get overridesRegistry() {
31
+ if (!this._overridesRegistry) {
32
+ this._overridesRegistry = overridesRegistry_1.OverridesRegistry.loadDefault().orThrow();
33
+ }
34
+ return this._overridesRegistry;
35
+ }
36
+ }
37
+ exports.DefaultRegistries = DefaultRegistries;
38
+ /**
39
+ * @internal
40
+ */
41
+ DefaultRegistries._overridesRegistry = undefined;
42
+ //# sourceMappingURL=defaultRegistries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultRegistries.js","sourceRoot":"","sources":["../../../../src/packlets/bcp47/overrides/defaultRegistries.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;AAEH,2DAAwD;AAExD;;GAEG;AACH,MAAa,iBAAiB;IAMrB,MAAM,KAAK,iBAAiB;QACjC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC5B,IAAI,CAAC,kBAAkB,GAAG,qCAAiB,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC;SACrE;QACD,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;;AAXH,8CAYC;AAXC;;GAEG;AACY,oCAAkB,GAAuB,SAAS,CAAC","sourcesContent":["/*\n * Copyright (c) 2022 Erik Fortune\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nimport { OverridesRegistry } from './overridesRegistry';\n\n/**\n * @public\n */\nexport class DefaultRegistries {\n /**\n * @internal\n */\n private static _overridesRegistry?: OverridesRegistry = undefined;\n\n public static get overridesRegistry(): OverridesRegistry {\n if (!this._overridesRegistry) {\n this._overridesRegistry = OverridesRegistry.loadDefault().orThrow();\n }\n return this._overridesRegistry;\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/packlets/bcp47/overrides/index.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,30 @@
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
+ // istanbul ignore file
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.DefaultRegistries = exports.OverridesRegistry = void 0;
26
+ var overridesRegistry_1 = require("./overridesRegistry");
27
+ Object.defineProperty(exports, "OverridesRegistry", { enumerable: true, get: function () { return overridesRegistry_1.OverridesRegistry; } });
28
+ var defaultRegistries_1 = require("./defaultRegistries");
29
+ Object.defineProperty(exports, "DefaultRegistries", { enumerable: true, get: function () { return defaultRegistries_1.DefaultRegistries; } });
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/packlets/bcp47/overrides/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,uBAAuB;;;AAEvB,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA","sourcesContent":["/*\n * Copyright (c) 2022 Erik Fortune\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n// istanbul ignore file\n\nexport { OverridesRegistry } from './overridesRegistry';\nexport { DefaultRegistries } from './defaultRegistries';\n"]}
@@ -0,0 +1,11 @@
1
+ import * as Iana from '../../iana';
2
+ /**
3
+ * @internal
4
+ */
5
+ export interface ILanguageOverrideRecord {
6
+ language: Iana.LanguageSubtags.LanguageSubtag;
7
+ preferredRegion?: Iana.LanguageSubtags.RegionSubtag;
8
+ defaultAffinity?: string;
9
+ affinity?: Record<string, Iana.LanguageSubtags.RegionSubtag[]>;
10
+ }
11
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../src/packlets/bcp47/overrides/model.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC;IAC9C,eAAe,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;IACpD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,CAAC;CAChE"}
@@ -0,0 +1,24 @@
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
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../../src/packlets/bcp47/overrides/model.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG","sourcesContent":["/*\n * Copyright (c) 2022 Erik Fortune\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nimport * as Iana from '../../iana';\n\n/**\n * @internal\n */\nexport interface ILanguageOverrideRecord {\n language: Iana.LanguageSubtags.LanguageSubtag;\n preferredRegion?: Iana.LanguageSubtags.RegionSubtag;\n defaultAffinity?: string;\n affinity?: Record<string, Iana.LanguageSubtags.RegionSubtag[]>;\n}\n"]}
@@ -1,22 +1,22 @@
1
+ import * as Iana from '../../iana';
1
2
  import * as Model from './model';
2
- import { LanguageSubtag, RegionSubtag } from '../../iana/language-subtags';
3
3
  import { Result } from '@fgv/ts-utils';
4
4
  /**
5
5
  * @public
6
6
  */
7
- export interface LanguageOverride {
8
- language: LanguageSubtag;
9
- preferredRegion?: RegionSubtag;
7
+ export interface ILanguageOverride {
8
+ language: Iana.LanguageSubtags.LanguageSubtag;
9
+ preferredRegion?: Iana.LanguageSubtags.RegionSubtag;
10
10
  defaultAffinity?: string;
11
- affinity?: Map<RegionSubtag, string>;
11
+ affinity?: Map<Iana.LanguageSubtags.RegionSubtag, string>;
12
12
  }
13
13
  /**
14
14
  * @public
15
15
  */
16
16
  export declare class OverridesRegistry {
17
- readonly overrides: Map<LanguageSubtag, LanguageOverride>;
17
+ readonly overrides: Map<Iana.LanguageSubtags.LanguageSubtag, ILanguageOverride>;
18
18
  protected constructor();
19
- static create(overrides: LanguageOverride[]): Result<OverridesRegistry>;
19
+ static create(overrides: ILanguageOverride[]): Result<OverridesRegistry>;
20
20
  static createFromJson(from: unknown): Result<OverridesRegistry>;
21
21
  static loadDefault(): Result<OverridesRegistry>;
22
22
  static loadJson(path: string): Result<OverridesRegistry>;
@@ -29,6 +29,6 @@ export declare class OverridesRegistry {
29
29
  * or `Error` with details if an error occurs.
30
30
  * @internal
31
31
  */
32
- protected static _overrideFromRecord(record: Model.LanguageOverrideRecord): Result<LanguageOverride>;
32
+ protected static _overrideFromRecord(record: Model.ILanguageOverrideRecord): Result<ILanguageOverride>;
33
33
  }
34
34
  //# sourceMappingURL=overridesRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overridesRegistry.d.ts","sourceRoot":"","sources":["../../../../src/packlets/bcp47/overrides/overridesRegistry.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,MAAM,EAAuB,MAAM,eAAe,CAAC;AAI5D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC;IAC9C,eAAe,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;IACpD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;CAC3D;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,SAAgB,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;IAEvF,SAAS;WAIK,MAAM,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAC,iBAAiB,CAAC;WAMjE,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC;WAWxD,WAAW,IAAI,MAAM,CAAC,iBAAiB,CAAC;WAIxC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAI/D;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,uBAAuB,GAAG,MAAM,CAAC,iBAAiB,CAAC;CAmBvG"}
@@ -0,0 +1,113 @@
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.OverridesRegistry = void 0;
51
+ const Converters = __importStar(require("./converters"));
52
+ const ts_utils_1 = require("@fgv/ts-utils");
53
+ // eslint-disable-next-line @rushstack/packlets/mechanics
54
+ const overrides_json_1 = __importDefault(require("../../../data/bcp/overrides.json"));
55
+ /**
56
+ * @public
57
+ */
58
+ class OverridesRegistry {
59
+ constructor() {
60
+ this.overrides = new Map();
61
+ }
62
+ static create(overrides) {
63
+ const registry = new OverridesRegistry();
64
+ overrides.forEach((o) => registry.overrides.set(o.language, o));
65
+ return (0, ts_utils_1.succeed)(registry);
66
+ }
67
+ static createFromJson(from) {
68
+ return Converters.languageOverridesFile
69
+ .convert(from)
70
+ .onSuccess((records) => {
71
+ return (0, ts_utils_1.mapResults)(records.map(OverridesRegistry._overrideFromRecord));
72
+ })
73
+ .onSuccess((overrides) => {
74
+ return OverridesRegistry.create(overrides);
75
+ });
76
+ }
77
+ static loadDefault() {
78
+ return this.createFromJson(overrides_json_1.default);
79
+ }
80
+ static loadJson(path) {
81
+ return Converters.loadLanguageOverridesFileSync(path).onSuccess(OverridesRegistry.createFromJson);
82
+ }
83
+ /**
84
+ * Converts a file {@link Bcp47.Overrides.Model.LanguageOverrideRecord | LanguageOverrideRecord }
85
+ * to a runtime {@link Bcp47.Overrides.LanguageOverride | LanguageOverride}.
86
+ * @param record - The {@link Bcp47.Overrides.Model.LanguageOverrideRecord | LanguageOverrideRecord } to
87
+ * be converted.
88
+ * @returns `Success` with the resulting {@link Bcp47.Overrides.LanguageOverride | LanguageOverride}
89
+ * or `Error` with details if an error occurs.
90
+ * @internal
91
+ */
92
+ static _overrideFromRecord(record) {
93
+ const override = { language: record.language };
94
+ if (record.preferredRegion) {
95
+ override.preferredRegion = record.preferredRegion;
96
+ }
97
+ if (record.defaultAffinity) {
98
+ override.defaultAffinity = record.defaultAffinity;
99
+ }
100
+ if (record.affinity) {
101
+ const affinity = new Map();
102
+ for (const kvp of Object.entries(record.affinity)) {
103
+ for (const region of kvp[1]) {
104
+ affinity.set(region, kvp[0]);
105
+ }
106
+ }
107
+ override.affinity = affinity;
108
+ }
109
+ return (0, ts_utils_1.succeed)(override);
110
+ }
111
+ }
112
+ exports.OverridesRegistry = OverridesRegistry;
113
+ //# sourceMappingURL=overridesRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overridesRegistry.js","sourceRoot":"","sources":["../../../../src/packlets/bcp47/overrides/overridesRegistry.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGH,yDAA2C;AAG3C,4CAA4D;AAC5D,yDAAyD;AACzD,sFAAgE;AAYhE;;GAEG;AACH,MAAa,iBAAiB;IAG5B;QACE,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;IAC7B,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,SAA8B;QACjD,MAAM,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACzC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QAChE,OAAO,IAAA,kBAAO,EAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,IAAa;QACxC,OAAO,UAAU,CAAC,qBAAqB;aACpC,OAAO,CAAC,IAAI,CAAC;aACb,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;YACrB,OAAO,IAAA,qBAAU,EAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACxE,CAAC,CAAC;aACD,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE;YACvB,OAAO,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,MAAM,CAAC,WAAW;QACvB,OAAO,IAAI,CAAC,cAAc,CAAC,wBAAgB,CAAC,CAAC;IAC/C,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,IAAY;QACjC,OAAO,UAAU,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACpG,CAAC;IAED;;;;;;;;OAQG;IACO,MAAM,CAAC,mBAAmB,CAAC,MAAqC;QACxE,MAAM,QAAQ,GAAsB,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;QAClE,IAAI,MAAM,CAAC,eAAe,EAAE;YAC1B,QAAQ,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;SACnD;QACD,IAAI,MAAM,CAAC,eAAe,EAAE;YAC1B,QAAQ,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;SACnD;QACD,IAAI,MAAM,CAAC,QAAQ,EAAE;YACnB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA6C,CAAC;YACtE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;gBACjD,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;oBAC3B,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC9B;aACF;YACD,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC9B;QACD,OAAO,IAAA,kBAAO,EAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;CACF;AA5DD,8CA4DC","sourcesContent":["/*\n * Copyright (c) 2022 Erik Fortune\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nimport * as Iana from '../../iana';\nimport * as Converters from './converters';\nimport * as Model from './model';\n\nimport { Result, mapResults, succeed } from '@fgv/ts-utils';\n// eslint-disable-next-line @rushstack/packlets/mechanics\nimport defaultOverrides from '../../../data/bcp/overrides.json';\n\n/**\n * @public\n */\nexport interface ILanguageOverride {\n language: Iana.LanguageSubtags.LanguageSubtag;\n preferredRegion?: Iana.LanguageSubtags.RegionSubtag;\n defaultAffinity?: string;\n affinity?: Map<Iana.LanguageSubtags.RegionSubtag, string>;\n}\n\n/**\n * @public\n */\nexport class OverridesRegistry {\n public readonly overrides: Map<Iana.LanguageSubtags.LanguageSubtag, ILanguageOverride>;\n\n protected constructor() {\n this.overrides = new Map();\n }\n\n public static create(overrides: ILanguageOverride[]): Result<OverridesRegistry> {\n const registry = new OverridesRegistry();\n overrides.forEach((o) => registry.overrides.set(o.language, o));\n return succeed(registry);\n }\n\n public static createFromJson(from: unknown): Result<OverridesRegistry> {\n return Converters.languageOverridesFile\n .convert(from)\n .onSuccess((records) => {\n return mapResults(records.map(OverridesRegistry._overrideFromRecord));\n })\n .onSuccess((overrides) => {\n return OverridesRegistry.create(overrides);\n });\n }\n\n public static loadDefault(): Result<OverridesRegistry> {\n return this.createFromJson(defaultOverrides);\n }\n\n public static loadJson(path: string): Result<OverridesRegistry> {\n return Converters.loadLanguageOverridesFileSync(path).onSuccess(OverridesRegistry.createFromJson);\n }\n\n /**\n * Converts a file {@link Bcp47.Overrides.Model.LanguageOverrideRecord | LanguageOverrideRecord }\n * to a runtime {@link Bcp47.Overrides.LanguageOverride | LanguageOverride}.\n * @param record - The {@link Bcp47.Overrides.Model.LanguageOverrideRecord | LanguageOverrideRecord } to\n * be converted.\n * @returns `Success` with the resulting {@link Bcp47.Overrides.LanguageOverride | LanguageOverride}\n * or `Error` with details if an error occurs.\n * @internal\n */\n protected static _overrideFromRecord(record: Model.ILanguageOverrideRecord): Result<ILanguageOverride> {\n const override: ILanguageOverride = { language: record.language };\n if (record.preferredRegion) {\n override.preferredRegion = record.preferredRegion;\n }\n if (record.defaultAffinity) {\n override.defaultAffinity = record.defaultAffinity;\n }\n if (record.affinity) {\n const affinity = new Map<Iana.LanguageSubtags.RegionSubtag, string>();\n for (const kvp of Object.entries(record.affinity)) {\n for (const region of kvp[1]) {\n affinity.set(region, kvp[0]);\n }\n }\n override.affinity = affinity;\n }\n return succeed(override);\n }\n}\n"]}
@@ -0,0 +1,35 @@
1
+ import * as Iana from '../../iana';
2
+ import { Result } from '@fgv/ts-utils';
3
+ import { ExtensionSingleton, ExtensionSubtag } from '../bcp47Subtags/model';
4
+ import { IExtensionSubtagValue, ISubtags } from '../common';
5
+ import { TagValidity } from './common';
6
+ /**
7
+ * @public
8
+ */
9
+ export interface ITagValidator {
10
+ readonly validity: TagValidity;
11
+ validateSubtags(subtags: ISubtags): Result<true>;
12
+ }
13
+ /**
14
+ * @internal
15
+ */
16
+ export declare abstract class TagValidatorBase implements ITagValidator {
17
+ readonly iana: Iana.LanguageRegistries;
18
+ abstract readonly validity: TagValidity;
19
+ constructor(iana?: Iana.LanguageRegistries);
20
+ validateSubtags(subtags: ISubtags): Result<true>;
21
+ protected _basicPostValidation(subtags: ISubtags): Result<ISubtags>;
22
+ protected _postValidate(subtags: ISubtags): Result<ISubtags>;
23
+ protected _checkExtensions(subtags: ISubtags): Result<IExtensionSubtagValue[] | undefined>;
24
+ protected _verifyUnique<T, TK extends string>(description: string, items: T[] | undefined, getKey: (item: T) => TK): Result<T[] | undefined>;
25
+ protected abstract _checkLanguage(subtags: ISubtags): Result<unknown>;
26
+ protected abstract _checkExtlangs(subtags: ISubtags): Result<unknown>;
27
+ protected abstract _checkScript(subtags: ISubtags): Result<unknown>;
28
+ protected abstract _checkRegion(subtags: ISubtags): Result<unknown>;
29
+ protected abstract _checkVariants(subtags: ISubtags): Result<unknown>;
30
+ protected abstract _checkExtensionSingleton(singleton: ExtensionSingleton): Result<unknown>;
31
+ protected abstract _checkExtensionSubtagValue(value: ExtensionSubtag): Result<unknown>;
32
+ protected abstract _checkPrivateUseTags(subtags: ISubtags): Result<unknown>;
33
+ protected abstract _checkGrandfatheredTags(subtags: ISubtags): Result<unknown>;
34
+ }
35
+ //# sourceMappingURL=baseValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseValidator.d.ts","sourceRoot":"","sources":["../../../../src/packlets/bcp47/validation/baseValidator.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,MAAM,EAA6B,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAmB,MAAM,WAAW,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAE/B,eAAe,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;CAClD;AAED;;GAEG;AACH,8BAAsB,gBAAiB,YAAW,aAAa;IAC7D,SAAgB,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC;IAC9C,kBAAyB,QAAQ,EAAE,WAAW,CAAC;gBAE5B,IAAI,CAAC,EAAE,IAAI,CAAC,kBAAkB;IAK1C,eAAe,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;IAkBvD,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAcnE,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAI5D,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,qBAAqB,EAAE,GAAG,SAAS,CAAC;IAc1F,SAAS,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,SAAS,MAAM,EAC1C,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,CAAC,EAAE,GAAG,SAAS,EACtB,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,GACtB,MAAM,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC;IAkB1B,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;IACrE,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;IACrE,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;IACnE,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;IACnE,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;IACrE,SAAS,CAAC,QAAQ,CAAC,wBAAwB,CAAC,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC;IAC3F,SAAS,CAAC,QAAQ,CAAC,0BAA0B,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC;IACtF,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;IAC3E,SAAS,CAAC,QAAQ,CAAC,uBAAuB,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;CAC/E"}
@@ -0,0 +1,113 @@
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.TagValidatorBase = void 0;
48
+ const Iana = __importStar(require("../../iana"));
49
+ const ts_utils_1 = require("@fgv/ts-utils");
50
+ const common_1 = require("../common");
51
+ /**
52
+ * @internal
53
+ */
54
+ class TagValidatorBase {
55
+ constructor(iana) {
56
+ /* c8 ignore next */
57
+ this.iana = iana !== null && iana !== void 0 ? iana : Iana.DefaultRegistries.languageRegistries;
58
+ }
59
+ validateSubtags(subtags) {
60
+ return (0, ts_utils_1.allSucceed)([
61
+ this._checkLanguage(subtags),
62
+ this._checkExtlangs(subtags),
63
+ this._checkScript(subtags),
64
+ this._checkRegion(subtags),
65
+ this._checkVariants(subtags),
66
+ this._checkExtensions(subtags),
67
+ this._checkPrivateUseTags(subtags),
68
+ this._checkGrandfatheredTags(subtags)
69
+ ], true).onSuccess(() => {
70
+ return this._postValidate(subtags).onSuccess(() => (0, ts_utils_1.succeed)(true));
71
+ });
72
+ }
73
+ _basicPostValidation(subtags) {
74
+ if (subtags.primaryLanguage === undefined &&
75
+ subtags.grandfathered === undefined &&
76
+ subtags.privateUse === undefined) {
77
+ return (0, ts_utils_1.fail)(`${(0, common_1.subtagsToString)(subtags)}: missing primary language subtag.`);
78
+ }
79
+ if (subtags.extlangs && subtags.extlangs.length > 3) {
80
+ return (0, ts_utils_1.fail)(`${(0, common_1.subtagsToString)(subtags)}: too many extlang subtags`);
81
+ }
82
+ return (0, ts_utils_1.succeed)(subtags);
83
+ }
84
+ _postValidate(subtags) {
85
+ return this._basicPostValidation(subtags);
86
+ }
87
+ _checkExtensions(subtags) {
88
+ if (subtags.extensions) {
89
+ return (0, ts_utils_1.allSucceed)(subtags.extensions.map((ext) => {
90
+ return this._checkExtensionSingleton(ext.singleton).onSuccess(() => {
91
+ return this._checkExtensionSubtagValue(ext.value);
92
+ });
93
+ }), subtags.extensions);
94
+ }
95
+ return (0, ts_utils_1.succeed)(undefined);
96
+ }
97
+ _verifyUnique(description, items, getKey) {
98
+ if (items) {
99
+ const present = new Set();
100
+ return (0, ts_utils_1.allSucceed)(items.map((i) => {
101
+ const key = getKey(i);
102
+ if (present.has(key)) {
103
+ return (0, ts_utils_1.fail)(`${key}: duplicate ${description}`);
104
+ }
105
+ present.add(key);
106
+ return (0, ts_utils_1.succeed)(key);
107
+ }), items);
108
+ }
109
+ return (0, ts_utils_1.succeed)(items);
110
+ }
111
+ }
112
+ exports.TagValidatorBase = TagValidatorBase;
113
+ //# sourceMappingURL=baseValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseValidator.js","sourceRoot":"","sources":["../../../../src/packlets/bcp47/validation/baseValidator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,iDAAmC;AAEnC,4CAAkE;AAElE,sCAA6E;AAY7E;;GAEG;AACH,MAAsB,gBAAgB;IAIpC,YAAmB,IAA8B;QAC/C,oBAAoB;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;IAChE,CAAC;IAEM,eAAe,CAAC,OAAiB;QACtC,OAAO,IAAA,qBAAU,EACf;YACE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAC5B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAC5B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;YAC1B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;YAC1B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAC5B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAC9B,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;YAClC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;SACtC,EACD,IAAI,CACL,CAAC,SAAS,CAAC,GAAG,EAAE;YACf,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAA,kBAAO,EAAC,IAAI,CAAC,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC;IAES,oBAAoB,CAAC,OAAiB;QAC9C,IACE,OAAO,CAAC,eAAe,KAAK,SAAS;YACrC,OAAO,CAAC,aAAa,KAAK,SAAS;YACnC,OAAO,CAAC,UAAU,KAAK,SAAS,EAChC;YACA,OAAO,IAAA,eAAI,EAAC,GAAG,IAAA,wBAAe,EAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;SAC9E;QACD,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACnD,OAAO,IAAA,eAAI,EAAC,GAAG,IAAA,wBAAe,EAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;SACtE;QACD,OAAO,IAAA,kBAAO,EAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;IAES,aAAa,CAAC,OAAiB;QACvC,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAES,gBAAgB,CAAC,OAAiB;QAC1C,IAAI,OAAO,CAAC,UAAU,EAAE;YACtB,OAAO,IAAA,qBAAU,EACf,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC7B,OAAO,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE;oBACjE,OAAO,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACpD,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,EACF,OAAO,CAAC,UAAU,CACnB,CAAC;SACH;QACD,OAAO,IAAA,kBAAO,EAAC,SAAS,CAAC,CAAC;IAC5B,CAAC;IAES,aAAa,CACrB,WAAmB,EACnB,KAAsB,EACtB,MAAuB;QAEvB,IAAI,KAAK,EAAE;YACT,MAAM,OAAO,GAAG,IAAI,GAAG,EAAM,CAAC;YAC9B,OAAO,IAAA,qBAAU,EACf,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACd,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;oBACpB,OAAO,IAAA,eAAI,EAAC,GAAG,GAAG,eAAe,WAAW,EAAE,CAAC,CAAC;iBACjD;gBACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACjB,OAAO,IAAA,kBAAO,EAAC,GAAG,CAAC,CAAC;YACtB,CAAC,CAAC,EACF,KAAK,CACN,CAAC;SACH;QACD,OAAO,IAAA,kBAAO,EAAC,KAAK,CAAC,CAAC;IACxB,CAAC;CAWF;AA1FD,4CA0FC","sourcesContent":["/*\n * Copyright (c) 2022 Erik Fortune\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nimport * as Iana from '../../iana';\n\nimport { Result, allSucceed, fail, succeed } from '@fgv/ts-utils';\nimport { ExtensionSingleton, ExtensionSubtag } from '../bcp47Subtags/model';\nimport { IExtensionSubtagValue, ISubtags, subtagsToString } from '../common';\nimport { TagValidity } from './common';\n\n/**\n * @public\n */\nexport interface ITagValidator {\n readonly validity: TagValidity;\n\n validateSubtags(subtags: ISubtags): Result<true>;\n}\n\n/**\n * @internal\n */\nexport abstract class TagValidatorBase implements ITagValidator {\n public readonly iana: Iana.LanguageRegistries;\n public abstract readonly validity: TagValidity;\n\n public constructor(iana?: Iana.LanguageRegistries) {\n /* c8 ignore next */\n this.iana = iana ?? Iana.DefaultRegistries.languageRegistries;\n }\n\n public validateSubtags(subtags: ISubtags): Result<true> {\n return allSucceed(\n [\n this._checkLanguage(subtags),\n this._checkExtlangs(subtags),\n this._checkScript(subtags),\n this._checkRegion(subtags),\n this._checkVariants(subtags),\n this._checkExtensions(subtags),\n this._checkPrivateUseTags(subtags),\n this._checkGrandfatheredTags(subtags)\n ],\n true\n ).onSuccess(() => {\n return this._postValidate(subtags).onSuccess(() => succeed(true));\n });\n }\n\n protected _basicPostValidation(subtags: ISubtags): Result<ISubtags> {\n if (\n subtags.primaryLanguage === undefined &&\n subtags.grandfathered === undefined &&\n subtags.privateUse === undefined\n ) {\n return fail(`${subtagsToString(subtags)}: missing primary language subtag.`);\n }\n if (subtags.extlangs && subtags.extlangs.length > 3) {\n return fail(`${subtagsToString(subtags)}: too many extlang subtags`);\n }\n return succeed(subtags);\n }\n\n protected _postValidate(subtags: ISubtags): Result<ISubtags> {\n return this._basicPostValidation(subtags);\n }\n\n protected _checkExtensions(subtags: ISubtags): Result<IExtensionSubtagValue[] | undefined> {\n if (subtags.extensions) {\n return allSucceed(\n subtags.extensions.map((ext) => {\n return this._checkExtensionSingleton(ext.singleton).onSuccess(() => {\n return this._checkExtensionSubtagValue(ext.value);\n });\n }),\n subtags.extensions\n );\n }\n return succeed(undefined);\n }\n\n protected _verifyUnique<T, TK extends string>(\n description: string,\n items: T[] | undefined,\n getKey: (item: T) => TK\n ): Result<T[] | undefined> {\n if (items) {\n const present = new Set<TK>();\n return allSucceed(\n items.map((i) => {\n const key = getKey(i);\n if (present.has(key)) {\n return fail(`${key}: duplicate ${description}`);\n }\n present.add(key);\n return succeed(key);\n }),\n items\n );\n }\n return succeed(items);\n }\n\n protected abstract _checkLanguage(subtags: ISubtags): Result<unknown>;\n protected abstract _checkExtlangs(subtags: ISubtags): Result<unknown>;\n protected abstract _checkScript(subtags: ISubtags): Result<unknown>;\n protected abstract _checkRegion(subtags: ISubtags): Result<unknown>;\n protected abstract _checkVariants(subtags: ISubtags): Result<unknown>;\n protected abstract _checkExtensionSingleton(singleton: ExtensionSingleton): Result<unknown>;\n protected abstract _checkExtensionSubtagValue(value: ExtensionSubtag): Result<unknown>;\n protected abstract _checkPrivateUseTags(subtags: ISubtags): Result<unknown>;\n protected abstract _checkGrandfatheredTags(subtags: ISubtags): Result<unknown>;\n}\n"]}
@@ -7,7 +7,7 @@ export type TagValidity = 'unknown' | 'well-formed' | 'valid' | 'strictly-valid'
7
7
  * Determines which of two validity ranks is most normalized.
8
8
  * @param v1 - The first {@link TagValidity} to be compared.
9
9
  * @param v2 - The second {@link TagValidity} to be compared.
10
- * @returns `1' if `v1` is more normalized, `-1` if `v2` is more
10
+ * @returns `1` if `v1` is more normalized, `-1` if `v2` is more
11
11
  * normalized, or `0` if they are identical.
12
12
  * @public
13
13
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/packlets/bcp47/validation/common.ts"],"names":[],"mappings":"AAsBA;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,aAAa,GAAG,OAAO,GAAG,gBAAgB,CAAC;AAiCjF;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAO5E;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,GAAG,WAAW,CAEvE"}