@fgv/ts-bcp47 0.9.6 → 2.0.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (555) hide show
  1. package/.cache/build.lint/_eslint-R7SFxnrl.json +481 -0
  2. package/dist/ts-bcp47.d.ts +2554 -0
  3. package/dist/tsdoc-metadata.json +11 -0
  4. package/lib/data/bcp/overrides.json +20 -0
  5. package/lib/data/iana/language-subtags.json +57439 -0
  6. package/{data → lib/data}/iana/language-tag-extensions.json +2 -6
  7. package/lib/data/unsd/m49.json +3723 -0
  8. package/lib/index.d.ts +6 -0
  9. package/lib/index.d.ts.map +1 -0
  10. package/lib/index.js +57 -0
  11. package/lib/index.js.map +1 -0
  12. package/lib/packlets/bcp47/bcp47Subtags/converters.d.ts.map +1 -0
  13. package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/converters.js +2 -1
  14. package/lib/packlets/bcp47/bcp47Subtags/converters.js.map +1 -0
  15. package/lib/packlets/bcp47/bcp47Subtags/index.d.ts.map +1 -0
  16. package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/index.js +1 -1
  17. package/lib/packlets/bcp47/bcp47Subtags/index.js.map +1 -0
  18. package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/model.d.ts +3 -1
  19. package/lib/packlets/bcp47/bcp47Subtags/model.d.ts.map +1 -0
  20. package/lib/packlets/bcp47/bcp47Subtags/model.js +24 -0
  21. package/lib/packlets/bcp47/bcp47Subtags/model.js.map +1 -0
  22. package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/validate.d.ts +2 -2
  23. package/lib/packlets/bcp47/bcp47Subtags/validate.d.ts.map +1 -0
  24. package/lib/packlets/bcp47/bcp47Subtags/validate.js +74 -0
  25. package/lib/packlets/bcp47/bcp47Subtags/validate.js.map +1 -0
  26. package/{bcp47 → lib/packlets/bcp47}/common.d.ts +4 -4
  27. package/lib/packlets/bcp47/common.d.ts.map +1 -0
  28. package/lib/packlets/bcp47/common.js +59 -0
  29. package/lib/packlets/bcp47/common.js.map +1 -0
  30. package/{bcp47 → lib/packlets/bcp47}/helpers.d.ts +8 -8
  31. package/lib/packlets/bcp47/helpers.d.ts.map +1 -0
  32. package/lib/packlets/bcp47/helpers.js +103 -0
  33. package/lib/packlets/bcp47/helpers.js.map +1 -0
  34. package/lib/packlets/bcp47/index.d.ts +10 -0
  35. package/lib/packlets/bcp47/index.d.ts.map +1 -0
  36. package/lib/packlets/bcp47/index.js +68 -0
  37. package/lib/packlets/bcp47/index.js.map +1 -0
  38. package/{bcp47 → lib/packlets/bcp47}/languageRegistryData.d.ts +26 -27
  39. package/lib/packlets/bcp47/languageRegistryData.d.ts.map +1 -0
  40. package/lib/packlets/bcp47/languageRegistryData.js +206 -0
  41. package/lib/packlets/bcp47/languageRegistryData.js.map +1 -0
  42. package/{bcp47 → lib/packlets/bcp47}/languageTag.d.ts +12 -13
  43. package/lib/packlets/bcp47/languageTag.d.ts.map +1 -0
  44. package/lib/packlets/bcp47/languageTag.js +390 -0
  45. package/lib/packlets/bcp47/languageTag.js.map +1 -0
  46. package/{bcp47 → lib/packlets/bcp47}/languageTagParser.d.ts +13 -14
  47. package/lib/packlets/bcp47/languageTagParser.d.ts.map +1 -0
  48. package/lib/packlets/bcp47/languageTagParser.js +303 -0
  49. package/lib/packlets/bcp47/languageTagParser.js.map +1 -0
  50. package/{bcp47 → lib/packlets/bcp47}/match/chooser.d.ts +8 -8
  51. package/lib/packlets/bcp47/match/chooser.d.ts.map +1 -0
  52. package/lib/packlets/bcp47/match/chooser.js +92 -0
  53. package/lib/packlets/bcp47/match/chooser.js.map +1 -0
  54. package/lib/packlets/bcp47/match/common.d.ts.map +1 -0
  55. package/lib/packlets/bcp47/match/common.js +52 -0
  56. package/lib/packlets/bcp47/match/common.js.map +1 -0
  57. package/lib/packlets/bcp47/match/index.d.ts +4 -0
  58. package/lib/packlets/bcp47/match/index.d.ts.map +1 -0
  59. package/lib/packlets/bcp47/match/index.js +45 -0
  60. package/lib/packlets/bcp47/match/index.js.map +1 -0
  61. package/lib/packlets/bcp47/match/similarity.d.ts.map +1 -0
  62. package/lib/packlets/bcp47/match/similarity.js +230 -0
  63. package/lib/packlets/bcp47/match/similarity.js.map +1 -0
  64. package/lib/packlets/bcp47/normalization/baseNormalizer.d.ts +35 -0
  65. package/lib/packlets/bcp47/normalization/baseNormalizer.d.ts.map +1 -0
  66. package/lib/packlets/bcp47/normalization/baseNormalizer.js +116 -0
  67. package/lib/packlets/bcp47/normalization/baseNormalizer.js.map +1 -0
  68. package/lib/packlets/bcp47/normalization/canonicalNormalizer.d.ts +22 -0
  69. package/lib/packlets/bcp47/normalization/canonicalNormalizer.d.ts.map +1 -0
  70. package/lib/packlets/bcp47/normalization/canonicalNormalizer.js +113 -0
  71. package/lib/packlets/bcp47/normalization/canonicalNormalizer.js.map +1 -0
  72. package/{bcp47 → lib/packlets/bcp47}/normalization/common.d.ts +1 -1
  73. package/lib/packlets/bcp47/normalization/common.d.ts.map +1 -0
  74. package/lib/packlets/bcp47/normalization/common.js +82 -0
  75. package/lib/packlets/bcp47/normalization/common.js.map +1 -0
  76. package/lib/packlets/bcp47/normalization/index.d.ts.map +1 -0
  77. package/{bcp47 → lib/packlets/bcp47}/normalization/index.js +1 -1
  78. package/lib/packlets/bcp47/normalization/index.js.map +1 -0
  79. package/{bcp47 → lib/packlets/bcp47}/normalization/normalizeTag.d.ts +6 -6
  80. package/lib/packlets/bcp47/normalization/normalizeTag.d.ts.map +1 -0
  81. package/lib/packlets/bcp47/normalization/normalizeTag.js +105 -0
  82. package/lib/packlets/bcp47/normalization/normalizeTag.js.map +1 -0
  83. package/lib/packlets/bcp47/normalization/preferredTagNormalizer.d.ts +27 -0
  84. package/lib/packlets/bcp47/normalization/preferredTagNormalizer.d.ts.map +1 -0
  85. package/lib/packlets/bcp47/normalization/preferredTagNormalizer.js +204 -0
  86. package/lib/packlets/bcp47/normalization/preferredTagNormalizer.js.map +1 -0
  87. package/lib/packlets/bcp47/overrides/converters.d.ts +19 -0
  88. package/lib/packlets/bcp47/overrides/converters.d.ts.map +1 -0
  89. package/lib/packlets/bcp47/overrides/converters.js +76 -0
  90. package/lib/packlets/bcp47/overrides/converters.js.map +1 -0
  91. package/lib/packlets/bcp47/overrides/defaultRegistries.d.ts.map +1 -0
  92. package/lib/packlets/bcp47/overrides/defaultRegistries.js +42 -0
  93. package/lib/packlets/bcp47/overrides/defaultRegistries.js.map +1 -0
  94. package/lib/packlets/bcp47/overrides/index.d.ts.map +1 -0
  95. package/lib/packlets/bcp47/overrides/index.js +30 -0
  96. package/lib/packlets/bcp47/overrides/index.js.map +1 -0
  97. package/lib/packlets/bcp47/overrides/model.d.ts +11 -0
  98. package/lib/packlets/bcp47/overrides/model.d.ts.map +1 -0
  99. package/lib/packlets/bcp47/overrides/model.js +24 -0
  100. package/lib/packlets/bcp47/overrides/model.js.map +1 -0
  101. package/{bcp47 → lib/packlets/bcp47}/overrides/overridesRegistry.d.ts +8 -8
  102. package/lib/packlets/bcp47/overrides/overridesRegistry.d.ts.map +1 -0
  103. package/lib/packlets/bcp47/overrides/overridesRegistry.js +113 -0
  104. package/lib/packlets/bcp47/overrides/overridesRegistry.js.map +1 -0
  105. package/lib/packlets/bcp47/validation/baseValidator.d.ts +35 -0
  106. package/lib/packlets/bcp47/validation/baseValidator.d.ts.map +1 -0
  107. package/lib/packlets/bcp47/validation/baseValidator.js +113 -0
  108. package/lib/packlets/bcp47/validation/baseValidator.js.map +1 -0
  109. package/{bcp47 → lib/packlets/bcp47}/validation/common.d.ts +1 -1
  110. package/lib/packlets/bcp47/validation/common.d.ts.map +1 -0
  111. package/lib/packlets/bcp47/validation/common.js +84 -0
  112. package/lib/packlets/bcp47/validation/common.js.map +1 -0
  113. package/lib/packlets/bcp47/validation/index.d.ts.map +1 -0
  114. package/{bcp47 → lib/packlets/bcp47}/validation/index.js +1 -1
  115. package/lib/packlets/bcp47/validation/index.js.map +1 -0
  116. package/lib/packlets/bcp47/validation/isCanonical.d.ts +22 -0
  117. package/lib/packlets/bcp47/validation/isCanonical.d.ts.map +1 -0
  118. package/lib/packlets/bcp47/validation/isCanonical.js +106 -0
  119. package/lib/packlets/bcp47/validation/isCanonical.js.map +1 -0
  120. package/{bcp47 → lib/packlets/bcp47}/validation/isInPreferredForm.d.ts +4 -4
  121. package/lib/packlets/bcp47/validation/isInPreferredForm.d.ts.map +1 -0
  122. package/lib/packlets/bcp47/validation/isInPreferredForm.js +73 -0
  123. package/lib/packlets/bcp47/validation/isInPreferredForm.js.map +1 -0
  124. package/lib/packlets/bcp47/validation/isStrictlyValid.d.ts +18 -0
  125. package/lib/packlets/bcp47/validation/isStrictlyValid.d.ts.map +1 -0
  126. package/lib/packlets/bcp47/validation/isStrictlyValid.js +98 -0
  127. package/lib/packlets/bcp47/validation/isStrictlyValid.js.map +1 -0
  128. package/lib/packlets/bcp47/validation/isValid.d.ts +24 -0
  129. package/lib/packlets/bcp47/validation/isValid.d.ts.map +1 -0
  130. package/lib/packlets/bcp47/validation/isValid.js +119 -0
  131. package/lib/packlets/bcp47/validation/isValid.js.map +1 -0
  132. package/lib/packlets/bcp47/validation/isWellFormed.d.ts +22 -0
  133. package/lib/packlets/bcp47/validation/isWellFormed.d.ts.map +1 -0
  134. package/lib/packlets/bcp47/validation/isWellFormed.js +102 -0
  135. package/lib/packlets/bcp47/validation/isWellFormed.js.map +1 -0
  136. package/{bcp47 → lib/packlets/bcp47}/validation/validateTag.d.ts +9 -9
  137. package/lib/packlets/bcp47/validation/validateTag.d.ts.map +1 -0
  138. package/lib/packlets/bcp47/validation/validateTag.js +159 -0
  139. package/lib/packlets/bcp47/validation/validateTag.js.map +1 -0
  140. package/{iana → lib/packlets/iana}/common/converters.d.ts +2 -2
  141. package/lib/packlets/iana/common/converters.d.ts.map +1 -0
  142. package/lib/packlets/iana/common/converters.js +85 -0
  143. package/lib/packlets/iana/common/converters.js.map +1 -0
  144. package/{iana → lib/packlets/iana}/common/model.d.ts +1 -1
  145. package/lib/packlets/iana/common/model.d.ts.map +1 -0
  146. package/lib/packlets/iana/common/model.js +24 -0
  147. package/lib/packlets/iana/common/model.js.map +1 -0
  148. package/lib/packlets/iana/common/registeredItems.d.ts.map +1 -0
  149. package/lib/packlets/iana/common/registeredItems.js +124 -0
  150. package/lib/packlets/iana/common/registeredItems.js.map +1 -0
  151. package/lib/packlets/iana/common/utils.d.ts.map +1 -0
  152. package/lib/packlets/iana/common/utils.js +34 -0
  153. package/lib/packlets/iana/common/utils.js.map +1 -0
  154. package/{iana → lib/packlets/iana}/common/validate.d.ts +1 -1
  155. package/lib/packlets/iana/common/validate.d.ts.map +1 -0
  156. package/lib/packlets/iana/common/validate.js +62 -0
  157. package/lib/packlets/iana/common/validate.js.map +1 -0
  158. package/lib/packlets/iana/converters.d.ts.map +1 -0
  159. package/{iana → lib/packlets/iana}/converters.js +1 -1
  160. package/lib/packlets/iana/converters.js.map +1 -0
  161. package/lib/packlets/iana/defaultRegistries.d.ts.map +1 -0
  162. package/lib/packlets/iana/defaultRegistries.js +42 -0
  163. package/lib/packlets/iana/defaultRegistries.js.map +1 -0
  164. package/{iana → lib/packlets/iana}/index.d.ts +4 -2
  165. package/lib/packlets/iana/index.d.ts.map +1 -0
  166. package/{iana/jar/language-subtags/tags → lib/packlets/iana}/index.js +18 -6
  167. package/lib/packlets/iana/index.js.map +1 -0
  168. package/lib/packlets/iana/jar/converters.d.ts.map +1 -0
  169. package/{iana → lib/packlets/iana}/jar/converters.js +1 -1
  170. package/lib/packlets/iana/jar/converters.js.map +1 -0
  171. package/lib/packlets/iana/jar/index.d.ts +5 -0
  172. package/lib/packlets/iana/jar/index.d.ts.map +1 -0
  173. package/{unsd/csv → lib/packlets/iana/jar}/index.js +4 -2
  174. package/lib/packlets/iana/jar/index.js.map +1 -0
  175. package/{iana → lib/packlets/iana}/jar/jarConverters.d.ts +5 -5
  176. package/lib/packlets/iana/jar/jarConverters.d.ts.map +1 -0
  177. package/lib/packlets/iana/jar/jarConverters.js +86 -0
  178. package/lib/packlets/iana/jar/jarConverters.js.map +1 -0
  179. package/{iana → lib/packlets/iana}/jar/jarModel.d.ts +1 -1
  180. package/lib/packlets/iana/jar/jarModel.d.ts.map +1 -0
  181. package/lib/packlets/iana/jar/jarModel.js +24 -0
  182. package/lib/packlets/iana/jar/jarModel.js.map +1 -0
  183. package/lib/packlets/iana/jar/language-subtags/converters.d.ts.map +1 -0
  184. package/{iana → lib/packlets/iana}/jar/language-subtags/converters.js +1 -1
  185. package/lib/packlets/iana/jar/language-subtags/converters.js.map +1 -0
  186. package/lib/packlets/iana/jar/language-subtags/index.d.ts +5 -0
  187. package/lib/packlets/iana/jar/language-subtags/index.d.ts.map +1 -0
  188. package/{iana/jar/language-subtags/registry → lib/packlets/iana/jar/language-subtags}/index.js +29 -28
  189. package/lib/packlets/iana/jar/language-subtags/index.js.map +1 -0
  190. package/lib/packlets/iana/jar/language-subtags/model.d.ts.map +1 -0
  191. package/{iana → lib/packlets/iana}/jar/language-subtags/model.js +1 -1
  192. package/lib/packlets/iana/jar/language-subtags/model.js.map +1 -0
  193. package/lib/packlets/iana/jar/language-subtags/registry/converters.d.ts.map +1 -0
  194. package/lib/packlets/iana/jar/language-subtags/registry/converters.js +59 -0
  195. package/lib/packlets/iana/jar/language-subtags/registry/converters.js.map +1 -0
  196. package/lib/packlets/iana/jar/language-subtags/registry/index.d.ts.map +1 -0
  197. package/{iana/jar/language-subtags → lib/packlets/iana/jar/language-subtags/registry}/index.js +23 -22
  198. package/lib/packlets/iana/jar/language-subtags/registry/index.js.map +1 -0
  199. package/{iana → lib/packlets/iana}/jar/language-subtags/registry/model.d.ts +12 -12
  200. package/lib/packlets/iana/jar/language-subtags/registry/model.d.ts.map +1 -0
  201. package/lib/packlets/iana/jar/language-subtags/registry/model.js +46 -0
  202. package/lib/packlets/iana/jar/language-subtags/registry/model.js.map +1 -0
  203. package/lib/packlets/iana/jar/language-subtags/tags/converters.d.ts +55 -0
  204. package/lib/packlets/iana/jar/language-subtags/tags/converters.d.ts.map +1 -0
  205. package/lib/packlets/iana/jar/language-subtags/tags/converters.js +129 -0
  206. package/lib/packlets/iana/jar/language-subtags/tags/converters.js.map +1 -0
  207. package/lib/packlets/iana/jar/language-subtags/tags/index.d.ts +6 -0
  208. package/lib/packlets/iana/jar/language-subtags/tags/index.d.ts.map +1 -0
  209. package/lib/packlets/iana/jar/language-subtags/tags/index.js +58 -0
  210. package/lib/packlets/iana/jar/language-subtags/tags/index.js.map +1 -0
  211. package/lib/packlets/iana/jar/language-subtags/tags/model.d.ts.map +1 -0
  212. package/lib/packlets/iana/jar/language-subtags/tags/model.js +24 -0
  213. package/lib/packlets/iana/jar/language-subtags/tags/model.js.map +1 -0
  214. package/lib/packlets/iana/jar/language-subtags/tags/tagValidation.d.ts.map +1 -0
  215. package/lib/packlets/iana/jar/language-subtags/tags/tagValidation.js +70 -0
  216. package/lib/packlets/iana/jar/language-subtags/tags/tagValidation.js.map +1 -0
  217. package/lib/packlets/iana/jar/language-subtags/tags/validate.d.ts.map +1 -0
  218. package/lib/packlets/iana/jar/language-subtags/tags/validate.js +88 -0
  219. package/lib/packlets/iana/jar/language-subtags/tags/validate.js.map +1 -0
  220. package/lib/packlets/iana/jar/model.d.ts.map +1 -0
  221. package/{iana → lib/packlets/iana}/jar/model.js +1 -1
  222. package/lib/packlets/iana/jar/model.js.map +1 -0
  223. package/lib/packlets/iana/language-subtags/common.d.ts.map +1 -0
  224. package/lib/packlets/iana/language-subtags/common.js +24 -0
  225. package/lib/packlets/iana/language-subtags/common.js.map +1 -0
  226. package/lib/packlets/iana/language-subtags/converters.d.ts +52 -0
  227. package/lib/packlets/iana/language-subtags/converters.d.ts.map +1 -0
  228. package/lib/packlets/iana/language-subtags/converters.js +209 -0
  229. package/lib/packlets/iana/language-subtags/converters.js.map +1 -0
  230. package/{iana → lib/packlets/iana}/language-subtags/index.d.ts +4 -3
  231. package/lib/packlets/iana/language-subtags/index.d.ts.map +1 -0
  232. package/{iana → lib/packlets/iana}/language-subtags/index.js +10 -8
  233. package/lib/packlets/iana/language-subtags/index.js.map +1 -0
  234. package/{iana → lib/packlets/iana}/language-subtags/jarConverters.d.ts +8 -8
  235. package/lib/packlets/iana/language-subtags/jarConverters.d.ts.map +1 -0
  236. package/lib/packlets/iana/language-subtags/jarConverters.js +237 -0
  237. package/lib/packlets/iana/language-subtags/jarConverters.js.map +1 -0
  238. package/{iana → lib/packlets/iana}/language-subtags/model.d.ts +15 -15
  239. package/lib/packlets/iana/language-subtags/model.d.ts.map +1 -0
  240. package/lib/packlets/iana/language-subtags/model.js +24 -0
  241. package/lib/packlets/iana/language-subtags/model.js.map +1 -0
  242. package/{iana → lib/packlets/iana}/language-subtags/scope.d.ts +12 -12
  243. package/lib/packlets/iana/language-subtags/scope.d.ts.map +1 -0
  244. package/lib/packlets/iana/language-subtags/scope.js +179 -0
  245. package/lib/packlets/iana/language-subtags/scope.js.map +1 -0
  246. package/{iana → lib/packlets/iana}/language-subtags/subtagRegistry.d.ts +1 -1
  247. package/lib/packlets/iana/language-subtags/subtagRegistry.d.ts.map +1 -0
  248. package/lib/packlets/iana/language-subtags/subtagRegistry.js +150 -0
  249. package/lib/packlets/iana/language-subtags/subtagRegistry.js.map +1 -0
  250. package/lib/packlets/iana/language-subtags/validate.d.ts.map +1 -0
  251. package/{iana → lib/packlets/iana}/language-subtags/validate.js +1 -1
  252. package/lib/packlets/iana/language-subtags/validate.js.map +1 -0
  253. package/lib/packlets/iana/language-tag-extensions/converters.d.ts +22 -0
  254. package/lib/packlets/iana/language-tag-extensions/converters.d.ts.map +1 -0
  255. package/lib/packlets/iana/language-tag-extensions/converters.js +86 -0
  256. package/lib/packlets/iana/language-tag-extensions/converters.js.map +1 -0
  257. package/{iana → lib/packlets/iana}/language-tag-extensions/extensionsRegistry.d.ts +2 -2
  258. package/lib/packlets/iana/language-tag-extensions/extensionsRegistry.d.ts.map +1 -0
  259. package/lib/packlets/iana/language-tag-extensions/extensionsRegistry.js +105 -0
  260. package/lib/packlets/iana/language-tag-extensions/extensionsRegistry.js.map +1 -0
  261. package/{iana → lib/packlets/iana}/language-tag-extensions/extensionsScope.d.ts +3 -3
  262. package/lib/packlets/iana/language-tag-extensions/extensionsScope.d.ts.map +1 -0
  263. package/lib/packlets/iana/language-tag-extensions/extensionsScope.js +77 -0
  264. package/lib/packlets/iana/language-tag-extensions/extensionsScope.js.map +1 -0
  265. package/{iana → lib/packlets/iana}/language-tag-extensions/index.d.ts +3 -2
  266. package/lib/packlets/iana/language-tag-extensions/index.d.ts.map +1 -0
  267. package/{iana → lib/packlets/iana}/language-tag-extensions/index.js +6 -4
  268. package/lib/packlets/iana/language-tag-extensions/index.js.map +1 -0
  269. package/{iana → lib/packlets/iana}/language-tag-extensions/jarConverters.d.ts +2 -3
  270. package/lib/packlets/iana/language-tag-extensions/jarConverters.d.ts.map +1 -0
  271. package/lib/packlets/iana/language-tag-extensions/jarConverters.js +79 -0
  272. package/lib/packlets/iana/language-tag-extensions/jarConverters.js.map +1 -0
  273. package/{iana → lib/packlets/iana}/language-tag-extensions/model.d.ts +5 -6
  274. package/lib/packlets/iana/language-tag-extensions/model.d.ts.map +1 -0
  275. package/lib/packlets/iana/language-tag-extensions/model.js +25 -0
  276. package/lib/packlets/iana/language-tag-extensions/model.js.map +1 -0
  277. package/{iana → lib/packlets/iana}/language-tag-extensions/validate.d.ts +2 -2
  278. package/lib/packlets/iana/language-tag-extensions/validate.d.ts.map +1 -0
  279. package/lib/packlets/iana/language-tag-extensions/validate.js +36 -0
  280. package/lib/packlets/iana/language-tag-extensions/validate.js.map +1 -0
  281. package/lib/packlets/iana/languageRegistries.d.ts.map +1 -0
  282. package/lib/packlets/iana/languageRegistries.js +56 -0
  283. package/lib/packlets/iana/languageRegistries.js.map +1 -0
  284. package/lib/packlets/iana/model.d.ts.map +1 -0
  285. package/{iana → lib/packlets/iana}/model.js +1 -1
  286. package/lib/packlets/iana/model.js.map +1 -0
  287. package/lib/packlets/iana/validate.d.ts.map +1 -0
  288. package/{iana → lib/packlets/iana}/validate.js +1 -1
  289. package/lib/packlets/iana/validate.js.map +1 -0
  290. package/lib/packlets/unsd/areas.d.ts +29 -0
  291. package/lib/packlets/unsd/areas.d.ts.map +1 -0
  292. package/lib/packlets/unsd/areas.js +96 -0
  293. package/lib/packlets/unsd/areas.js.map +1 -0
  294. package/lib/packlets/unsd/common.d.ts +49 -0
  295. package/lib/packlets/unsd/common.d.ts.map +1 -0
  296. package/lib/packlets/unsd/common.js +24 -0
  297. package/lib/packlets/unsd/common.js.map +1 -0
  298. package/{unsd → lib/packlets/unsd}/csv/converters.d.ts +7 -4
  299. package/lib/packlets/unsd/csv/converters.d.ts.map +1 -0
  300. package/lib/packlets/unsd/csv/converters.js +78 -0
  301. package/lib/packlets/unsd/csv/converters.js.map +1 -0
  302. package/lib/packlets/unsd/csv/index.d.ts.map +1 -0
  303. package/{iana/jar → lib/packlets/unsd/csv}/index.js +1 -1
  304. package/lib/packlets/unsd/csv/index.js.map +1 -0
  305. package/lib/packlets/unsd/csv/model.d.ts +22 -0
  306. package/lib/packlets/unsd/csv/model.d.ts.map +1 -0
  307. package/lib/packlets/unsd/csv/model.js +24 -0
  308. package/lib/packlets/unsd/csv/model.js.map +1 -0
  309. package/lib/packlets/unsd/defaultRegistries.d.ts.map +1 -0
  310. package/lib/packlets/unsd/defaultRegistries.js +42 -0
  311. package/lib/packlets/unsd/defaultRegistries.js.map +1 -0
  312. package/{unsd → lib/packlets/unsd}/index.d.ts +2 -0
  313. package/lib/packlets/unsd/index.d.ts.map +1 -0
  314. package/lib/packlets/unsd/index.js +58 -0
  315. package/lib/packlets/unsd/index.js.map +1 -0
  316. package/{unsd → lib/packlets/unsd}/regionCodes.d.ts +7 -7
  317. package/lib/packlets/unsd/regionCodes.d.ts.map +1 -0
  318. package/lib/packlets/unsd/regionCodes.js +122 -0
  319. package/lib/packlets/unsd/regionCodes.js.map +1 -0
  320. package/lib/packlets/unsd/regions.d.ts +21 -0
  321. package/lib/packlets/unsd/regions.d.ts.map +1 -0
  322. package/lib/packlets/unsd/regions.js +77 -0
  323. package/lib/packlets/unsd/regions.js.map +1 -0
  324. package/lib/packlets/utils/index.d.ts.map +1 -0
  325. package/{utils → lib/packlets/utils}/index.js +1 -1
  326. package/lib/packlets/utils/index.js.map +1 -0
  327. package/lib/packlets/utils/jsonHelpers.d.ts.map +1 -0
  328. package/lib/packlets/utils/jsonHelpers.js +29 -0
  329. package/lib/packlets/utils/jsonHelpers.js.map +1 -0
  330. package/lib/packlets/utils/public.d.ts +2 -0
  331. package/lib/packlets/utils/public.d.ts.map +1 -0
  332. package/lib/packlets/utils/public.js +28 -0
  333. package/lib/packlets/utils/public.js.map +1 -0
  334. package/{utils → lib/packlets/utils}/validationHelpers.d.ts +9 -10
  335. package/lib/packlets/utils/validationHelpers.d.ts.map +1 -0
  336. package/lib/packlets/utils/validationHelpers.js +120 -0
  337. package/lib/packlets/utils/validationHelpers.js.map +1 -0
  338. package/package.json +73 -67
  339. package/bcp47/bcp47Subtags/converters.d.ts.map +0 -1
  340. package/bcp47/bcp47Subtags/index.d.ts.map +0 -1
  341. package/bcp47/bcp47Subtags/model.d.ts.map +0 -1
  342. package/bcp47/bcp47Subtags/model.js +0 -24
  343. package/bcp47/bcp47Subtags/validate.d.ts.map +0 -1
  344. package/bcp47/bcp47Subtags/validate.js +0 -74
  345. package/bcp47/common.d.ts.map +0 -1
  346. package/bcp47/common.js +0 -59
  347. package/bcp47/helpers.d.ts.map +0 -1
  348. package/bcp47/helpers.js +0 -103
  349. package/bcp47/index.d.ts +0 -7
  350. package/bcp47/index.d.ts.map +0 -1
  351. package/bcp47/index.js +0 -27
  352. package/bcp47/languageRegistryData.d.ts.map +0 -1
  353. package/bcp47/languageRegistryData.js +0 -209
  354. package/bcp47/languageTag.d.ts.map +0 -1
  355. package/bcp47/languageTag.js +0 -390
  356. package/bcp47/languageTagParser.d.ts.map +0 -1
  357. package/bcp47/languageTagParser.js +0 -302
  358. package/bcp47/match/chooser.d.ts.map +0 -1
  359. package/bcp47/match/chooser.js +0 -92
  360. package/bcp47/match/common.d.ts.map +0 -1
  361. package/bcp47/match/common.js +0 -51
  362. package/bcp47/match/index.d.ts +0 -4
  363. package/bcp47/match/index.d.ts.map +0 -1
  364. package/bcp47/match/index.js +0 -45
  365. package/bcp47/match/similarity.d.ts.map +0 -1
  366. package/bcp47/match/similarity.js +0 -230
  367. package/bcp47/normalization/baseNormalizer.d.ts +0 -36
  368. package/bcp47/normalization/baseNormalizer.d.ts.map +0 -1
  369. package/bcp47/normalization/baseNormalizer.js +0 -114
  370. package/bcp47/normalization/canonicalNormalizer.d.ts +0 -22
  371. package/bcp47/normalization/canonicalNormalizer.d.ts.map +0 -1
  372. package/bcp47/normalization/canonicalNormalizer.js +0 -113
  373. package/bcp47/normalization/common.d.ts.map +0 -1
  374. package/bcp47/normalization/common.js +0 -82
  375. package/bcp47/normalization/index.d.ts.map +0 -1
  376. package/bcp47/normalization/normalizeTag.d.ts.map +0 -1
  377. package/bcp47/normalization/normalizeTag.js +0 -105
  378. package/bcp47/normalization/preferredTagNormalizer.d.ts +0 -27
  379. package/bcp47/normalization/preferredTagNormalizer.d.ts.map +0 -1
  380. package/bcp47/normalization/preferredTagNormalizer.js +0 -209
  381. package/bcp47/overrides/converters.d.ts +0 -19
  382. package/bcp47/overrides/converters.d.ts.map +0 -1
  383. package/bcp47/overrides/converters.js +0 -75
  384. package/bcp47/overrides/defaultRegistries.d.ts.map +0 -1
  385. package/bcp47/overrides/defaultRegistries.js +0 -42
  386. package/bcp47/overrides/index.d.ts.map +0 -1
  387. package/bcp47/overrides/index.js +0 -30
  388. package/bcp47/overrides/model.d.ts +0 -11
  389. package/bcp47/overrides/model.d.ts.map +0 -1
  390. package/bcp47/overrides/model.js +0 -24
  391. package/bcp47/overrides/overridesRegistry.d.ts.map +0 -1
  392. package/bcp47/overrides/overridesRegistry.js +0 -112
  393. package/bcp47/validation/baseValidator.d.ts +0 -35
  394. package/bcp47/validation/baseValidator.d.ts.map +0 -1
  395. package/bcp47/validation/baseValidator.js +0 -111
  396. package/bcp47/validation/common.d.ts.map +0 -1
  397. package/bcp47/validation/common.js +0 -84
  398. package/bcp47/validation/index.d.ts.map +0 -1
  399. package/bcp47/validation/isCanonical.d.ts +0 -22
  400. package/bcp47/validation/isCanonical.d.ts.map +0 -1
  401. package/bcp47/validation/isCanonical.js +0 -104
  402. package/bcp47/validation/isInPreferredForm.d.ts.map +0 -1
  403. package/bcp47/validation/isInPreferredForm.js +0 -73
  404. package/bcp47/validation/isStrictlyValid.d.ts +0 -18
  405. package/bcp47/validation/isStrictlyValid.d.ts.map +0 -1
  406. package/bcp47/validation/isStrictlyValid.js +0 -98
  407. package/bcp47/validation/isValid.d.ts +0 -24
  408. package/bcp47/validation/isValid.d.ts.map +0 -1
  409. package/bcp47/validation/isValid.js +0 -115
  410. package/bcp47/validation/isWellFormed.d.ts +0 -22
  411. package/bcp47/validation/isWellFormed.d.ts.map +0 -1
  412. package/bcp47/validation/isWellFormed.js +0 -98
  413. package/bcp47/validation/validateTag.d.ts.map +0 -1
  414. package/bcp47/validation/validateTag.js +0 -159
  415. package/data/bcp/overrides.json +0 -21
  416. package/data/iana/language-subtags.json +0 -77295
  417. package/data/unsd/m49.json +0 -251
  418. package/iana/common/converters.d.ts.map +0 -1
  419. package/iana/common/converters.js +0 -84
  420. package/iana/common/model.d.ts.map +0 -1
  421. package/iana/common/model.js +0 -24
  422. package/iana/common/registeredItems.d.ts.map +0 -1
  423. package/iana/common/registeredItems.js +0 -124
  424. package/iana/common/utils.d.ts.map +0 -1
  425. package/iana/common/utils.js +0 -34
  426. package/iana/common/validate.d.ts.map +0 -1
  427. package/iana/common/validate.js +0 -61
  428. package/iana/converters.d.ts.map +0 -1
  429. package/iana/defaultRegistries.d.ts.map +0 -1
  430. package/iana/defaultRegistries.js +0 -42
  431. package/iana/index.d.ts.map +0 -1
  432. package/iana/index.js +0 -64
  433. package/iana/jar/converters.d.ts.map +0 -1
  434. package/iana/jar/index.d.ts.map +0 -1
  435. package/iana/jar/jarConverters.d.ts.map +0 -1
  436. package/iana/jar/jarConverters.js +0 -85
  437. package/iana/jar/jarModel.d.ts.map +0 -1
  438. package/iana/jar/jarModel.js +0 -24
  439. package/iana/jar/language-subtags/converters.d.ts.map +0 -1
  440. package/iana/jar/language-subtags/index.d.ts.map +0 -1
  441. package/iana/jar/language-subtags/model.d.ts.map +0 -1
  442. package/iana/jar/language-subtags/registry/converters.d.ts.map +0 -1
  443. package/iana/jar/language-subtags/registry/converters.js +0 -58
  444. package/iana/jar/language-subtags/registry/index.d.ts +0 -4
  445. package/iana/jar/language-subtags/registry/index.d.ts.map +0 -1
  446. package/iana/jar/language-subtags/registry/model.d.ts.map +0 -1
  447. package/iana/jar/language-subtags/registry/model.js +0 -41
  448. package/iana/jar/language-subtags/tags/converters.d.ts +0 -55
  449. package/iana/jar/language-subtags/tags/converters.d.ts.map +0 -1
  450. package/iana/jar/language-subtags/tags/converters.js +0 -128
  451. package/iana/jar/language-subtags/tags/index.d.ts +0 -5
  452. package/iana/jar/language-subtags/tags/index.d.ts.map +0 -1
  453. package/iana/jar/language-subtags/tags/model.d.ts.map +0 -1
  454. package/iana/jar/language-subtags/tags/model.js +0 -24
  455. package/iana/jar/language-subtags/tags/tagValidation.d.ts.map +0 -1
  456. package/iana/jar/language-subtags/tags/tagValidation.js +0 -70
  457. package/iana/jar/language-subtags/tags/validate.d.ts.map +0 -1
  458. package/iana/jar/language-subtags/tags/validate.js +0 -87
  459. package/iana/jar/model.d.ts.map +0 -1
  460. package/iana/language-subtags/common.d.ts.map +0 -1
  461. package/iana/language-subtags/common.js +0 -24
  462. package/iana/language-subtags/converters.d.ts +0 -52
  463. package/iana/language-subtags/converters.d.ts.map +0 -1
  464. package/iana/language-subtags/converters.js +0 -200
  465. package/iana/language-subtags/index.d.ts.map +0 -1
  466. package/iana/language-subtags/jarConverters.d.ts.map +0 -1
  467. package/iana/language-subtags/jarConverters.js +0 -213
  468. package/iana/language-subtags/model.d.ts.map +0 -1
  469. package/iana/language-subtags/model.js +0 -24
  470. package/iana/language-subtags/scope.d.ts.map +0 -1
  471. package/iana/language-subtags/scope.js +0 -179
  472. package/iana/language-subtags/subtagRegistry.d.ts.map +0 -1
  473. package/iana/language-subtags/subtagRegistry.js +0 -149
  474. package/iana/language-subtags/validate.d.ts.map +0 -1
  475. package/iana/language-tag-extensions/converters.d.ts +0 -23
  476. package/iana/language-tag-extensions/converters.d.ts.map +0 -1
  477. package/iana/language-tag-extensions/converters.js +0 -87
  478. package/iana/language-tag-extensions/extensionsRegistry.d.ts.map +0 -1
  479. package/iana/language-tag-extensions/extensionsRegistry.js +0 -104
  480. package/iana/language-tag-extensions/extensionsScope.d.ts.map +0 -1
  481. package/iana/language-tag-extensions/extensionsScope.js +0 -77
  482. package/iana/language-tag-extensions/index.d.ts.map +0 -1
  483. package/iana/language-tag-extensions/jarConverters.d.ts.map +0 -1
  484. package/iana/language-tag-extensions/jarConverters.js +0 -102
  485. package/iana/language-tag-extensions/model.d.ts.map +0 -1
  486. package/iana/language-tag-extensions/model.js +0 -24
  487. package/iana/language-tag-extensions/validate.d.ts.map +0 -1
  488. package/iana/language-tag-extensions/validate.js +0 -36
  489. package/iana/languageRegistries.d.ts.map +0 -1
  490. package/iana/languageRegistries.js +0 -56
  491. package/iana/model.d.ts.map +0 -1
  492. package/iana/validate.d.ts.map +0 -1
  493. package/index.d.ts +0 -6
  494. package/index.d.ts.map +0 -1
  495. package/index.js +0 -56
  496. package/unsd/areas.d.ts +0 -29
  497. package/unsd/areas.d.ts.map +0 -1
  498. package/unsd/areas.js +0 -96
  499. package/unsd/common.d.ts +0 -49
  500. package/unsd/common.d.ts.map +0 -1
  501. package/unsd/common.js +0 -24
  502. package/unsd/csv/converters.d.ts.map +0 -1
  503. package/unsd/csv/converters.js +0 -70
  504. package/unsd/csv/index.d.ts +0 -4
  505. package/unsd/csv/index.d.ts.map +0 -1
  506. package/unsd/csv/model.d.ts +0 -22
  507. package/unsd/csv/model.d.ts.map +0 -1
  508. package/unsd/csv/model.js +0 -24
  509. package/unsd/defaultRegistries.d.ts.map +0 -1
  510. package/unsd/defaultRegistries.js +0 -42
  511. package/unsd/index.d.ts.map +0 -1
  512. package/unsd/index.js +0 -44
  513. package/unsd/regionCodes.d.ts.map +0 -1
  514. package/unsd/regionCodes.js +0 -121
  515. package/unsd/regions.d.ts +0 -21
  516. package/unsd/regions.d.ts.map +0 -1
  517. package/unsd/regions.js +0 -77
  518. package/utils/index.d.ts.map +0 -1
  519. package/utils/jsonHelpers.d.ts.map +0 -1
  520. package/utils/jsonHelpers.js +0 -29
  521. package/utils/public.d.ts +0 -2
  522. package/utils/public.d.ts.map +0 -1
  523. package/utils/public.js +0 -28
  524. package/utils/validationHelpers.d.ts.map +0 -1
  525. package/utils/validationHelpers.js +0 -120
  526. /package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/converters.d.ts +0 -0
  527. /package/{bcp47 → lib/packlets/bcp47}/bcp47Subtags/index.d.ts +0 -0
  528. /package/{bcp47 → lib/packlets/bcp47}/match/common.d.ts +0 -0
  529. /package/{bcp47 → lib/packlets/bcp47}/match/similarity.d.ts +0 -0
  530. /package/{bcp47 → lib/packlets/bcp47}/normalization/index.d.ts +0 -0
  531. /package/{bcp47 → lib/packlets/bcp47}/overrides/defaultRegistries.d.ts +0 -0
  532. /package/{bcp47 → lib/packlets/bcp47}/overrides/index.d.ts +0 -0
  533. /package/{bcp47 → lib/packlets/bcp47}/validation/index.d.ts +0 -0
  534. /package/{iana → lib/packlets/iana}/common/registeredItems.d.ts +0 -0
  535. /package/{iana → lib/packlets/iana}/common/utils.d.ts +0 -0
  536. /package/{iana → lib/packlets/iana}/converters.d.ts +0 -0
  537. /package/{iana → lib/packlets/iana}/defaultRegistries.d.ts +0 -0
  538. /package/{iana → lib/packlets/iana}/jar/converters.d.ts +0 -0
  539. /package/{iana → lib/packlets/iana}/jar/language-subtags/converters.d.ts +0 -0
  540. /package/{iana → lib/packlets/iana}/jar/language-subtags/model.d.ts +0 -0
  541. /package/{iana → lib/packlets/iana}/jar/language-subtags/registry/converters.d.ts +0 -0
  542. /package/{iana/jar/language-subtags → lib/packlets/iana/jar/language-subtags/registry}/index.d.ts +0 -0
  543. /package/{iana → lib/packlets/iana}/jar/language-subtags/tags/model.d.ts +0 -0
  544. /package/{iana → lib/packlets/iana}/jar/language-subtags/tags/tagValidation.d.ts +0 -0
  545. /package/{iana → lib/packlets/iana}/jar/language-subtags/tags/validate.d.ts +0 -0
  546. /package/{iana → lib/packlets/iana}/jar/model.d.ts +0 -0
  547. /package/{iana → lib/packlets/iana}/language-subtags/common.d.ts +0 -0
  548. /package/{iana → lib/packlets/iana}/language-subtags/validate.d.ts +0 -0
  549. /package/{iana → lib/packlets/iana}/languageRegistries.d.ts +0 -0
  550. /package/{iana → lib/packlets/iana}/model.d.ts +0 -0
  551. /package/{iana → lib/packlets/iana}/validate.d.ts +0 -0
  552. /package/{iana/jar → lib/packlets/unsd/csv}/index.d.ts +0 -0
  553. /package/{unsd → lib/packlets/unsd}/defaultRegistries.d.ts +0 -0
  554. /package/{utils → lib/packlets/utils}/index.d.ts +0 -0
  555. /package/{utils → lib/packlets/utils}/jsonHelpers.d.ts +0 -0
