@fgv/ts-bcp47 0.9.6 → 2.0.2-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 (554) hide show
  1. package/dist/ts-bcp47.d.ts +2554 -0
  2. package/dist/tsdoc-metadata.json +11 -0
  3. package/lib/data/bcp/overrides.json +20 -0
  4. package/lib/data/iana/language-subtags.json +57439 -0
  5. package/{data → lib/data}/iana/language-tag-extensions.json +2 -6
  6. package/lib/data/unsd/m49.json +3723 -0
  7. package/lib/index.d.ts +6 -0
  8. package/lib/index.d.ts.map +1 -0
  9. package/lib/index.js +57 -0
  10. package/lib/index.js.map +1 -0
  11. package/lib/packlets/bcp47/bcp47Subtags/converters.d.ts.map +1 -0
  12. package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/converters.js +2 -1
  13. package/lib/packlets/bcp47/bcp47Subtags/converters.js.map +1 -0
  14. package/lib/packlets/bcp47/bcp47Subtags/index.d.ts.map +1 -0
  15. package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/index.js +1 -1
  16. package/lib/packlets/bcp47/bcp47Subtags/index.js.map +1 -0
  17. package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/model.d.ts +3 -1
  18. package/lib/packlets/bcp47/bcp47Subtags/model.d.ts.map +1 -0
  19. package/lib/packlets/bcp47/bcp47Subtags/model.js +24 -0
  20. package/lib/packlets/bcp47/bcp47Subtags/model.js.map +1 -0
  21. package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/validate.d.ts +2 -2
  22. package/lib/packlets/bcp47/bcp47Subtags/validate.d.ts.map +1 -0
  23. package/lib/packlets/bcp47/bcp47Subtags/validate.js +74 -0
  24. package/lib/packlets/bcp47/bcp47Subtags/validate.js.map +1 -0
  25. package/{bcp47 → lib/packlets/bcp47}/common.d.ts +4 -4
  26. package/lib/packlets/bcp47/common.d.ts.map +1 -0
  27. package/lib/packlets/bcp47/common.js +59 -0
  28. package/lib/packlets/bcp47/common.js.map +1 -0
  29. package/{bcp47 → lib/packlets/bcp47}/helpers.d.ts +8 -8
  30. package/lib/packlets/bcp47/helpers.d.ts.map +1 -0
  31. package/lib/packlets/bcp47/helpers.js +103 -0
  32. package/lib/packlets/bcp47/helpers.js.map +1 -0
  33. package/lib/packlets/bcp47/index.d.ts +10 -0
  34. package/lib/packlets/bcp47/index.d.ts.map +1 -0
  35. package/lib/packlets/bcp47/index.js +68 -0
  36. package/lib/packlets/bcp47/index.js.map +1 -0
  37. package/{bcp47 → lib/packlets/bcp47}/languageRegistryData.d.ts +26 -27
  38. package/lib/packlets/bcp47/languageRegistryData.d.ts.map +1 -0
  39. package/lib/packlets/bcp47/languageRegistryData.js +206 -0
  40. package/lib/packlets/bcp47/languageRegistryData.js.map +1 -0
  41. package/{bcp47 → lib/packlets/bcp47}/languageTag.d.ts +12 -13
  42. package/lib/packlets/bcp47/languageTag.d.ts.map +1 -0
  43. package/lib/packlets/bcp47/languageTag.js +390 -0
  44. package/lib/packlets/bcp47/languageTag.js.map +1 -0
  45. package/{bcp47 → lib/packlets/bcp47}/languageTagParser.d.ts +13 -14
  46. package/lib/packlets/bcp47/languageTagParser.d.ts.map +1 -0
  47. package/lib/packlets/bcp47/languageTagParser.js +303 -0
  48. package/lib/packlets/bcp47/languageTagParser.js.map +1 -0
  49. package/{bcp47 → lib/packlets/bcp47}/match/chooser.d.ts +8 -8
  50. package/lib/packlets/bcp47/match/chooser.d.ts.map +1 -0
  51. package/lib/packlets/bcp47/match/chooser.js +92 -0
  52. package/lib/packlets/bcp47/match/chooser.js.map +1 -0
  53. package/lib/packlets/bcp47/match/common.d.ts.map +1 -0
  54. package/lib/packlets/bcp47/match/common.js +52 -0
  55. package/lib/packlets/bcp47/match/common.js.map +1 -0
  56. package/lib/packlets/bcp47/match/index.d.ts +4 -0
  57. package/lib/packlets/bcp47/match/index.d.ts.map +1 -0
  58. package/lib/packlets/bcp47/match/index.js +45 -0
  59. package/lib/packlets/bcp47/match/index.js.map +1 -0
  60. package/lib/packlets/bcp47/match/similarity.d.ts.map +1 -0
  61. package/lib/packlets/bcp47/match/similarity.js +230 -0
  62. package/lib/packlets/bcp47/match/similarity.js.map +1 -0
  63. package/lib/packlets/bcp47/normalization/baseNormalizer.d.ts +35 -0
  64. package/lib/packlets/bcp47/normalization/baseNormalizer.d.ts.map +1 -0
  65. package/lib/packlets/bcp47/normalization/baseNormalizer.js +116 -0
  66. package/lib/packlets/bcp47/normalization/baseNormalizer.js.map +1 -0
  67. package/lib/packlets/bcp47/normalization/canonicalNormalizer.d.ts +22 -0
  68. package/lib/packlets/bcp47/normalization/canonicalNormalizer.d.ts.map +1 -0
  69. package/lib/packlets/bcp47/normalization/canonicalNormalizer.js +113 -0
  70. package/lib/packlets/bcp47/normalization/canonicalNormalizer.js.map +1 -0
  71. package/{bcp47 → lib/packlets/bcp47}/normalization/common.d.ts +1 -1
  72. package/lib/packlets/bcp47/normalization/common.d.ts.map +1 -0
  73. package/lib/packlets/bcp47/normalization/common.js +82 -0
  74. package/lib/packlets/bcp47/normalization/common.js.map +1 -0
  75. package/lib/packlets/bcp47/normalization/index.d.ts.map +1 -0
  76. package/{bcp47 → lib/packlets/bcp47}/normalization/index.js +1 -1
  77. package/lib/packlets/bcp47/normalization/index.js.map +1 -0
  78. package/{bcp47 → lib/packlets/bcp47}/normalization/normalizeTag.d.ts +6 -6
  79. package/lib/packlets/bcp47/normalization/normalizeTag.d.ts.map +1 -0
  80. package/lib/packlets/bcp47/normalization/normalizeTag.js +105 -0
  81. package/lib/packlets/bcp47/normalization/normalizeTag.js.map +1 -0
  82. package/lib/packlets/bcp47/normalization/preferredTagNormalizer.d.ts +27 -0
  83. package/lib/packlets/bcp47/normalization/preferredTagNormalizer.d.ts.map +1 -0
  84. package/lib/packlets/bcp47/normalization/preferredTagNormalizer.js +204 -0
  85. package/lib/packlets/bcp47/normalization/preferredTagNormalizer.js.map +1 -0
  86. package/lib/packlets/bcp47/overrides/converters.d.ts +19 -0
  87. package/lib/packlets/bcp47/overrides/converters.d.ts.map +1 -0
  88. package/lib/packlets/bcp47/overrides/converters.js +76 -0
  89. package/lib/packlets/bcp47/overrides/converters.js.map +1 -0
  90. package/lib/packlets/bcp47/overrides/defaultRegistries.d.ts.map +1 -0
  91. package/lib/packlets/bcp47/overrides/defaultRegistries.js +42 -0
  92. package/lib/packlets/bcp47/overrides/defaultRegistries.js.map +1 -0
  93. package/lib/packlets/bcp47/overrides/index.d.ts.map +1 -0
  94. package/lib/packlets/bcp47/overrides/index.js +30 -0
  95. package/lib/packlets/bcp47/overrides/index.js.map +1 -0
  96. package/lib/packlets/bcp47/overrides/model.d.ts +11 -0
  97. package/lib/packlets/bcp47/overrides/model.d.ts.map +1 -0
  98. package/lib/packlets/bcp47/overrides/model.js +24 -0
  99. package/lib/packlets/bcp47/overrides/model.js.map +1 -0
  100. package/{bcp47 → lib/packlets/bcp47}/overrides/overridesRegistry.d.ts +8 -8
  101. package/lib/packlets/bcp47/overrides/overridesRegistry.d.ts.map +1 -0
  102. package/lib/packlets/bcp47/overrides/overridesRegistry.js +113 -0
  103. package/lib/packlets/bcp47/overrides/overridesRegistry.js.map +1 -0
  104. package/lib/packlets/bcp47/validation/baseValidator.d.ts +35 -0
  105. package/lib/packlets/bcp47/validation/baseValidator.d.ts.map +1 -0
  106. package/lib/packlets/bcp47/validation/baseValidator.js +113 -0
  107. package/lib/packlets/bcp47/validation/baseValidator.js.map +1 -0
  108. package/{bcp47 → lib/packlets/bcp47}/validation/common.d.ts +1 -1
  109. package/lib/packlets/bcp47/validation/common.d.ts.map +1 -0
  110. package/lib/packlets/bcp47/validation/common.js +84 -0
  111. package/lib/packlets/bcp47/validation/common.js.map +1 -0
  112. package/lib/packlets/bcp47/validation/index.d.ts.map +1 -0
  113. package/{bcp47 → lib/packlets/bcp47}/validation/index.js +1 -1
  114. package/lib/packlets/bcp47/validation/index.js.map +1 -0
  115. package/lib/packlets/bcp47/validation/isCanonical.d.ts +22 -0
  116. package/lib/packlets/bcp47/validation/isCanonical.d.ts.map +1 -0
  117. package/lib/packlets/bcp47/validation/isCanonical.js +106 -0
  118. package/lib/packlets/bcp47/validation/isCanonical.js.map +1 -0
  119. package/{bcp47 → lib/packlets/bcp47}/validation/isInPreferredForm.d.ts +4 -4
  120. package/lib/packlets/bcp47/validation/isInPreferredForm.d.ts.map +1 -0
  121. package/lib/packlets/bcp47/validation/isInPreferredForm.js +73 -0
  122. package/lib/packlets/bcp47/validation/isInPreferredForm.js.map +1 -0
  123. package/lib/packlets/bcp47/validation/isStrictlyValid.d.ts +18 -0
  124. package/lib/packlets/bcp47/validation/isStrictlyValid.d.ts.map +1 -0
  125. package/lib/packlets/bcp47/validation/isStrictlyValid.js +98 -0
  126. package/lib/packlets/bcp47/validation/isStrictlyValid.js.map +1 -0
  127. package/lib/packlets/bcp47/validation/isValid.d.ts +24 -0
  128. package/lib/packlets/bcp47/validation/isValid.d.ts.map +1 -0
  129. package/lib/packlets/bcp47/validation/isValid.js +119 -0
  130. package/lib/packlets/bcp47/validation/isValid.js.map +1 -0
  131. package/lib/packlets/bcp47/validation/isWellFormed.d.ts +22 -0
  132. package/lib/packlets/bcp47/validation/isWellFormed.d.ts.map +1 -0
  133. package/lib/packlets/bcp47/validation/isWellFormed.js +102 -0
  134. package/lib/packlets/bcp47/validation/isWellFormed.js.map +1 -0
  135. package/{bcp47 → lib/packlets/bcp47}/validation/validateTag.d.ts +9 -9
  136. package/lib/packlets/bcp47/validation/validateTag.d.ts.map +1 -0
  137. package/lib/packlets/bcp47/validation/validateTag.js +159 -0
  138. package/lib/packlets/bcp47/validation/validateTag.js.map +1 -0
  139. package/{iana → lib/packlets/iana}/common/converters.d.ts +2 -2
  140. package/lib/packlets/iana/common/converters.d.ts.map +1 -0
  141. package/lib/packlets/iana/common/converters.js +85 -0
  142. package/lib/packlets/iana/common/converters.js.map +1 -0
  143. package/{iana → lib/packlets/iana}/common/model.d.ts +1 -1
  144. package/lib/packlets/iana/common/model.d.ts.map +1 -0
  145. package/lib/packlets/iana/common/model.js +24 -0
  146. package/lib/packlets/iana/common/model.js.map +1 -0
  147. package/lib/packlets/iana/common/registeredItems.d.ts.map +1 -0
  148. package/lib/packlets/iana/common/registeredItems.js +124 -0
  149. package/lib/packlets/iana/common/registeredItems.js.map +1 -0
  150. package/lib/packlets/iana/common/utils.d.ts.map +1 -0
  151. package/lib/packlets/iana/common/utils.js +34 -0
  152. package/lib/packlets/iana/common/utils.js.map +1 -0
  153. package/{iana → lib/packlets/iana}/common/validate.d.ts +1 -1
  154. package/lib/packlets/iana/common/validate.d.ts.map +1 -0
  155. package/lib/packlets/iana/common/validate.js +62 -0
  156. package/lib/packlets/iana/common/validate.js.map +1 -0
  157. package/lib/packlets/iana/converters.d.ts.map +1 -0
  158. package/{iana → lib/packlets/iana}/converters.js +1 -1
  159. package/lib/packlets/iana/converters.js.map +1 -0
  160. package/lib/packlets/iana/defaultRegistries.d.ts.map +1 -0
  161. package/lib/packlets/iana/defaultRegistries.js +42 -0
  162. package/lib/packlets/iana/defaultRegistries.js.map +1 -0
  163. package/{iana → lib/packlets/iana}/index.d.ts +4 -2
  164. package/lib/packlets/iana/index.d.ts.map +1 -0
  165. package/{iana/jar/language-subtags/tags → lib/packlets/iana}/index.js +18 -6
  166. package/lib/packlets/iana/index.js.map +1 -0
  167. package/lib/packlets/iana/jar/converters.d.ts.map +1 -0
  168. package/{iana → lib/packlets/iana}/jar/converters.js +1 -1
  169. package/lib/packlets/iana/jar/converters.js.map +1 -0
  170. package/lib/packlets/iana/jar/index.d.ts +5 -0
  171. package/lib/packlets/iana/jar/index.d.ts.map +1 -0
  172. package/{unsd/csv → lib/packlets/iana/jar}/index.js +4 -2
  173. package/lib/packlets/iana/jar/index.js.map +1 -0
  174. package/{iana → lib/packlets/iana}/jar/jarConverters.d.ts +5 -5
  175. package/lib/packlets/iana/jar/jarConverters.d.ts.map +1 -0
  176. package/lib/packlets/iana/jar/jarConverters.js +86 -0
  177. package/lib/packlets/iana/jar/jarConverters.js.map +1 -0
  178. package/{iana → lib/packlets/iana}/jar/jarModel.d.ts +1 -1
  179. package/lib/packlets/iana/jar/jarModel.d.ts.map +1 -0
  180. package/lib/packlets/iana/jar/jarModel.js +24 -0
  181. package/lib/packlets/iana/jar/jarModel.js.map +1 -0
  182. package/lib/packlets/iana/jar/language-subtags/converters.d.ts.map +1 -0
  183. package/{iana → lib/packlets/iana}/jar/language-subtags/converters.js +1 -1
  184. package/lib/packlets/iana/jar/language-subtags/converters.js.map +1 -0
  185. package/lib/packlets/iana/jar/language-subtags/index.d.ts +5 -0
  186. package/lib/packlets/iana/jar/language-subtags/index.d.ts.map +1 -0
  187. package/{iana/jar/language-subtags/registry → lib/packlets/iana/jar/language-subtags}/index.js +29 -28
  188. package/lib/packlets/iana/jar/language-subtags/index.js.map +1 -0
  189. package/lib/packlets/iana/jar/language-subtags/model.d.ts.map +1 -0
  190. package/{iana → lib/packlets/iana}/jar/language-subtags/model.js +1 -1
  191. package/lib/packlets/iana/jar/language-subtags/model.js.map +1 -0
  192. package/lib/packlets/iana/jar/language-subtags/registry/converters.d.ts.map +1 -0
  193. package/lib/packlets/iana/jar/language-subtags/registry/converters.js +59 -0
  194. package/lib/packlets/iana/jar/language-subtags/registry/converters.js.map +1 -0
  195. package/lib/packlets/iana/jar/language-subtags/registry/index.d.ts.map +1 -0
  196. package/{iana/jar/language-subtags → lib/packlets/iana/jar/language-subtags/registry}/index.js +23 -22
  197. package/lib/packlets/iana/jar/language-subtags/registry/index.js.map +1 -0
  198. package/{iana → lib/packlets/iana}/jar/language-subtags/registry/model.d.ts +12 -12
  199. package/lib/packlets/iana/jar/language-subtags/registry/model.d.ts.map +1 -0
  200. package/lib/packlets/iana/jar/language-subtags/registry/model.js +46 -0
  201. package/lib/packlets/iana/jar/language-subtags/registry/model.js.map +1 -0
  202. package/lib/packlets/iana/jar/language-subtags/tags/converters.d.ts +55 -0
  203. package/lib/packlets/iana/jar/language-subtags/tags/converters.d.ts.map +1 -0
  204. package/lib/packlets/iana/jar/language-subtags/tags/converters.js +129 -0
  205. package/lib/packlets/iana/jar/language-subtags/tags/converters.js.map +1 -0
  206. package/lib/packlets/iana/jar/language-subtags/tags/index.d.ts +6 -0
  207. package/lib/packlets/iana/jar/language-subtags/tags/index.d.ts.map +1 -0
  208. package/lib/packlets/iana/jar/language-subtags/tags/index.js +58 -0
  209. package/lib/packlets/iana/jar/language-subtags/tags/index.js.map +1 -0
  210. package/lib/packlets/iana/jar/language-subtags/tags/model.d.ts.map +1 -0
  211. package/lib/packlets/iana/jar/language-subtags/tags/model.js +24 -0
  212. package/lib/packlets/iana/jar/language-subtags/tags/model.js.map +1 -0
  213. package/lib/packlets/iana/jar/language-subtags/tags/tagValidation.d.ts.map +1 -0
  214. package/lib/packlets/iana/jar/language-subtags/tags/tagValidation.js +70 -0
  215. package/lib/packlets/iana/jar/language-subtags/tags/tagValidation.js.map +1 -0
  216. package/lib/packlets/iana/jar/language-subtags/tags/validate.d.ts.map +1 -0
  217. package/lib/packlets/iana/jar/language-subtags/tags/validate.js +88 -0
  218. package/lib/packlets/iana/jar/language-subtags/tags/validate.js.map +1 -0
  219. package/lib/packlets/iana/jar/model.d.ts.map +1 -0
  220. package/{iana → lib/packlets/iana}/jar/model.js +1 -1
  221. package/lib/packlets/iana/jar/model.js.map +1 -0
  222. package/lib/packlets/iana/language-subtags/common.d.ts.map +1 -0
  223. package/lib/packlets/iana/language-subtags/common.js +24 -0
  224. package/lib/packlets/iana/language-subtags/common.js.map +1 -0
  225. package/lib/packlets/iana/language-subtags/converters.d.ts +52 -0
  226. package/lib/packlets/iana/language-subtags/converters.d.ts.map +1 -0
  227. package/lib/packlets/iana/language-subtags/converters.js +209 -0
  228. package/lib/packlets/iana/language-subtags/converters.js.map +1 -0
  229. package/{iana → lib/packlets/iana}/language-subtags/index.d.ts +4 -3
  230. package/lib/packlets/iana/language-subtags/index.d.ts.map +1 -0
  231. package/{iana → lib/packlets/iana}/language-subtags/index.js +10 -8
  232. package/lib/packlets/iana/language-subtags/index.js.map +1 -0
  233. package/{iana → lib/packlets/iana}/language-subtags/jarConverters.d.ts +8 -8
  234. package/lib/packlets/iana/language-subtags/jarConverters.d.ts.map +1 -0
  235. package/lib/packlets/iana/language-subtags/jarConverters.js +237 -0
  236. package/lib/packlets/iana/language-subtags/jarConverters.js.map +1 -0
  237. package/{iana → lib/packlets/iana}/language-subtags/model.d.ts +15 -15
  238. package/lib/packlets/iana/language-subtags/model.d.ts.map +1 -0
  239. package/lib/packlets/iana/language-subtags/model.js +24 -0
  240. package/lib/packlets/iana/language-subtags/model.js.map +1 -0
  241. package/{iana → lib/packlets/iana}/language-subtags/scope.d.ts +12 -12
  242. package/lib/packlets/iana/language-subtags/scope.d.ts.map +1 -0
  243. package/lib/packlets/iana/language-subtags/scope.js +179 -0
  244. package/lib/packlets/iana/language-subtags/scope.js.map +1 -0
  245. package/{iana → lib/packlets/iana}/language-subtags/subtagRegistry.d.ts +1 -1
  246. package/lib/packlets/iana/language-subtags/subtagRegistry.d.ts.map +1 -0
  247. package/lib/packlets/iana/language-subtags/subtagRegistry.js +150 -0
  248. package/lib/packlets/iana/language-subtags/subtagRegistry.js.map +1 -0
  249. package/lib/packlets/iana/language-subtags/validate.d.ts.map +1 -0
  250. package/{iana → lib/packlets/iana}/language-subtags/validate.js +1 -1
  251. package/lib/packlets/iana/language-subtags/validate.js.map +1 -0
  252. package/lib/packlets/iana/language-tag-extensions/converters.d.ts +22 -0
  253. package/lib/packlets/iana/language-tag-extensions/converters.d.ts.map +1 -0
  254. package/lib/packlets/iana/language-tag-extensions/converters.js +86 -0
  255. package/lib/packlets/iana/language-tag-extensions/converters.js.map +1 -0
  256. package/{iana → lib/packlets/iana}/language-tag-extensions/extensionsRegistry.d.ts +2 -2
  257. package/lib/packlets/iana/language-tag-extensions/extensionsRegistry.d.ts.map +1 -0
  258. package/lib/packlets/iana/language-tag-extensions/extensionsRegistry.js +105 -0
  259. package/lib/packlets/iana/language-tag-extensions/extensionsRegistry.js.map +1 -0
  260. package/{iana → lib/packlets/iana}/language-tag-extensions/extensionsScope.d.ts +3 -3
  261. package/lib/packlets/iana/language-tag-extensions/extensionsScope.d.ts.map +1 -0
  262. package/lib/packlets/iana/language-tag-extensions/extensionsScope.js +77 -0
  263. package/lib/packlets/iana/language-tag-extensions/extensionsScope.js.map +1 -0
  264. package/{iana → lib/packlets/iana}/language-tag-extensions/index.d.ts +3 -2
  265. package/lib/packlets/iana/language-tag-extensions/index.d.ts.map +1 -0
  266. package/{iana → lib/packlets/iana}/language-tag-extensions/index.js +6 -4
  267. package/lib/packlets/iana/language-tag-extensions/index.js.map +1 -0
  268. package/{iana → lib/packlets/iana}/language-tag-extensions/jarConverters.d.ts +2 -3
  269. package/lib/packlets/iana/language-tag-extensions/jarConverters.d.ts.map +1 -0
  270. package/lib/packlets/iana/language-tag-extensions/jarConverters.js +79 -0
  271. package/lib/packlets/iana/language-tag-extensions/jarConverters.js.map +1 -0
  272. package/{iana → lib/packlets/iana}/language-tag-extensions/model.d.ts +5 -6
  273. package/lib/packlets/iana/language-tag-extensions/model.d.ts.map +1 -0
  274. package/lib/packlets/iana/language-tag-extensions/model.js +25 -0
  275. package/lib/packlets/iana/language-tag-extensions/model.js.map +1 -0
  276. package/{iana → lib/packlets/iana}/language-tag-extensions/validate.d.ts +2 -2
  277. package/lib/packlets/iana/language-tag-extensions/validate.d.ts.map +1 -0
  278. package/lib/packlets/iana/language-tag-extensions/validate.js +36 -0
  279. package/lib/packlets/iana/language-tag-extensions/validate.js.map +1 -0
  280. package/lib/packlets/iana/languageRegistries.d.ts.map +1 -0
  281. package/lib/packlets/iana/languageRegistries.js +56 -0
  282. package/lib/packlets/iana/languageRegistries.js.map +1 -0
  283. package/lib/packlets/iana/model.d.ts.map +1 -0
  284. package/{iana → lib/packlets/iana}/model.js +1 -1
  285. package/lib/packlets/iana/model.js.map +1 -0
  286. package/lib/packlets/iana/validate.d.ts.map +1 -0
  287. package/{iana → lib/packlets/iana}/validate.js +1 -1
  288. package/lib/packlets/iana/validate.js.map +1 -0
  289. package/lib/packlets/unsd/areas.d.ts +29 -0
  290. package/lib/packlets/unsd/areas.d.ts.map +1 -0
  291. package/lib/packlets/unsd/areas.js +96 -0
  292. package/lib/packlets/unsd/areas.js.map +1 -0
  293. package/lib/packlets/unsd/common.d.ts +49 -0
  294. package/lib/packlets/unsd/common.d.ts.map +1 -0
  295. package/lib/packlets/unsd/common.js +24 -0
  296. package/lib/packlets/unsd/common.js.map +1 -0
  297. package/{unsd → lib/packlets/unsd}/csv/converters.d.ts +7 -4
  298. package/lib/packlets/unsd/csv/converters.d.ts.map +1 -0
  299. package/lib/packlets/unsd/csv/converters.js +78 -0
  300. package/lib/packlets/unsd/csv/converters.js.map +1 -0
  301. package/lib/packlets/unsd/csv/index.d.ts.map +1 -0
  302. package/{iana/jar → lib/packlets/unsd/csv}/index.js +1 -1
  303. package/lib/packlets/unsd/csv/index.js.map +1 -0
  304. package/lib/packlets/unsd/csv/model.d.ts +22 -0
  305. package/lib/packlets/unsd/csv/model.d.ts.map +1 -0
  306. package/lib/packlets/unsd/csv/model.js +24 -0
  307. package/lib/packlets/unsd/csv/model.js.map +1 -0
  308. package/lib/packlets/unsd/defaultRegistries.d.ts.map +1 -0
  309. package/lib/packlets/unsd/defaultRegistries.js +42 -0
  310. package/lib/packlets/unsd/defaultRegistries.js.map +1 -0
  311. package/{unsd → lib/packlets/unsd}/index.d.ts +2 -0
  312. package/lib/packlets/unsd/index.d.ts.map +1 -0
  313. package/lib/packlets/unsd/index.js +58 -0
  314. package/lib/packlets/unsd/index.js.map +1 -0
  315. package/{unsd → lib/packlets/unsd}/regionCodes.d.ts +7 -7
  316. package/lib/packlets/unsd/regionCodes.d.ts.map +1 -0
  317. package/lib/packlets/unsd/regionCodes.js +122 -0
  318. package/lib/packlets/unsd/regionCodes.js.map +1 -0
  319. package/lib/packlets/unsd/regions.d.ts +21 -0
  320. package/lib/packlets/unsd/regions.d.ts.map +1 -0
  321. package/lib/packlets/unsd/regions.js +77 -0
  322. package/lib/packlets/unsd/regions.js.map +1 -0
  323. package/lib/packlets/utils/index.d.ts.map +1 -0
  324. package/{utils → lib/packlets/utils}/index.js +1 -1
  325. package/lib/packlets/utils/index.js.map +1 -0
  326. package/lib/packlets/utils/jsonHelpers.d.ts.map +1 -0
  327. package/lib/packlets/utils/jsonHelpers.js +29 -0
  328. package/lib/packlets/utils/jsonHelpers.js.map +1 -0
  329. package/lib/packlets/utils/public.d.ts +2 -0
  330. package/lib/packlets/utils/public.d.ts.map +1 -0
  331. package/lib/packlets/utils/public.js +28 -0
  332. package/lib/packlets/utils/public.js.map +1 -0
  333. package/{utils → lib/packlets/utils}/validationHelpers.d.ts +9 -10
  334. package/lib/packlets/utils/validationHelpers.d.ts.map +1 -0
  335. package/lib/packlets/utils/validationHelpers.js +120 -0
  336. package/lib/packlets/utils/validationHelpers.js.map +1 -0
  337. package/package.json +73 -67
  338. package/bcp47/bcp47Subtags/converters.d.ts.map +0 -1
  339. package/bcp47/bcp47Subtags/index.d.ts.map +0 -1
  340. package/bcp47/bcp47Subtags/model.d.ts.map +0 -1
  341. package/bcp47/bcp47Subtags/model.js +0 -24
  342. package/bcp47/bcp47Subtags/validate.d.ts.map +0 -1
  343. package/bcp47/bcp47Subtags/validate.js +0 -74
  344. package/bcp47/common.d.ts.map +0 -1
  345. package/bcp47/common.js +0 -59
  346. package/bcp47/helpers.d.ts.map +0 -1
  347. package/bcp47/helpers.js +0 -103
  348. package/bcp47/index.d.ts +0 -7
  349. package/bcp47/index.d.ts.map +0 -1
  350. package/bcp47/index.js +0 -27
  351. package/bcp47/languageRegistryData.d.ts.map +0 -1
  352. package/bcp47/languageRegistryData.js +0 -209
  353. package/bcp47/languageTag.d.ts.map +0 -1
  354. package/bcp47/languageTag.js +0 -390
  355. package/bcp47/languageTagParser.d.ts.map +0 -1
  356. package/bcp47/languageTagParser.js +0 -302
  357. package/bcp47/match/chooser.d.ts.map +0 -1
  358. package/bcp47/match/chooser.js +0 -92
  359. package/bcp47/match/common.d.ts.map +0 -1
  360. package/bcp47/match/common.js +0 -51
  361. package/bcp47/match/index.d.ts +0 -4
  362. package/bcp47/match/index.d.ts.map +0 -1
  363. package/bcp47/match/index.js +0 -45
  364. package/bcp47/match/similarity.d.ts.map +0 -1
  365. package/bcp47/match/similarity.js +0 -230
  366. package/bcp47/normalization/baseNormalizer.d.ts +0 -36
  367. package/bcp47/normalization/baseNormalizer.d.ts.map +0 -1
  368. package/bcp47/normalization/baseNormalizer.js +0 -114
  369. package/bcp47/normalization/canonicalNormalizer.d.ts +0 -22
  370. package/bcp47/normalization/canonicalNormalizer.d.ts.map +0 -1
  371. package/bcp47/normalization/canonicalNormalizer.js +0 -113
  372. package/bcp47/normalization/common.d.ts.map +0 -1
  373. package/bcp47/normalization/common.js +0 -82
  374. package/bcp47/normalization/index.d.ts.map +0 -1
  375. package/bcp47/normalization/normalizeTag.d.ts.map +0 -1
  376. package/bcp47/normalization/normalizeTag.js +0 -105
  377. package/bcp47/normalization/preferredTagNormalizer.d.ts +0 -27
  378. package/bcp47/normalization/preferredTagNormalizer.d.ts.map +0 -1
  379. package/bcp47/normalization/preferredTagNormalizer.js +0 -209
  380. package/bcp47/overrides/converters.d.ts +0 -19
  381. package/bcp47/overrides/converters.d.ts.map +0 -1
  382. package/bcp47/overrides/converters.js +0 -75
  383. package/bcp47/overrides/defaultRegistries.d.ts.map +0 -1
  384. package/bcp47/overrides/defaultRegistries.js +0 -42
  385. package/bcp47/overrides/index.d.ts.map +0 -1
  386. package/bcp47/overrides/index.js +0 -30
  387. package/bcp47/overrides/model.d.ts +0 -11
  388. package/bcp47/overrides/model.d.ts.map +0 -1
  389. package/bcp47/overrides/model.js +0 -24
  390. package/bcp47/overrides/overridesRegistry.d.ts.map +0 -1
  391. package/bcp47/overrides/overridesRegistry.js +0 -112
  392. package/bcp47/validation/baseValidator.d.ts +0 -35
  393. package/bcp47/validation/baseValidator.d.ts.map +0 -1
  394. package/bcp47/validation/baseValidator.js +0 -111
  395. package/bcp47/validation/common.d.ts.map +0 -1
  396. package/bcp47/validation/common.js +0 -84
  397. package/bcp47/validation/index.d.ts.map +0 -1
  398. package/bcp47/validation/isCanonical.d.ts +0 -22
  399. package/bcp47/validation/isCanonical.d.ts.map +0 -1
  400. package/bcp47/validation/isCanonical.js +0 -104
  401. package/bcp47/validation/isInPreferredForm.d.ts.map +0 -1
  402. package/bcp47/validation/isInPreferredForm.js +0 -73
  403. package/bcp47/validation/isStrictlyValid.d.ts +0 -18
  404. package/bcp47/validation/isStrictlyValid.d.ts.map +0 -1
  405. package/bcp47/validation/isStrictlyValid.js +0 -98
  406. package/bcp47/validation/isValid.d.ts +0 -24
  407. package/bcp47/validation/isValid.d.ts.map +0 -1
  408. package/bcp47/validation/isValid.js +0 -115
  409. package/bcp47/validation/isWellFormed.d.ts +0 -22
  410. package/bcp47/validation/isWellFormed.d.ts.map +0 -1
  411. package/bcp47/validation/isWellFormed.js +0 -98
  412. package/bcp47/validation/validateTag.d.ts.map +0 -1
  413. package/bcp47/validation/validateTag.js +0 -159
  414. package/data/bcp/overrides.json +0 -21
  415. package/data/iana/language-subtags.json +0 -77295
  416. package/data/unsd/m49.json +0 -251
  417. package/iana/common/converters.d.ts.map +0 -1
  418. package/iana/common/converters.js +0 -84
  419. package/iana/common/model.d.ts.map +0 -1
  420. package/iana/common/model.js +0 -24
  421. package/iana/common/registeredItems.d.ts.map +0 -1
  422. package/iana/common/registeredItems.js +0 -124
  423. package/iana/common/utils.d.ts.map +0 -1
  424. package/iana/common/utils.js +0 -34
  425. package/iana/common/validate.d.ts.map +0 -1
  426. package/iana/common/validate.js +0 -61
  427. package/iana/converters.d.ts.map +0 -1
  428. package/iana/defaultRegistries.d.ts.map +0 -1
  429. package/iana/defaultRegistries.js +0 -42
  430. package/iana/index.d.ts.map +0 -1
  431. package/iana/index.js +0 -64
  432. package/iana/jar/converters.d.ts.map +0 -1
  433. package/iana/jar/index.d.ts.map +0 -1
  434. package/iana/jar/jarConverters.d.ts.map +0 -1
  435. package/iana/jar/jarConverters.js +0 -85
  436. package/iana/jar/jarModel.d.ts.map +0 -1
  437. package/iana/jar/jarModel.js +0 -24
  438. package/iana/jar/language-subtags/converters.d.ts.map +0 -1
  439. package/iana/jar/language-subtags/index.d.ts.map +0 -1
  440. package/iana/jar/language-subtags/model.d.ts.map +0 -1
  441. package/iana/jar/language-subtags/registry/converters.d.ts.map +0 -1
  442. package/iana/jar/language-subtags/registry/converters.js +0 -58
  443. package/iana/jar/language-subtags/registry/index.d.ts +0 -4
  444. package/iana/jar/language-subtags/registry/index.d.ts.map +0 -1
  445. package/iana/jar/language-subtags/registry/model.d.ts.map +0 -1
  446. package/iana/jar/language-subtags/registry/model.js +0 -41
  447. package/iana/jar/language-subtags/tags/converters.d.ts +0 -55
  448. package/iana/jar/language-subtags/tags/converters.d.ts.map +0 -1
  449. package/iana/jar/language-subtags/tags/converters.js +0 -128
  450. package/iana/jar/language-subtags/tags/index.d.ts +0 -5
  451. package/iana/jar/language-subtags/tags/index.d.ts.map +0 -1
  452. package/iana/jar/language-subtags/tags/model.d.ts.map +0 -1
  453. package/iana/jar/language-subtags/tags/model.js +0 -24
  454. package/iana/jar/language-subtags/tags/tagValidation.d.ts.map +0 -1
  455. package/iana/jar/language-subtags/tags/tagValidation.js +0 -70
  456. package/iana/jar/language-subtags/tags/validate.d.ts.map +0 -1
  457. package/iana/jar/language-subtags/tags/validate.js +0 -87
  458. package/iana/jar/model.d.ts.map +0 -1
  459. package/iana/language-subtags/common.d.ts.map +0 -1
  460. package/iana/language-subtags/common.js +0 -24
  461. package/iana/language-subtags/converters.d.ts +0 -52
  462. package/iana/language-subtags/converters.d.ts.map +0 -1
  463. package/iana/language-subtags/converters.js +0 -200
  464. package/iana/language-subtags/index.d.ts.map +0 -1
  465. package/iana/language-subtags/jarConverters.d.ts.map +0 -1
  466. package/iana/language-subtags/jarConverters.js +0 -213
  467. package/iana/language-subtags/model.d.ts.map +0 -1
  468. package/iana/language-subtags/model.js +0 -24
  469. package/iana/language-subtags/scope.d.ts.map +0 -1
  470. package/iana/language-subtags/scope.js +0 -179
  471. package/iana/language-subtags/subtagRegistry.d.ts.map +0 -1
  472. package/iana/language-subtags/subtagRegistry.js +0 -149
  473. package/iana/language-subtags/validate.d.ts.map +0 -1
  474. package/iana/language-tag-extensions/converters.d.ts +0 -23
  475. package/iana/language-tag-extensions/converters.d.ts.map +0 -1
  476. package/iana/language-tag-extensions/converters.js +0 -87
  477. package/iana/language-tag-extensions/extensionsRegistry.d.ts.map +0 -1
  478. package/iana/language-tag-extensions/extensionsRegistry.js +0 -104
  479. package/iana/language-tag-extensions/extensionsScope.d.ts.map +0 -1
  480. package/iana/language-tag-extensions/extensionsScope.js +0 -77
  481. package/iana/language-tag-extensions/index.d.ts.map +0 -1
  482. package/iana/language-tag-extensions/jarConverters.d.ts.map +0 -1
  483. package/iana/language-tag-extensions/jarConverters.js +0 -102
  484. package/iana/language-tag-extensions/model.d.ts.map +0 -1
  485. package/iana/language-tag-extensions/model.js +0 -24
  486. package/iana/language-tag-extensions/validate.d.ts.map +0 -1
  487. package/iana/language-tag-extensions/validate.js +0 -36
  488. package/iana/languageRegistries.d.ts.map +0 -1
  489. package/iana/languageRegistries.js +0 -56
  490. package/iana/model.d.ts.map +0 -1
  491. package/iana/validate.d.ts.map +0 -1
  492. package/index.d.ts +0 -6
  493. package/index.d.ts.map +0 -1
  494. package/index.js +0 -56
  495. package/unsd/areas.d.ts +0 -29
  496. package/unsd/areas.d.ts.map +0 -1
  497. package/unsd/areas.js +0 -96
  498. package/unsd/common.d.ts +0 -49
  499. package/unsd/common.d.ts.map +0 -1
  500. package/unsd/common.js +0 -24
  501. package/unsd/csv/converters.d.ts.map +0 -1
  502. package/unsd/csv/converters.js +0 -70
  503. package/unsd/csv/index.d.ts +0 -4
  504. package/unsd/csv/index.d.ts.map +0 -1
  505. package/unsd/csv/model.d.ts +0 -22
  506. package/unsd/csv/model.d.ts.map +0 -1
  507. package/unsd/csv/model.js +0 -24
  508. package/unsd/defaultRegistries.d.ts.map +0 -1
  509. package/unsd/defaultRegistries.js +0 -42
  510. package/unsd/index.d.ts.map +0 -1
  511. package/unsd/index.js +0 -44
  512. package/unsd/regionCodes.d.ts.map +0 -1
  513. package/unsd/regionCodes.js +0 -121
  514. package/unsd/regions.d.ts +0 -21
  515. package/unsd/regions.d.ts.map +0 -1
  516. package/unsd/regions.js +0 -77
  517. package/utils/index.d.ts.map +0 -1
  518. package/utils/jsonHelpers.d.ts.map +0 -1
  519. package/utils/jsonHelpers.js +0 -29
  520. package/utils/public.d.ts +0 -2
  521. package/utils/public.d.ts.map +0 -1
  522. package/utils/public.js +0 -28
  523. package/utils/validationHelpers.d.ts.map +0 -1
  524. package/utils/validationHelpers.js +0 -120
  525. /package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/converters.d.ts +0 -0
  526. /package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/index.d.ts +0 -0
  527. /package/{bcp47 → lib/packlets/bcp47}/match/common.d.ts +0 -0
  528. /package/{bcp47 → lib/packlets/bcp47}/match/similarity.d.ts +0 -0
  529. /package/{bcp47 → lib/packlets/bcp47}/normalization/index.d.ts +0 -0
  530. /package/{bcp47 → lib/packlets/bcp47}/overrides/defaultRegistries.d.ts +0 -0
  531. /package/{bcp47 → lib/packlets/bcp47}/overrides/index.d.ts +0 -0
  532. /package/{bcp47 → lib/packlets/bcp47}/validation/index.d.ts +0 -0
  533. /package/{iana → lib/packlets/iana}/common/registeredItems.d.ts +0 -0
  534. /package/{iana → lib/packlets/iana}/common/utils.d.ts +0 -0
  535. /package/{iana → lib/packlets/iana}/converters.d.ts +0 -0
  536. /package/{iana → lib/packlets/iana}/defaultRegistries.d.ts +0 -0
  537. /package/{iana → lib/packlets/iana}/jar/converters.d.ts +0 -0
  538. /package/{iana → lib/packlets/iana}/jar/language-subtags/converters.d.ts +0 -0
  539. /package/{iana → lib/packlets/iana}/jar/language-subtags/model.d.ts +0 -0
  540. /package/{iana → lib/packlets/iana}/jar/language-subtags/registry/converters.d.ts +0 -0
  541. /package/{iana/jar/language-subtags → lib/packlets/iana/jar/language-subtags/registry}/index.d.ts +0 -0
  542. /package/{iana → lib/packlets/iana}/jar/language-subtags/tags/model.d.ts +0 -0
  543. /package/{iana → lib/packlets/iana}/jar/language-subtags/tags/tagValidation.d.ts +0 -0
  544. /package/{iana → lib/packlets/iana}/jar/language-subtags/tags/validate.d.ts +0 -0
  545. /package/{iana → lib/packlets/iana}/jar/model.d.ts +0 -0
  546. /package/{iana → lib/packlets/iana}/language-subtags/common.d.ts +0 -0
  547. /package/{iana → lib/packlets/iana}/language-subtags/validate.d.ts +0 -0
  548. /package/{iana → lib/packlets/iana}/languageRegistries.d.ts +0 -0
  549. /package/{iana → lib/packlets/iana}/model.d.ts +0 -0
  550. /package/{iana → lib/packlets/iana}/validate.d.ts +0 -0
  551. /package/{iana/jar → lib/packlets/unsd/csv}/index.d.ts +0 -0
  552. /package/{unsd → lib/packlets/unsd}/defaultRegistries.d.ts +0 -0
  553. /package/{utils → lib/packlets/utils}/index.d.ts +0 -0
  554. /package/{utils → lib/packlets/utils}/jsonHelpers.d.ts +0 -0