@@ -0,0 +1,390 @@
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.LanguageTag = void 0;
48
+ const Iana = __importStar(require("../iana"));
49
+ const ts_utils_1 = require("@fgv/ts-utils");
50
+ const common_1 = require("./common");
51
+ const common_2 = require("./normalization/common");
52
+ const common_3 = require("./validation/common");
53
+ const languageRegistryData_1 = require("./languageRegistryData");
54
+ const languageTagParser_1 = require("./languageTagParser");
55
+ const normalization_1 = require("./normalization");
56
+ const validation_1 = require("./validation");
57
+ /**
58
+ * Represents a single BCP-47 language tag.
59
+ * @public
60
+ */
61
+ class LanguageTag {
62
+ /**
63
+ * Constructs a {@link Bcp47.LanguageTag | LanguageTag }.
64
+ * @param subtags - The {@link Bcp47.Subtags | subtags } from
65
+ * which the tag is constructed.
66
+ * @param validity - Known {@link Bcp47.TagValidity | validation level} of the
67
+ * supplied subtags.
68
+ * @param normalization - Known {@link Bcp47.TagNormalization | normalization level}
69
+ * of the supplied subtags.
70
+ * @param iana - The {@link Iana.LanguageRegistries} used to validate and normalize
71
+ * this tag.
72
+ * @internal
73
+ */
74
+ constructor(subtags, validity, normalization, iana) {
75
+ this.subtags = Object.freeze(Object.assign({}, subtags));
76
+ this._normalization = normalization;
77
+ this._validity = validity;
78
+ this.tag = (0, common_1.subtagsToString)(subtags);
79
+ this._iana = iana;
80
+ this.registry = new languageRegistryData_1.LanguageRegistryData(this.subtags, iana);
81
+ if (validity === 'strictly-valid') {
82
+ this._isStrictlyValid = true;
83
+ this._isValid = true;
84
+ }
85
+ else if (validity === 'valid') {
86
+ this._isValid = true;
87
+ }
88
+ if (normalization === 'preferred') {
89
+ this._isPreferred = true;
90
+ this._isCanonical = true;
91
+ }
92
+ else if (normalization === 'canonical') {
93
+ this._isCanonical = true;
94
+ }
95
+ }
96
+ /**
97
+ * The effective script of this language tag, if known.
98
+ * The effective script is the script subtag in the tag itself,
99
+ * if present, or the `Suppress-Script` defined in the
100
+ * {@link https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry | IANA subtag registry}
101
+ * for the primary language of this tag. Can be `undefined`
102
+ * if neither the tag nor the IANA registry define a script.
103
+ */
104
+ get effectiveScript() {
105
+ var _a;
106
+ return (_a = this.subtags.script) !== null && _a !== void 0 ? _a : this.getSuppressedScript();
107
+ }
108
+ /**
109
+ * Determines if this tag represents the special `undetermined` language.
110
+ */
111
+ get isUndetermined() {
112
+ var _a;
113
+ /* c8 ignore next */
114
+ return ((_a = this.subtags.primaryLanguage) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === common_1.UndeterminedLanguage;
115
+ }
116
+ /**
117
+ * Whether this language tag is valid.
118
+ */
119
+ get isValid() {
120
+ if (this._isValid === undefined) {
121
+ this._isValid = validation_1.ValidateTag.isValid(this.subtags);
122
+ if (this._isValid) {
123
+ this._validity = 'valid';
124
+ }
125
+ }
126
+ return this._isValid === true;
127
+ }
128
+ /**
129
+ * Whether if this language tag is strictly valid.
130
+ */
131
+ get isStrictlyValid() {
132
+ if (this._isStrictlyValid === undefined) {
133
+ this._isStrictlyValid = validation_1.ValidateTag.isStrictlyValid(this.subtags);
134
+ if (this._isStrictlyValid) {
135
+ this._validity = 'strictly-valid';
136
+ }
137
+ }
138
+ return this._isStrictlyValid === true;
139
+ }
140
+ /**
141
+ * Whether this language tag is in canonical form.
142
+ */
143
+ get isCanonical() {
144
+ if (this._isCanonical === undefined) {
145
+ this._isCanonical = validation_1.ValidateTag.isCanonical(this.subtags);
146
+ if (this._isCanonical) {
147
+ this._normalization = 'canonical';
148
+ }
149
+ }
150
+ return this._isCanonical === true;
151
+ }
152
+ /**
153
+ * Whether this language tag is in preferred form.
154
+ */
155
+ get isPreferred() {
156
+ if (this._isPreferred === undefined) {
157
+ this._isPreferred = validation_1.ValidateTag.isInPreferredForm(this.subtags);
158
+ if (this._isPreferred) {
159
+ this._normalization = 'preferred';
160
+ }
161
+ }
162
+ return this._isPreferred === true;
163
+ }
164
+ /**
165
+ * Whether this language tag is a grandfathered tag.
166
+ */
167
+ get isGrandfathered() {
168
+ return this.subtags.grandfathered !== undefined;
169
+ }
170
+ /**
171
+ * Gets a text description of this tag.
172
+ */
173
+ get description() {
174
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
175
+ const parts = [];
176
+ if (!this.subtags.grandfathered) {
177
+ if (this.registry.primaryLanguage || this.subtags.primaryLanguage) {
178
+ parts.push(((_b = (_a = this.registry.primaryLanguage) === null || _a === void 0 ? void 0 : _a.description[0]) !== null && _b !== void 0 ? _b : this.subtags.primaryLanguage));
179
+ }
180
+ if (this.registry.extlangs) {
181
+ for (const e of this.registry.extlangs) {
182
+ parts.push(`/ ${(_d = (_c = e.registry) === null || _c === void 0 ? void 0 : _c.description[0]) !== null && _d !== void 0 ? _d : e.subtag}`);
183
+ }
184
+ }
185
+ if (this.subtags.script) {
186
+ parts.push(`in ${(_f = (_e = this.registry.script) === null || _e === void 0 ? void 0 : _e.description[0]) !== null && _f !== void 0 ? _f : this.subtags.script} script`);
187
+ }
188
+ if (this.subtags.region) {
189
+ parts.push(`as spoken in ${(_h = (_g = this.registry.region) === null || _g === void 0 ? void 0 : _g.description[0]) !== null && _h !== void 0 ? _h : this.subtags.region}`);
190
+ }
191
+ if (this.registry.variants && this.registry.variants.length > 0) {
192
+ for (const e of this.registry.variants) {
193
+ parts.push(`(${(_k = (_j = e.registry) === null || _j === void 0 ? void 0 : _j.description[0]) !== null && _k !== void 0 ? _k : e.subtag})`);
194
+ }
195
+ }
196
+ if (this.registry.extensions && this.registry.extensions.length > 0) {
197
+ for (const e of this.registry.extensions) {
198
+ parts.push(`(${(_m = (_l = e.registry) === null || _l === void 0 ? void 0 : _l.description[0]) !== null && _m !== void 0 ? _m : `-${e.singleton}`} "${e.value}")`);
199
+ }
200
+ }
201
+ if (this.subtags.privateUse && this.subtags.privateUse.length > 0) {
202
+ parts.push(`(-x "${this.subtags.privateUse.join('-')}")`);
203
+ }
204
+ }
205
+ else {
206
+ parts.push(`${this.tag} (grandfathered)`);
207
+ }
208
+ return parts.join(' ');
209
+ }
210
+ /**
211
+ * Creates a new {@link Bcp47.LanguageTag | language tag} from a supplied `string` tag
212
+ * using optional configuration, if supplied.
213
+ * @param tag - The `string` tag from which the {@link Bcp47.LanguageTag | language tag}
214
+ * is te be constructed.
215
+ * @param options - (optional) set of {@link Bcp47.LanguageTagInitOptions | init options}
216
+ * to guide the validation and normalization of this tag.
217
+ * @returns `Success` with the new {@link Bcp47.LanguageTag | language tag} or `Failure`
218
+ * with details if an error occurs.
219
+ */
220
+ static createFromTag(tag, options) {
221
+ options = this._getOptions(options);
222
+ return languageTagParser_1.LanguageTagParser.parse(tag, options.iana).onSuccess((subtags) => {
223
+ return this._createTransformed(subtags, 'unknown', 'unknown', options);
224
+ });
225
+ }
226
+ /**
227
+ * Creates a new {@link Bcp47.LanguageTag | language tag} from a supplied
228
+ * {@link Bcp47.Subtags | subtags} using optional configuration,
229
+ * if supplied.
230
+ * @param tag - The {@link Bcp47.Subtags | subtags} from which the
231
+ * {@link Bcp47.LanguageTag | language tag} is te be constructed.
232
+ * @param options - (optional) set of {@link Bcp47.LanguageTagInitOptions | init options}
233
+ * to guide the validation and normalization of this tag.
234
+ * @returns `Success` with the new {@link Bcp47.LanguageTag | language tag} or `Failure`
235
+ * with details if an error occurs.
236
+ */
237
+ static createFromSubtags(subtags, options) {
238
+ return this._createTransformed(subtags, 'unknown', 'unknown', options);
239
+ }
240
+ /**
241
+ * Creates a new {@link Bcp47.LanguageTag | language tag} from a supplied `string`
242
+ * tag or {@link Bcp47.Subtags | subtags} using optional configuration,
243
+ * if supplied.
244
+ * @param from - The `string` tag or {@link Bcp47.Subtags | subtags} from
245
+ * which the {@link Bcp47.LanguageTag | language tag} is te be constructed.
246
+ * @param options - (optional) set of {@link Bcp47.LanguageTagInitOptions | init options}
247
+ * to guide the validation and normalization of this tag.
248
+ * @returns `Success` with the new {@link Bcp47.LanguageTag | language tag} or `Failure`
249
+ * with details if an error occurs.
250
+ */
251
+ static create(from, options) {
252
+ if (typeof from === 'string') {
253
+ return this.createFromTag(from, options);
254
+ }
255
+ else {
256
+ return this.createFromSubtags(from, options);
257
+ }
258
+ }
259
+ /**
260
+ * Constructs a new {@link Bcp47.LanguageTag | language tag} by applying appropriate transformations
261
+ * to as supplied {@link Bcp47.Subtags | Bcp47.Subtags}.
262
+ * @param subtags - The {@link Bcp47.Subtags | subtags} which represent the tag.
263
+ * @param fromValidity - The {@link Bcp47.TagValidity | validation level} of the supplied subtags.
264
+ * @param fromNormalization - The {@link Bcp47.TagNormalization | normalization level} fo the
265
+ * supplied subtags.
266
+ * @param partialOptions - Any {@link Bcp47.LanguageTagInitOptions | initialization options}.
267
+ * @returns `Success` with the corresponding {@link Bcp47.LanguageTag | language tag} or `Failure`
268
+ * with details if an error occurs.
269
+ * @internal
270
+ */
271
+ static _createTransformed(subtags, fromValidity, fromNormalization, partialOptions) {
272
+ const options = this._getOptions(partialOptions);
273
+ return validation_1.ValidateTag.validateSubtags(subtags, options.validity, fromValidity)
274
+ .onSuccess(() => {
275
+ return normalization_1.NormalizeTag.normalizeSubtags(subtags, options.normalization, fromNormalization);
276
+ })
277
+ .onSuccess((normalized) => {
278
+ const validity = (0, common_3.mostValid)(fromValidity, options.validity);
279
+ const normalization = (0, common_2.mostNormalized)(fromNormalization, options.normalization);
280
+ return (0, ts_utils_1.captureResult)(() => new LanguageTag(normalized, validity, normalization, options.iana));
281
+ });
282
+ }
283
+ /**
284
+ * Gets a fully-specified {@link Bcp47.LanguageTagInitOptions} from partial or undefined
285
+ * options, substituting defaults as appropriate.
286
+ * @param options - The {@link Bcp47.LanguageTagInitOptions} to be expanded, or `undefined`
287
+ * for default options.
288
+ * @returns Fully-specified {@link Bcp47.LanguageTagInitOptions | init options}.
289
+ * @internal
290
+ */
291
+ static _getOptions(options) {
292
+ var _a, _b, _c;
293
+ return {
294
+ iana: (_a = options === null || options === void 0 ? void 0 : options.iana) !== null && _a !== void 0 ? _a : Iana.DefaultRegistries.languageRegistries,
295
+ validity: (_b = options === null || options === void 0 ? void 0 : options.validity) !== null && _b !== void 0 ? _b : 'well-formed',
296
+ normalization: (_c = options === null || options === void 0 ? void 0 : options.normalization) !== null && _c !== void 0 ? _c : 'none'
297
+ };
298
+ }
299
+ /**
300
+ * Returns the `Suppress-Script` value defined for the primary language of this tag,
301
+ * regardless of whether a different script is defined in this subtag.
302
+ * @returns The suppress-script defined for the primary language, or undefined if
303
+ * the primary language is invalid or has no defined suppressed script.
304
+ */
305
+ getSuppressedScript() {
306
+ if (this._suppressedScript === undefined) {
307
+ this._suppressedScript = false;
308
+ if (this.subtags.primaryLanguage) {
309
+ const language = this._iana.subtags.languages.tryGet(this.subtags.primaryLanguage);
310
+ if ((language === null || language === void 0 ? void 0 : language.suppressScript) !== undefined) {
311
+ this._suppressedScript = language.suppressScript;
312
+ }
313
+ }
314
+ }
315
+ return this._suppressedScript ? this._suppressedScript : undefined;
316
+ }
317
+ /**
318
+ * Gets a confirmed valid representation of this language tag.
319
+ * @returns `Success` with a valid representation of this {@link Bcp47.LanguageTag | language tag},
320
+ * or `Failure` with details if the tag cannot be validated.
321
+ */
322
+ toValid() {
323
+ if (this.isValid) {
324
+ return (0, ts_utils_1.succeed)(this);
325
+ }
326
+ const options = {
327
+ iana: this._iana,
328
+ validity: 'valid',
329
+ normalization: this._normalization
330
+ };
331
+ return LanguageTag._createTransformed(this.subtags, this._validity, this._normalization, options);
332
+ }
333
+ /**
334
+ * Gets a confirmed strictly valid representation of this language tag.
335
+ * @returns `Success` with a strictly valid representation of this {@link Bcp47.LanguageTag | language tag},
336
+ * or `Failure` with details if the tag cannot be strictly validated.
337
+ */
338
+ toStrictlyValid() {
339
+ if (this.isStrictlyValid) {
340
+ return (0, ts_utils_1.succeed)(this);
341
+ }
342
+ const options = {
343
+ iana: this._iana,
344
+ validity: 'strictly-valid',
345
+ normalization: this._normalization
346
+ };
347
+ return LanguageTag._createTransformed(this.subtags, this._validity, this._normalization, options);
348
+ }
349
+ /**
350
+ * Gets a confirmed canonical representation of this language tag.
351
+ * @returns `Success` with a canonical representation of this {@link Bcp47.LanguageTag | language tag},
352
+ * or `Failure` with details if the tag cannot be normalized to canonical form.
353
+ */
354
+ toCanonical() {
355
+ if (this.isCanonical) {
356
+ return (0, ts_utils_1.succeed)(this);
357
+ }
358
+ const options = {
359
+ iana: this._iana,
360
+ validity: this._validity,
361
+ normalization: 'canonical'
362
+ };
363
+ return LanguageTag._createTransformed(this.subtags, this._validity, this._normalization, options);
364
+ }
365
+ /**
366
+ * Gets a confirmed preferred representation of this language tag.
367
+ * @returns `Success` with a preferred representation of this {@link Bcp47.LanguageTag | language tag},
368
+ * or `Failure` with details if the tag cannot be normalized to preferred form.
369
+ */
370
+ toPreferred() {
371
+ if (this.isPreferred) {
372
+ return (0, ts_utils_1.succeed)(this);
373
+ }
374
+ const options = {
375
+ iana: this._iana,
376
+ validity: 'valid',
377
+ normalization: 'preferred'
378
+ };
379
+ return LanguageTag._createTransformed(this.subtags, this._validity, this._normalization, options);
380
+ }
381
+ /**
382
+ * Gets a string representation of this language tag.
383
+ * @returns A string representation of this language tag.
384
+ */
385
+ toString() {
386
+ return this.tag;
387
+ }
388
+ }
389
+ exports.LanguageTag = LanguageTag;
390
+ //# sourceMappingURL=languageTag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languageTag.js","sourceRoot":"","sources":["../../../src/packlets/bcp47/languageTag.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (c) 2022 Erik Fortune\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nimport * as Iana from '../iana';\n\nimport { Result, captureResult, succeed } from '@fgv/ts-utils';\nimport { ISubtags, UndeterminedLanguage, subtagsToString } from './common';\nimport { TagNormalization, mostNormalized } from './normalization/common';\nimport { TagValidity, mostValid } from './validation/common';\n\nimport { LanguageRegistryData } from './languageRegistryData';\nimport { LanguageTagParser } from './languageTagParser';\nimport { NormalizeTag } from './normalization';\nimport { ValidateTag } from './validation';\n\n/**\n * Initialization options for parsing or creation of {@link Bcp47.LanguageTag | language tag} objects.\n * @public\n */\nexport interface ILanguageTagInitOptions {\n /**\n * Desired {@link Bcp47.TagValidity | validity level} (optional).\n */\n validity?: TagValidity;\n /**\n * Desired {@link Bcp47.TagNormalization | normalization level} (optional).\n */\n normalization?: TagNormalization;\n /**\n * The {@link Iana.LanguageRegistries | IANA language subtag and extension registries} to\n * be used for the request (optional).\n */\n iana?: Iana.LanguageRegistries;\n}\n\n/**\n * Represents a single BCP-47 language tag.\n * @public\n */\nexport class LanguageTag {\n /**\n * The individual {@link Bcp47.Subtags | subtags} for\n * this language tag.\n */\n public readonly subtags: Readonly<ISubtags>;\n\n /**\n * A string representation of this language tag.\n */\n public readonly tag: string;\n\n /**\n * Details about this language tag from the IANA language\n * registries.\n */\n public readonly registry: LanguageRegistryData;\n\n /**\n * @internal\n */\n protected readonly _iana: Iana.LanguageRegistries;\n\n /**\n * @internal\n */\n protected _validity: TagValidity;\n\n /**\n * @internal\n */\n protected _normalization: TagNormalization;\n\n /**\n * @internal\n */\n protected _isValid: undefined | boolean;\n\n /**\n * @internal\n */\n protected _isStrictlyValid: undefined | boolean;\n\n /**\n * @internal\n */\n protected _isCanonical: undefined | boolean;\n\n /**\n * @internal\n */\n protected _isPreferred: undefined | boolean;\n\n /**\n * @internal\n */\n protected _suppressedScript: undefined | Iana.LanguageSubtags.ScriptSubtag | false;\n\n /**\n * Constructs a {@link Bcp47.LanguageTag | LanguageTag }.\n * @param subtags - The {@link Bcp47.Subtags | subtags } from\n * which the tag is constructed.\n * @param validity - Known {@link Bcp47.TagValidity | validation level} of the\n * supplied subtags.\n * @param normalization - Known {@link Bcp47.TagNormalization | normalization level}\n * of the supplied subtags.\n * @param iana - The {@link Iana.LanguageRegistries} used to validate and normalize\n * this tag.\n * @internal\n */\n protected constructor(\n subtags: ISubtags,\n validity: TagValidity,\n normalization: TagNormalization,\n iana: Iana.LanguageRegistries\n ) {\n this.subtags = Object.freeze({ ...subtags });\n this._normalization = normalization;\n this._validity = validity;\n this.tag = subtagsToString(subtags);\n this._iana = iana;\n this.registry = new LanguageRegistryData(this.subtags, iana);\n\n if (validity === 'strictly-valid') {\n this._isStrictlyValid = true;\n this._isValid = true;\n } else if (validity === 'valid') {\n this._isValid = true;\n }\n\n if (normalization === 'preferred') {\n this._isPreferred = true;\n this._isCanonical = true;\n } else if (normalization === 'canonical') {\n this._isCanonical = true;\n }\n }\n\n /**\n * The effective script of this language tag, if known.\n * The effective script is the script subtag in the tag itself,\n * if present, or the `Suppress-Script` defined in the\n * {@link https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry | IANA subtag registry}\n * for the primary language of this tag. Can be `undefined`\n * if neither the tag nor the IANA registry define a script.\n */\n public get effectiveScript(): Iana.LanguageSubtags.ScriptSubtag | undefined {\n return this.subtags.script ?? this.getSuppressedScript();\n }\n\n /**\n * Determines if this tag represents the special `undetermined` language.\n */\n public get isUndetermined(): boolean {\n /* c8 ignore next */\n return this.subtags.primaryLanguage?.toLowerCase() === UndeterminedLanguage;\n }\n\n /**\n * Whether this language tag is valid.\n */\n public get isValid(): boolean {\n if (this._isValid === undefined) {\n this._isValid = ValidateTag.isValid(this.subtags);\n if (this._isValid) {\n this._validity = 'valid';\n }\n }\n return this._isValid === true;\n }\n\n /**\n * Whether if this language tag is strictly valid.\n */\n public get isStrictlyValid(): boolean {\n if (this._isStrictlyValid === undefined) {\n this._isStrictlyValid = ValidateTag.isStrictlyValid(this.subtags);\n if (this._isStrictlyValid) {\n this._validity = 'strictly-valid';\n }\n }\n return this._isStrictlyValid === true;\n }\n\n /**\n * Whether this language tag is in canonical form.\n */\n public get isCanonical(): boolean {\n if (this._isCanonical === undefined) {\n this._isCanonical = ValidateTag.isCanonical(this.subtags);\n if (this._isCanonical) {\n this._normalization = 'canonical';\n }\n }\n return this._isCanonical === true;\n }\n\n /**\n * Whether this language tag is in preferred form.\n */\n public get isPreferred(): boolean {\n if (this._isPreferred === undefined) {\n this._isPreferred = ValidateTag.isInPreferredForm(this.subtags);\n if (this._isPreferred) {\n this._normalization = 'preferred';\n }\n }\n return this._isPreferred === true;\n }\n\n /**\n * Whether this language tag is a grandfathered tag.\n */\n public get isGrandfathered(): boolean {\n return this.subtags.grandfathered !== undefined;\n }\n\n /**\n * Gets a text description of this tag.\n */\n public get description(): string {\n const parts: string[] = [];\n if (!this.subtags.grandfathered) {\n if (this.registry.primaryLanguage || this.subtags.primaryLanguage) {\n parts.push((this.registry.primaryLanguage?.description[0] ?? this.subtags.primaryLanguage)!);\n }\n if (this.registry.extlangs) {\n for (const e of this.registry.extlangs) {\n parts.push(`/ ${e.registry?.description[0] ?? e.subtag}`);\n }\n }\n if (this.subtags.script) {\n parts.push(`in ${this.registry.script?.description[0] ?? this.subtags.script} script`);\n }\n if (this.subtags.region) {\n parts.push(`as spoken in ${this.registry.region?.description[0] ?? this.subtags.region}`);\n }\n if (this.registry.variants && this.registry.variants.length > 0) {\n for (const e of this.registry.variants) {\n parts.push(`(${e.registry?.description[0] ?? e.subtag})`);\n }\n }\n if (this.registry.extensions && this.registry.extensions.length > 0) {\n for (const e of this.registry.extensions) {\n parts.push(`(${e.registry?.description[0] ?? `-${e.singleton}`} \"${e.value}\")`);\n }\n }\n if (this.subtags.privateUse && this.subtags.privateUse.length > 0) {\n parts.push(`(-x \"${this.subtags.privateUse.join('-')}\")`);\n }\n } else {\n parts.push(`${this.tag} (grandfathered)`);\n }\n return parts.join(' ');\n }\n\n /**\n * Creates a new {@link Bcp47.LanguageTag | language tag} from a supplied `string` tag\n * using optional configuration, if supplied.\n * @param tag - The `string` tag from which the {@link Bcp47.LanguageTag | language tag}\n * is te be constructed.\n * @param options - (optional) set of {@link Bcp47.LanguageTagInitOptions | init options}\n * to guide the validation and normalization of this tag.\n * @returns `Success` with the new {@link Bcp47.LanguageTag | language tag} or `Failure`\n * with details if an error occurs.\n */\n public static createFromTag(tag: string, options?: ILanguageTagInitOptions): Result<LanguageTag> {\n options = this._getOptions(options);\n\n return LanguageTagParser.parse(tag, options.iana).onSuccess((subtags) => {\n return this._createTransformed(subtags, 'unknown', 'unknown', options);\n });\n }\n\n /**\n * Creates a new {@link Bcp47.LanguageTag | language tag} from a supplied\n * {@link Bcp47.Subtags | subtags} using optional configuration,\n * if supplied.\n * @param tag - The {@link Bcp47.Subtags | subtags} from which the\n * {@link Bcp47.LanguageTag | language tag} is te be constructed.\n * @param options - (optional) set of {@link Bcp47.LanguageTagInitOptions | init options}\n * to guide the validation and normalization of this tag.\n * @returns `Success` with the new {@link Bcp47.LanguageTag | language tag} or `Failure`\n * with details if an error occurs.\n */\n public static createFromSubtags(subtags: ISubtags, options?: ILanguageTagInitOptions): Result<LanguageTag> {\n return this._createTransformed(subtags, 'unknown', 'unknown', options);\n }\n\n /**\n * Creates a new {@link Bcp47.LanguageTag | language tag} from a supplied `string`\n * tag or {@link Bcp47.Subtags | subtags} using optional configuration,\n * if supplied.\n * @param from - The `string` tag or {@link Bcp47.Subtags | subtags} from\n * which the {@link Bcp47.LanguageTag | language tag} is te be constructed.\n * @param options - (optional) set of {@link Bcp47.LanguageTagInitOptions | init options}\n * to guide the validation and normalization of this tag.\n * @returns `Success` with the new {@link Bcp47.LanguageTag | language tag} or `Failure`\n * with details if an error occurs.\n */\n public static create(from: string | ISubtags, options?: ILanguageTagInitOptions): Result<LanguageTag> {\n if (typeof from === 'string') {\n return this.createFromTag(from, options);\n } else {\n return this.createFromSubtags(from, options);\n }\n }\n\n /**\n * Constructs a new {@link Bcp47.LanguageTag | language tag} by applying appropriate transformations\n * to as supplied {@link Bcp47.Subtags | Bcp47.Subtags}.\n * @param subtags - The {@link Bcp47.Subtags | subtags} which represent the tag.\n * @param fromValidity - The {@link Bcp47.TagValidity | validation level} of the supplied subtags.\n * @param fromNormalization - The {@link Bcp47.TagNormalization | normalization level} fo the\n * supplied subtags.\n * @param partialOptions - Any {@link Bcp47.LanguageTagInitOptions | initialization options}.\n * @returns `Success` with the corresponding {@link Bcp47.LanguageTag | language tag} or `Failure`\n * with details if an error occurs.\n * @internal\n */\n protected static _createTransformed(\n subtags: ISubtags,\n fromValidity: TagValidity,\n fromNormalization: TagNormalization,\n partialOptions?: ILanguageTagInitOptions\n ): Result<LanguageTag> {\n const options = this._getOptions(partialOptions);\n return ValidateTag.validateSubtags(subtags, options.validity, fromValidity)\n .onSuccess(() => {\n return NormalizeTag.normalizeSubtags(subtags, options.normalization, fromNormalization);\n })\n .onSuccess((normalized) => {\n const validity = mostValid(fromValidity, options.validity);\n const normalization = mostNormalized(fromNormalization, options.normalization);\n return captureResult(() => new LanguageTag(normalized, validity, normalization, options.iana));\n });\n }\n\n /**\n * Gets a fully-specified {@link Bcp47.LanguageTagInitOptions} from partial or undefined\n * options, substituting defaults as appropriate.\n * @param options - The {@link Bcp47.LanguageTagInitOptions} to be expanded, or `undefined`\n * for default options.\n * @returns Fully-specified {@link Bcp47.LanguageTagInitOptions | init options}.\n * @internal\n */\n protected static _getOptions(options?: ILanguageTagInitOptions): Required<ILanguageTagInitOptions> {\n return {\n iana: options?.iana ?? Iana.DefaultRegistries.languageRegistries,\n validity: options?.validity ?? 'well-formed',\n normalization: options?.normalization ?? 'none'\n };\n }\n\n /**\n * Returns the `Suppress-Script` value defined for the primary language of this tag,\n * regardless of whether a different script is defined in this subtag.\n * @returns The suppress-script defined for the primary language, or undefined if\n * the primary language is invalid or has no defined suppressed script.\n */\n public getSuppressedScript(): Iana.LanguageSubtags.ScriptSubtag | undefined {\n if (this._suppressedScript === undefined) {\n this._suppressedScript = false;\n if (this.subtags.primaryLanguage) {\n const language = this._iana.subtags.languages.tryGet(this.subtags.primaryLanguage);\n if (language?.suppressScript !== undefined) {\n this._suppressedScript = language.suppressScript;\n }\n }\n }\n return this._suppressedScript ? this._suppressedScript : undefined;\n }\n\n /**\n * Gets a confirmed valid representation of this language tag.\n * @returns `Success` with a valid representation of this {@link Bcp47.LanguageTag | language tag},\n * or `Failure` with details if the tag cannot be validated.\n */\n public toValid(): Result<LanguageTag> {\n if (this.isValid) {\n return succeed(this);\n }\n const options: ILanguageTagInitOptions = {\n iana: this._iana,\n validity: 'valid',\n normalization: this._normalization\n };\n return LanguageTag._createTransformed(this.subtags, this._validity, this._normalization, options);\n }\n\n /**\n * Gets a confirmed strictly valid representation of this language tag.\n * @returns `Success` with a strictly valid representation of this {@link Bcp47.LanguageTag | language tag},\n * or `Failure` with details if the tag cannot be strictly validated.\n */\n public toStrictlyValid(): Result<LanguageTag> {\n if (this.isStrictlyValid) {\n return succeed(this);\n }\n const options: ILanguageTagInitOptions = {\n iana: this._iana,\n validity: 'strictly-valid',\n normalization: this._normalization\n };\n return LanguageTag._createTransformed(this.subtags, this._validity, this._normalization, options);\n }\n\n /**\n * Gets a confirmed canonical representation of this language tag.\n * @returns `Success` with a canonical representation of this {@link Bcp47.LanguageTag | language tag},\n * or `Failure` with details if the tag cannot be normalized to canonical form.\n */\n public toCanonical(): Result<LanguageTag> {\n if (this.isCanonical) {\n return succeed(this);\n }\n const options: ILanguageTagInitOptions = {\n iana: this._iana,\n validity: this._validity,\n normalization: 'canonical'\n };\n return LanguageTag._createTransformed(this.subtags, this._validity, this._normalization, options);\n }\n\n /**\n * Gets a confirmed preferred representation of this language tag.\n * @returns `Success` with a preferred representation of this {@link Bcp47.LanguageTag | language tag},\n * or `Failure` with details if the tag cannot be normalized to preferred form.\n */\n public toPreferred(): Result<LanguageTag> {\n if (this.isPreferred) {\n return succeed(this);\n }\n const options: ILanguageTagInitOptions = {\n iana: this._iana,\n validity: 'valid', // preferred requires validity\n normalization: 'preferred'\n };\n return LanguageTag._createTransformed(this.subtags, this._validity, this._normalization, options);\n }\n\n /**\n * Gets a string representation of this language tag.\n * @returns A string representation of this language tag.\n */\n public toString(): string {\n return this.tag;\n }\n}\n"]}
@@ -1,14 +1,14 @@
1
1
  import * as Iana from '../iana';
2
2
  import { Result, Success } from '@fgv/ts-utils';
3
- import { Subtags } from './common';
3
+ import { ISubtags } from './common';
4
4
  /**
5
5
  * @internal
6
6
  */
7
- interface ParserState {
7
+ interface IParserState {
8
8
  readonly iana: Iana.LanguageRegistries;
9
9
  readonly tag: string;
10
10
  readonly subtags: string[];
11
- readonly parsedSubtags: Subtags;
11
+ readonly parsedSubtags: ISubtags;
12
12
  next?: string;
13
13
  }
14
14
  /**
@@ -27,7 +27,7 @@ export declare class LanguageTagParser {
27
27
  * or `Failure` with details if an error occurs.
28
28
  * @public
29
29
  */
30
- static parse(tag: string, iana?: Iana.LanguageRegistries): Result<Subtags>;
30
+ static parse(tag: string, iana?: Iana.LanguageRegistries): Result<ISubtags>;
31
31
  /**
32
32
  * Determines if the entire tag matches a registered grandfathered tag.
33
33
  * @param state - The {@link Bcp47.ParserState | current state} of the
@@ -35,10 +35,9 @@ export declare class LanguageTagParser {
35
35
  * @returns `Success` with the updated {@link Bcp47.Subtags | subtags}
36
36
  * if a grandfathered tag is found, or `Success` with the supplied subtags
37
37
  * if no matching grandfathered tag is found.
38
- * @
39
38
  * @internal
40
39
  */
41
- protected static _parseGrandfatheredTag(state: ParserState): Success<Subtags>;
40
+ protected static _parseGrandfatheredTag(state: IParserState): Success<ISubtags>;
42
41
  /**
43
42
  * Parses the primary language subtag of a supplied language tag.
44
43
  * @param state - The {@link Bcp47.ParserState | current state} of the
@@ -48,7 +47,7 @@ export declare class LanguageTagParser {
48
47
  * occurs.
49
48
  * @internal
50
49
  */
51
- protected static _parsePrimaryLanguage(state: ParserState): Result<Subtags>;
50
+ protected static _parsePrimaryLanguage(state: IParserState): Result<ISubtags>;
52
51
  /**
53
52
  * Parses the extlang subtag(s) of a supplied language tag.
54
53
  * @param state - The {@link Bcp47.ParserState | current state} of the
@@ -58,7 +57,7 @@ export declare class LanguageTagParser {
58
57
  * occurs.
59
58
  * @internal
60
59
  */
61
- protected static _parseExtlang(state: ParserState): Result<Subtags>;
60
+ protected static _parseExtlang(state: IParserState): Result<ISubtags>;
62
61
  /**
63
62
  * Parses the script subtag of a supplied language tag.
64
63
  * @param state - The {@link Bcp47.ParserState | current state} of the
@@ -68,7 +67,7 @@ export declare class LanguageTagParser {
68
67
  * occurs.
69
68
  * @internal
70
69
  */
71
- protected static _parseScript(state: ParserState): Result<Subtags>;
70
+ protected static _parseScript(state: IParserState): Result<ISubtags>;
72
71
  /**
73
72
  * Parses the region subtag of a supplied language tag.
74
73
  * @param state - The {@link Bcp47.ParserState | current state} of the
@@ -78,7 +77,7 @@ export declare class LanguageTagParser {
78
77
  * occurs.
79
78
  * @internal
80
79
  */
81
- protected static _parseRegion(state: ParserState): Result<Subtags>;
80
+ protected static _parseRegion(state: IParserState): Result<ISubtags>;
82
81
  /**
83
82
  * Parses the variant subtag(s) of a supplied language tag.
84
83
  * @param state - The {@link Bcp47.ParserState | current state} of the
@@ -88,7 +87,7 @@ export declare class LanguageTagParser {
88
87
  * occurs.
89
88
  * @internal
90
89
  */
91
- protected static _parseVariants(state: ParserState): Result<Subtags>;
90
+ protected static _parseVariants(state: IParserState): Result<ISubtags>;
92
91
  /**
93
92
  * Parses the extension subtag(s) of a supplied language tag.
94
93
  * @param state - The {@link Bcp47.ParserState | current state} of the
@@ -98,7 +97,7 @@ export declare class LanguageTagParser {
98
97
  * occurs.
99
98
  * @internal
100
99
  */
101
- protected static _parseExtensions(state: ParserState): Result<Subtags>;
100
+ protected static _parseExtensions(state: IParserState): Result<ISubtags>;
102
101
  /**
103
102
  * Parses the private use subtags of a supplied language tag.
104
103
  * @param state - The {@link Bcp47.ParserState | current state} of the
@@ -108,7 +107,7 @@ export declare class LanguageTagParser {
108
107
  * occurs.
109
108
  * @internal
110
109
  */
111
- protected static _parsePrivateSubtags(state: ParserState): Result<Subtags>;
110
+ protected static _parsePrivateSubtags(state: IParserState): Result<ISubtags>;
112
111
  /**
113
112
  * Verifies {@link Bcp47.ParserState | parser state} at the end of a parse operation.
114
113
  * @param state - The {@link Bcp47.ParserState | current state} of the
@@ -117,7 +116,7 @@ export declare class LanguageTagParser {
117
116
  * if unexpected subtags remain to be parsed.
118
117
  * @internal
119
118
  */
120
- protected static _parseTagEnd(state: ParserState): Result<Subtags>;
119
+ protected static _parseTagEnd(state: IParserState): Result<ISubtags>;
121
120
  }
122
121
  export {};
123
122
  //# sourceMappingURL=languageTagParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languageTagParser.d.ts","sourceRoot":"","sources":["../../../src/packlets/bcp47/languageTagParser.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,OAAO,EAA6B,MAAM,eAAe,CAAC;AAI3E,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC;;GAEG;AACH,UAAU,YAAY;IACpB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAG5B,OAAO;IAEP;;;;;;;;;;OAUG;WACW,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC;IA6BlF;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;IAW/E;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC;IAiB7E;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC;IAerE;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC;IASpE;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC;IASpE;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC;IAatE;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC;IA+BxE;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC;IA0B5E;;;;;;;OAOG;IACH,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC;CAMrE"}