@@ -1,82 +0,0 @@
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.mostNormalized = exports.compareNormalization = void 0;
25
- /**
26
- * Ordered ranking of the degrees of normalization, from `unknown` (least
27
- * normalized) to `preferred` (most normalized).
28
- * @public
29
- */
30
- const normalizationRank = {
31
- /**
32
- * Normalization level is unknown.
33
- */
34
- unknown: 0,
35
- /**
36
- * Not normalized.
37
- */
38
- none: 0.1,
39
- /**
40
- * Tag and subtag case has been normalized to canonical
41
- * letter case (e.g. lower-case language and upper-case
42
- * region) but no other normalization has been applied.
43
- */
44
- canonical: 0.9,
45
- /**
46
- * All tag recommendations have been applied - e.g. suppressed
47
- * script is removed, deprecated or grandfathered values are
48
- * replaced with preferred values.
49
- */
50
- preferred: 1.0,
51
- };
52
- /**
53
- * Determines which of two normalization ranks is most normalized.
54
- * @param n1 - The first {@link TagNormalization} to be compared.
55
- * @param n2 - The second {@link TagNormalization} to me compared.
56
- * @returns `1' if `n1` is more normalized, `-1` if `n2` is more
57
- * normalized, or `0` if they are identical.
58
- * @public
59
- */
60
- function compareNormalization(n1, n2) {
61
- if (normalizationRank[n1] > normalizationRank[n2]) {
62
- return 1;
63
- }
64
- else if (normalizationRank[n1] < normalizationRank[n2]) {
65
- return -1;
66
- }
67
- return 0;
68
- }
69
- exports.compareNormalization = compareNormalization;
70
- /**
71
- * Chooses the most normalized of two normalization ranks.
72
- * @param n1 - The first {@link TagNormalization} to be compared.
73
- * @param n2 - The second {@link TagNormalization} to me compared.
74
- * @returns The most normalized of `n1` or `n2`.
75
- * @public
76
- */
77
- function mostNormalized(n1, n2) {
78
- // istanbul ignore next - hard to hit due to guards
79
- return normalizationRank[n1] > normalizationRank[n2] ? n1 : n2;
80
- }
81
- exports.mostNormalized = mostNormalized;
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JjcDQ3L25vcm1hbGl6YXRpb24vY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQVFIOzs7O0dBSUc7QUFDSCxNQUFNLGlCQUFpQixHQUFxQztJQUN4RDs7T0FFRztJQUNILE9BQU8sRUFBRSxDQUFDO0lBQ1Y7O09BRUc7SUFDSCxJQUFJLEVBQUUsR0FBRztJQUNUOzs7O09BSUc7SUFDSCxTQUFTLEVBQUUsR0FBRztJQUNkOzs7O09BSUc7SUFDSCxTQUFTLEVBQUUsR0FBRztDQUNqQixDQUFDO0FBRUY7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLG9CQUFvQixDQUFDLEVBQW9CLEVBQUUsRUFBb0I7SUFDM0UsSUFBSSxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUMvQyxPQUFPLENBQUMsQ0FBQztLQUNaO1NBQU0sSUFBSSxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUN0RCxPQUFPLENBQUMsQ0FBQyxDQUFDO0tBQ2I7SUFDRCxPQUFPLENBQUMsQ0FBQztBQUNiLENBQUM7QUFQRCxvREFPQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxFQUFvQixFQUFFLEVBQW9CO0lBQ3JFLG1EQUFtRDtJQUNuRCxPQUFPLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNuRSxDQUFDO0FBSEQsd0NBR0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuLyoqXG4gKiBEZXNjcmliZXMgdGhlIGRlZ3JlZSBvZiBub3JtYWxpemF0aW9uIG9mIGEgbGFuZ3VhZ2UgdGFnLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBUYWdOb3JtYWxpemF0aW9uID0gJ3Vua25vd24nIHwgJ25vbmUnIHwgJ2Nhbm9uaWNhbCcgfCAncHJlZmVycmVkJztcblxuLyoqXG4gKiBPcmRlcmVkIHJhbmtpbmcgb2YgdGhlIGRlZ3JlZXMgb2Ygbm9ybWFsaXphdGlvbiwgZnJvbSBgdW5rbm93bmAgKGxlYXN0XG4gKiBub3JtYWxpemVkKSB0byBgcHJlZmVycmVkYCAobW9zdCBub3JtYWxpemVkKS5cbiAqIEBwdWJsaWNcbiAqL1xuY29uc3Qgbm9ybWFsaXphdGlvblJhbms6IFJlY29yZDxUYWdOb3JtYWxpemF0aW9uLCBudW1iZXI+ID0ge1xuICAgIC8qKlxuICAgICAqIE5vcm1hbGl6YXRpb24gbGV2ZWwgaXMgdW5rbm93bi5cbiAgICAgKi9cbiAgICB1bmtub3duOiAwLFxuICAgIC8qKlxuICAgICAqIE5vdCBub3JtYWxpemVkLlxuICAgICAqL1xuICAgIG5vbmU6IDAuMSxcbiAgICAvKipcbiAgICAgKiBUYWcgYW5kIHN1YnRhZyBjYXNlIGhhcyBiZWVuIG5vcm1hbGl6ZWQgdG8gY2Fub25pY2FsXG4gICAgICogbGV0dGVyIGNhc2UgKGUuZy4gbG93ZXItY2FzZSBsYW5ndWFnZSBhbmQgdXBwZXItY2FzZVxuICAgICAqIHJlZ2lvbikgYnV0IG5vIG90aGVyIG5vcm1hbGl6YXRpb24gaGFzIGJlZW4gYXBwbGllZC5cbiAgICAgKi9cbiAgICBjYW5vbmljYWw6IDAuOSxcbiAgICAvKipcbiAgICAgKiBBbGwgdGFnIHJlY29tbWVuZGF0aW9ucyBoYXZlIGJlZW4gYXBwbGllZCAtIGUuZy4gc3VwcHJlc3NlZFxuICAgICAqIHNjcmlwdCBpcyByZW1vdmVkLCBkZXByZWNhdGVkIG9yIGdyYW5kZmF0aGVyZWQgdmFsdWVzIGFyZVxuICAgICAqIHJlcGxhY2VkIHdpdGggcHJlZmVycmVkIHZhbHVlcy5cbiAgICAgKi9cbiAgICBwcmVmZXJyZWQ6IDEuMCxcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGljaCBvZiB0d28gbm9ybWFsaXphdGlvbiByYW5rcyBpcyBtb3N0IG5vcm1hbGl6ZWQuXG4gKiBAcGFyYW0gbjEgLSBUaGUgZmlyc3Qge0BsaW5rIFRhZ05vcm1hbGl6YXRpb259IHRvIGJlIGNvbXBhcmVkLlxuICogQHBhcmFtIG4yIC0gVGhlIHNlY29uZCB7QGxpbmsgVGFnTm9ybWFsaXphdGlvbn0gdG8gbWUgY29tcGFyZWQuXG4gKiBAcmV0dXJucyBgMScgaWYgYG4xYCBpcyBtb3JlIG5vcm1hbGl6ZWQsIGAtMWAgaWYgYG4yYCBpcyBtb3JlXG4gKiBub3JtYWxpemVkLCBvciBgMGAgaWYgdGhleSBhcmUgaWRlbnRpY2FsLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZU5vcm1hbGl6YXRpb24objE6IFRhZ05vcm1hbGl6YXRpb24sIG4yOiBUYWdOb3JtYWxpemF0aW9uKTogLTEgfCAwIHwgMSB7XG4gICAgaWYgKG5vcm1hbGl6YXRpb25SYW5rW24xXSA+IG5vcm1hbGl6YXRpb25SYW5rW24yXSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9IGVsc2UgaWYgKG5vcm1hbGl6YXRpb25SYW5rW24xXSA8IG5vcm1hbGl6YXRpb25SYW5rW24yXSkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuXG4vKipcbiAqIENob29zZXMgdGhlIG1vc3Qgbm9ybWFsaXplZCBvZiB0d28gbm9ybWFsaXphdGlvbiByYW5rcy5cbiAqIEBwYXJhbSBuMSAtIFRoZSBmaXJzdCB7QGxpbmsgVGFnTm9ybWFsaXphdGlvbn0gdG8gYmUgY29tcGFyZWQuXG4gKiBAcGFyYW0gbjIgLSBUaGUgc2Vjb25kIHtAbGluayBUYWdOb3JtYWxpemF0aW9ufSB0byBtZSBjb21wYXJlZC5cbiAqIEByZXR1cm5zIFRoZSBtb3N0IG5vcm1hbGl6ZWQgb2YgYG4xYCBvciBgbjJgLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbW9zdE5vcm1hbGl6ZWQobjE6IFRhZ05vcm1hbGl6YXRpb24sIG4yOiBUYWdOb3JtYWxpemF0aW9uKTogVGFnTm9ybWFsaXphdGlvbiB7XG4gICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHQgLSBoYXJkIHRvIGhpdCBkdWUgdG8gZ3VhcmRzXG4gICAgcmV0dXJuIG5vcm1hbGl6YXRpb25SYW5rW24xXSA+IG5vcm1hbGl6YXRpb25SYW5rW24yXSA/IG4xIDogbjI7XG59XG4iXX0=
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bcp47/normalization/index.ts"],"names":[],"mappings":"AAuBA,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"normalizeTag.d.ts","sourceRoot":"","sources":["../../../src/bcp47/normalization/normalizeTag.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,MAAM,EAAW,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAwB,MAAM,UAAU,CAAC;AAIlE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;GAGG;AACH,qBAAa,YAAY;IACrB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY,CAA8E;IAEzG;;;;;;;;OAQG;WACW,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAI5D;;;;;;;;;;;OAWG;WACW,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAI5D;;;;;;;;OAQG;WACW,gBAAgB,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,EAAE,gBAAgB,GAAG,aAAa,GAAG,SAAS;IAgBpI;;;;;;;;;OASG;WACW,gBAAgB,CAC1B,OAAO,EAAE,OAAO,EAChB,iBAAiB,EAAE,gBAAgB,EACnC,iBAAiB,CAAC,EAAE,gBAAgB,GACrC,MAAM,CAAC,OAAO,CAAC;CAIrB"}
@@ -1,105 +0,0 @@
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.NormalizeTag = void 0;
25
- const ts_utils_1 = require("@fgv/ts-utils");
26
- const common_1 = require("./common");
27
- const canonicalNormalizer_1 = require("./canonicalNormalizer");
28
- const preferredTagNormalizer_1 = require("./preferredTagNormalizer");
29
- /**
30
- * Normalization helpers for BCP-47 language tags.
31
- * @public
32
- */
33
- class NormalizeTag {
34
- /**
35
- * Converts a BCP-47 language tag to canonical form. Canonical form uses the recommended capitalization rules
36
- * specified in {@link https://www.rfc-editor.org/rfc/rfc5646.html#section-2.1.1 | RFC 5646} but are not
37
- * otherwise modified.
38
- *
39
- * @param subtags - The individual {@link Bcp47.Subtags | subtags} to be normalized.
40
- * @returns `Success` with the normalized equivalent {@link Bcp47.Subtags | subtags},
41
- * or `Failure` with details if an error occurs.
42
- */
43
- static toCanonical(subtags) {
44
- return this.normalizeSubtags(subtags, 'canonical');
45
- }
46
- /**
47
- * Converts a BCP-47 language tag to preferred form. Preferred form uses the recommended capitalization rules
48
- * specified in {@link https://www.rfc-editor.org/rfc/rfc5646.html#section-2.1.1 | RFC 5646} and also
49
- * applies additional preferred values specified in the
50
- * {@link https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry | language subtag registry}:
51
- * extraneous (suppressed) script tags are removed, deprecated language, extlang, script or region tags are replaced
52
- * with up-to-date preferred values, and grandfathered or redundant tags with a defined preferred-value are replaced
53
- * in their entirety with the new preferred value.
54
- * @param subtags - The individual {@link Bcp47.Subtags | subtags} to be normalized.
55
- * @returns `Success` with the normalized equivalent {@link Bcp47.Subtags | subtags},
56
- * or `Failure` with details if an error occurs.
57
- */
58
- static toPreferred(subtags) {
59
- return this.normalizeSubtags(subtags, 'preferred');
60
- }
61
- /**
62
- * Chooses an appropriate default tag normalizer given desired and optional current
63
- * {@link Bcp47.TagNormalization | normalization level}.
64
- * @param wantNormalization - The desired {@link Bcp47.TagNormalization | normalization level}.
65
- * @param haveNormalization - (optional) The current {@link Bcp47.TagNormalization | normalization level}.
66
- * @returns An appropriate {@link Bcp47.TagNormalizer | tag normalizer} or `undefined` if no additional
67
- * normalization is necessary.
68
- * @internal
69
- */
70
- static chooseNormalizer(wantNormalization, haveNormalization) {
71
- if (haveNormalization && (0, common_1.compareNormalization)(haveNormalization, wantNormalization) >= 0) {
72
- return undefined;
73
- }
74
- if (!this._normalizers) {
75
- this._normalizers = {
76
- unknown: undefined,
77
- none: undefined,
78
- canonical: new canonicalNormalizer_1.CanonicalNormalizer(),
79
- preferred: new preferredTagNormalizer_1.PreferredNormalizer(),
80
- };
81
- }
82
- return this._normalizers[wantNormalization];
83
- }
84
- /**
85
- * Normalizes supplied {@link Bcp47.Subtags | subtags} to a requested
86
- * {@link Bcp47.TagNormalization | normalization level}, if necessary. If
87
- * no normalization is necessary, returns the supplied subtags.
88
- * @param subtags - The {@link Bcp47.Subtags | subtags} to be normalized.
89
- * @param wantNormalization - The desired {@link Bcp47.TagNormalization | normalization level}.
90
- * @param haveNormalization - (optional) The current {@link Bcp47.TagNormalization | normalization level}.
91
- * @returns `Success` with the normalized {@link Bcp47.Subtags | subtags}, or
92
- * `Failure` with details if an error occurs.
93
- */
94
- static normalizeSubtags(subtags, wantNormalization, haveNormalization) {
95
- var _a;
96
- const normalizer = this.chooseNormalizer(wantNormalization, haveNormalization);
97
- return (_a = normalizer === null || normalizer === void 0 ? void 0 : normalizer.processSubtags(subtags)) !== null && _a !== void 0 ? _a : (0, ts_utils_1.succeed)(subtags);
98
- }
99
- }
100
- exports.NormalizeTag = NormalizeTag;
101
- /**
102
- * @internal
103
- */
104
- NormalizeTag._normalizers = undefined;
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsaXplVGFnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JjcDQ3L25vcm1hbGl6YXRpb24vbm9ybWFsaXplVGFnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILDRDQUFnRDtBQUNoRCxxQ0FBa0U7QUFFbEUsK0RBQTREO0FBQzVELHFFQUErRDtBQUkvRDs7O0dBR0c7QUFDSCxNQUFhLFlBQVk7SUFNckI7Ozs7Ozs7O09BUUc7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQWdCO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQWdCO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsaUJBQW1DLEVBQUUsaUJBQW9DO1FBQ3BHLElBQUksaUJBQWlCLElBQUksSUFBQSw2QkFBb0IsRUFBQyxpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0RixPQUFPLFNBQVMsQ0FBQztTQUNwQjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUc7Z0JBQ2hCLE9BQU8sRUFBRSxTQUFTO2dCQUNsQixJQUFJLEVBQUUsU0FBUztnQkFDZixTQUFTLEVBQUUsSUFBSSx5Q0FBbUIsRUFBRTtnQkFDcEMsU0FBUyxFQUFFLElBQUksNENBQW1CLEVBQUU7YUFDdkMsQ0FBQztTQUNMO1FBQ0QsT0FBTyxJQUFJLENBQUMsWUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FDMUIsT0FBZ0IsRUFDaEIsaUJBQW1DLEVBQ25DLGlCQUFvQzs7UUFFcEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDL0UsT0FBTyxNQUFBLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxjQUFjLENBQUMsT0FBTyxDQUFDLG1DQUFJLElBQUEsa0JBQU8sRUFBQyxPQUFPLENBQUMsQ0FBQztJQUNuRSxDQUFDOztBQTdFTCxvQ0E4RUM7QUE3RUc7O0dBRUc7QUFDWSx5QkFBWSxHQUFvRSxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0IHsgUmVzdWx0LCBzdWNjZWVkIH0gZnJvbSAnQGZndi90cy11dGlscyc7XG5pbXBvcnQgeyBUYWdOb3JtYWxpemF0aW9uLCBjb21wYXJlTm9ybWFsaXphdGlvbiB9IGZyb20gJy4vY29tbW9uJztcblxuaW1wb3J0IHsgQ2Fub25pY2FsTm9ybWFsaXplciB9IGZyb20gJy4vY2Fub25pY2FsTm9ybWFsaXplcic7XG5pbXBvcnQgeyBQcmVmZXJyZWROb3JtYWxpemVyIH0gZnJvbSAnLi9wcmVmZXJyZWRUYWdOb3JtYWxpemVyJztcbmltcG9ydCB7IFN1YnRhZ3MgfSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgVGFnTm9ybWFsaXplciB9IGZyb20gJy4vYmFzZU5vcm1hbGl6ZXInO1xuXG4vKipcbiAqIE5vcm1hbGl6YXRpb24gaGVscGVycyBmb3IgQkNQLTQ3IGxhbmd1YWdlIHRhZ3MuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjbGFzcyBOb3JtYWxpemVUYWcge1xuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByaXZhdGUgc3RhdGljIF9ub3JtYWxpemVyczogUmVjb3JkPFRhZ05vcm1hbGl6YXRpb24sIFRhZ05vcm1hbGl6ZXIgfCB1bmRlZmluZWQ+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYSBCQ1AtNDcgbGFuZ3VhZ2UgdGFnIHRvIGNhbm9uaWNhbCBmb3JtLiAgQ2Fub25pY2FsIGZvcm0gdXNlcyB0aGUgcmVjb21tZW5kZWQgY2FwaXRhbGl6YXRpb24gcnVsZXNcbiAgICAgKiBzcGVjaWZpZWQgaW4ge0BsaW5rIGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM1NjQ2Lmh0bWwjc2VjdGlvbi0yLjEuMSB8IFJGQyA1NjQ2fSBidXQgYXJlIG5vdFxuICAgICAqIG90aGVyd2lzZSBtb2RpZmllZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdWJ0YWdzIC0gVGhlIGluZGl2aWR1YWwge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfSB0byBiZSBub3JtYWxpemVkLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHRoZSBub3JtYWxpemVkIGVxdWl2YWxlbnQge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfSxcbiAgICAgKiBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yIG9jY3Vycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIHRvQ2Fub25pY2FsKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8U3VidGFncz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVTdWJ0YWdzKHN1YnRhZ3MsICdjYW5vbmljYWwnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBhIEJDUC00NyBsYW5ndWFnZSB0YWcgdG8gcHJlZmVycmVkIGZvcm0uICBQcmVmZXJyZWQgZm9ybSB1c2VzIHRoZSByZWNvbW1lbmRlZCBjYXBpdGFsaXphdGlvbiBydWxlc1xuICAgICAqIHNwZWNpZmllZCBpbiB7QGxpbmsgaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzU2NDYuaHRtbCNzZWN0aW9uLTIuMS4xIHwgUkZDIDU2NDZ9IGFuZCBhbHNvXG4gICAgICogYXBwbGllcyBhZGRpdGlvbmFsIHByZWZlcnJlZCB2YWx1ZXMgc3BlY2lmaWVkIGluIHRoZVxuICAgICAqIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9sYW5ndWFnZS1zdWJ0YWctcmVnaXN0cnkvbGFuZ3VhZ2Utc3VidGFnLXJlZ2lzdHJ5IHwgbGFuZ3VhZ2Ugc3VidGFnIHJlZ2lzdHJ5fTpcbiAgICAgKiBleHRyYW5lb3VzIChzdXBwcmVzc2VkKSBzY3JpcHQgdGFncyBhcmUgcmVtb3ZlZCwgZGVwcmVjYXRlZCBsYW5ndWFnZSwgZXh0bGFuZywgc2NyaXB0IG9yIHJlZ2lvbiB0YWdzIGFyZSByZXBsYWNlZFxuICAgICAqIHdpdGggdXAtdG8tZGF0ZSBwcmVmZXJyZWQgdmFsdWVzLCBhbmQgZ3JhbmRmYXRoZXJlZCBvciByZWR1bmRhbnQgdGFncyB3aXRoIGEgZGVmaW5lZCBwcmVmZXJyZWQtdmFsdWUgYXJlIHJlcGxhY2VkXG4gICAgICogaW4gdGhlaXIgZW50aXJldHkgd2l0aCB0aGUgbmV3IHByZWZlcnJlZCB2YWx1ZS5cbiAgICAgKiBAcGFyYW0gc3VidGFncyAtIFRoZSBpbmRpdmlkdWFsIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc30gdG8gYmUgbm9ybWFsaXplZC5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCB0aGUgbm9ybWFsaXplZCBlcXVpdmFsZW50IHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc30sXG4gICAgICogb3IgYEZhaWx1cmVgIHdpdGggZGV0YWlscyBpZiBhbiBlcnJvciBvY2N1cnMuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyB0b1ByZWZlcnJlZChzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PFN1YnRhZ3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubm9ybWFsaXplU3VidGFncyhzdWJ0YWdzLCAncHJlZmVycmVkJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hvb3NlcyBhbiBhcHByb3ByaWF0ZSBkZWZhdWx0IHRhZyBub3JtYWxpemVyIGdpdmVuIGRlc2lyZWQgYW5kIG9wdGlvbmFsIGN1cnJlbnRcbiAgICAgKiB7QGxpbmsgQmNwNDcuVGFnTm9ybWFsaXphdGlvbiB8IG5vcm1hbGl6YXRpb24gbGV2ZWx9LlxuICAgICAqIEBwYXJhbSB3YW50Tm9ybWFsaXphdGlvbiAtIFRoZSBkZXNpcmVkIHtAbGluayBCY3A0Ny5UYWdOb3JtYWxpemF0aW9uIHwgbm9ybWFsaXphdGlvbiBsZXZlbH0uXG4gICAgICogQHBhcmFtIGhhdmVOb3JtYWxpemF0aW9uIC0gKG9wdGlvbmFsKSBUaGUgY3VycmVudCB7QGxpbmsgQmNwNDcuVGFnTm9ybWFsaXphdGlvbiB8IG5vcm1hbGl6YXRpb24gbGV2ZWx9LlxuICAgICAqIEByZXR1cm5zIEFuIGFwcHJvcHJpYXRlIHtAbGluayBCY3A0Ny5UYWdOb3JtYWxpemVyIHwgdGFnIG5vcm1hbGl6ZXJ9IG9yIGB1bmRlZmluZWRgIGlmIG5vIGFkZGl0aW9uYWxcbiAgICAgKiBub3JtYWxpemF0aW9uIGlzIG5lY2Vzc2FyeS5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNob29zZU5vcm1hbGl6ZXIod2FudE5vcm1hbGl6YXRpb246IFRhZ05vcm1hbGl6YXRpb24sIGhhdmVOb3JtYWxpemF0aW9uPzogVGFnTm9ybWFsaXphdGlvbik6IFRhZ05vcm1hbGl6ZXIgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoaGF2ZU5vcm1hbGl6YXRpb24gJiYgY29tcGFyZU5vcm1hbGl6YXRpb24oaGF2ZU5vcm1hbGl6YXRpb24sIHdhbnROb3JtYWxpemF0aW9uKSA+PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl9ub3JtYWxpemVycykge1xuICAgICAgICAgICAgdGhpcy5fbm9ybWFsaXplcnMgPSB7XG4gICAgICAgICAgICAgICAgdW5rbm93bjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIG5vbmU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBjYW5vbmljYWw6IG5ldyBDYW5vbmljYWxOb3JtYWxpemVyKCksXG4gICAgICAgICAgICAgICAgcHJlZmVycmVkOiBuZXcgUHJlZmVycmVkTm9ybWFsaXplcigpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fbm9ybWFsaXplcnMhW3dhbnROb3JtYWxpemF0aW9uXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOb3JtYWxpemVzIHN1cHBsaWVkIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc30gdG8gYSByZXF1ZXN0ZWRcbiAgICAgKiB7QGxpbmsgQmNwNDcuVGFnTm9ybWFsaXphdGlvbiB8IG5vcm1hbGl6YXRpb24gbGV2ZWx9LCBpZiBuZWNlc3NhcnkuICBJZlxuICAgICAqIG5vIG5vcm1hbGl6YXRpb24gaXMgbmVjZXNzYXJ5LCByZXR1cm5zIHRoZSBzdXBwbGllZCBzdWJ0YWdzLlxuICAgICAqIEBwYXJhbSBzdWJ0YWdzIC0gVGhlIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc30gdG8gYmUgbm9ybWFsaXplZC5cbiAgICAgKiBAcGFyYW0gd2FudE5vcm1hbGl6YXRpb24gLSBUaGUgZGVzaXJlZCB7QGxpbmsgQmNwNDcuVGFnTm9ybWFsaXphdGlvbiB8IG5vcm1hbGl6YXRpb24gbGV2ZWx9LlxuICAgICAqIEBwYXJhbSBoYXZlTm9ybWFsaXphdGlvbiAtIChvcHRpb25hbCkgVGhlIGN1cnJlbnQge0BsaW5rIEJjcDQ3LlRhZ05vcm1hbGl6YXRpb24gfCBub3JtYWxpemF0aW9uIGxldmVsfS5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCB0aGUgbm9ybWFsaXplZCB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9LCBvclxuICAgICAqIGBGYWlsdXJlYCB3aXRoIGRldGFpbHMgaWYgYW4gZXJyb3Igb2NjdXJzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgbm9ybWFsaXplU3VidGFncyhcbiAgICAgICAgc3VidGFnczogU3VidGFncyxcbiAgICAgICAgd2FudE5vcm1hbGl6YXRpb246IFRhZ05vcm1hbGl6YXRpb24sXG4gICAgICAgIGhhdmVOb3JtYWxpemF0aW9uPzogVGFnTm9ybWFsaXphdGlvblxuICAgICk6IFJlc3VsdDxTdWJ0YWdzPiB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZXIgPSB0aGlzLmNob29zZU5vcm1hbGl6ZXIod2FudE5vcm1hbGl6YXRpb24sIGhhdmVOb3JtYWxpemF0aW9uKTtcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZXI/LnByb2Nlc3NTdWJ0YWdzKHN1YnRhZ3MpID8/IHN1Y2NlZWQoc3VidGFncyk7XG4gICAgfVxufVxuIl19
@@ -1,27 +0,0 @@
1
- import * as Bcp47Subtags from '../bcp47Subtags';
2
- import * as Iana from '../../iana';
3
- import { ExtensionSubtagValue, Subtags } from '../common';
4
- import { Result } from '@fgv/ts-utils';
5
- import { TagNormalization } from './common';
6
- import { TagNormalizerBase } from './baseNormalizer';
7
- /**
8
- * @public
9
- */
10
- export declare class PreferredNormalizer extends TagNormalizerBase {
11
- readonly normalization: TagNormalization;
12
- protected _processLanguage(subtags: Subtags): Result<Iana.LanguageSubtags.LanguageSubtag | undefined>;
13
- protected _processExtlangs(subtags: Subtags): Result<Iana.LanguageSubtags.ExtLangSubtag[] | undefined>;
14
- protected _processScript(subtags: Subtags): Result<Iana.LanguageSubtags.ScriptSubtag | undefined>;
15
- protected _processRegion(subtags: Subtags): Result<Iana.LanguageSubtags.RegionSubtag | undefined>;
16
- protected _processVariants(subtags: Subtags): Result<Iana.LanguageSubtags.VariantSubtag[] | undefined>;
17
- protected _processExtensionSingleton(singleton: Bcp47Subtags.Model.ExtensionSingleton): Result<Bcp47Subtags.Model.ExtensionSingleton>;
18
- protected _processExtensionSubtagValue(value: Bcp47Subtags.Model.ExtensionSubtag): Result<Bcp47Subtags.Model.ExtensionSubtag>;
19
- protected _processExtensions(subtags: Subtags): Result<ExtensionSubtagValue[] | undefined>;
20
- protected _processPrivateUseTags(subtags: Subtags): Result<Iana.LanguageSubtags.ExtendedLanguageRange[] | undefined>;
21
- protected _processGrandfatheredTags(subtags: Subtags): Result<Iana.LanguageSubtags.GrandfatheredTag | undefined>;
22
- protected _postValidateGrandfatheredTag(subtags: Subtags): Result<Subtags>;
23
- protected _postValidateRedundantTag(subtags: Subtags): Result<Subtags>;
24
- protected _postValidateExtLangs(subtags: Subtags): Result<Subtags>;
25
- protected _postValidate(subtags: Subtags): Result<Subtags>;
26
- }
27
- //# sourceMappingURL=preferredTagNormalizer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"preferredTagNormalizer.d.ts","sourceRoot":"","sources":["../../../src/bcp47/normalization/preferredTagNormalizer.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAmB,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,MAAM,EAA6B,MAAM,eAAe,CAAC;AAGlE,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,iBAAiB;IACtD,SAAgB,aAAa,EAAE,gBAAgB,CAAe;IAE9D,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,GAAG,SAAS,CAAC;IAWrG,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC;IAOtG,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,SAAS,CAAC;IAoBjG,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,SAAS,CAAC;IASjG,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC;IAStG,SAAS,CAAC,0BAA0B,CAAC,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,kBAAkB,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,kBAAkB,CAAC;IAIrI,SAAS,CAAC,4BAA4B,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC;IAI7H,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,oBAAoB,EAAE,GAAG,SAAS,CAAC;IAM1F,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,GAAG,SAAS,CAAC;IAUpH,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAOhH,SAAS,CAAC,6BAA6B,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IA8B1E,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAStE,SAAS,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IA0BlE,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;CAa7D"}
@@ -1,209 +0,0 @@
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.PreferredNormalizer = void 0;
48
- const Bcp47Subtags = __importStar(require("../bcp47Subtags"));
49
- const Iana = __importStar(require("../../iana"));
50
- const common_1 = require("../common");
51
- const ts_utils_1 = require("@fgv/ts-utils");
52
- const languageTagParser_1 = require("../languageTagParser");
53
- const baseNormalizer_1 = require("./baseNormalizer");
54
- const utils_1 = require("../../utils");
55
- /**
56
- * @public
57
- */
58
- class PreferredNormalizer extends baseNormalizer_1.TagNormalizerBase {
59
- constructor() {
60
- super(...arguments);
61
- this.normalization = 'preferred';
62
- }
63
- _processLanguage(subtags) {
64
- var _a;
65
- if (subtags.primaryLanguage) {
66
- const language = this._iana.subtags.languages.tryGet(subtags.primaryLanguage);
67
- if (!language) {
68
- return (0, ts_utils_1.fail)(`invalid language subtag "${subtags.primaryLanguage}"`);
69
- }
70
- return (0, ts_utils_1.succeed)((_a = language.preferredValue) !== null && _a !== void 0 ? _a : language.subtag);
71
- }
72
- return (0, ts_utils_1.succeed)(undefined);
73
- }
74
- _processExtlangs(subtags) {
75
- if (subtags.extlangs) {
76
- return (0, ts_utils_1.mapResults)(subtags.extlangs.map((e) => this._iana.subtags.extlangs.toValidCanonical(e)));
77
- }
78
- return (0, ts_utils_1.succeed)(undefined);
79
- }
80
- _processScript(subtags) {
81
- if (subtags.primaryLanguage && subtags.script) {
82
- const language = this._iana.subtags.languages.tryGet(subtags.primaryLanguage);
83
- // istanbul ignore next - internal error difficult to test
84
- if (!language) {
85
- return (0, ts_utils_1.fail)(`invalid primary language subtag "${subtags.primaryLanguage}.`);
86
- }
87
- const script = this._iana.subtags.scripts.toValidCanonical(subtags.script).orDefault();
88
- if (!script) {
89
- return (0, ts_utils_1.fail)(`invalid script subtag "${subtags.script}`);
90
- }
91
- if (language.suppressScript !== script) {
92
- return (0, ts_utils_1.succeed)(script);
93
- }
94
- }
95
- return (0, ts_utils_1.succeed)(undefined);
96
- }
97
- _processRegion(subtags) {
98
- if (subtags.region) {
99
- return this._iana.subtags.regions.get(subtags.region).onSuccess((region) => {
100
- var _a;
101
- return (0, ts_utils_1.succeed)((_a = region.preferredValue) !== null && _a !== void 0 ? _a : region.subtag);
102
- });
103
- }
104
- return (0, ts_utils_1.succeed)(undefined);
105
- }
106
- _processVariants(subtags) {
107
- if (subtags.variants) {
108
- return (0, ts_utils_1.mapResults)(subtags.variants.map((v) => this._iana.subtags.variants.toValidCanonical(v))).onSuccess((v) => this._verifyUnique('variant', v, (v) => v));
109
- }
110
- return (0, ts_utils_1.succeed)(undefined);
111
- }
112
- _processExtensionSingleton(singleton) {
113
- return this._iana.extensions.extensions.toValidCanonical(singleton);
114
- }
115
- _processExtensionSubtagValue(value) {
116
- return Bcp47Subtags.Validate.extensionSubtag.toCanonical(value);
117
- }
118
- _processExtensions(subtags) {
119
- return super._processExtensions(subtags).onSuccess((extensions) => {
120
- return this._verifyUnique('extensions', extensions, (e) => e.singleton);
121
- });
122
- }
123
- _processPrivateUseTags(subtags) {
124
- if (subtags.privateUse) {
125
- const merged = subtags.privateUse.join('-');
126
- return Iana.LanguageSubtags.Validate.extendedLanguageRange.toCanonical(merged).onSuccess((canon) => {
127
- return (0, ts_utils_1.succeed)(canon.split('-'));
128
- });
129
- }
130
- return (0, ts_utils_1.succeed)(undefined);
131
- }
132
- _processGrandfatheredTags(subtags) {
133
- if (subtags.grandfathered) {
134
- return this._iana.subtags.grandfathered.toValidCanonical(subtags.grandfathered);
135
- }
136
- return (0, ts_utils_1.succeed)(undefined);
137
- }
138
- _postValidateGrandfatheredTag(subtags) {
139
- if (subtags.grandfathered) {
140
- return this._iana.subtags.grandfathered.get(subtags.grandfathered).onSuccess((grandfathered) => {
141
- if (grandfathered.preferredValue) {
142
- return languageTagParser_1.LanguageTagParser.parse(grandfathered.preferredValue, this._iana)
143
- .onSuccess((gfSubtags) => {
144
- // istanbul ignore next - would require a registry error too hard to test
145
- if (gfSubtags.grandfathered !== undefined) {
146
- return (0, ts_utils_1.fail)(`preferred value ${grandfathered.preferredValue} of grandfathered tag ${subtags.grandfathered} is also grandfathered.`);
147
- }
148
- return this.processSubtags(gfSubtags);
149
- })
150
- .onFailure(
151
- // istanbul ignore next - would require a registry error too hard to test
152
- (message) => {
153
- // istanbul ignore next - would require a registry error too hard to test
154
- return (0, ts_utils_1.fail)(`grandfathered tag "${subtags.grandfathered}" has invalid preferred value "${grandfathered.preferredValue}":\n${message}`);
155
- });
156
- }
157
- return (0, ts_utils_1.succeed)(subtags);
158
- });
159
- }
160
- return (0, ts_utils_1.succeed)(subtags);
161
- }
162
- _postValidateRedundantTag(subtags) {
163
- const tag = (0, common_1.subtagsToString)(subtags);
164
- const redundant = this._iana.subtags.redundant.tryGetCanonical(tag);
165
- if (redundant === null || redundant === void 0 ? void 0 : redundant.preferredValue) {
166
- return languageTagParser_1.LanguageTagParser.parse(redundant.preferredValue, this._iana);
167
- }
168
- return (0, ts_utils_1.succeed)(subtags);
169
- }
170
- _postValidateExtLangs(subtags) {
171
- var _a;
172
- if (subtags.extlangs) {
173
- if (subtags.extlangs.length > 1) {
174
- return (0, ts_utils_1.fail)(`${subtags.extlangs.join('-')}: multiple extlang subtags is invalid`);
175
- }
176
- if (subtags.extlangs.length > 0) {
177
- const registry = this._iana.subtags.extlangs.tryGet(subtags.extlangs[0]);
178
- if (registry) {
179
- if (registry.preferredValue && registry.prefix === /* istanbul ignore next */ ((_a = subtags.primaryLanguage) === null || _a === void 0 ? void 0 : _a.toLowerCase())) {
180
- const preferred = this._iana.subtags.languages.tryGet(registry.preferredValue);
181
- if (preferred) {
182
- return (0, ts_utils_1.succeed)((0, utils_1.sanitizeJson)({
183
- ...subtags,
184
- primaryLanguage: preferred.subtag,
185
- extlangs: undefined,
186
- }));
187
- }
188
- }
189
- }
190
- }
191
- }
192
- return (0, ts_utils_1.succeed)(subtags);
193
- }
194
- _postValidate(subtags) {
195
- return super
196
- ._postValidate(subtags)
197
- .onSuccess((subtags) => {
198
- return this._postValidateExtLangs(subtags);
199
- })
200
- .onSuccess((subtags) => {
201
- return this._postValidateGrandfatheredTag(subtags);
202
- })
203
- .onSuccess((subtags) => {
204
- return this._postValidateRedundantTag(subtags);
205
- });
206
- }
207
- }
208
- exports.PreferredNormalizer = PreferredNormalizer;
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVycmVkVGFnTm9ybWFsaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iY3A0Ny9ub3JtYWxpemF0aW9uL3ByZWZlcnJlZFRhZ05vcm1hbGl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCw4REFBZ0Q7QUFDaEQsaURBQW1DO0FBRW5DLHNDQUEyRTtBQUMzRSw0Q0FBa0U7QUFFbEUsNERBQXlEO0FBRXpELHFEQUFxRDtBQUNyRCx1Q0FBMkM7QUFFM0M7O0dBRUc7QUFDSCxNQUFhLG1CQUFvQixTQUFRLGtDQUFpQjtJQUExRDs7UUFDb0Isa0JBQWEsR0FBcUIsV0FBVyxDQUFDO0lBdUtsRSxDQUFDO0lBckthLGdCQUFnQixDQUFDLE9BQWdCOztRQUN2QyxJQUFJLE9BQU8sQ0FBQyxlQUFlLEVBQUU7WUFDekIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDOUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDWCxPQUFPLElBQUEsZUFBSSxFQUFDLDRCQUE0QixPQUFPLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQzthQUN2RTtZQUNELE9BQU8sSUFBQSxrQkFBTyxFQUFDLE1BQUEsUUFBUSxDQUFDLGNBQWMsbUNBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzlEO1FBQ0QsT0FBTyxJQUFBLGtCQUFPLEVBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVTLGdCQUFnQixDQUFDLE9BQWdCO1FBQ3ZDLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUNsQixPQUFPLElBQUEscUJBQVUsRUFBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFB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QUFPLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRVMsYUFBYSxDQUFDLE9BQWdCO1FBQ3BDLE9BQU8sS0FBSzthQUNQLGFBQWEsQ0FBQyxPQUFPLENBQUM7YUFDdEIsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbkIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDO2FBQ0QsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbkIsT0FBTyxJQUFJLENBQUMsNkJBQTZCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDO2FBQ0QsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbkIsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0NBQ0o7QUF4S0Qsa0RBd0tDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMiBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCAqIGFzIEJjcDQ3U3VidGFncyBmcm9tICcuLi9iY3A0N1N1YnRhZ3MnO1xuaW1wb3J0ICogYXMgSWFuYSBmcm9tICcuLi8uLi9pYW5hJztcblxuaW1wb3J0IHsgRXh0ZW5zaW9uU3VidGFnVmFsdWUsIFN1YnRhZ3MsIHN1YnRhZ3NUb1N0cmluZyB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBSZXN1bHQsIGZhaWwsIG1hcFJlc3VsdHMsIHN1Y2NlZWQgfSBmcm9tICdAZmd2L3RzLXV0aWxzJztcblxuaW1wb3J0IHsgTGFuZ3VhZ2VUYWdQYXJzZXIgfSBmcm9tICcuLi9sYW5ndWFnZVRhZ1BhcnNlcic7XG5pbXBvcnQgeyBUYWdOb3JtYWxpemF0aW9uIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgVGFnTm9ybWFsaXplckJhc2UgfSBmcm9tICcuL2Jhc2VOb3JtYWxpemVyJztcbmltcG9ydCB7IHNhbml0aXplSnNvbiB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjbGFzcyBQcmVmZXJyZWROb3JtYWxpemVyIGV4dGVuZHMgVGFnTm9ybWFsaXplckJhc2Uge1xuICAgIHB1YmxpYyByZWFkb25seSBub3JtYWxpemF0aW9uOiBUYWdOb3JtYWxpemF0aW9uID0gJ3ByZWZlcnJlZCc7XG5cbiAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NMYW5ndWFnZShzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLkxhbmd1YWdlU3VidGFnIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLnByaW1hcnlMYW5ndWFnZSkge1xuICAgICAgICAgICAgY29uc3QgbGFuZ3VhZ2UgPSB0aGlzLl9pYW5hLnN1YnRhZ3MubGFuZ3VhZ2VzLnRyeUdldChzdWJ0YWdzLnByaW1hcnlMYW5ndWFnZSk7XG4gICAgICAgICAgICBpZiAoIWxhbmd1YWdlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYGludmFsaWQgbGFuZ3VhZ2Ugc3VidGFnIFwiJHtzdWJ0YWdzLnByaW1hcnlMYW5ndWFnZX1cImApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQobGFuZ3VhZ2UucHJlZmVycmVkVmFsdWUgPz8gbGFuZ3VhZ2Uuc3VidGFnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZCh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcHJvY2Vzc0V4dGxhbmdzKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8SWFuYS5MYW5ndWFnZVN1YnRhZ3MuRXh0TGFuZ1N1YnRhZ1tdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLmV4dGxhbmdzKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFwUmVzdWx0cyhzdWJ0YWdzLmV4dGxhbmdzLm1hcCgoZSkgPT4gdGhpcy5faWFuYS5zdWJ0YWdzLmV4dGxhbmdzLnRvVmFsaWRDYW5vbmljYWwoZSkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZCh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcHJvY2Vzc1NjcmlwdChzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLlNjcmlwdFN1YnRhZyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAoc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UgJiYgc3VidGFncy5zY3JpcHQpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhbmd1YWdlID0gdGhpcy5faWFuYS5zdWJ0YWdzLmxhbmd1YWdlcy50cnlHZXQoc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UpO1xuICAgICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHQgLSBpbnRlcm5hbCBlcnJvciBkaWZmaWN1bHQgdG8gdGVzdFxuICAgICAgICAgICAgaWYgKCFsYW5ndWFnZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGBpbnZhbGlkIHByaW1hcnkgbGFuZ3VhZ2Ugc3VidGFnIFwiJHtzdWJ0YWdzLnByaW1hcnlMYW5ndWFnZX0uYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHNjcmlwdCA9IHRoaXMuX2lhbmEuc3VidGFncy5zY3JpcHRzLnRvVmFsaWRDYW5vbmljYWwoc3VidGFncy5zY3JpcHQpLm9yRGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKCFzY3JpcHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFpbChgaW52YWxpZCBzY3JpcHQgc3VidGFnIFwiJHtzdWJ0YWdzLnNjcmlwdH1gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGxhbmd1YWdlLnN1cHByZXNzU2NyaXB0ICE9PSBzY3JpcHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZChzY3JpcHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9wcm9jZXNzUmVnaW9uKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8SWFuYS5MYW5ndWFnZVN1YnRhZ3MuUmVnaW9uU3VidGFnIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLnJlZ2lvbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lhbmEuc3VidGFncy5yZWdpb25zLmdldChzdWJ0YWdzLnJlZ2lvbikub25TdWNjZXNzKChyZWdpb24pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZChyZWdpb24ucHJlZmVycmVkVmFsdWUgPz8gcmVnaW9uLnN1YnRhZyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZCh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcHJvY2Vzc1ZhcmlhbnRzKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8SWFuYS5MYW5ndWFnZVN1YnRhZ3MuVmFyaWFudFN1YnRhZ1tdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLnZhcmlhbnRzKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFwUmVzdWx0cyhzdWJ0YWdzLnZhcmlhbnRzLm1hcCgodikgPT4gdGhpcy5faWFuYS5zdWJ0YWdzLnZhcmlhbnRzLnRvVmFsaWRDYW5vbmljYWwodikpKS5vblN1Y2Nlc3MoKHYpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5fdmVyaWZ5VW5pcXVlKCd2YXJpYW50JywgdiwgKHYpID0+IHYpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9wcm9jZXNzRXh0ZW5zaW9uU2luZ2xldG9uKHNpbmdsZXRvbjogQmNwNDdTdWJ0YWdzLk1vZGVsLkV4dGVuc2lvblNpbmdsZXRvbik6IFJlc3VsdDxCY3A0N1N1YnRhZ3MuTW9kZWwuRXh0ZW5zaW9uU2luZ2xldG9uPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pYW5hLmV4dGVuc2lvbnMuZXh0ZW5zaW9ucy50b1ZhbGlkQ2Fub25pY2FsKHNpbmdsZXRvbik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9wcm9jZXNzRXh0ZW5zaW9uU3VidGFnVmFsdWUodmFsdWU6IEJjcDQ3U3VidGFncy5Nb2RlbC5FeHRlbnNpb25TdWJ0YWcpOiBSZXN1bHQ8QmNwNDdTdWJ0YWdzLk1vZGVsLkV4dGVuc2lvblN1YnRhZz4ge1xuICAgICAgICByZXR1cm4gQmNwNDdTdWJ0YWdzLlZhbGlkYXRlLmV4dGVuc2lvblN1YnRhZy50b0Nhbm9uaWNhbCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9wcm9jZXNzRXh0ZW5zaW9ucyhzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PEV4dGVuc2lvblN1YnRhZ1ZhbHVlW10gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLl9wcm9jZXNzRXh0ZW5zaW9ucyhzdWJ0YWdzKS5vblN1Y2Nlc3MoKGV4dGVuc2lvbnMpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl92ZXJpZnlVbmlxdWUoJ2V4dGVuc2lvbnMnLCBleHRlbnNpb25zLCAoZSkgPT4gZS5zaW5nbGV0b24pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NQcml2YXRlVXNlVGFncyhzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLkV4dGVuZGVkTGFuZ3VhZ2VSYW5nZVtdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChzdWJ0YWdzLnByaXZhdGVVc2UpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZCA9IHN1YnRhZ3MucHJpdmF0ZVVzZS5qb2luKCctJyk7XG4gICAgICAgICAgICByZXR1cm4gSWFuYS5MYW5ndWFnZVN1YnRhZ3MuVmFsaWRhdGUuZXh0ZW5kZWRMYW5ndWFnZVJhbmdlLnRvQ2Fub25pY2FsKG1lcmdlZCkub25TdWNjZXNzKChjYW5vbikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKGNhbm9uLnNwbGl0KCctJykgYXMgSWFuYS5MYW5ndWFnZVN1YnRhZ3MuRXh0ZW5kZWRMYW5ndWFnZVJhbmdlW10pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NHcmFuZGZhdGhlcmVkVGFncyhzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLkdyYW5kZmF0aGVyZWRUYWcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKHN1YnRhZ3MuZ3JhbmRmYXRoZXJlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lhbmEuc3VidGFncy5ncmFuZGZhdGhlcmVkLnRvVmFsaWRDYW5vbmljYWwoc3VidGFncy5ncmFuZGZhdGhlcmVkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZCh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcG9zdFZhbGlkYXRlR3JhbmRmYXRoZXJlZFRhZyhzdWJ0YWdzOiBTdWJ0YWdzKTogUmVzdWx0PFN1YnRhZ3M+IHtcbiAgICAgICAgaWYgKHN1YnRhZ3MuZ3JhbmRmYXRoZXJlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lhbmEuc3VidGFncy5ncmFuZGZhdGhlcmVkLmdldChzdWJ0YWdzLmdyYW5kZmF0aGVyZWQpLm9uU3VjY2VzcygoZ3JhbmRmYXRoZXJlZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChncmFuZGZhdGhlcmVkLnByZWZlcnJlZFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBMYW5ndWFnZVRhZ1BhcnNlci5wYXJzZShncmFuZGZhdGhlcmVkLnByZWZlcnJlZFZhbHVlLCB0aGlzLl9pYW5hKVxuICAgICAgICAgICAgICAgICAgICAgICAgLm9uU3VjY2VzcygoZ2ZTdWJ0YWdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHQgLSB3b3VsZCByZXF1aXJlIGEgcmVnaXN0cnkgZXJyb3IgdG9vIGhhcmQgdG8gdGVzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZlN1YnRhZ3MuZ3JhbmRmYXRoZXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsPFN1YnRhZ3M+KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHByZWZlcnJlZCB2YWx1ZSAke2dyYW5kZmF0aGVyZWQucHJlZmVycmVkVmFsdWV9IG9mIGdyYW5kZmF0aGVyZWQgdGFnICR7c3VidGFncy5ncmFuZGZhdGhlcmVkfSBpcyBhbHNvIGdyYW5kZmF0aGVyZWQuYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzU3VidGFncyhnZlN1YnRhZ3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5vbkZhaWx1cmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHQgLSB3b3VsZCByZXF1aXJlIGEgcmVnaXN0cnkgZXJyb3IgdG9vIGhhcmQgdG8gdGVzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZXNzYWdlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0IC0gd291bGQgcmVxdWlyZSBhIHJlZ2lzdHJ5IGVycm9yIHRvbyBoYXJkIHRvIHRlc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZ3JhbmRmYXRoZXJlZCB0YWcgXCIke3N1YnRhZ3MuZ3JhbmRmYXRoZXJlZH1cIiBoYXMgaW52YWxpZCBwcmVmZXJyZWQgdmFsdWUgXCIke2dyYW5kZmF0aGVyZWQucHJlZmVycmVkVmFsdWV9XCI6XFxuJHttZXNzYWdlfWBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZChzdWJ0YWdzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHN1YnRhZ3MpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcG9zdFZhbGlkYXRlUmVkdW5kYW50VGFnKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8U3VidGFncz4ge1xuICAgICAgICBjb25zdCB0YWcgPSBzdWJ0YWdzVG9TdHJpbmcoc3VidGFncyk7XG4gICAgICAgIGNvbnN0IHJlZHVuZGFudCA9IHRoaXMuX2lhbmEuc3VidGFncy5yZWR1bmRhbnQudHJ5R2V0Q2Fub25pY2FsKHRhZyk7XG4gICAgICAgIGlmIChyZWR1bmRhbnQ/LnByZWZlcnJlZFZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gTGFuZ3VhZ2VUYWdQYXJzZXIucGFyc2UocmVkdW5kYW50LnByZWZlcnJlZFZhbHVlLCB0aGlzLl9pYW5hKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZChzdWJ0YWdzKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Bvc3RWYWxpZGF0ZUV4dExhbmdzKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8U3VidGFncz4ge1xuICAgICAgICBpZiAoc3VidGFncy5leHRsYW5ncykge1xuICAgICAgICAgICAgaWYgKHN1YnRhZ3MuZXh0bGFuZ3MubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGAke3N1YnRhZ3MuZXh0bGFuZ3Muam9pbignLScpfTogbXVsdGlwbGUgZXh0bGFuZyBzdWJ0YWdzIGlzIGludmFsaWRgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdWJ0YWdzLmV4dGxhbmdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWdpc3RyeSA9IHRoaXMuX2lhbmEuc3VidGFncy5leHRsYW5ncy50cnlHZXQoc3VidGFncy5leHRsYW5nc1swXSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlZ2lzdHJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWdpc3RyeS5wcmVmZXJyZWRWYWx1ZSAmJiByZWdpc3RyeS5wcmVmaXggPT09IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIHN1YnRhZ3MucHJpbWFyeUxhbmd1YWdlPy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVmZXJyZWQgPSB0aGlzLl9pYW5hLnN1YnRhZ3MubGFuZ3VhZ2VzLnRyeUdldChyZWdpc3RyeS5wcmVmZXJyZWRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJlZmVycmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbml0aXplSnNvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5zdWJ0YWdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeUxhbmd1YWdlOiBwcmVmZXJyZWQuc3VidGFnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0bGFuZ3M6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHN1YnRhZ3MpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcG9zdFZhbGlkYXRlKHN1YnRhZ3M6IFN1YnRhZ3MpOiBSZXN1bHQ8U3VidGFncz4ge1xuICAgICAgICByZXR1cm4gc3VwZXJcbiAgICAgICAgICAgIC5fcG9zdFZhbGlkYXRlKHN1YnRhZ3MpXG4gICAgICAgICAgICAub25TdWNjZXNzKChzdWJ0YWdzKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc3RWYWxpZGF0ZUV4dExhbmdzKHN1YnRhZ3MpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5vblN1Y2Nlc3MoKHN1YnRhZ3MpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcG9zdFZhbGlkYXRlR3JhbmRmYXRoZXJlZFRhZyhzdWJ0YWdzKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAub25TdWNjZXNzKChzdWJ0YWdzKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc3RWYWxpZGF0ZVJlZHVuZGFudFRhZyhzdWJ0YWdzKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,19 +0,0 @@
1
- import * as Model from './model';
2
- import { Converters, Result } from '@fgv/ts-utils';
3
- /**
4
- * @internal
5
- */
6
- export declare const languageOverrideRecord: Converters.ObjectConverter<Model.LanguageOverrideRecord, unknown>;
7
- /**
8
- * @internal
9
- */
10
- export declare const languageOverridesFile: import("@fgv/ts-utils").Converter<Model.LanguageOverrideRecord[], unknown>;
11
- /**
12
- * Loads a language overrides JSON file.
13
- * @internal
14
- * @param path - Path from which overrides should be loaded.
15
- * @returns `Success` with the loaded overrides or `Failure` with details if an
16
- * error occurs.
17
- */
18
- export declare function loadLanguageOverridesFileSync(path: string): Result<Model.LanguageOverrideRecord[]>;
19
- //# sourceMappingURL=converters.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"converters.d.ts","sourceRoot":"","sources":["../../../src/bcp47/overrides/converters.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGnD;;GAEG;AACH,eAAO,MAAM,sBAAsB,mEAQlC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,4EAA6C,CAAC;AAEhF;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,CAElG"}
@@ -1,75 +0,0 @@
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.loadLanguageOverridesFileSync = exports.languageOverridesFile = exports.languageOverrideRecord = void 0;
48
- const Iana = __importStar(require("../../iana"));
49
- const ts_utils_1 = require("@fgv/ts-utils");
50
- const file_1 = require("@fgv/ts-json/file");
51
- /**
52
- * @internal
53
- */
54
- exports.languageOverrideRecord = ts_utils_1.Converters.strictObject({
55
- language: Iana.LanguageSubtags.Converters.Tags.languageSubtag,
56
- preferredRegion: Iana.LanguageSubtags.Converters.Tags.regionSubtag,
57
- defaultAffinity: ts_utils_1.Converters.string,
58
- affinity: ts_utils_1.Converters.recordOf(ts_utils_1.Converters.arrayOf(Iana.LanguageSubtags.Converters.Tags.regionSubtag)),
59
- }, { optionalFields: ['affinity', 'defaultAffinity', 'preferredRegion'] });
60
- /**
61
- * @internal
62
- */
63
- exports.languageOverridesFile = ts_utils_1.Converters.arrayOf(exports.languageOverrideRecord);
64
- /**
65
- * Loads a language overrides JSON file.
66
- * @internal
67
- * @param path - Path from which overrides should be loaded.
68
- * @returns `Success` with the loaded overrides or `Failure` with details if an
69
- * error occurs.
70
- */
71
- function loadLanguageOverridesFileSync(path) {
72
- return (0, file_1.convertJsonFileSync)(path, exports.languageOverridesFile);
73
- }
74
- exports.loadLanguageOverridesFileSync = loadLanguageOverridesFileSync;
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iY3A0Ny9vdmVycmlkZXMvY29udmVydGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILGlEQUFtQztBQUduQyw0Q0FBbUQ7QUFDbkQsNENBQXdEO0FBRXhEOztHQUVHO0FBQ1UsUUFBQSxzQkFBc0IsR0FBRyxxQkFBVSxDQUFDLFlBQVksQ0FDekQ7SUFDSSxRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWM7SUFDN0QsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZO0lBQ2xFLGVBQWUsRUFBRSxxQkFBVSxDQUFDLE1BQU07SUFDbEMsUUFBUSxFQUFFLHFCQUFVLENBQUMsUUFBUSxDQUFDLHFCQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztDQUN2RyxFQUNELEVBQUUsY0FBYyxFQUFFLENBQUMsVUFBVSxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixDQUFDLEVBQUUsQ0FDekUsQ0FBQztBQUVGOztHQUVHO0FBQ1UsUUFBQSxxQkFBcUIsR0FBRyxxQkFBVSxDQUFDLE9BQU8sQ0FBQyw4QkFBc0IsQ0FBQyxDQUFDO0FBRWhGOzs7Ozs7R0FNRztBQUNILFNBQWdCLDZCQUE2QixDQUFDLElBQVk7SUFDdEQsT0FBTyxJQUFBLDBCQUFtQixFQUFDLElBQUksRUFBRSw2QkFBcUIsQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFGRCxzRUFFQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjIgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBJYW5hIGZyb20gJy4uLy4uL2lhbmEnO1xuaW1wb3J0ICogYXMgTW9kZWwgZnJvbSAnLi9tb2RlbCc7XG5cbmltcG9ydCB7IENvbnZlcnRlcnMsIFJlc3VsdCB9IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuaW1wb3J0IHsgY29udmVydEpzb25GaWxlU3luYyB9IGZyb20gJ0BmZ3YvdHMtanNvbi9maWxlJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IGxhbmd1YWdlT3ZlcnJpZGVSZWNvcmQgPSBDb252ZXJ0ZXJzLnN0cmljdE9iamVjdDxNb2RlbC5MYW5ndWFnZU92ZXJyaWRlUmVjb3JkPihcbiAgICB7XG4gICAgICAgIGxhbmd1YWdlOiBJYW5hLkxhbmd1YWdlU3VidGFncy5Db252ZXJ0ZXJzLlRhZ3MubGFuZ3VhZ2VTdWJ0YWcsXG4gICAgICAgIHByZWZlcnJlZFJlZ2lvbjogSWFuYS5MYW5ndWFnZVN1YnRhZ3MuQ29udmVydGVycy5UYWdzLnJlZ2lvblN1YnRhZyxcbiAgICAgICAgZGVmYXVsdEFmZmluaXR5OiBDb252ZXJ0ZXJzLnN0cmluZyxcbiAgICAgICAgYWZmaW5pdHk6IENvbnZlcnRlcnMucmVjb3JkT2YoQ29udmVydGVycy5hcnJheU9mKElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLkNvbnZlcnRlcnMuVGFncy5yZWdpb25TdWJ0YWcpKSxcbiAgICB9LFxuICAgIHsgb3B0aW9uYWxGaWVsZHM6IFsnYWZmaW5pdHknLCAnZGVmYXVsdEFmZmluaXR5JywgJ3ByZWZlcnJlZFJlZ2lvbiddIH1cbik7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBsYW5ndWFnZU92ZXJyaWRlc0ZpbGUgPSBDb252ZXJ0ZXJzLmFycmF5T2YobGFuZ3VhZ2VPdmVycmlkZVJlY29yZCk7XG5cbi8qKlxuICogTG9hZHMgYSBsYW5ndWFnZSBvdmVycmlkZXMgSlNPTiBmaWxlLlxuICogQGludGVybmFsXG4gKiBAcGFyYW0gcGF0aCAtIFBhdGggZnJvbSB3aGljaCBvdmVycmlkZXMgc2hvdWxkIGJlIGxvYWRlZC5cbiAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHRoZSBsb2FkZWQgb3ZlcnJpZGVzIG9yIGBGYWlsdXJlYCB3aXRoIGRldGFpbHMgaWYgYW5cbiAqIGVycm9yIG9jY3Vycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRMYW5ndWFnZU92ZXJyaWRlc0ZpbGVTeW5jKHBhdGg6IHN0cmluZyk6IFJlc3VsdDxNb2RlbC5MYW5ndWFnZU92ZXJyaWRlUmVjb3JkW10+IHtcbiAgICByZXR1cm4gY29udmVydEpzb25GaWxlU3luYyhwYXRoLCBsYW5ndWFnZU92ZXJyaWRlc0ZpbGUpO1xufVxuIl19
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaultRegistries.d.ts","sourceRoot":"","sources":["../../../src/bcp47/overrides/defaultRegistries.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;GAEG;AACH,qBAAa,iBAAiB;IAC1B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAgC;IAElE,WAAkB,iBAAiB,IAAI,iBAAiB,CAKvD;CACJ"}