@budiauktioner/buildi-primitives 0.1.0 → 0.2.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 (1082) hide show
  1. package/BREAKING_CHANGES.md +81 -0
  2. package/CHANGELOG.md +72 -1
  3. package/PARITY.md +202 -0
  4. package/README.md +58 -9
  5. package/dist/cjs/banking/bank-resolver.js +378 -0
  6. package/dist/cjs/banking/bank-resolver.js.map +7 -0
  7. package/dist/cjs/banking/bic.js +189 -0
  8. package/dist/cjs/banking/bic.js.map +7 -0
  9. package/dist/cjs/banking/iban.js +314 -0
  10. package/dist/cjs/banking/iban.js.map +7 -0
  11. package/dist/cjs/banking/index.js +60 -0
  12. package/dist/cjs/banking/index.js.map +7 -0
  13. package/dist/cjs/banking/swedish-bank-account-holder-name.js +124 -0
  14. package/dist/cjs/banking/swedish-bank-account-holder-name.js.map +7 -0
  15. package/dist/cjs/banking/swedish-bank-account.js +211 -0
  16. package/dist/cjs/banking/swedish-bank-account.js.map +7 -0
  17. package/dist/cjs/banking/swedish-bank-clearing-number.js +156 -0
  18. package/dist/cjs/banking/swedish-bank-clearing-number.js.map +7 -0
  19. package/dist/cjs/banking/swedish-bank.js +89 -0
  20. package/dist/cjs/banking/swedish-bank.js.map +7 -0
  21. package/dist/cjs/banking/swedish-bankgiro-number.js +176 -0
  22. package/dist/cjs/banking/swedish-bankgiro-number.js.map +7 -0
  23. package/dist/cjs/banking/swedish-banking-number.js +201 -0
  24. package/dist/cjs/banking/swedish-banking-number.js.map +7 -0
  25. package/dist/cjs/banking/swedish-ocr-reference-number.js +215 -0
  26. package/dist/cjs/banking/swedish-ocr-reference-number.js.map +7 -0
  27. package/dist/cjs/banking/swedish-postgiro-number.js +173 -0
  28. package/dist/cjs/banking/swedish-postgiro-number.js.map +7 -0
  29. package/dist/cjs/banking/swedish-swish-number.js +165 -0
  30. package/dist/cjs/banking/swedish-swish-number.js.map +7 -0
  31. package/dist/cjs/contact/address-city.js +104 -0
  32. package/dist/cjs/contact/address-city.js.map +7 -0
  33. package/dist/cjs/contact/address-street.js +220 -0
  34. package/dist/cjs/contact/address-street.js.map +7 -0
  35. package/dist/cjs/contact/address-zip-code.js +195 -0
  36. package/dist/cjs/contact/address-zip-code.js.map +7 -0
  37. package/dist/cjs/contact/address.js +405 -0
  38. package/dist/cjs/contact/address.js.map +7 -0
  39. package/dist/cjs/contact/contact-address.js +142 -0
  40. package/dist/cjs/contact/contact-address.js.map +7 -0
  41. package/dist/cjs/contact/contact-external-links.js +39 -0
  42. package/dist/cjs/contact/contact-external-links.js.map +7 -0
  43. package/dist/cjs/contact/contact-lookup.js +31 -0
  44. package/dist/cjs/contact/contact-lookup.js.map +7 -0
  45. package/dist/cjs/contact/contact-masking.js +117 -0
  46. package/dist/cjs/contact/contact-masking.js.map +7 -0
  47. package/dist/cjs/contact/country-address-factory.js +97 -0
  48. package/dist/cjs/contact/country-address-factory.js.map +7 -0
  49. package/dist/cjs/contact/country-address-registry.js +36 -0
  50. package/dist/cjs/contact/country-address-registry.js.map +7 -0
  51. package/dist/cjs/contact/country-address.js +98 -0
  52. package/dist/cjs/contact/country-address.js.map +7 -0
  53. package/dist/cjs/contact/country-addresses.js +346 -0
  54. package/dist/cjs/contact/country-addresses.js.map +7 -0
  55. package/dist/cjs/contact/country-zip-code-factory.js +117 -0
  56. package/dist/cjs/contact/country-zip-code-factory.js.map +7 -0
  57. package/dist/cjs/contact/country-zip-codes.js +376 -0
  58. package/dist/cjs/contact/country-zip-codes.js.map +7 -0
  59. package/dist/cjs/contact/index.js +72 -0
  60. package/dist/cjs/contact/index.js.map +7 -0
  61. package/dist/cjs/contact/phone-calling-code.js +439 -0
  62. package/dist/cjs/contact/phone-calling-code.js.map +7 -0
  63. package/dist/cjs/contact/phone-number-test-data.js +63 -0
  64. package/dist/cjs/contact/phone-number-test-data.js.map +7 -0
  65. package/dist/cjs/contact/phone-number.js +325 -0
  66. package/dist/cjs/contact/phone-number.js.map +7 -0
  67. package/dist/cjs/contact/register-default-country-addresses.js +88 -0
  68. package/dist/cjs/contact/register-default-country-addresses.js.map +7 -0
  69. package/dist/cjs/contact/swedish-address-zip-code.js +92 -0
  70. package/dist/cjs/contact/swedish-address-zip-code.js.map +7 -0
  71. package/dist/cjs/contact/swedish-address.js +169 -0
  72. package/dist/cjs/contact/swedish-address.js.map +7 -0
  73. package/dist/cjs/finance/currency.js +251 -0
  74. package/dist/cjs/finance/currency.js.map +7 -0
  75. package/dist/cjs/finance/exchange-rates.js +51 -0
  76. package/dist/cjs/finance/exchange-rates.js.map +7 -0
  77. package/dist/cjs/finance/index.js +34 -0
  78. package/dist/cjs/finance/index.js.map +7 -0
  79. package/dist/cjs/finance/isin.js +161 -0
  80. package/dist/cjs/finance/isin.js.map +7 -0
  81. package/dist/cjs/finance/money-amount.js +307 -0
  82. package/dist/cjs/finance/money-amount.js.map +7 -0
  83. package/dist/cjs/geography/adjacency-data.js +335 -0
  84. package/dist/cjs/geography/adjacency-data.js.map +7 -0
  85. package/dist/cjs/geography/continent.js +125 -0
  86. package/dist/cjs/geography/continent.js.map +7 -0
  87. package/dist/cjs/geography/country-capital.js +45 -0
  88. package/dist/cjs/geography/country-capital.js.map +7 -0
  89. package/dist/cjs/geography/country-capitals.js +288 -0
  90. package/dist/cjs/geography/country-capitals.js.map +7 -0
  91. package/dist/cjs/geography/country-coordinates.js +238 -0
  92. package/dist/cjs/geography/country-coordinates.js.map +7 -0
  93. package/dist/cjs/geography/country-data.js +530 -0
  94. package/dist/cjs/geography/country-data.js.map +7 -0
  95. package/dist/cjs/geography/country-metadata.js +627 -0
  96. package/dist/cjs/geography/country-metadata.js.map +7 -0
  97. package/dist/cjs/geography/country.js +427 -0
  98. package/dist/cjs/geography/country.js.map +7 -0
  99. package/dist/cjs/geography/geo-coordinate.js +244 -0
  100. package/dist/cjs/geography/geo-coordinate.js.map +7 -0
  101. package/dist/cjs/geography/geography-extensions.js +82 -0
  102. package/dist/cjs/geography/geography-extensions.js.map +7 -0
  103. package/dist/cjs/geography/geography-external-links.js +52 -0
  104. package/dist/cjs/geography/geography-external-links.js.map +7 -0
  105. package/dist/cjs/geography/geography-lookup.js +31 -0
  106. package/dist/cjs/geography/geography-lookup.js.map +7 -0
  107. package/dist/cjs/geography/geography-masking.js +54 -0
  108. package/dist/cjs/geography/geography-masking.js.map +7 -0
  109. package/dist/cjs/geography/index.js +57 -0
  110. package/dist/cjs/geography/index.js.map +7 -0
  111. package/dist/cjs/geography/language.js +462 -0
  112. package/dist/cjs/geography/language.js.map +7 -0
  113. package/dist/cjs/geography/swedish-county.js +232 -0
  114. package/dist/cjs/geography/swedish-county.js.map +7 -0
  115. package/dist/cjs/geography/swedish-municipality-data.js +316 -0
  116. package/dist/cjs/geography/swedish-municipality-data.js.map +7 -0
  117. package/dist/cjs/geography/swedish-municipality.js +218 -0
  118. package/dist/cjs/geography/swedish-municipality.js.map +7 -0
  119. package/dist/cjs/index.js +33 -0
  120. package/dist/cjs/index.js.map +7 -0
  121. package/dist/cjs/internal/case-folding.js +32 -0
  122. package/dist/cjs/internal/case-folding.js.map +7 -0
  123. package/dist/cjs/internal/clock.js +32 -0
  124. package/dist/cjs/internal/clock.js.map +7 -0
  125. package/dist/cjs/internal/decimal.js +262 -0
  126. package/dist/cjs/internal/decimal.js.map +7 -0
  127. package/dist/cjs/internal/gs1-prefix.js +164 -0
  128. package/dist/cjs/internal/gs1-prefix.js.map +7 -0
  129. package/dist/cjs/internal/gtin-check-digit.js +46 -0
  130. package/dist/cjs/internal/gtin-check-digit.js.map +7 -0
  131. package/dist/cjs/internal/input-sanitization.js +79 -0
  132. package/dist/cjs/internal/input-sanitization.js.map +7 -0
  133. package/dist/cjs/internal/luhn.js +40 -0
  134. package/dist/cjs/internal/luhn.js.map +7 -0
  135. package/dist/cjs/internal/measurement-unit-parser.js +86 -0
  136. package/dist/cjs/internal/measurement-unit-parser.js.map +7 -0
  137. package/dist/cjs/internal/measurement-unit.js +130 -0
  138. package/dist/cjs/internal/measurement-unit.js.map +7 -0
  139. package/dist/cjs/internal/quantity.js +122 -0
  140. package/dist/cjs/internal/quantity.js.map +7 -0
  141. package/dist/cjs/internal/shoe-size-format.js +31 -0
  142. package/dist/cjs/internal/shoe-size-format.js.map +7 -0
  143. package/dist/cjs/measurement/area-unit.js +158 -0
  144. package/dist/cjs/measurement/area-unit.js.map +7 -0
  145. package/dist/cjs/measurement/area.js +183 -0
  146. package/dist/cjs/measurement/area.js.map +7 -0
  147. package/dist/cjs/measurement/count.js +132 -0
  148. package/dist/cjs/measurement/count.js.map +7 -0
  149. package/dist/cjs/measurement/data-size-unit.js +208 -0
  150. package/dist/cjs/measurement/data-size-unit.js.map +7 -0
  151. package/dist/cjs/measurement/data-size.js +207 -0
  152. package/dist/cjs/measurement/data-size.js.map +7 -0
  153. package/dist/cjs/measurement/electric-charge-unit.js +109 -0
  154. package/dist/cjs/measurement/electric-charge-unit.js.map +7 -0
  155. package/dist/cjs/measurement/electric-charge.js +148 -0
  156. package/dist/cjs/measurement/electric-charge.js.map +7 -0
  157. package/dist/cjs/measurement/electric-current-unit.js +108 -0
  158. package/dist/cjs/measurement/electric-current-unit.js.map +7 -0
  159. package/dist/cjs/measurement/electric-current.js +154 -0
  160. package/dist/cjs/measurement/electric-current.js.map +7 -0
  161. package/dist/cjs/measurement/energy-unit.js +201 -0
  162. package/dist/cjs/measurement/energy-unit.js.map +7 -0
  163. package/dist/cjs/measurement/energy.js +207 -0
  164. package/dist/cjs/measurement/energy.js.map +7 -0
  165. package/dist/cjs/measurement/flow-rate-unit.js +132 -0
  166. package/dist/cjs/measurement/flow-rate-unit.js.map +7 -0
  167. package/dist/cjs/measurement/flow-rate.js +162 -0
  168. package/dist/cjs/measurement/flow-rate.js.map +7 -0
  169. package/dist/cjs/measurement/frequency-unit.js +132 -0
  170. package/dist/cjs/measurement/frequency-unit.js.map +7 -0
  171. package/dist/cjs/measurement/frequency.js +165 -0
  172. package/dist/cjs/measurement/frequency.js.map +7 -0
  173. package/dist/cjs/measurement/index.js +136 -0
  174. package/dist/cjs/measurement/index.js.map +7 -0
  175. package/dist/cjs/measurement/length-unit.js +210 -0
  176. package/dist/cjs/measurement/length-unit.js.map +7 -0
  177. package/dist/cjs/measurement/length.js +208 -0
  178. package/dist/cjs/measurement/length.js.map +7 -0
  179. package/dist/cjs/measurement/luminance-unit.js +110 -0
  180. package/dist/cjs/measurement/luminance-unit.js.map +7 -0
  181. package/dist/cjs/measurement/luminance.js +158 -0
  182. package/dist/cjs/measurement/luminance.js.map +7 -0
  183. package/dist/cjs/measurement/luminous-flux-unit.js +86 -0
  184. package/dist/cjs/measurement/luminous-flux-unit.js.map +7 -0
  185. package/dist/cjs/measurement/luminous-flux.js +139 -0
  186. package/dist/cjs/measurement/luminous-flux.js.map +7 -0
  187. package/dist/cjs/measurement/percentage.js +212 -0
  188. package/dist/cjs/measurement/percentage.js.map +7 -0
  189. package/dist/cjs/measurement/power-unit.js +155 -0
  190. package/dist/cjs/measurement/power-unit.js.map +7 -0
  191. package/dist/cjs/measurement/power.js +184 -0
  192. package/dist/cjs/measurement/power.js.map +7 -0
  193. package/dist/cjs/measurement/pressure-unit.js +168 -0
  194. package/dist/cjs/measurement/pressure-unit.js.map +7 -0
  195. package/dist/cjs/measurement/pressure.js +189 -0
  196. package/dist/cjs/measurement/pressure.js.map +7 -0
  197. package/dist/cjs/measurement/rotational-speed-unit.js +96 -0
  198. package/dist/cjs/measurement/rotational-speed-unit.js.map +7 -0
  199. package/dist/cjs/measurement/rotational-speed.js +152 -0
  200. package/dist/cjs/measurement/rotational-speed.js.map +7 -0
  201. package/dist/cjs/measurement/sound-level.js +185 -0
  202. package/dist/cjs/measurement/sound-level.js.map +7 -0
  203. package/dist/cjs/measurement/speed-unit.js +119 -0
  204. package/dist/cjs/measurement/speed-unit.js.map +7 -0
  205. package/dist/cjs/measurement/speed.js +159 -0
  206. package/dist/cjs/measurement/speed.js.map +7 -0
  207. package/dist/cjs/measurement/temperature-delta.js +101 -0
  208. package/dist/cjs/measurement/temperature-delta.js.map +7 -0
  209. package/dist/cjs/measurement/temperature-unit.js +130 -0
  210. package/dist/cjs/measurement/temperature-unit.js.map +7 -0
  211. package/dist/cjs/measurement/temperature.js +216 -0
  212. package/dist/cjs/measurement/temperature.js.map +7 -0
  213. package/dist/cjs/measurement/torque-unit.js +138 -0
  214. package/dist/cjs/measurement/torque-unit.js.map +7 -0
  215. package/dist/cjs/measurement/torque.js +165 -0
  216. package/dist/cjs/measurement/torque.js.map +7 -0
  217. package/dist/cjs/measurement/voltage-unit.js +127 -0
  218. package/dist/cjs/measurement/voltage-unit.js.map +7 -0
  219. package/dist/cjs/measurement/voltage.js +159 -0
  220. package/dist/cjs/measurement/voltage.js.map +7 -0
  221. package/dist/cjs/measurement/volume-unit.js +178 -0
  222. package/dist/cjs/measurement/volume-unit.js.map +7 -0
  223. package/dist/cjs/measurement/volume.js +195 -0
  224. package/dist/cjs/measurement/volume.js.map +7 -0
  225. package/dist/cjs/measurement/weight-unit.js +158 -0
  226. package/dist/cjs/measurement/weight-unit.js.map +7 -0
  227. package/dist/cjs/measurement/weight.js +183 -0
  228. package/dist/cjs/measurement/weight.js.map +7 -0
  229. package/dist/cjs/measurement/year-month.js +204 -0
  230. package/dist/cjs/measurement/year-month.js.map +7 -0
  231. package/dist/cjs/measurement/year.js +109 -0
  232. package/dist/cjs/measurement/year.js.map +7 -0
  233. package/dist/cjs/organization/duns-number.js +114 -0
  234. package/dist/cjs/organization/duns-number.js.map +7 -0
  235. package/dist/cjs/organization/elf-code.js +132 -0
  236. package/dist/cjs/organization/elf-code.js.map +7 -0
  237. package/dist/cjs/organization/eu-organization-name.js +119 -0
  238. package/dist/cjs/organization/eu-organization-name.js.map +7 -0
  239. package/dist/cjs/organization/eu-vat-number.js +444 -0
  240. package/dist/cjs/organization/eu-vat-number.js.map +7 -0
  241. package/dist/cjs/organization/index.js +65 -0
  242. package/dist/cjs/organization/index.js.map +7 -0
  243. package/dist/cjs/organization/lei-code.js +133 -0
  244. package/dist/cjs/organization/lei-code.js.map +7 -0
  245. package/dist/cjs/organization/organization-extensions.js +80 -0
  246. package/dist/cjs/organization/organization-extensions.js.map +7 -0
  247. package/dist/cjs/organization/organization-validation-utils.js +78 -0
  248. package/dist/cjs/organization/organization-validation-utils.js.map +7 -0
  249. package/dist/cjs/organization/swedish-cfar-number.js +88 -0
  250. package/dist/cjs/organization/swedish-cfar-number.js.map +7 -0
  251. package/dist/cjs/organization/swedish-organization-identifier-type.js +34 -0
  252. package/dist/cjs/organization/swedish-organization-identifier-type.js.map +7 -0
  253. package/dist/cjs/organization/swedish-organization-identifier.js +166 -0
  254. package/dist/cjs/organization/swedish-organization-identifier.js.map +7 -0
  255. package/dist/cjs/organization/swedish-organization-name.js +255 -0
  256. package/dist/cjs/organization/swedish-organization-name.js.map +7 -0
  257. package/dist/cjs/organization/swedish-organization-number.js +289 -0
  258. package/dist/cjs/organization/swedish-organization-number.js.map +7 -0
  259. package/dist/cjs/organization/swedish-organization-type.js +51 -0
  260. package/dist/cjs/organization/swedish-organization-type.js.map +7 -0
  261. package/dist/cjs/organization/swedish-sni-code.js +96 -0
  262. package/dist/cjs/organization/swedish-sni-code.js.map +7 -0
  263. package/dist/cjs/package.json +3 -0
  264. package/dist/cjs/person/index.js +49 -0
  265. package/dist/cjs/person/index.js.map +7 -0
  266. package/dist/cjs/person/person-age.js +187 -0
  267. package/dist/cjs/person/person-age.js.map +7 -0
  268. package/dist/cjs/person/person-family-name.js +83 -0
  269. package/dist/cjs/person/person-family-name.js.map +7 -0
  270. package/dist/cjs/person/person-full-name.js +106 -0
  271. package/dist/cjs/person/person-full-name.js.map +7 -0
  272. package/dist/cjs/person/person-given-name.js +103 -0
  273. package/dist/cjs/person/person-given-name.js.map +7 -0
  274. package/dist/cjs/person/person-masking.js +48 -0
  275. package/dist/cjs/person/person-masking.js.map +7 -0
  276. package/dist/cjs/person/person-name-normalization.js +99 -0
  277. package/dist/cjs/person/person-name-normalization.js.map +7 -0
  278. package/dist/cjs/person/personnummer-parser.js +156 -0
  279. package/dist/cjs/person/personnummer-parser.js.map +7 -0
  280. package/dist/cjs/person/swedish-coordination-number.js +186 -0
  281. package/dist/cjs/person/swedish-coordination-number.js.map +7 -0
  282. package/dist/cjs/person/swedish-personal-identity-number.js +188 -0
  283. package/dist/cjs/person/swedish-personal-identity-number.js.map +7 -0
  284. package/dist/cjs/primitive-type-info.js +17 -0
  285. package/dist/cjs/primitive-type-info.js.map +7 -0
  286. package/dist/cjs/primitives-defaults.js +92 -0
  287. package/dist/cjs/primitives-defaults.js.map +7 -0
  288. package/dist/cjs/product/adult-clothing-size.js +148 -0
  289. package/dist/cjs/product/adult-clothing-size.js.map +7 -0
  290. package/dist/cjs/product/adult-shoe-size.js +139 -0
  291. package/dist/cjs/product/adult-shoe-size.js.map +7 -0
  292. package/dist/cjs/product/aspect-ratio.js +188 -0
  293. package/dist/cjs/product/aspect-ratio.js.map +7 -0
  294. package/dist/cjs/product/battery-capacity.js +184 -0
  295. package/dist/cjs/product/battery-capacity.js.map +7 -0
  296. package/dist/cjs/product/battery-chemistry.js +259 -0
  297. package/dist/cjs/product/battery-chemistry.js.map +7 -0
  298. package/dist/cjs/product/camera-resolution.js +161 -0
  299. package/dist/cjs/product/camera-resolution.js.map +7 -0
  300. package/dist/cjs/product/child-clothing-size.js +254 -0
  301. package/dist/cjs/product/child-clothing-size.js.map +7 -0
  302. package/dist/cjs/product/child-shoe-size.js +200 -0
  303. package/dist/cjs/product/child-shoe-size.js.map +7 -0
  304. package/dist/cjs/product/clothing-fit.js +223 -0
  305. package/dist/cjs/product/clothing-fit.js.map +7 -0
  306. package/dist/cjs/product/clothing-gender.js +198 -0
  307. package/dist/cjs/product/clothing-gender.js.map +7 -0
  308. package/dist/cjs/product/clothing-season.js +202 -0
  309. package/dist/cjs/product/clothing-season.js.map +7 -0
  310. package/dist/cjs/product/clothing-size-system.js +31 -0
  311. package/dist/cjs/product/clothing-size-system.js.map +7 -0
  312. package/dist/cjs/product/clothing-size.js +146 -0
  313. package/dist/cjs/product/clothing-size.js.map +7 -0
  314. package/dist/cjs/product/color.js +334 -0
  315. package/dist/cjs/product/color.js.map +7 -0
  316. package/dist/cjs/product/display-panel-type.js +287 -0
  317. package/dist/cjs/product/display-panel-type.js.map +7 -0
  318. package/dist/cjs/product/electrical-phase.js +194 -0
  319. package/dist/cjs/product/electrical-phase.js.map +7 -0
  320. package/dist/cjs/product/energy-scale.js +31 -0
  321. package/dist/cjs/product/energy-scale.js.map +7 -0
  322. package/dist/cjs/product/eu-energy-efficiency-class.js +135 -0
  323. package/dist/cjs/product/eu-energy-efficiency-class.js.map +7 -0
  324. package/dist/cjs/product/google-product-category.js +114 -0
  325. package/dist/cjs/product/google-product-category.js.map +7 -0
  326. package/dist/cjs/product/gtin.js +99 -0
  327. package/dist/cjs/product/gtin.js.map +7 -0
  328. package/dist/cjs/product/gtin12.js +130 -0
  329. package/dist/cjs/product/gtin12.js.map +7 -0
  330. package/dist/cjs/product/gtin13.js +147 -0
  331. package/dist/cjs/product/gtin13.js.map +7 -0
  332. package/dist/cjs/product/gtin14.js +135 -0
  333. package/dist/cjs/product/gtin14.js.map +7 -0
  334. package/dist/cjs/product/gtin8.js +130 -0
  335. package/dist/cjs/product/gtin8.js.map +7 -0
  336. package/dist/cjs/product/hs-code-level.js +32 -0
  337. package/dist/cjs/product/hs-code-level.js.map +7 -0
  338. package/dist/cjs/product/hs-code.js +126 -0
  339. package/dist/cjs/product/hs-code.js.map +7 -0
  340. package/dist/cjs/product/index.js +128 -0
  341. package/dist/cjs/product/index.js.map +7 -0
  342. package/dist/cjs/product/ip-rating.js +166 -0
  343. package/dist/cjs/product/ip-rating.js.map +7 -0
  344. package/dist/cjs/product/operating-system-family.js +37 -0
  345. package/dist/cjs/product/operating-system-family.js.map +7 -0
  346. package/dist/cjs/product/operating-system-info.js +100 -0
  347. package/dist/cjs/product/operating-system-info.js.map +7 -0
  348. package/dist/cjs/product/operating-system-name.js +127 -0
  349. package/dist/cjs/product/operating-system-name.js.map +7 -0
  350. package/dist/cjs/product/operating-system-version.js +110 -0
  351. package/dist/cjs/product/operating-system-version.js.map +7 -0
  352. package/dist/cjs/product/power-source.js +318 -0
  353. package/dist/cjs/product/power-source.js.map +7 -0
  354. package/dist/cjs/product/processor-speed.js +159 -0
  355. package/dist/cjs/product/processor-speed.js.map +7 -0
  356. package/dist/cjs/product/product-extensions.js +27 -0
  357. package/dist/cjs/product/product-extensions.js.map +7 -0
  358. package/dist/cjs/product/product-masking.js +102 -0
  359. package/dist/cjs/product/product-masking.js.map +7 -0
  360. package/dist/cjs/product/ram-capacity.js +154 -0
  361. package/dist/cjs/product/ram-capacity.js.map +7 -0
  362. package/dist/cjs/product/refrigerant-family.js +40 -0
  363. package/dist/cjs/product/refrigerant-family.js.map +7 -0
  364. package/dist/cjs/product/refrigerant.js +419 -0
  365. package/dist/cjs/product/refrigerant.js.map +7 -0
  366. package/dist/cjs/product/screen-resolution.js +197 -0
  367. package/dist/cjs/product/screen-resolution.js.map +7 -0
  368. package/dist/cjs/product/screen-size.js +184 -0
  369. package/dist/cjs/product/screen-size.js.map +7 -0
  370. package/dist/cjs/product/shoe-size-system.js +31 -0
  371. package/dist/cjs/product/shoe-size-system.js.map +7 -0
  372. package/dist/cjs/product/shoe-size.js +138 -0
  373. package/dist/cjs/product/shoe-size.js.map +7 -0
  374. package/dist/cjs/product/storage-capacity.js +159 -0
  375. package/dist/cjs/product/storage-capacity.js.map +7 -0
  376. package/dist/cjs/product/storage-media-type.js +271 -0
  377. package/dist/cjs/product/storage-media-type.js.map +7 -0
  378. package/dist/cjs/property/index.js +31 -0
  379. package/dist/cjs/property/index.js.map +7 -0
  380. package/dist/cjs/property/swedish-property-designation.js +179 -0
  381. package/dist/cjs/property/swedish-property-designation.js.map +7 -0
  382. package/dist/cjs/property/swedish-property-taxation-code.js +218 -0
  383. package/dist/cjs/property/swedish-property-taxation-code.js.map +7 -0
  384. package/dist/cjs/register-default-text-scanners.js +290 -0
  385. package/dist/cjs/register-default-text-scanners.js.map +7 -0
  386. package/dist/cjs/sample-data/index.js +358 -0
  387. package/dist/cjs/sample-data/index.js.map +7 -0
  388. package/dist/cjs/text-scanning/index.js +38 -0
  389. package/dist/cjs/text-scanning/index.js.map +7 -0
  390. package/dist/cjs/text-scanning/text-candidate-category.js +35 -0
  391. package/dist/cjs/text-scanning/text-candidate-category.js.map +7 -0
  392. package/dist/cjs/text-scanning/text-candidate.js +75 -0
  393. package/dist/cjs/text-scanning/text-candidate.js.map +7 -0
  394. package/dist/cjs/text-scanning/text-match-confidence.js +43 -0
  395. package/dist/cjs/text-scanning/text-match-confidence.js.map +7 -0
  396. package/dist/cjs/text-scanning/text-scan-helpers.js +98 -0
  397. package/dist/cjs/text-scanning/text-scan-helpers.js.map +7 -0
  398. package/dist/cjs/text-scanning/text-scan-result.js +333 -0
  399. package/dist/cjs/text-scanning/text-scan-result.js.map +7 -0
  400. package/dist/cjs/text-scanning/text-scanner-options.js +29 -0
  401. package/dist/cjs/text-scanning/text-scanner-options.js.map +7 -0
  402. package/dist/cjs/text-scanning/text-scanner.js +60 -0
  403. package/dist/cjs/text-scanning/text-scanner.js.map +7 -0
  404. package/dist/cjs/validation/index.js +29 -0
  405. package/dist/cjs/validation/index.js.map +7 -0
  406. package/dist/cjs/validation/validation-error-reason.js +53 -0
  407. package/dist/cjs/validation/validation-error-reason.js.map +7 -0
  408. package/dist/cjs/validation/validation-issue.js +43 -0
  409. package/dist/cjs/validation/validation-issue.js.map +7 -0
  410. package/dist/cjs/validation/validation-result.js +52 -0
  411. package/dist/cjs/validation/validation-result.js.map +7 -0
  412. package/dist/cjs/vehicle/boat-ce-design-category.js +200 -0
  413. package/dist/cjs/vehicle/boat-ce-design-category.js.map +7 -0
  414. package/dist/cjs/vehicle/boat-hull-material.js +222 -0
  415. package/dist/cjs/vehicle/boat-hull-material.js.map +7 -0
  416. package/dist/cjs/vehicle/body-type.js +325 -0
  417. package/dist/cjs/vehicle/body-type.js.map +7 -0
  418. package/dist/cjs/vehicle/bolt-pattern.js +150 -0
  419. package/dist/cjs/vehicle/bolt-pattern.js.map +7 -0
  420. package/dist/cjs/vehicle/drivetrain-type.js +200 -0
  421. package/dist/cjs/vehicle/drivetrain-type.js.map +7 -0
  422. package/dist/cjs/vehicle/emission-rate.js +194 -0
  423. package/dist/cjs/vehicle/emission-rate.js.map +7 -0
  424. package/dist/cjs/vehicle/energy-consumption.js +250 -0
  425. package/dist/cjs/vehicle/energy-consumption.js.map +7 -0
  426. package/dist/cjs/vehicle/engine-displacement.js +169 -0
  427. package/dist/cjs/vehicle/engine-displacement.js.map +7 -0
  428. package/dist/cjs/vehicle/engine-power.js +211 -0
  429. package/dist/cjs/vehicle/engine-power.js.map +7 -0
  430. package/dist/cjs/vehicle/eu-type-approval-number.js +196 -0
  431. package/dist/cjs/vehicle/eu-type-approval-number.js.map +7 -0
  432. package/dist/cjs/vehicle/eu-vehicle-category.js +167 -0
  433. package/dist/cjs/vehicle/eu-vehicle-category.js.map +7 -0
  434. package/dist/cjs/vehicle/euro-emission-class.js +313 -0
  435. package/dist/cjs/vehicle/euro-emission-class.js.map +7 -0
  436. package/dist/cjs/vehicle/fuel-consumption-norm.js +206 -0
  437. package/dist/cjs/vehicle/fuel-consumption-norm.js.map +7 -0
  438. package/dist/cjs/vehicle/fuel-consumption.js +281 -0
  439. package/dist/cjs/vehicle/fuel-consumption.js.map +7 -0
  440. package/dist/cjs/vehicle/fuel-type.js +288 -0
  441. package/dist/cjs/vehicle/fuel-type.js.map +7 -0
  442. package/dist/cjs/vehicle/index.js +108 -0
  443. package/dist/cjs/vehicle/index.js.map +7 -0
  444. package/dist/cjs/vehicle/odometer-reading.js +165 -0
  445. package/dist/cjs/vehicle/odometer-reading.js.map +7 -0
  446. package/dist/cjs/vehicle/operating-hours.js +174 -0
  447. package/dist/cjs/vehicle/operating-hours.js.map +7 -0
  448. package/dist/cjs/vehicle/suspension-type.js +312 -0
  449. package/dist/cjs/vehicle/suspension-type.js.map +7 -0
  450. package/dist/cjs/vehicle/swedish-driving-license-category.js +404 -0
  451. package/dist/cjs/vehicle/swedish-driving-license-category.js.map +7 -0
  452. package/dist/cjs/vehicle/swedish-driving-license-vehicle-group.js +32 -0
  453. package/dist/cjs/vehicle/swedish-driving-license-vehicle-group.js.map +7 -0
  454. package/dist/cjs/vehicle/swedish-eco-vehicle-classification.js +232 -0
  455. package/dist/cjs/vehicle/swedish-eco-vehicle-classification.js.map +7 -0
  456. package/dist/cjs/vehicle/swedish-vehicle-registration-number.js +193 -0
  457. package/dist/cjs/vehicle/swedish-vehicle-registration-number.js.map +7 -0
  458. package/dist/cjs/vehicle/swedish-vehicle-status.js +172 -0
  459. package/dist/cjs/vehicle/swedish-vehicle-status.js.map +7 -0
  460. package/dist/cjs/vehicle/swedish-vehicle-type.js +282 -0
  461. package/dist/cjs/vehicle/swedish-vehicle-type.js.map +7 -0
  462. package/dist/cjs/vehicle/tire-dimension.js +206 -0
  463. package/dist/cjs/vehicle/tire-dimension.js.map +7 -0
  464. package/dist/cjs/vehicle/tire-type.js +228 -0
  465. package/dist/cjs/vehicle/tire-type.js.map +7 -0
  466. package/dist/cjs/vehicle/track-type.js +188 -0
  467. package/dist/cjs/vehicle/track-type.js.map +7 -0
  468. package/dist/cjs/vehicle/transmission-type.js +258 -0
  469. package/dist/cjs/vehicle/transmission-type.js.map +7 -0
  470. package/dist/cjs/vehicle/vehicle-extensions.js +35 -0
  471. package/dist/cjs/vehicle/vehicle-extensions.js.map +7 -0
  472. package/dist/cjs/vehicle/vehicle-identification-number.js +265 -0
  473. package/dist/cjs/vehicle/vehicle-identification-number.js.map +7 -0
  474. package/dist/cjs/vehicle/vehicle-masking.js +68 -0
  475. package/dist/cjs/vehicle/vehicle-masking.js.map +7 -0
  476. package/dist/cjs/vehicle/wheel-rim-dimension.js +183 -0
  477. package/dist/cjs/vehicle/wheel-rim-dimension.js.map +7 -0
  478. package/dist/cjs/web/email-address.js +542 -0
  479. package/dist/cjs/web/email-address.js.map +7 -0
  480. package/dist/cjs/web/index.js +31 -0
  481. package/dist/cjs/web/index.js.map +7 -0
  482. package/dist/cjs/web/url.js +353 -0
  483. package/dist/cjs/web/url.js.map +7 -0
  484. package/dist/esm/banking/bank-resolver.js +358 -0
  485. package/dist/esm/banking/bank-resolver.js.map +7 -0
  486. package/dist/esm/banking/bic.js +169 -0
  487. package/dist/esm/banking/bic.js.map +7 -0
  488. package/dist/esm/banking/iban.js +294 -0
  489. package/dist/esm/banking/iban.js.map +7 -0
  490. package/dist/esm/banking/index.js +60 -0
  491. package/dist/esm/banking/index.js.map +7 -0
  492. package/dist/esm/banking/swedish-bank-account-holder-name.js +104 -0
  493. package/dist/esm/banking/swedish-bank-account-holder-name.js.map +7 -0
  494. package/dist/esm/banking/swedish-bank-account.js +199 -0
  495. package/dist/esm/banking/swedish-bank-account.js.map +7 -0
  496. package/dist/esm/banking/swedish-bank-clearing-number.js +136 -0
  497. package/dist/esm/banking/swedish-bank-clearing-number.js.map +7 -0
  498. package/dist/esm/banking/swedish-bank.js +69 -0
  499. package/dist/esm/banking/swedish-bank.js.map +7 -0
  500. package/dist/esm/banking/swedish-bankgiro-number.js +156 -0
  501. package/dist/esm/banking/swedish-bankgiro-number.js.map +7 -0
  502. package/dist/esm/banking/swedish-banking-number.js +181 -0
  503. package/dist/esm/banking/swedish-banking-number.js.map +7 -0
  504. package/dist/esm/banking/swedish-ocr-reference-number.js +195 -0
  505. package/dist/esm/banking/swedish-ocr-reference-number.js.map +7 -0
  506. package/dist/esm/banking/swedish-postgiro-number.js +153 -0
  507. package/dist/esm/banking/swedish-postgiro-number.js.map +7 -0
  508. package/dist/esm/banking/swedish-swish-number.js +145 -0
  509. package/dist/esm/banking/swedish-swish-number.js.map +7 -0
  510. package/dist/esm/contact/address-city.js +84 -0
  511. package/dist/esm/contact/address-city.js.map +7 -0
  512. package/dist/esm/contact/address-street.js +200 -0
  513. package/dist/esm/contact/address-street.js.map +7 -0
  514. package/dist/esm/contact/address-zip-code.js +175 -0
  515. package/dist/esm/contact/address-zip-code.js.map +7 -0
  516. package/dist/esm/contact/address.js +388 -0
  517. package/dist/esm/contact/address.js.map +7 -0
  518. package/dist/esm/contact/contact-address.js +122 -0
  519. package/dist/esm/contact/contact-address.js.map +7 -0
  520. package/dist/esm/contact/contact-external-links.js +19 -0
  521. package/dist/esm/contact/contact-external-links.js.map +7 -0
  522. package/dist/esm/contact/contact-lookup.js +11 -0
  523. package/dist/esm/contact/contact-lookup.js.map +7 -0
  524. package/dist/esm/contact/contact-masking.js +97 -0
  525. package/dist/esm/contact/contact-masking.js.map +7 -0
  526. package/dist/esm/contact/country-address-factory.js +80 -0
  527. package/dist/esm/contact/country-address-factory.js.map +7 -0
  528. package/dist/esm/contact/country-address-registry.js +16 -0
  529. package/dist/esm/contact/country-address-registry.js.map +7 -0
  530. package/dist/esm/contact/country-address.js +78 -0
  531. package/dist/esm/contact/country-address.js.map +7 -0
  532. package/dist/esm/contact/country-addresses.js +316 -0
  533. package/dist/esm/contact/country-addresses.js.map +7 -0
  534. package/dist/esm/contact/country-zip-code-factory.js +97 -0
  535. package/dist/esm/contact/country-zip-code-factory.js.map +7 -0
  536. package/dist/esm/contact/country-zip-codes.js +363 -0
  537. package/dist/esm/contact/country-zip-codes.js.map +7 -0
  538. package/dist/esm/contact/index.js +63 -0
  539. package/dist/esm/contact/index.js.map +7 -0
  540. package/dist/esm/contact/phone-calling-code.js +419 -0
  541. package/dist/esm/contact/phone-calling-code.js.map +7 -0
  542. package/dist/esm/contact/phone-number-test-data.js +43 -0
  543. package/dist/esm/contact/phone-number-test-data.js.map +7 -0
  544. package/dist/esm/contact/phone-number.js +305 -0
  545. package/dist/esm/contact/phone-number.js.map +7 -0
  546. package/dist/esm/contact/register-default-country-addresses.js +58 -0
  547. package/dist/esm/contact/register-default-country-addresses.js.map +7 -0
  548. package/dist/esm/contact/swedish-address-zip-code.js +72 -0
  549. package/dist/esm/contact/swedish-address-zip-code.js.map +7 -0
  550. package/dist/esm/contact/swedish-address.js +149 -0
  551. package/dist/esm/contact/swedish-address.js.map +7 -0
  552. package/dist/esm/finance/currency.js +231 -0
  553. package/dist/esm/finance/currency.js.map +7 -0
  554. package/dist/esm/finance/exchange-rates.js +31 -0
  555. package/dist/esm/finance/exchange-rates.js.map +7 -0
  556. package/dist/esm/finance/index.js +14 -0
  557. package/dist/esm/finance/index.js.map +7 -0
  558. package/dist/esm/finance/isin.js +141 -0
  559. package/dist/esm/finance/isin.js.map +7 -0
  560. package/dist/esm/finance/money-amount.js +287 -0
  561. package/dist/esm/finance/money-amount.js.map +7 -0
  562. package/dist/esm/geography/adjacency-data.js +315 -0
  563. package/dist/esm/geography/adjacency-data.js.map +7 -0
  564. package/dist/esm/geography/continent.js +105 -0
  565. package/dist/esm/geography/continent.js.map +7 -0
  566. package/dist/esm/geography/country-capital.js +25 -0
  567. package/dist/esm/geography/country-capital.js.map +7 -0
  568. package/dist/esm/geography/country-capitals.js +268 -0
  569. package/dist/esm/geography/country-capitals.js.map +7 -0
  570. package/dist/esm/geography/country-coordinates.js +218 -0
  571. package/dist/esm/geography/country-coordinates.js.map +7 -0
  572. package/dist/esm/geography/country-data.js +510 -0
  573. package/dist/esm/geography/country-data.js.map +7 -0
  574. package/dist/esm/geography/country-metadata.js +607 -0
  575. package/dist/esm/geography/country-metadata.js.map +7 -0
  576. package/dist/esm/geography/country.js +417 -0
  577. package/dist/esm/geography/country.js.map +7 -0
  578. package/dist/esm/geography/geo-coordinate.js +224 -0
  579. package/dist/esm/geography/geo-coordinate.js.map +7 -0
  580. package/dist/esm/geography/geography-extensions.js +62 -0
  581. package/dist/esm/geography/geography-extensions.js.map +7 -0
  582. package/dist/esm/geography/geography-external-links.js +32 -0
  583. package/dist/esm/geography/geography-external-links.js.map +7 -0
  584. package/dist/esm/geography/geography-lookup.js +11 -0
  585. package/dist/esm/geography/geography-lookup.js.map +7 -0
  586. package/dist/esm/geography/geography-masking.js +34 -0
  587. package/dist/esm/geography/geography-masking.js.map +7 -0
  588. package/dist/esm/geography/index.js +55 -0
  589. package/dist/esm/geography/index.js.map +7 -0
  590. package/dist/esm/geography/language.js +442 -0
  591. package/dist/esm/geography/language.js.map +7 -0
  592. package/dist/esm/geography/swedish-county.js +212 -0
  593. package/dist/esm/geography/swedish-county.js.map +7 -0
  594. package/dist/esm/geography/swedish-municipality-data.js +296 -0
  595. package/dist/esm/geography/swedish-municipality-data.js.map +7 -0
  596. package/dist/esm/geography/swedish-municipality.js +198 -0
  597. package/dist/esm/geography/swedish-municipality.js.map +7 -0
  598. package/dist/esm/index.js +16 -0
  599. package/dist/esm/index.js.map +7 -0
  600. package/dist/esm/internal/case-folding.js +12 -0
  601. package/dist/esm/internal/case-folding.js.map +7 -0
  602. package/dist/esm/internal/clock.js +12 -0
  603. package/dist/esm/internal/clock.js.map +7 -0
  604. package/dist/esm/internal/decimal.js +242 -0
  605. package/dist/esm/internal/decimal.js.map +7 -0
  606. package/dist/esm/internal/gs1-prefix.js +144 -0
  607. package/dist/esm/internal/gs1-prefix.js.map +7 -0
  608. package/dist/esm/internal/gtin-check-digit.js +26 -0
  609. package/dist/esm/internal/gtin-check-digit.js.map +7 -0
  610. package/dist/esm/internal/input-sanitization.js +59 -0
  611. package/dist/esm/internal/input-sanitization.js.map +7 -0
  612. package/dist/esm/internal/luhn.js +20 -0
  613. package/dist/esm/internal/luhn.js.map +7 -0
  614. package/dist/esm/internal/measurement-unit-parser.js +66 -0
  615. package/dist/esm/internal/measurement-unit-parser.js.map +7 -0
  616. package/dist/esm/internal/measurement-unit.js +110 -0
  617. package/dist/esm/internal/measurement-unit.js.map +7 -0
  618. package/dist/esm/internal/quantity.js +102 -0
  619. package/dist/esm/internal/quantity.js.map +7 -0
  620. package/dist/esm/internal/shoe-size-format.js +11 -0
  621. package/dist/esm/internal/shoe-size-format.js.map +7 -0
  622. package/dist/esm/measurement/area-unit.js +138 -0
  623. package/dist/esm/measurement/area-unit.js.map +7 -0
  624. package/dist/esm/measurement/area.js +163 -0
  625. package/dist/esm/measurement/area.js.map +7 -0
  626. package/dist/esm/measurement/count.js +112 -0
  627. package/dist/esm/measurement/count.js.map +7 -0
  628. package/dist/esm/measurement/data-size-unit.js +188 -0
  629. package/dist/esm/measurement/data-size-unit.js.map +7 -0
  630. package/dist/esm/measurement/data-size.js +187 -0
  631. package/dist/esm/measurement/data-size.js.map +7 -0
  632. package/dist/esm/measurement/electric-charge-unit.js +89 -0
  633. package/dist/esm/measurement/electric-charge-unit.js.map +7 -0
  634. package/dist/esm/measurement/electric-charge.js +128 -0
  635. package/dist/esm/measurement/electric-charge.js.map +7 -0
  636. package/dist/esm/measurement/electric-current-unit.js +88 -0
  637. package/dist/esm/measurement/electric-current-unit.js.map +7 -0
  638. package/dist/esm/measurement/electric-current.js +134 -0
  639. package/dist/esm/measurement/electric-current.js.map +7 -0
  640. package/dist/esm/measurement/energy-unit.js +181 -0
  641. package/dist/esm/measurement/energy-unit.js.map +7 -0
  642. package/dist/esm/measurement/energy.js +187 -0
  643. package/dist/esm/measurement/energy.js.map +7 -0
  644. package/dist/esm/measurement/flow-rate-unit.js +112 -0
  645. package/dist/esm/measurement/flow-rate-unit.js.map +7 -0
  646. package/dist/esm/measurement/flow-rate.js +142 -0
  647. package/dist/esm/measurement/flow-rate.js.map +7 -0
  648. package/dist/esm/measurement/frequency-unit.js +112 -0
  649. package/dist/esm/measurement/frequency-unit.js.map +7 -0
  650. package/dist/esm/measurement/frequency.js +145 -0
  651. package/dist/esm/measurement/frequency.js.map +7 -0
  652. package/dist/esm/measurement/index.js +129 -0
  653. package/dist/esm/measurement/index.js.map +7 -0
  654. package/dist/esm/measurement/length-unit.js +190 -0
  655. package/dist/esm/measurement/length-unit.js.map +7 -0
  656. package/dist/esm/measurement/length.js +188 -0
  657. package/dist/esm/measurement/length.js.map +7 -0
  658. package/dist/esm/measurement/luminance-unit.js +90 -0
  659. package/dist/esm/measurement/luminance-unit.js.map +7 -0
  660. package/dist/esm/measurement/luminance.js +138 -0
  661. package/dist/esm/measurement/luminance.js.map +7 -0
  662. package/dist/esm/measurement/luminous-flux-unit.js +66 -0
  663. package/dist/esm/measurement/luminous-flux-unit.js.map +7 -0
  664. package/dist/esm/measurement/luminous-flux.js +119 -0
  665. package/dist/esm/measurement/luminous-flux.js.map +7 -0
  666. package/dist/esm/measurement/percentage.js +192 -0
  667. package/dist/esm/measurement/percentage.js.map +7 -0
  668. package/dist/esm/measurement/power-unit.js +135 -0
  669. package/dist/esm/measurement/power-unit.js.map +7 -0
  670. package/dist/esm/measurement/power.js +164 -0
  671. package/dist/esm/measurement/power.js.map +7 -0
  672. package/dist/esm/measurement/pressure-unit.js +148 -0
  673. package/dist/esm/measurement/pressure-unit.js.map +7 -0
  674. package/dist/esm/measurement/pressure.js +169 -0
  675. package/dist/esm/measurement/pressure.js.map +7 -0
  676. package/dist/esm/measurement/rotational-speed-unit.js +76 -0
  677. package/dist/esm/measurement/rotational-speed-unit.js.map +7 -0
  678. package/dist/esm/measurement/rotational-speed.js +132 -0
  679. package/dist/esm/measurement/rotational-speed.js.map +7 -0
  680. package/dist/esm/measurement/sound-level.js +165 -0
  681. package/dist/esm/measurement/sound-level.js.map +7 -0
  682. package/dist/esm/measurement/speed-unit.js +99 -0
  683. package/dist/esm/measurement/speed-unit.js.map +7 -0
  684. package/dist/esm/measurement/speed.js +139 -0
  685. package/dist/esm/measurement/speed.js.map +7 -0
  686. package/dist/esm/measurement/temperature-delta.js +81 -0
  687. package/dist/esm/measurement/temperature-delta.js.map +7 -0
  688. package/dist/esm/measurement/temperature-unit.js +110 -0
  689. package/dist/esm/measurement/temperature-unit.js.map +7 -0
  690. package/dist/esm/measurement/temperature.js +196 -0
  691. package/dist/esm/measurement/temperature.js.map +7 -0
  692. package/dist/esm/measurement/torque-unit.js +118 -0
  693. package/dist/esm/measurement/torque-unit.js.map +7 -0
  694. package/dist/esm/measurement/torque.js +145 -0
  695. package/dist/esm/measurement/torque.js.map +7 -0
  696. package/dist/esm/measurement/voltage-unit.js +107 -0
  697. package/dist/esm/measurement/voltage-unit.js.map +7 -0
  698. package/dist/esm/measurement/voltage.js +139 -0
  699. package/dist/esm/measurement/voltage.js.map +7 -0
  700. package/dist/esm/measurement/volume-unit.js +158 -0
  701. package/dist/esm/measurement/volume-unit.js.map +7 -0
  702. package/dist/esm/measurement/volume.js +175 -0
  703. package/dist/esm/measurement/volume.js.map +7 -0
  704. package/dist/esm/measurement/weight-unit.js +138 -0
  705. package/dist/esm/measurement/weight-unit.js.map +7 -0
  706. package/dist/esm/measurement/weight.js +163 -0
  707. package/dist/esm/measurement/weight.js.map +7 -0
  708. package/dist/esm/measurement/year-month.js +184 -0
  709. package/dist/esm/measurement/year-month.js.map +7 -0
  710. package/dist/esm/measurement/year.js +89 -0
  711. package/dist/esm/measurement/year.js.map +7 -0
  712. package/dist/esm/organization/duns-number.js +94 -0
  713. package/dist/esm/organization/duns-number.js.map +7 -0
  714. package/dist/esm/organization/elf-code.js +112 -0
  715. package/dist/esm/organization/elf-code.js.map +7 -0
  716. package/dist/esm/organization/eu-organization-name.js +99 -0
  717. package/dist/esm/organization/eu-organization-name.js.map +7 -0
  718. package/dist/esm/organization/eu-vat-number.js +424 -0
  719. package/dist/esm/organization/eu-vat-number.js.map +7 -0
  720. package/dist/esm/organization/index.js +62 -0
  721. package/dist/esm/organization/index.js.map +7 -0
  722. package/dist/esm/organization/lei-code.js +113 -0
  723. package/dist/esm/organization/lei-code.js.map +7 -0
  724. package/dist/esm/organization/organization-extensions.js +60 -0
  725. package/dist/esm/organization/organization-extensions.js.map +7 -0
  726. package/dist/esm/organization/organization-validation-utils.js +58 -0
  727. package/dist/esm/organization/organization-validation-utils.js.map +7 -0
  728. package/dist/esm/organization/swedish-cfar-number.js +68 -0
  729. package/dist/esm/organization/swedish-cfar-number.js.map +7 -0
  730. package/dist/esm/organization/swedish-organization-identifier-type.js +14 -0
  731. package/dist/esm/organization/swedish-organization-identifier-type.js.map +7 -0
  732. package/dist/esm/organization/swedish-organization-identifier.js +146 -0
  733. package/dist/esm/organization/swedish-organization-identifier.js.map +7 -0
  734. package/dist/esm/organization/swedish-organization-name.js +235 -0
  735. package/dist/esm/organization/swedish-organization-name.js.map +7 -0
  736. package/dist/esm/organization/swedish-organization-number.js +269 -0
  737. package/dist/esm/organization/swedish-organization-number.js.map +7 -0
  738. package/dist/esm/organization/swedish-organization-type.js +31 -0
  739. package/dist/esm/organization/swedish-organization-type.js.map +7 -0
  740. package/dist/esm/organization/swedish-sni-code.js +76 -0
  741. package/dist/esm/organization/swedish-sni-code.js.map +7 -0
  742. package/dist/esm/person/index.js +42 -0
  743. package/dist/esm/person/index.js.map +7 -0
  744. package/dist/esm/person/person-age.js +167 -0
  745. package/dist/esm/person/person-age.js.map +7 -0
  746. package/dist/esm/person/person-family-name.js +67 -0
  747. package/dist/esm/person/person-family-name.js.map +7 -0
  748. package/dist/esm/person/person-full-name.js +86 -0
  749. package/dist/esm/person/person-full-name.js.map +7 -0
  750. package/dist/esm/person/person-given-name.js +87 -0
  751. package/dist/esm/person/person-given-name.js.map +7 -0
  752. package/dist/esm/person/person-masking.js +28 -0
  753. package/dist/esm/person/person-masking.js.map +7 -0
  754. package/dist/esm/person/person-name-normalization.js +79 -0
  755. package/dist/esm/person/person-name-normalization.js.map +7 -0
  756. package/dist/esm/person/personnummer-parser.js +136 -0
  757. package/dist/esm/person/personnummer-parser.js.map +7 -0
  758. package/dist/esm/person/swedish-coordination-number.js +173 -0
  759. package/dist/esm/person/swedish-coordination-number.js.map +7 -0
  760. package/dist/esm/person/swedish-personal-identity-number.js +175 -0
  761. package/dist/esm/person/swedish-personal-identity-number.js.map +7 -0
  762. package/dist/esm/primitive-type-info.js +1 -0
  763. package/dist/esm/primitive-type-info.js.map +7 -0
  764. package/dist/esm/primitives-defaults.js +72 -0
  765. package/dist/esm/primitives-defaults.js.map +7 -0
  766. package/dist/esm/product/adult-clothing-size.js +128 -0
  767. package/dist/esm/product/adult-clothing-size.js.map +7 -0
  768. package/dist/esm/product/adult-shoe-size.js +119 -0
  769. package/dist/esm/product/adult-shoe-size.js.map +7 -0
  770. package/dist/esm/product/aspect-ratio.js +168 -0
  771. package/dist/esm/product/aspect-ratio.js.map +7 -0
  772. package/dist/esm/product/battery-capacity.js +164 -0
  773. package/dist/esm/product/battery-capacity.js.map +7 -0
  774. package/dist/esm/product/battery-chemistry.js +239 -0
  775. package/dist/esm/product/battery-chemistry.js.map +7 -0
  776. package/dist/esm/product/camera-resolution.js +141 -0
  777. package/dist/esm/product/camera-resolution.js.map +7 -0
  778. package/dist/esm/product/child-clothing-size.js +234 -0
  779. package/dist/esm/product/child-clothing-size.js.map +7 -0
  780. package/dist/esm/product/child-shoe-size.js +180 -0
  781. package/dist/esm/product/child-shoe-size.js.map +7 -0
  782. package/dist/esm/product/clothing-fit.js +203 -0
  783. package/dist/esm/product/clothing-fit.js.map +7 -0
  784. package/dist/esm/product/clothing-gender.js +178 -0
  785. package/dist/esm/product/clothing-gender.js.map +7 -0
  786. package/dist/esm/product/clothing-season.js +182 -0
  787. package/dist/esm/product/clothing-season.js.map +7 -0
  788. package/dist/esm/product/clothing-size-system.js +11 -0
  789. package/dist/esm/product/clothing-size-system.js.map +7 -0
  790. package/dist/esm/product/clothing-size.js +126 -0
  791. package/dist/esm/product/clothing-size.js.map +7 -0
  792. package/dist/esm/product/color.js +314 -0
  793. package/dist/esm/product/color.js.map +7 -0
  794. package/dist/esm/product/display-panel-type.js +267 -0
  795. package/dist/esm/product/display-panel-type.js.map +7 -0
  796. package/dist/esm/product/electrical-phase.js +174 -0
  797. package/dist/esm/product/electrical-phase.js.map +7 -0
  798. package/dist/esm/product/energy-scale.js +11 -0
  799. package/dist/esm/product/energy-scale.js.map +7 -0
  800. package/dist/esm/product/eu-energy-efficiency-class.js +115 -0
  801. package/dist/esm/product/eu-energy-efficiency-class.js.map +7 -0
  802. package/dist/esm/product/google-product-category.js +94 -0
  803. package/dist/esm/product/google-product-category.js.map +7 -0
  804. package/dist/esm/product/gtin.js +83 -0
  805. package/dist/esm/product/gtin.js.map +7 -0
  806. package/dist/esm/product/gtin12.js +110 -0
  807. package/dist/esm/product/gtin12.js.map +7 -0
  808. package/dist/esm/product/gtin13.js +127 -0
  809. package/dist/esm/product/gtin13.js.map +7 -0
  810. package/dist/esm/product/gtin14.js +115 -0
  811. package/dist/esm/product/gtin14.js.map +7 -0
  812. package/dist/esm/product/gtin8.js +110 -0
  813. package/dist/esm/product/gtin8.js.map +7 -0
  814. package/dist/esm/product/hs-code-level.js +12 -0
  815. package/dist/esm/product/hs-code-level.js.map +7 -0
  816. package/dist/esm/product/hs-code.js +106 -0
  817. package/dist/esm/product/hs-code.js.map +7 -0
  818. package/dist/esm/product/index.js +137 -0
  819. package/dist/esm/product/index.js.map +7 -0
  820. package/dist/esm/product/ip-rating.js +146 -0
  821. package/dist/esm/product/ip-rating.js.map +7 -0
  822. package/dist/esm/product/operating-system-family.js +17 -0
  823. package/dist/esm/product/operating-system-family.js.map +7 -0
  824. package/dist/esm/product/operating-system-info.js +80 -0
  825. package/dist/esm/product/operating-system-info.js.map +7 -0
  826. package/dist/esm/product/operating-system-name.js +107 -0
  827. package/dist/esm/product/operating-system-name.js.map +7 -0
  828. package/dist/esm/product/operating-system-version.js +90 -0
  829. package/dist/esm/product/operating-system-version.js.map +7 -0
  830. package/dist/esm/product/power-source.js +298 -0
  831. package/dist/esm/product/power-source.js.map +7 -0
  832. package/dist/esm/product/processor-speed.js +139 -0
  833. package/dist/esm/product/processor-speed.js.map +7 -0
  834. package/dist/esm/product/product-extensions.js +7 -0
  835. package/dist/esm/product/product-extensions.js.map +7 -0
  836. package/dist/esm/product/product-masking.js +82 -0
  837. package/dist/esm/product/product-masking.js.map +7 -0
  838. package/dist/esm/product/ram-capacity.js +134 -0
  839. package/dist/esm/product/ram-capacity.js.map +7 -0
  840. package/dist/esm/product/refrigerant-family.js +20 -0
  841. package/dist/esm/product/refrigerant-family.js.map +7 -0
  842. package/dist/esm/product/refrigerant.js +399 -0
  843. package/dist/esm/product/refrigerant.js.map +7 -0
  844. package/dist/esm/product/screen-resolution.js +177 -0
  845. package/dist/esm/product/screen-resolution.js.map +7 -0
  846. package/dist/esm/product/screen-size.js +164 -0
  847. package/dist/esm/product/screen-size.js.map +7 -0
  848. package/dist/esm/product/shoe-size-system.js +11 -0
  849. package/dist/esm/product/shoe-size-system.js.map +7 -0
  850. package/dist/esm/product/shoe-size.js +118 -0
  851. package/dist/esm/product/shoe-size.js.map +7 -0
  852. package/dist/esm/product/storage-capacity.js +139 -0
  853. package/dist/esm/product/storage-capacity.js.map +7 -0
  854. package/dist/esm/product/storage-media-type.js +251 -0
  855. package/dist/esm/product/storage-media-type.js.map +7 -0
  856. package/dist/esm/property/index.js +19 -0
  857. package/dist/esm/property/index.js.map +7 -0
  858. package/dist/esm/property/swedish-property-designation.js +159 -0
  859. package/dist/esm/property/swedish-property-designation.js.map +7 -0
  860. package/dist/esm/property/swedish-property-taxation-code.js +198 -0
  861. package/dist/esm/property/swedish-property-taxation-code.js.map +7 -0
  862. package/dist/esm/register-default-text-scanners.js +270 -0
  863. package/dist/esm/register-default-text-scanners.js.map +7 -0
  864. package/dist/esm/sample-data/index.js +355 -0
  865. package/dist/esm/sample-data/index.js.map +7 -0
  866. package/dist/esm/text-scanning/index.js +21 -0
  867. package/dist/esm/text-scanning/index.js.map +7 -0
  868. package/dist/esm/text-scanning/text-candidate-category.js +15 -0
  869. package/dist/esm/text-scanning/text-candidate-category.js.map +7 -0
  870. package/dist/esm/text-scanning/text-candidate.js +55 -0
  871. package/dist/esm/text-scanning/text-candidate.js.map +7 -0
  872. package/dist/esm/text-scanning/text-match-confidence.js +23 -0
  873. package/dist/esm/text-scanning/text-match-confidence.js.map +7 -0
  874. package/dist/esm/text-scanning/text-scan-helpers.js +78 -0
  875. package/dist/esm/text-scanning/text-scan-helpers.js.map +7 -0
  876. package/dist/esm/text-scanning/text-scan-result.js +313 -0
  877. package/dist/esm/text-scanning/text-scan-result.js.map +7 -0
  878. package/dist/esm/text-scanning/text-scanner-options.js +9 -0
  879. package/dist/esm/text-scanning/text-scanner-options.js.map +7 -0
  880. package/dist/esm/text-scanning/text-scanner.js +40 -0
  881. package/dist/esm/text-scanning/text-scanner.js.map +7 -0
  882. package/dist/esm/validation/index.js +9 -0
  883. package/dist/esm/validation/index.js.map +7 -0
  884. package/dist/esm/validation/validation-error-reason.js +33 -0
  885. package/dist/esm/validation/validation-error-reason.js.map +7 -0
  886. package/dist/esm/validation/validation-issue.js +23 -0
  887. package/dist/esm/validation/validation-issue.js.map +7 -0
  888. package/dist/esm/validation/validation-result.js +32 -0
  889. package/dist/esm/validation/validation-result.js.map +7 -0
  890. package/dist/esm/vehicle/boat-ce-design-category.js +180 -0
  891. package/dist/esm/vehicle/boat-ce-design-category.js.map +7 -0
  892. package/dist/esm/vehicle/boat-hull-material.js +202 -0
  893. package/dist/esm/vehicle/boat-hull-material.js.map +7 -0
  894. package/dist/esm/vehicle/body-type.js +305 -0
  895. package/dist/esm/vehicle/body-type.js.map +7 -0
  896. package/dist/esm/vehicle/bolt-pattern.js +130 -0
  897. package/dist/esm/vehicle/bolt-pattern.js.map +7 -0
  898. package/dist/esm/vehicle/drivetrain-type.js +180 -0
  899. package/dist/esm/vehicle/drivetrain-type.js.map +7 -0
  900. package/dist/esm/vehicle/emission-rate.js +174 -0
  901. package/dist/esm/vehicle/emission-rate.js.map +7 -0
  902. package/dist/esm/vehicle/energy-consumption.js +230 -0
  903. package/dist/esm/vehicle/energy-consumption.js.map +7 -0
  904. package/dist/esm/vehicle/engine-displacement.js +149 -0
  905. package/dist/esm/vehicle/engine-displacement.js.map +7 -0
  906. package/dist/esm/vehicle/engine-power.js +191 -0
  907. package/dist/esm/vehicle/engine-power.js.map +7 -0
  908. package/dist/esm/vehicle/eu-type-approval-number.js +176 -0
  909. package/dist/esm/vehicle/eu-type-approval-number.js.map +7 -0
  910. package/dist/esm/vehicle/eu-vehicle-category.js +147 -0
  911. package/dist/esm/vehicle/eu-vehicle-category.js.map +7 -0
  912. package/dist/esm/vehicle/euro-emission-class.js +293 -0
  913. package/dist/esm/vehicle/euro-emission-class.js.map +7 -0
  914. package/dist/esm/vehicle/fuel-consumption-norm.js +186 -0
  915. package/dist/esm/vehicle/fuel-consumption-norm.js.map +7 -0
  916. package/dist/esm/vehicle/fuel-consumption.js +261 -0
  917. package/dist/esm/vehicle/fuel-consumption.js.map +7 -0
  918. package/dist/esm/vehicle/fuel-type.js +268 -0
  919. package/dist/esm/vehicle/fuel-type.js.map +7 -0
  920. package/dist/esm/vehicle/index.js +134 -0
  921. package/dist/esm/vehicle/index.js.map +7 -0
  922. package/dist/esm/vehicle/odometer-reading.js +145 -0
  923. package/dist/esm/vehicle/odometer-reading.js.map +7 -0
  924. package/dist/esm/vehicle/operating-hours.js +154 -0
  925. package/dist/esm/vehicle/operating-hours.js.map +7 -0
  926. package/dist/esm/vehicle/suspension-type.js +292 -0
  927. package/dist/esm/vehicle/suspension-type.js.map +7 -0
  928. package/dist/esm/vehicle/swedish-driving-license-category.js +384 -0
  929. package/dist/esm/vehicle/swedish-driving-license-category.js.map +7 -0
  930. package/dist/esm/vehicle/swedish-driving-license-vehicle-group.js +12 -0
  931. package/dist/esm/vehicle/swedish-driving-license-vehicle-group.js.map +7 -0
  932. package/dist/esm/vehicle/swedish-eco-vehicle-classification.js +212 -0
  933. package/dist/esm/vehicle/swedish-eco-vehicle-classification.js.map +7 -0
  934. package/dist/esm/vehicle/swedish-vehicle-registration-number.js +176 -0
  935. package/dist/esm/vehicle/swedish-vehicle-registration-number.js.map +7 -0
  936. package/dist/esm/vehicle/swedish-vehicle-status.js +152 -0
  937. package/dist/esm/vehicle/swedish-vehicle-status.js.map +7 -0
  938. package/dist/esm/vehicle/swedish-vehicle-type.js +262 -0
  939. package/dist/esm/vehicle/swedish-vehicle-type.js.map +7 -0
  940. package/dist/esm/vehicle/tire-dimension.js +186 -0
  941. package/dist/esm/vehicle/tire-dimension.js.map +7 -0
  942. package/dist/esm/vehicle/tire-type.js +208 -0
  943. package/dist/esm/vehicle/tire-type.js.map +7 -0
  944. package/dist/esm/vehicle/track-type.js +168 -0
  945. package/dist/esm/vehicle/track-type.js.map +7 -0
  946. package/dist/esm/vehicle/transmission-type.js +238 -0
  947. package/dist/esm/vehicle/transmission-type.js.map +7 -0
  948. package/dist/esm/vehicle/vehicle-extensions.js +15 -0
  949. package/dist/esm/vehicle/vehicle-extensions.js.map +7 -0
  950. package/dist/esm/vehicle/vehicle-identification-number.js +248 -0
  951. package/dist/esm/vehicle/vehicle-identification-number.js.map +7 -0
  952. package/dist/esm/vehicle/vehicle-masking.js +48 -0
  953. package/dist/esm/vehicle/vehicle-masking.js.map +7 -0
  954. package/dist/esm/vehicle/wheel-rim-dimension.js +163 -0
  955. package/dist/esm/vehicle/wheel-rim-dimension.js.map +7 -0
  956. package/dist/esm/web/email-address.js +522 -0
  957. package/dist/esm/web/email-address.js.map +7 -0
  958. package/dist/esm/web/index.js +16 -0
  959. package/dist/esm/web/index.js.map +7 -0
  960. package/dist/esm/web/url.js +333 -0
  961. package/dist/esm/web/url.js.map +7 -0
  962. package/dist/types/frequency-CweGfJFS.d.cts +329 -0
  963. package/dist/types/frequency-DdOMV6Sw.d.ts +329 -0
  964. package/dist/{index.d.cts → types/index.d.cts} +9 -0
  965. package/dist/{index.d.ts → types/index.d.ts} +9 -0
  966. package/dist/types/length-CceXIJYY.d.ts +354 -0
  967. package/dist/types/length-XRL5Eg7F.d.cts +354 -0
  968. package/dist/types/measurement/index.d.cts +136 -0
  969. package/dist/types/measurement/index.d.ts +136 -0
  970. package/dist/types/product/index.d.cts +1239 -0
  971. package/dist/types/product/index.d.ts +1239 -0
  972. package/dist/types/screen-size-BD4t3wzb.d.cts +473 -0
  973. package/dist/types/screen-size-DUmjNjxG.d.ts +473 -0
  974. package/dist/{text-scanning → types/text-scanning}/index.d.cts +50 -0
  975. package/dist/{text-scanning → types/text-scanning}/index.d.ts +50 -0
  976. package/dist/types/vehicle/index.d.cts +798 -0
  977. package/dist/types/vehicle/index.d.ts +798 -0
  978. package/dist/types/volume-CFA4e3dc.d.cts +175 -0
  979. package/dist/types/volume-DGLPQypt.d.ts +175 -0
  980. package/dist/types/weight-B30-Hzxu.d.ts +1057 -0
  981. package/dist/types/weight-C5C7OuV_.d.cts +1057 -0
  982. package/dist/types/wheel-rim-dimension-CVCmLASl.d.ts +699 -0
  983. package/dist/types/wheel-rim-dimension-CdkDrzad.d.cts +699 -0
  984. package/package.json +100 -65
  985. package/dist/banking/index.cjs +0 -6491
  986. package/dist/banking/index.cjs.map +0 -1
  987. package/dist/banking/index.js +0 -6464
  988. package/dist/banking/index.js.map +0 -1
  989. package/dist/contact/index.cjs +0 -6678
  990. package/dist/contact/index.cjs.map +0 -1
  991. package/dist/contact/index.js +0 -6586
  992. package/dist/contact/index.js.map +0 -1
  993. package/dist/finance/index.cjs +0 -3592
  994. package/dist/finance/index.cjs.map +0 -1
  995. package/dist/finance/index.js +0 -3584
  996. package/dist/finance/index.js.map +0 -1
  997. package/dist/geography/index.cjs +0 -4227
  998. package/dist/geography/index.cjs.map +0 -1
  999. package/dist/geography/index.js +0 -4202
  1000. package/dist/geography/index.js.map +0 -1
  1001. package/dist/index.cjs +0 -14087
  1002. package/dist/index.cjs.map +0 -1
  1003. package/dist/index.js +0 -13868
  1004. package/dist/index.js.map +0 -1
  1005. package/dist/organization/index.cjs +0 -2376
  1006. package/dist/organization/index.cjs.map +0 -1
  1007. package/dist/organization/index.js +0 -2346
  1008. package/dist/organization/index.js.map +0 -1
  1009. package/dist/person/index.cjs +0 -1144
  1010. package/dist/person/index.cjs.map +0 -1
  1011. package/dist/person/index.js +0 -1125
  1012. package/dist/person/index.js.map +0 -1
  1013. package/dist/property/index.cjs +0 -487
  1014. package/dist/property/index.cjs.map +0 -1
  1015. package/dist/property/index.js +0 -480
  1016. package/dist/property/index.js.map +0 -1
  1017. package/dist/sample-data/index.cjs +0 -12310
  1018. package/dist/sample-data/index.cjs.map +0 -1
  1019. package/dist/sample-data/index.js +0 -12302
  1020. package/dist/sample-data/index.js.map +0 -1
  1021. package/dist/text-scanning/index.cjs +0 -10414
  1022. package/dist/text-scanning/index.cjs.map +0 -1
  1023. package/dist/text-scanning/index.js +0 -10406
  1024. package/dist/text-scanning/index.js.map +0 -1
  1025. package/dist/validation/index.cjs +0 -83
  1026. package/dist/validation/index.cjs.map +0 -1
  1027. package/dist/validation/index.js +0 -79
  1028. package/dist/validation/index.js.map +0 -1
  1029. package/dist/web/index.cjs +0 -3994
  1030. package/dist/web/index.cjs.map +0 -1
  1031. package/dist/web/index.js +0 -3987
  1032. package/dist/web/index.js.map +0 -1
  1033. /package/dist/{banking → types/banking}/index.d.cts +0 -0
  1034. /package/dist/{banking → types/banking}/index.d.ts +0 -0
  1035. /package/dist/{contact → types/contact}/index.d.cts +0 -0
  1036. /package/dist/{contact → types/contact}/index.d.ts +0 -0
  1037. /package/dist/{country-BhD51LDL.d.cts → types/country-BhD51LDL.d.cts} +0 -0
  1038. /package/dist/{country-p0n0EVQ9.d.ts → types/country-p0n0EVQ9.d.ts} +0 -0
  1039. /package/dist/{finance → types/finance}/index.d.cts +0 -0
  1040. /package/dist/{finance → types/finance}/index.d.ts +0 -0
  1041. /package/dist/{geography → types/geography}/index.d.cts +0 -0
  1042. /package/dist/{geography → types/geography}/index.d.ts +0 -0
  1043. /package/dist/{isin-EeVPpNWu.d.ts → types/isin-EeVPpNWu.d.ts} +0 -0
  1044. /package/dist/{isin-ZlQLBVm8.d.cts → types/isin-ZlQLBVm8.d.cts} +0 -0
  1045. /package/dist/{organization → types/organization}/index.d.cts +0 -0
  1046. /package/dist/{organization → types/organization}/index.d.ts +0 -0
  1047. /package/dist/{person → types/person}/index.d.cts +0 -0
  1048. /package/dist/{person → types/person}/index.d.ts +0 -0
  1049. /package/dist/{person-full-name-Cmc9Ynuc.d.cts → types/person-full-name-Cmc9Ynuc.d.cts} +0 -0
  1050. /package/dist/{person-full-name-D6Hbsab6.d.ts → types/person-full-name-D6Hbsab6.d.ts} +0 -0
  1051. /package/dist/{phone-number-C24--ggy.d.ts → types/phone-number-C24--ggy.d.ts} +0 -0
  1052. /package/dist/{phone-number-DZ-YxCQQ.d.cts → types/phone-number-DZ-YxCQQ.d.cts} +0 -0
  1053. /package/dist/{property → types/property}/index.d.cts +0 -0
  1054. /package/dist/{property → types/property}/index.d.ts +0 -0
  1055. /package/dist/{sample-data → types/sample-data}/index.d.cts +0 -0
  1056. /package/dist/{sample-data → types/sample-data}/index.d.ts +0 -0
  1057. /package/dist/{swedish-address-DNC3ftRF.d.cts → types/swedish-address-DNC3ftRF.d.cts} +0 -0
  1058. /package/dist/{swedish-address-GMzjqgxb.d.ts → types/swedish-address-GMzjqgxb.d.ts} +0 -0
  1059. /package/dist/{swedish-bank-account-holder-name-BFJ8h1aO.d.cts → types/swedish-bank-account-holder-name-BFJ8h1aO.d.cts} +0 -0
  1060. /package/dist/{swedish-bank-account-holder-name-CAAru07F.d.ts → types/swedish-bank-account-holder-name-CAAru07F.d.ts} +0 -0
  1061. /package/dist/{swedish-municipality-DlUS7g7h.d.cts → types/swedish-municipality-DlUS7g7h.d.cts} +0 -0
  1062. /package/dist/{swedish-municipality-nDRHYRAd.d.ts → types/swedish-municipality-nDRHYRAd.d.ts} +0 -0
  1063. /package/dist/{swedish-organization-name-D7NvERxA.d.cts → types/swedish-organization-name-D7NvERxA.d.cts} +0 -0
  1064. /package/dist/{swedish-organization-name-rR0Q836C.d.ts → types/swedish-organization-name-rR0Q836C.d.ts} +0 -0
  1065. /package/dist/{swedish-organization-number-Bcj7V_lh.d.cts → types/swedish-organization-number-Bcj7V_lh.d.cts} +0 -0
  1066. /package/dist/{swedish-organization-number-DM8dpXwR.d.ts → types/swedish-organization-number-DM8dpXwR.d.ts} +0 -0
  1067. /package/dist/{swedish-organization-type-CZOdETwG.d.cts → types/swedish-organization-type-CZOdETwG.d.cts} +0 -0
  1068. /package/dist/{swedish-organization-type-CZOdETwG.d.ts → types/swedish-organization-type-CZOdETwG.d.ts} +0 -0
  1069. /package/dist/{swedish-personal-identity-number-BiIg4io3.d.ts → types/swedish-personal-identity-number-BiIg4io3.d.ts} +0 -0
  1070. /package/dist/{swedish-personal-identity-number-Cp9Coz55.d.cts → types/swedish-personal-identity-number-Cp9Coz55.d.cts} +0 -0
  1071. /package/dist/{swedish-property-designation-BM-gdd9x.d.ts → types/swedish-property-designation-BM-gdd9x.d.ts} +0 -0
  1072. /package/dist/{swedish-property-designation-BaHXufqV.d.cts → types/swedish-property-designation-BaHXufqV.d.cts} +0 -0
  1073. /package/dist/{swedish-sni-code-Ccsswpni.d.ts → types/swedish-sni-code-Ccsswpni.d.ts} +0 -0
  1074. /package/dist/{swedish-sni-code-CuJFyM6l.d.cts → types/swedish-sni-code-CuJFyM6l.d.cts} +0 -0
  1075. /package/dist/{swedish-swish-number-CL6Gx_h3.d.cts → types/swedish-swish-number-CL6Gx_h3.d.cts} +0 -0
  1076. /package/dist/{swedish-swish-number-DDG3mNDg.d.ts → types/swedish-swish-number-DDG3mNDg.d.ts} +0 -0
  1077. /package/dist/{text-candidate-qg2bD9PY.d.cts → types/text-candidate-qg2bD9PY.d.cts} +0 -0
  1078. /package/dist/{text-candidate-qg2bD9PY.d.ts → types/text-candidate-qg2bD9PY.d.ts} +0 -0
  1079. /package/dist/{validation → types/validation}/index.d.cts +0 -0
  1080. /package/dist/{validation → types/validation}/index.d.ts +0 -0
  1081. /package/dist/{web → types/web}/index.d.cts +0 -0
  1082. /package/dist/{web → types/web}/index.d.ts +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/vehicle/transmission-type.ts"],
4
+ "sourcesContent": ["import type { PrimitiveTypeInfo } from \"../primitive-type-info.js\";\nimport { PrimitivesDefaults } from \"../primitives-defaults.js\";\nimport { sanitizeInput } from \"../internal/input-sanitization.js\";\n\n/** Options shared by the string-in, string-out helpers. */\nexport interface TransmissionTypeFormatOptions {\n /** Return the trimmed original input instead of `null` when the input is invalid. */\n fallbackToTrimmedInputWhenInvalid?: boolean;\n}\n\ninterface TransmissionTypeDef {\n readonly value: string;\n readonly englishName: string;\n readonly localizedName: string;\n readonly rank: number;\n}\n\n/** A vehicle transmission/gearbox type (`v\u00E4xell\u00E5da`). */\nexport class TransmissionType {\n static readonly typeInfo: PrimitiveTypeInfo = Object.freeze({\n englishName: \"Transmission Type\",\n localizedName: \"V\u00E4xell\u00E5da\",\n emoji: \"\u2699\uFE0F\",\n sources: Object.freeze([\"https://www.transportstyrelsen.se/\"]),\n });\n\n readonly value: string;\n readonly englishName: string;\n readonly localizedName: string;\n\n /** @internal Position in the canonical .NET ordering, used by {@link compareTo}. */\n private readonly rank: number;\n\n private constructor(def: TransmissionTypeDef) {\n this.value = def.value;\n this.englishName = def.englishName;\n this.localizedName = def.localizedName;\n this.rank = def.rank;\n }\n\n static readonly Manual = new TransmissionType({\n value: \"Manual\",\n englishName: \"Manual\",\n localizedName: \"Manuell\",\n rank: 4,\n });\n\n static readonly Automatic = new TransmissionType({\n value: \"Automatic\",\n englishName: \"Automatic\",\n localizedName: \"Automat\",\n rank: 1,\n });\n\n static readonly Cvt = new TransmissionType({\n value: \"CVT\",\n englishName: \"CVT\",\n localizedName: \"CVT\",\n rank: 2,\n });\n\n static readonly DualClutch = new TransmissionType({\n value: \"Dual clutch\",\n englishName: \"Dual clutch\",\n localizedName: \"Dubbelkoppling\",\n rank: 3,\n });\n\n static readonly Sequential = new TransmissionType({\n value: \"Sequential\",\n englishName: \"Sequential\",\n localizedName: \"Sekventiell\",\n rank: 6,\n });\n\n static readonly SemiAutomatic = new TransmissionType({\n value: \"Semi-automatic\",\n englishName: \"Semi-automatic\",\n localizedName: \"Halvautomatisk\",\n rank: 5,\n });\n\n static readonly Amt = new TransmissionType({\n value: \"AMT\",\n englishName: \"AMT\",\n localizedName: \"AMT\",\n rank: 0,\n });\n\n /** All 7 values, in canonical order. */\n static get all(): readonly TransmissionType[] {\n return ALL;\n }\n\n /** Name in the language selected by {@link PrimitivesDefaults.uiCulture}. */\n get displayName(): string {\n return PrimitivesDefaults.useLocalizedDisplayNames ? this.localizedName : this.englishName;\n }\n\n /** Resolves a value from its canonical name, localized name, code or any known alias. */\n static tryParse(input: string | null | undefined): TransmissionType | null {\n if (input == null) return null;\n const key = normalizeLookupKey(sanitizeInput(input).trim());\n if (key.length === 0) return null;\n return LOOKUP.get(key) ?? null;\n }\n\n static parse(input: string): TransmissionType {\n const result = TransmissionType.tryParse(input);\n if (result === null) throw new Error(`Invalid transmission type.`);\n return result;\n }\n\n static isValid(input: string | null | undefined): boolean {\n return TransmissionType.tryParse(input) !== null;\n }\n\n static format(\n input: string | null | undefined,\n options?: TransmissionTypeFormatOptions,\n ): string | null {\n const r = TransmissionType.tryParse(input);\n if (r !== null)\n return PrimitivesDefaults.useLocalizedDisplayNames ? r.localizedName : r.englishName;\n return fallback(input, options);\n }\n\n static normalize(\n input: string | null | undefined,\n options?: TransmissionTypeFormatOptions,\n ): string | null {\n const r = TransmissionType.tryParse(input);\n if (r !== null) return r.value;\n return fallback(input, options);\n }\n\n static isNormalized(input: string | null | undefined): boolean {\n return input != null && TransmissionType.normalize(input) === input;\n }\n\n toNormalizedString(): string {\n return this.value;\n }\n\n toString(): string {\n return PrimitivesDefaults.useLocalizedDisplayNames ? this.localizedName : this.englishName;\n }\n\n toDisplayString(): string {\n return this.displayName;\n }\n\n toEnglishString(): string {\n return this.englishName;\n }\n\n toLocalString(): string {\n return this.localizedName;\n }\n\n equals(other: TransmissionType | null | undefined): boolean {\n return other != null && this.value === other.value;\n }\n\n compareTo(other: TransmissionType | null | undefined): number {\n if (other == null) return 1;\n return this.rank < other.rank ? -1 : this.rank > other.rank ? 1 : 0;\n }\n}\n\nconst ALL: readonly TransmissionType[] = [\n TransmissionType.Manual,\n TransmissionType.Automatic,\n TransmissionType.Cvt,\n TransmissionType.DualClutch,\n TransmissionType.Sequential,\n TransmissionType.SemiAutomatic,\n TransmissionType.Amt,\n];\n\nfunction fallback(\n input: string | null | undefined,\n options?: TransmissionTypeFormatOptions,\n): string | null {\n if (!options?.fallbackToTrimmedInputWhenInvalid || input == null) return null;\n const trimmed = input.trim();\n return trimmed.length > 0 ? trimmed : null;\n}\n\nconst KEY_PATTERN = /[\\s\\-/]+/g;\n\nfunction normalizeLookupKey(value: string): string {\n let folded = value.trim().toLowerCase();\n folded = folded.replaceAll(\"\u00E5\", \"a\").replaceAll(\"\u00E4\", \"a\").replaceAll(\"\u00F6\", \"o\");\n folded = folded.replace(KEY_PATTERN, \" \");\n return folded.trim();\n}\n\nconst ALIASES: readonly (readonly [TransmissionType, readonly string[]])[] = [\n [\n TransmissionType.Manual,\n [\n \"handvaxel\",\n \"handvaxlad\",\n \"m t\",\n \"manual\",\n \"manuell\",\n \"manuell manual\",\n \"manuell vaxellada\",\n \"standard\",\n \"stick\",\n ],\n ],\n [\n TransmissionType.Automatic,\n [\n \"a t\",\n \"auto\",\n \"automat\",\n \"automatic\",\n \"automatiserad\",\n \"automatisk\",\n \"automatisk vaxellada\",\n \"automatvaxlad\",\n \"momentomvandlare\",\n \"tiptronic\",\n \"torque converter\",\n ],\n ],\n [\n TransmissionType.Cvt,\n [\n \"continuously variable\",\n \"cvt\",\n \"e cvt\",\n \"lineartronic\",\n \"multitronic\",\n \"steglos\",\n \"variator\",\n \"variomatic\",\n \"xtronic\",\n ],\n ],\n [\n TransmissionType.DualClutch,\n [\n \"dct\",\n \"dsg\",\n \"dual clutch\",\n \"dubbelkoppling\",\n \"dubbelkopplingslada\",\n \"edc\",\n \"pdk\",\n \"powershift\",\n \"s tronic\",\n \"twinclutch\",\n ],\n ],\n [\n TransmissionType.Sequential,\n [\"sekvensiell\", \"sekventiell\", \"sekventiell vaxellada\", \"sequential\", \"smg\"],\n ],\n [\n TransmissionType.SemiAutomatic,\n [\n \"automated manual\",\n \"halvautomatisk\",\n \"halvautomatvaxlad\",\n \"semi automat\",\n \"semi automatic\",\n \"semi automatisk\",\n ],\n ],\n [\n TransmissionType.Amt,\n [\n \"amt\",\n \"automated manual transmission\",\n \"automatiserad manuell\",\n \"easytronic\",\n \"imt\",\n \"robotized\",\n ],\n ],\n];\n\nconst LOOKUP = new Map<string, TransmissionType>();\nfor (const [value, keys] of ALIASES) {\n for (const key of keys) if (!LOOKUP.has(key)) LOOKUP.set(key, value);\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,15 @@
1
+ function toBiluppgifterUrl(registration) {
2
+ return `https://biluppgifter.se/fordon/${registration.toNormalizedString()}`;
3
+ }
4
+ function getBiluppgifterUrl(registration) {
5
+ return new URL(`https://biluppgifter.se/fordon/${registration.value}`);
6
+ }
7
+ function getCarInfoUrl(registration) {
8
+ return new URL(`https://www.car.info/sv-se/license-plate/S/${registration.value}`);
9
+ }
10
+ export {
11
+ getBiluppgifterUrl,
12
+ getCarInfoUrl,
13
+ toBiluppgifterUrl
14
+ };
15
+ //# sourceMappingURL=vehicle-extensions.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/vehicle/vehicle-extensions.ts"],
4
+ "sourcesContent": ["import type { SwedishVehicleRegistrationNumber } from \"./swedish-vehicle-registration-number.js\";\n\n/** Returns the Biluppgifter.se lookup URL as a string. */\nexport function toBiluppgifterUrl(registration: SwedishVehicleRegistrationNumber): string {\n return `https://biluppgifter.se/fordon/${registration.toNormalizedString()}`;\n}\n\n/** Returns the Biluppgifter.se vehicle-information URL. */\nexport function getBiluppgifterUrl(registration: SwedishVehicleRegistrationNumber): URL {\n return new URL(`https://biluppgifter.se/fordon/${registration.value}`);\n}\n\n/** Returns the Car.info vehicle-information URL. */\nexport function getCarInfoUrl(registration: SwedishVehicleRegistrationNumber): URL {\n return new URL(`https://www.car.info/sv-se/license-plate/S/${registration.value}`);\n}\n"],
5
+ "mappings": "AAGO,SAAS,kBAAkB,cAAwD;AACxF,SAAO,kCAAkC,aAAa,mBAAmB,CAAC;AAC5E;AAGO,SAAS,mBAAmB,cAAqD;AACtF,SAAO,IAAI,IAAI,kCAAkC,aAAa,KAAK,EAAE;AACvE;AAGO,SAAS,cAAc,cAAqD;AACjF,SAAO,IAAI,IAAI,8CAA8C,aAAa,KAAK,EAAE;AACnF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,248 @@
1
+ import { sanitizeInput } from "../internal/input-sanitization.js";
2
+ import { TextCandidate } from "../text-scanning/text-candidate.js";
3
+ import { TextCandidateCategory } from "../text-scanning/text-candidate-category.js";
4
+ import { TextMatchConfidence } from "../text-scanning/text-match-confidence.js";
5
+ import { ValidationErrorReason } from "../validation/validation-error-reason.js";
6
+ import {
7
+ invalidResult,
8
+ validResult
9
+ } from "../validation/validation-result.js";
10
+ const MAX_INPUT_LENGTH = 30;
11
+ const VIN_PATTERN = /^[A-HJ-NPR-Z0-9]{17}$/u;
12
+ const SCAN_PATTERN = /(?<![\p{L}\p{N}_])[A-HJ-NPR-Z0-9]{17}(?![\p{L}\p{N}_])/giu;
13
+ const WEIGHTS = [8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2];
14
+ const TRANSLITERATION = Object.freeze({
15
+ A: 1,
16
+ B: 2,
17
+ C: 3,
18
+ D: 4,
19
+ E: 5,
20
+ F: 6,
21
+ G: 7,
22
+ H: 8,
23
+ J: 1,
24
+ K: 2,
25
+ L: 3,
26
+ M: 4,
27
+ N: 5,
28
+ P: 7,
29
+ R: 9,
30
+ S: 2,
31
+ T: 3,
32
+ U: 4,
33
+ V: 5,
34
+ W: 6,
35
+ X: 7,
36
+ Y: 8,
37
+ Z: 9
38
+ });
39
+ const MODEL_YEAR_MAP = Object.freeze({
40
+ A: [1980, 2010],
41
+ B: [1981, 2011],
42
+ C: [1982, 2012],
43
+ D: [1983, 2013],
44
+ E: [1984, 2014],
45
+ F: [1985, 2015],
46
+ G: [1986, 2016],
47
+ H: [1987, 2017],
48
+ J: [1988, 2018],
49
+ K: [1989, 2019],
50
+ L: [1990, 2020],
51
+ M: [1991, 2021],
52
+ N: [1992, 2022],
53
+ P: [1993, 2023],
54
+ R: [1994, 2024],
55
+ S: [1995, 2025],
56
+ T: [1996, 2026],
57
+ V: [1997, 2027],
58
+ W: [1998, 2028],
59
+ X: [1999, 2029],
60
+ Y: [2e3, 2030],
61
+ "1": [2001, 2031],
62
+ "2": [2002, 2032],
63
+ "3": [2003, 2033],
64
+ "4": [2004, 2034],
65
+ "5": [2005, 2035],
66
+ "6": [2006, 2036],
67
+ "7": [2007, 2037],
68
+ "8": [2008, 2038],
69
+ "9": [2009, 2039]
70
+ });
71
+ class VehicleIdentificationNumber {
72
+ static typeInfo = Object.freeze({
73
+ englishName: "VIN",
74
+ localizedName: "Chassinummer",
75
+ emoji: "\u{1F527}",
76
+ sources: Object.freeze([
77
+ "https://www.iso.org/standard/52200.html",
78
+ "https://en.wikipedia.org/wiki/Vehicle_identification_number",
79
+ "https://en.wikibooks.org/wiki/Vehicle_Identification_Numbers_(VIN_codes)/Check_digit"
80
+ ])
81
+ });
82
+ /** The 17-character VIN in uppercase, e.g. `WBA3A5C55CF256789`. */
83
+ value;
84
+ /** World Manufacturer Identifier — positions 1–3. */
85
+ wmi;
86
+ /** Vehicle Descriptor Section — positions 4–8. */
87
+ vds;
88
+ /** The check digit at position 9 (a digit or `X`). */
89
+ checkDigit;
90
+ /** Vehicle Indicator Section — positions 10–17. */
91
+ vis;
92
+ /** The model year code at position 10. */
93
+ modelYearCode;
94
+ /** The model years the code at position 10 can encode, e.g. `M` means 1991 or 2021. */
95
+ modelYears;
96
+ /** The assembly plant code at position 11. */
97
+ assemblyPlantCode;
98
+ /** The sequential production number — positions 12–17. */
99
+ sequentialNumber;
100
+ /** Whether position 9 passes the ISO 3779 MOD-11 check. */
101
+ hasValidCheckDigit;
102
+ constructor(value, hasValidCheckDigit2) {
103
+ this.value = value;
104
+ this.wmi = value.slice(0, 3);
105
+ this.vds = value.slice(3, 8);
106
+ this.checkDigit = value[8];
107
+ this.vis = value.slice(9);
108
+ this.modelYearCode = value[9];
109
+ this.assemblyPlantCode = value[10];
110
+ this.sequentialNumber = value.slice(11);
111
+ this.hasValidCheckDigit = hasValidCheckDigit2;
112
+ this.modelYears = MODEL_YEAR_MAP[this.modelYearCode] ?? [];
113
+ }
114
+ static tryParse(input) {
115
+ const cleaned = clean(input);
116
+ if (cleaned === null || cleaned.length !== 17 || !VIN_PATTERN.test(cleaned)) return null;
117
+ return new VehicleIdentificationNumber(cleaned, hasValidCheckDigit(cleaned));
118
+ }
119
+ static parse(input) {
120
+ const result = VehicleIdentificationNumber.tryParse(input);
121
+ if (result === null) throw new Error("Invalid Vehicle Identification Number (VIN).");
122
+ return result;
123
+ }
124
+ static isValid(input) {
125
+ return VehicleIdentificationNumber.tryParse(input) !== null;
126
+ }
127
+ /** Returns the VIN in uppercase without separators, e.g. `WBA3A5C55CF256789`. */
128
+ static format(input, options) {
129
+ const parsed = VehicleIdentificationNumber.tryParse(input);
130
+ if (parsed !== null) return parsed.value;
131
+ return fallback(input, options);
132
+ }
133
+ /** Returns the VIN in uppercase without separators, e.g. `WBA3A5C55CF256789`. */
134
+ static normalize(input, options) {
135
+ const parsed = VehicleIdentificationNumber.tryParse(input);
136
+ if (parsed !== null) return parsed.value;
137
+ return fallback(input, options);
138
+ }
139
+ static isNormalized(input) {
140
+ return input != null && VehicleIdentificationNumber.normalize(input) === input;
141
+ }
142
+ /** Describes why the input is not a VIN, or reports it as valid. */
143
+ static validate(input) {
144
+ if (input == null || input.trim() === "") {
145
+ return invalidResult(
146
+ input,
147
+ ValidationErrorReason.InputIsEmpty,
148
+ "Input is empty or whitespace.",
149
+ "V\xE4rdet \xE4r tomt."
150
+ );
151
+ }
152
+ const cleaned = clean(input);
153
+ if (cleaned.length > MAX_INPUT_LENGTH) {
154
+ return invalidResult(
155
+ input,
156
+ ValidationErrorReason.InputTooLong,
157
+ "Input contains too many characters.",
158
+ "V\xE4rdet inneh\xE5ller f\xF6r m\xE5nga tecken."
159
+ );
160
+ }
161
+ if (cleaned.length !== 17) {
162
+ return invalidResult(
163
+ input,
164
+ ValidationErrorReason.InvalidLength,
165
+ "VIN must be exactly 17 characters.",
166
+ "VIN m\xE5ste vara exakt 17 tecken."
167
+ );
168
+ }
169
+ if (!VIN_PATTERN.test(cleaned)) {
170
+ return invalidResult(
171
+ input,
172
+ ValidationErrorReason.InvalidCharacters,
173
+ "VIN contains invalid characters (I, O, Q are not allowed).",
174
+ "VIN inneh\xE5ller ogiltiga tecken (I, O, Q \xE4r inte till\xE5tna)."
175
+ );
176
+ }
177
+ return validResult(input);
178
+ }
179
+ /** Finds VIN candidates in unstructured text. */
180
+ static findCandidatesInText(text) {
181
+ if (!text) return [];
182
+ const out = [];
183
+ const pattern = new RegExp(SCAN_PATTERN.source, SCAN_PATTERN.flags);
184
+ let match;
185
+ while ((match = pattern.exec(text)) !== null) {
186
+ const value = VehicleIdentificationNumber.tryParse(match[0]);
187
+ if (value === null) continue;
188
+ out.push(
189
+ new TextCandidate({
190
+ startIndex: match.index,
191
+ length: match[0].length,
192
+ originalText: text.slice(match.index, match.index + match[0].length),
193
+ typeName: "VehicleIdentificationNumber",
194
+ category: TextCandidateCategory.Vehicle,
195
+ normalizedForm: value.toNormalizedString(),
196
+ formattedForm: value.toString(),
197
+ maskedForm: maskVehicleIdentificationNumber(value),
198
+ confidence: value.hasValidCheckDigit ? TextMatchConfidence.High : TextMatchConfidence.Medium,
199
+ value
200
+ })
201
+ );
202
+ }
203
+ return out;
204
+ }
205
+ /** Returns the 17-character VIN in uppercase, e.g. `WBA3A5C55CF256789`. */
206
+ toNormalizedString() {
207
+ return this.value;
208
+ }
209
+ /** Returns the 17-character VIN in uppercase, e.g. `WBA3A5C55CF256789`. */
210
+ toString() {
211
+ return this.value;
212
+ }
213
+ equals(other) {
214
+ return other != null && this.value === other.value;
215
+ }
216
+ compareTo(other) {
217
+ if (other == null) return 1;
218
+ return this.value < other.value ? -1 : this.value > other.value ? 1 : 0;
219
+ }
220
+ }
221
+ function maskVehicleIdentificationNumber(vin) {
222
+ return vin.wmi + "*".repeat(vin.value.length - vin.wmi.length);
223
+ }
224
+ function hasValidCheckDigit(vin) {
225
+ let sum = 0;
226
+ for (let i = 0; i < 17; i++) {
227
+ const c = vin[i];
228
+ const value = c >= "0" && c <= "9" ? c.charCodeAt(0) - 48 : TRANSLITERATION[c];
229
+ if (value === void 0) return false;
230
+ sum += value * WEIGHTS[i];
231
+ }
232
+ const remainder = sum % 11;
233
+ return vin[8] === (remainder === 10 ? "X" : String(remainder));
234
+ }
235
+ function clean(input) {
236
+ if (input == null || input.trim().length === 0) return null;
237
+ return sanitizeInput(input).trim().toUpperCase().replaceAll(" ", "").replaceAll("-", "");
238
+ }
239
+ function fallback(input, options) {
240
+ if (options?.fallbackToTrimmedInputWhenInvalid !== true || input == null) return null;
241
+ const trimmed = input.trim();
242
+ return trimmed.length > 0 ? trimmed : null;
243
+ }
244
+ export {
245
+ VehicleIdentificationNumber,
246
+ maskVehicleIdentificationNumber
247
+ };
248
+ //# sourceMappingURL=vehicle-identification-number.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/vehicle/vehicle-identification-number.ts"],
4
+ "sourcesContent": ["import { sanitizeInput } from \"../internal/input-sanitization.js\";\nimport type { PrimitiveTypeInfo } from \"../primitive-type-info.js\";\nimport { TextCandidate } from \"../text-scanning/text-candidate.js\";\nimport { TextCandidateCategory } from \"../text-scanning/text-candidate-category.js\";\nimport { TextMatchConfidence } from \"../text-scanning/text-match-confidence.js\";\nimport { ValidationErrorReason } from \"../validation/validation-error-reason.js\";\nimport {\n invalidResult,\n validResult,\n type ValidationResult,\n} from \"../validation/validation-result.js\";\n\n/** Options for {@link VehicleIdentificationNumber.format} and `normalize`. */\nexport interface VehicleIdentificationNumberFormatOptions {\n fallbackToTrimmedInputWhenInvalid?: boolean;\n}\n\nconst MAX_INPUT_LENGTH = 30;\n\n// I, O and Q are excluded so they cannot be confused with 1 and 0.\nconst VIN_PATTERN = /^[A-HJ-NPR-Z0-9]{17}$/u;\nconst SCAN_PATTERN = /(?<![\\p{L}\\p{N}_])[A-HJ-NPR-Z0-9]{17}(?![\\p{L}\\p{N}_])/giu;\n\nconst WEIGHTS = [8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2];\n\nconst TRANSLITERATION: Readonly<Record<string, number>> = Object.freeze({\n A: 1,\n B: 2,\n C: 3,\n D: 4,\n E: 5,\n F: 6,\n G: 7,\n H: 8,\n J: 1,\n K: 2,\n L: 3,\n M: 4,\n N: 5,\n P: 7,\n R: 9,\n S: 2,\n T: 3,\n U: 4,\n V: 5,\n W: 6,\n X: 7,\n Y: 8,\n Z: 9,\n});\n\n// ISO 3779 / SAE J853 model year encoding; the cycle repeats every 30 years.\nconst MODEL_YEAR_MAP: Readonly<Record<string, readonly number[]>> = Object.freeze({\n A: [1980, 2010],\n B: [1981, 2011],\n C: [1982, 2012],\n D: [1983, 2013],\n E: [1984, 2014],\n F: [1985, 2015],\n G: [1986, 2016],\n H: [1987, 2017],\n J: [1988, 2018],\n K: [1989, 2019],\n L: [1990, 2020],\n M: [1991, 2021],\n N: [1992, 2022],\n P: [1993, 2023],\n R: [1994, 2024],\n S: [1995, 2025],\n T: [1996, 2026],\n V: [1997, 2027],\n W: [1998, 2028],\n X: [1999, 2029],\n Y: [2000, 2030],\n \"1\": [2001, 2031],\n \"2\": [2002, 2032],\n \"3\": [2003, 2033],\n \"4\": [2004, 2034],\n \"5\": [2005, 2035],\n \"6\": [2006, 2036],\n \"7\": [2007, 2037],\n \"8\": [2008, 2038],\n \"9\": [2009, 2039],\n});\n\n/**\n * A Vehicle Identification Number (VIN), also known as a chassis number\n * (`chassinummer`): the 17-character ISO 3779 code that uniquely identifies a motor\n * vehicle. Position 9 holds a MOD-11 check digit, mandatory in North America and\n * common but not universal in Europe.\n *\n * Sources:\n * - https://www.iso.org/standard/52200.html\n * - https://en.wikipedia.org/wiki/Vehicle_identification_number\n * - https://en.wikibooks.org/wiki/Vehicle_Identification_Numbers_(VIN_codes)/Check_digit\n */\nexport class VehicleIdentificationNumber {\n static readonly typeInfo: PrimitiveTypeInfo = Object.freeze({\n englishName: \"VIN\",\n localizedName: \"Chassinummer\",\n emoji: \"\uD83D\uDD27\",\n sources: Object.freeze([\n \"https://www.iso.org/standard/52200.html\",\n \"https://en.wikipedia.org/wiki/Vehicle_identification_number\",\n \"https://en.wikibooks.org/wiki/Vehicle_Identification_Numbers_(VIN_codes)/Check_digit\",\n ]),\n });\n\n /** The 17-character VIN in uppercase, e.g. `WBA3A5C55CF256789`. */\n readonly value: string;\n\n /** World Manufacturer Identifier \u2014 positions 1\u20133. */\n readonly wmi: string;\n\n /** Vehicle Descriptor Section \u2014 positions 4\u20138. */\n readonly vds: string;\n\n /** The check digit at position 9 (a digit or `X`). */\n readonly checkDigit: string;\n\n /** Vehicle Indicator Section \u2014 positions 10\u201317. */\n readonly vis: string;\n\n /** The model year code at position 10. */\n readonly modelYearCode: string;\n\n /** The model years the code at position 10 can encode, e.g. `M` means 1991 or 2021. */\n readonly modelYears: readonly number[];\n\n /** The assembly plant code at position 11. */\n readonly assemblyPlantCode: string;\n\n /** The sequential production number \u2014 positions 12\u201317. */\n readonly sequentialNumber: string;\n\n /** Whether position 9 passes the ISO 3779 MOD-11 check. */\n readonly hasValidCheckDigit: boolean;\n\n private constructor(value: string, hasValidCheckDigit: boolean) {\n this.value = value;\n this.wmi = value.slice(0, 3);\n this.vds = value.slice(3, 8);\n this.checkDigit = value[8]!;\n this.vis = value.slice(9);\n this.modelYearCode = value[9]!;\n this.assemblyPlantCode = value[10]!;\n this.sequentialNumber = value.slice(11);\n this.hasValidCheckDigit = hasValidCheckDigit;\n this.modelYears = MODEL_YEAR_MAP[this.modelYearCode] ?? [];\n }\n\n static tryParse(input: string | null | undefined): VehicleIdentificationNumber | null {\n const cleaned = clean(input);\n if (cleaned === null || cleaned.length !== 17 || !VIN_PATTERN.test(cleaned)) return null;\n return new VehicleIdentificationNumber(cleaned, hasValidCheckDigit(cleaned));\n }\n\n static parse(input: string): VehicleIdentificationNumber {\n const result = VehicleIdentificationNumber.tryParse(input);\n if (result === null) throw new Error(\"Invalid Vehicle Identification Number (VIN).\");\n return result;\n }\n\n static isValid(input: string | null | undefined): boolean {\n return VehicleIdentificationNumber.tryParse(input) !== null;\n }\n\n /** Returns the VIN in uppercase without separators, e.g. `WBA3A5C55CF256789`. */\n static format(\n input: string | null | undefined,\n options?: VehicleIdentificationNumberFormatOptions,\n ): string | null {\n const parsed = VehicleIdentificationNumber.tryParse(input);\n if (parsed !== null) return parsed.value;\n return fallback(input, options);\n }\n\n /** Returns the VIN in uppercase without separators, e.g. `WBA3A5C55CF256789`. */\n static normalize(\n input: string | null | undefined,\n options?: VehicleIdentificationNumberFormatOptions,\n ): string | null {\n const parsed = VehicleIdentificationNumber.tryParse(input);\n if (parsed !== null) return parsed.value;\n return fallback(input, options);\n }\n\n static isNormalized(input: string | null | undefined): boolean {\n return input != null && VehicleIdentificationNumber.normalize(input) === input;\n }\n\n /** Describes why the input is not a VIN, or reports it as valid. */\n static validate(input: string | null | undefined): ValidationResult {\n if (input == null || input.trim() === \"\") {\n return invalidResult(\n input,\n ValidationErrorReason.InputIsEmpty,\n \"Input is empty or whitespace.\",\n \"V\u00E4rdet \u00E4r tomt.\",\n );\n }\n\n const cleaned = clean(input)!;\n\n if (cleaned.length > MAX_INPUT_LENGTH) {\n return invalidResult(\n input,\n ValidationErrorReason.InputTooLong,\n \"Input contains too many characters.\",\n \"V\u00E4rdet inneh\u00E5ller f\u00F6r m\u00E5nga tecken.\",\n );\n }\n\n if (cleaned.length !== 17) {\n return invalidResult(\n input,\n ValidationErrorReason.InvalidLength,\n \"VIN must be exactly 17 characters.\",\n \"VIN m\u00E5ste vara exakt 17 tecken.\",\n );\n }\n\n if (!VIN_PATTERN.test(cleaned)) {\n return invalidResult(\n input,\n ValidationErrorReason.InvalidCharacters,\n \"VIN contains invalid characters (I, O, Q are not allowed).\",\n \"VIN inneh\u00E5ller ogiltiga tecken (I, O, Q \u00E4r inte till\u00E5tna).\",\n );\n }\n\n return validResult(input);\n }\n\n /** Finds VIN candidates in unstructured text. */\n static findCandidatesInText(text: string): readonly TextCandidate<VehicleIdentificationNumber>[] {\n if (!text) return [];\n\n const out: TextCandidate<VehicleIdentificationNumber>[] = [];\n const pattern = new RegExp(SCAN_PATTERN.source, SCAN_PATTERN.flags);\n let match: RegExpExecArray | null;\n\n while ((match = pattern.exec(text)) !== null) {\n const value = VehicleIdentificationNumber.tryParse(match[0]);\n if (value === null) continue;\n out.push(\n new TextCandidate<VehicleIdentificationNumber>({\n startIndex: match.index,\n length: match[0].length,\n originalText: text.slice(match.index, match.index + match[0].length),\n typeName: \"VehicleIdentificationNumber\",\n category: TextCandidateCategory.Vehicle,\n normalizedForm: value.toNormalizedString(),\n formattedForm: value.toString(),\n maskedForm: maskVehicleIdentificationNumber(value),\n confidence: value.hasValidCheckDigit\n ? TextMatchConfidence.High\n : TextMatchConfidence.Medium,\n value,\n }),\n );\n }\n\n return out;\n }\n\n /** Returns the 17-character VIN in uppercase, e.g. `WBA3A5C55CF256789`. */\n toNormalizedString(): string {\n return this.value;\n }\n\n /** Returns the 17-character VIN in uppercase, e.g. `WBA3A5C55CF256789`. */\n toString(): string {\n return this.value;\n }\n\n equals(other: VehicleIdentificationNumber | null | undefined): boolean {\n return other != null && this.value === other.value;\n }\n\n compareTo(other: VehicleIdentificationNumber | null | undefined): number {\n if (other == null) return 1;\n return this.value < other.value ? -1 : this.value > other.value ? 1 : 0;\n }\n}\n\n/** Returns a VIN with only the manufacturer prefix visible, e.g. `WBA**************`. */\nexport function maskVehicleIdentificationNumber(vin: VehicleIdentificationNumber): string {\n return vin.wmi + \"*\".repeat(vin.value.length - vin.wmi.length);\n}\n\nfunction hasValidCheckDigit(vin: string): boolean {\n let sum = 0;\n for (let i = 0; i < 17; i++) {\n const c = vin[i]!;\n const value = c >= \"0\" && c <= \"9\" ? c.charCodeAt(0) - 48 : TRANSLITERATION[c];\n if (value === undefined) return false;\n sum += value * WEIGHTS[i]!;\n }\n\n const remainder = sum % 11;\n return vin[8] === (remainder === 10 ? \"X\" : String(remainder));\n}\n\nfunction clean(input: string | null | undefined): string | null {\n if (input == null || input.trim().length === 0) return null;\n return sanitizeInput(input).trim().toUpperCase().replaceAll(\" \", \"\").replaceAll(\"-\", \"\");\n}\n\nfunction fallback(\n input: string | null | undefined,\n options?: VehicleIdentificationNumberFormatOptions,\n): string | null {\n if (options?.fallbackToTrimmedInputWhenInvalid !== true || input == null) return null;\n const trimmed = input.trim();\n return trimmed.length > 0 ? trimmed : null;\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["hasValidCheckDigit"]
7
+ }
@@ -0,0 +1,48 @@
1
+ const MASK_CHAR = "*";
2
+ function maskBoatCeDesignCategory(category) {
3
+ return MASK_CHAR.repeat(category.value.length);
4
+ }
5
+ function maskBoatHullMaterial(material) {
6
+ return MASK_CHAR.repeat(material.value.length);
7
+ }
8
+ function maskBodyType(bodyType) {
9
+ return MASK_CHAR.repeat(bodyType.value.length);
10
+ }
11
+ function maskDrivetrainType(drivetrain) {
12
+ return MASK_CHAR.repeat(drivetrain.value.length);
13
+ }
14
+ function maskFuelConsumptionNorm(norm) {
15
+ return MASK_CHAR.repeat(norm.value.length);
16
+ }
17
+ function maskSuspensionType(suspension) {
18
+ return maskExcept(suspension.value, " /");
19
+ }
20
+ function maskSwedishEcoVehicleClassification(classification) {
21
+ const value = classification.value;
22
+ const space = value.indexOf(" ");
23
+ if (space < 0) return MASK_CHAR.repeat(value.length);
24
+ return `${value.slice(0, space)} ${MASK_CHAR.repeat(value.length - space - 1)}`;
25
+ }
26
+ function maskTireType(tireType) {
27
+ return maskExcept(tireType.value, " ()-");
28
+ }
29
+ function maskTrackType(track) {
30
+ return maskExcept(track.value, " -");
31
+ }
32
+ function maskExcept(value, keep) {
33
+ let out = "";
34
+ for (const char of value) out += keep.includes(char) ? char : MASK_CHAR;
35
+ return out;
36
+ }
37
+ export {
38
+ maskBoatCeDesignCategory,
39
+ maskBoatHullMaterial,
40
+ maskBodyType,
41
+ maskDrivetrainType,
42
+ maskFuelConsumptionNorm,
43
+ maskSuspensionType,
44
+ maskSwedishEcoVehicleClassification,
45
+ maskTireType,
46
+ maskTrackType
47
+ };
48
+ //# sourceMappingURL=vehicle-masking.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/vehicle/vehicle-masking.ts"],
4
+ "sourcesContent": ["import { BoatCeDesignCategory } from \"./boat-ce-design-category.js\";\nimport { BoatHullMaterial } from \"./boat-hull-material.js\";\nimport { BodyType } from \"./body-type.js\";\nimport { DrivetrainType } from \"./drivetrain-type.js\";\nimport { FuelConsumptionNorm } from \"./fuel-consumption-norm.js\";\nimport { SuspensionType } from \"./suspension-type.js\";\nimport { SwedishEcoVehicleClassification } from \"./swedish-eco-vehicle-classification.js\";\nimport { TireType } from \"./tire-type.js\";\nimport { TrackType } from \"./track-type.js\";\n\nconst MASK_CHAR = \"*\";\n\n/** Mask a boat CE design category, e.g. `A` becomes `*`. */\nexport function maskBoatCeDesignCategory(category: BoatCeDesignCategory): string {\n return MASK_CHAR.repeat(category.value.length);\n}\n\n/** Mask a boat hull material, e.g. `Fiberglass` becomes `**********`. */\nexport function maskBoatHullMaterial(material: BoatHullMaterial): string {\n return MASK_CHAR.repeat(material.value.length);\n}\n\n/** Mask a body type, e.g. `Sedan` becomes `*****`. */\nexport function maskBodyType(bodyType: BodyType): string {\n return MASK_CHAR.repeat(bodyType.value.length);\n}\n\n/** Mask a drivetrain type, e.g. `AWD` becomes `***`. */\nexport function maskDrivetrainType(drivetrain: DrivetrainType): string {\n return MASK_CHAR.repeat(drivetrain.value.length);\n}\n\n/** Mask a fuel consumption norm, e.g. `WLTP` becomes `****`. */\nexport function maskFuelConsumptionNorm(norm: FuelConsumptionNorm): string {\n return MASK_CHAR.repeat(norm.value.length);\n}\n\n/**\n * Mask a suspension type, e.g. `Coil spring` becomes `**** ******`. Spaces and\n * slashes stay visible so the structure remains recognizable.\n */\nexport function maskSuspensionType(suspension: SuspensionType): string {\n return maskExcept(suspension.value, \" /\");\n}\n\n/**\n * Mask a Swedish eco-vehicle classification, keeping the leading word:\n * `Milj\u00F6bil 2013` becomes `Milj\u00F6bil ****`.\n */\nexport function maskSwedishEcoVehicleClassification(\n classification: SwedishEcoVehicleClassification,\n): string {\n const value = classification.value;\n const space = value.indexOf(\" \");\n if (space < 0) return MASK_CHAR.repeat(value.length);\n return `${value.slice(0, space)} ${MASK_CHAR.repeat(value.length - space - 1)}`;\n}\n\n/**\n * Mask a tire type, e.g. `Winter (studded)` becomes `****** (*******)`. Spaces,\n * parentheses and hyphens stay visible.\n */\nexport function maskTireType(tireType: TireType): string {\n return maskExcept(tireType.value, \" ()-\");\n}\n\n/** Mask a track type, e.g. `Half-track` becomes `****-*****`. Hyphens stay visible. */\nexport function maskTrackType(track: TrackType): string {\n return maskExcept(track.value, \" -\");\n}\n\nfunction maskExcept(value: string, keep: string): string {\n let out = \"\";\n for (const char of value) out += keep.includes(char) ? char : MASK_CHAR;\n return out;\n}\n"],
5
+ "mappings": "AAUA,MAAM,YAAY;AAGX,SAAS,yBAAyB,UAAwC;AAC/E,SAAO,UAAU,OAAO,SAAS,MAAM,MAAM;AAC/C;AAGO,SAAS,qBAAqB,UAAoC;AACvE,SAAO,UAAU,OAAO,SAAS,MAAM,MAAM;AAC/C;AAGO,SAAS,aAAa,UAA4B;AACvD,SAAO,UAAU,OAAO,SAAS,MAAM,MAAM;AAC/C;AAGO,SAAS,mBAAmB,YAAoC;AACrE,SAAO,UAAU,OAAO,WAAW,MAAM,MAAM;AACjD;AAGO,SAAS,wBAAwB,MAAmC;AACzE,SAAO,UAAU,OAAO,KAAK,MAAM,MAAM;AAC3C;AAMO,SAAS,mBAAmB,YAAoC;AACrE,SAAO,WAAW,WAAW,OAAO,IAAI;AAC1C;AAMO,SAAS,oCACd,gBACQ;AACR,QAAM,QAAQ,eAAe;AAC7B,QAAM,QAAQ,MAAM,QAAQ,GAAG;AAC/B,MAAI,QAAQ,EAAG,QAAO,UAAU,OAAO,MAAM,MAAM;AACnD,SAAO,GAAG,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,UAAU,OAAO,MAAM,SAAS,QAAQ,CAAC,CAAC;AAC/E;AAMO,SAAS,aAAa,UAA4B;AACvD,SAAO,WAAW,SAAS,OAAO,MAAM;AAC1C;AAGO,SAAS,cAAc,OAA0B;AACtD,SAAO,WAAW,MAAM,OAAO,IAAI;AACrC;AAEA,SAAS,WAAW,OAAe,MAAsB;AACvD,MAAI,MAAM;AACV,aAAW,QAAQ,MAAO,QAAO,KAAK,SAAS,IAAI,IAAI,OAAO;AAC9D,SAAO;AACT;",
6
+ "names": []
7
+ }
@@ -0,0 +1,163 @@
1
+ import { Decimal } from "../internal/decimal.js";
2
+ import { sanitizeInput } from "../internal/input-sanitization.js";
3
+ import { TextCandidate } from "../text-scanning/text-candidate.js";
4
+ import { TextCandidateCategory } from "../text-scanning/text-candidate-category.js";
5
+ import { TextMatchConfidence } from "../text-scanning/text-match-confidence.js";
6
+ const MIN_DIAMETER = Decimal.parse("10");
7
+ const MAX_DIAMETER = Decimal.parse("26");
8
+ const MIN_WIDTH = Decimal.parse("3");
9
+ const MAX_WIDTH = Decimal.parse("16");
10
+ const NORMAL_PATTERN = /^\s*(\d{2}(?:[.,]\d{1,2})?)\s*[x×]\s*(\d{1,2}(?:[.,]\d{1,2})?)\s*(JJ|JK|J|B|K|P|D)?\s*$/iu;
11
+ const REVERSED_PATTERN = /^\s*(\d{1,2}(?:[.,]\d{1,2})?)\s*(JJ|JK|J|B|K|P|D)?\s*[x×]\s*(\d{2}(?:[.,]\d{1,2})?)\s*$/iu;
12
+ const SCAN_PATTERN = /(?<![\p{L}\p{N}_])\d{1,2}(?:[.,]\d{1,2})?\s*(?:JJ|JK|J|B|K|P|D)?\s*[x×]\s*\d{1,2}(?:[.,]\d{1,2})?\s*(?:JJ|JK|J|B|K|P|D)?(?![\p{L}\p{N}_])/giu;
13
+ class WheelRimDimension {
14
+ static typeInfo = Object.freeze({
15
+ englishName: "Wheel Rim Dimension",
16
+ localizedName: "F\xE4lgdimension",
17
+ emoji: "\u2B55",
18
+ sources: Object.freeze([
19
+ "https://en.wikipedia.org/wiki/Wheel_sizing",
20
+ "https://www.etrto.org/"
21
+ ])
22
+ });
23
+ /** Normalized compact form, e.g. `18x7J`. */
24
+ value;
25
+ /** Flange type code, e.g. `J` or `JJ`, or an empty string when unspecified. */
26
+ flangeType;
27
+ exactDiameter;
28
+ exactWidth;
29
+ constructor(diameter, width, flangeType) {
30
+ this.exactDiameter = diameter;
31
+ this.exactWidth = width;
32
+ this.flangeType = flangeType;
33
+ this.value = build(diameter, width, flangeType, false);
34
+ }
35
+ /** Rim diameter in inches, e.g. `18`. */
36
+ get diameterInches() {
37
+ return this.exactDiameter.toNumber();
38
+ }
39
+ /** Rim width in inches, e.g. `7`. */
40
+ get widthInches() {
41
+ return this.exactWidth.toNumber();
42
+ }
43
+ static tryParse(input) {
44
+ if (input == null || input.trim().length === 0) return null;
45
+ const trimmed = sanitizeInput(input).trim();
46
+ let diameter;
47
+ let width;
48
+ let flange;
49
+ const normal = NORMAL_PATTERN.exec(trimmed);
50
+ if (normal !== null) {
51
+ diameter = decimalOf(normal[1]);
52
+ width = decimalOf(normal[2]);
53
+ flange = normal[3]?.toUpperCase() ?? "";
54
+ } else {
55
+ const reversed = REVERSED_PATTERN.exec(trimmed);
56
+ if (reversed === null) return null;
57
+ width = decimalOf(reversed[1]);
58
+ flange = reversed[2]?.toUpperCase() ?? "";
59
+ diameter = decimalOf(reversed[3]);
60
+ }
61
+ if (diameter === null || width === null) return null;
62
+ if (diameter.compareTo(MIN_DIAMETER) < 0 || diameter.compareTo(MAX_DIAMETER) > 0) return null;
63
+ if (width.compareTo(MIN_WIDTH) < 0 || width.compareTo(MAX_WIDTH) > 0) return null;
64
+ return new WheelRimDimension(diameter, width, flange);
65
+ }
66
+ static parse(input) {
67
+ const result = WheelRimDimension.tryParse(input);
68
+ if (result === null) throw new Error("Invalid wheel rim dimension.");
69
+ return result;
70
+ }
71
+ static isValid(input) {
72
+ return WheelRimDimension.tryParse(input) !== null;
73
+ }
74
+ /** Returns the spaced display form, e.g. `18 x 7 J`. */
75
+ static format(input, options) {
76
+ const parsed = WheelRimDimension.tryParse(input);
77
+ if (parsed !== null) return parsed.toString();
78
+ return fallback(input, options);
79
+ }
80
+ /** Returns the compact form, e.g. `18x7J`. */
81
+ static normalize(input, options) {
82
+ const parsed = WheelRimDimension.tryParse(input);
83
+ if (parsed !== null) return parsed.value;
84
+ return fallback(input, options);
85
+ }
86
+ static isNormalized(input) {
87
+ return input != null && WheelRimDimension.normalize(input) === input;
88
+ }
89
+ /** Finds wheel rim dimensions in unstructured text, e.g. `18x7J` or `7.5Jx17`. */
90
+ static findCandidatesInText(text) {
91
+ if (!text) return [];
92
+ const out = [];
93
+ const pattern = new RegExp(SCAN_PATTERN.source, SCAN_PATTERN.flags);
94
+ let match;
95
+ while ((match = pattern.exec(text)) !== null) {
96
+ const value = WheelRimDimension.tryParse(match[0]);
97
+ if (value === null) continue;
98
+ out.push(
99
+ new TextCandidate({
100
+ startIndex: match.index,
101
+ length: match[0].length,
102
+ originalText: match[0],
103
+ typeName: "WheelRimDimension",
104
+ category: TextCandidateCategory.Vehicle,
105
+ normalizedForm: value.toNormalizedString(),
106
+ formattedForm: value.toString(),
107
+ maskedForm: maskWheelRimDimension(value),
108
+ confidence: TextMatchConfidence.Medium,
109
+ value
110
+ })
111
+ );
112
+ }
113
+ return out;
114
+ }
115
+ /** Returns the compact form, e.g. `18x7J`. */
116
+ toNormalizedString() {
117
+ return this.value;
118
+ }
119
+ /** Returns the spaced display form, e.g. `18 x 7 J`. */
120
+ toString() {
121
+ return build(this.exactDiameter, this.exactWidth, this.flangeType, true);
122
+ }
123
+ equals(other) {
124
+ return other != null && this.exactDiameter.equals(other.exactDiameter) && this.exactWidth.equals(other.exactWidth) && this.flangeType === other.flangeType;
125
+ }
126
+ compareTo(other) {
127
+ if (other == null) return 1;
128
+ const byDiameter = this.exactDiameter.compareTo(other.exactDiameter);
129
+ if (byDiameter !== 0) return byDiameter;
130
+ const byWidth = this.exactWidth.compareTo(other.exactWidth);
131
+ if (byWidth !== 0) return byWidth;
132
+ return this.flangeType < other.flangeType ? -1 : this.flangeType > other.flangeType ? 1 : 0;
133
+ }
134
+ /** @internal Exposes the parsed scale, which masking mirrors star for star. */
135
+ get _exactParts() {
136
+ return { diameter: this.exactDiameter, width: this.exactWidth };
137
+ }
138
+ }
139
+ function maskWheelRimDimension(dimension) {
140
+ const { diameter, width } = dimension._exactParts;
141
+ const d = "*".repeat(diameter.toString().length);
142
+ const w = "*".repeat(width.toString().length);
143
+ return dimension.flangeType.length > 0 ? `${d} x ${w} ${dimension.flangeType}` : `${d} x ${w}`;
144
+ }
145
+ function build(diameter, width, flange, spaced) {
146
+ const d = diameter.toTrimmedString();
147
+ const w = width.toTrimmedString();
148
+ if (spaced) return flange.length > 0 ? `${d} x ${w} ${flange}` : `${d} x ${w}`;
149
+ return flange.length > 0 ? `${d}x${w}${flange}` : `${d}x${w}`;
150
+ }
151
+ function decimalOf(text) {
152
+ return Decimal.parse(text.replace(",", "."));
153
+ }
154
+ function fallback(input, options) {
155
+ if (options?.fallbackToTrimmedInputWhenInvalid !== true || input == null) return null;
156
+ const trimmed = input.trim();
157
+ return trimmed.length > 0 ? trimmed : null;
158
+ }
159
+ export {
160
+ WheelRimDimension,
161
+ maskWheelRimDimension
162
+ };
163
+ //# sourceMappingURL=wheel-rim-dimension.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/vehicle/wheel-rim-dimension.ts"],
4
+ "sourcesContent": ["import { Decimal } from \"../internal/decimal.js\";\nimport { sanitizeInput } from \"../internal/input-sanitization.js\";\nimport type { PrimitiveTypeInfo } from \"../primitive-type-info.js\";\nimport { TextCandidate } from \"../text-scanning/text-candidate.js\";\nimport { TextCandidateCategory } from \"../text-scanning/text-candidate-category.js\";\nimport { TextMatchConfidence } from \"../text-scanning/text-match-confidence.js\";\n\n/** Options for {@link WheelRimDimension.format} and {@link WheelRimDimension.normalize}. */\nexport interface WheelRimDimensionFormatOptions {\n fallbackToTrimmedInputWhenInvalid?: boolean;\n}\n\nconst MIN_DIAMETER = Decimal.parse(\"10\")!;\nconst MAX_DIAMETER = Decimal.parse(\"26\")!;\nconst MIN_WIDTH = Decimal.parse(\"3\")!;\nconst MAX_WIDTH = Decimal.parse(\"16\")!;\n\nconst NORMAL_PATTERN =\n /^\\s*(\\d{2}(?:[.,]\\d{1,2})?)\\s*[x\u00D7]\\s*(\\d{1,2}(?:[.,]\\d{1,2})?)\\s*(JJ|JK|J|B|K|P|D)?\\s*$/iu;\n\nconst REVERSED_PATTERN =\n /^\\s*(\\d{1,2}(?:[.,]\\d{1,2})?)\\s*(JJ|JK|J|B|K|P|D)?\\s*[x\u00D7]\\s*(\\d{2}(?:[.,]\\d{1,2})?)\\s*$/iu;\n\nconst SCAN_PATTERN =\n /(?<![\\p{L}\\p{N}_])\\d{1,2}(?:[.,]\\d{1,2})?\\s*(?:JJ|JK|J|B|K|P|D)?\\s*[x\u00D7]\\s*\\d{1,2}(?:[.,]\\d{1,2})?\\s*(?:JJ|JK|J|B|K|P|D)?(?![\\p{L}\\p{N}_])/giu;\n\n/**\n * Wheel rim size notation (`f\u00E4lgdimension`) such as `18x7J`: rim diameter in inches,\n * width in inches and an optional flange type. The reversed order used on many rims,\n * e.g. `7.5Jx17`, is accepted as well.\n *\n * Sources:\n * - https://en.wikipedia.org/wiki/Wheel_sizing\n * - https://www.etrto.org/\n */\nexport class WheelRimDimension {\n static readonly typeInfo: PrimitiveTypeInfo = Object.freeze({\n englishName: \"Wheel Rim Dimension\",\n localizedName: \"F\u00E4lgdimension\",\n emoji: \"\u2B55\",\n sources: Object.freeze([\n \"https://en.wikipedia.org/wiki/Wheel_sizing\",\n \"https://www.etrto.org/\",\n ]),\n });\n\n /** Normalized compact form, e.g. `18x7J`. */\n readonly value: string;\n\n /** Flange type code, e.g. `J` or `JJ`, or an empty string when unspecified. */\n readonly flangeType: string;\n\n private readonly exactDiameter: Decimal;\n private readonly exactWidth: Decimal;\n\n private constructor(diameter: Decimal, width: Decimal, flangeType: string) {\n this.exactDiameter = diameter;\n this.exactWidth = width;\n this.flangeType = flangeType;\n this.value = build(diameter, width, flangeType, false);\n }\n\n /** Rim diameter in inches, e.g. `18`. */\n get diameterInches(): number {\n return this.exactDiameter.toNumber();\n }\n\n /** Rim width in inches, e.g. `7`. */\n get widthInches(): number {\n return this.exactWidth.toNumber();\n }\n\n static tryParse(input: string | null | undefined): WheelRimDimension | null {\n if (input == null || input.trim().length === 0) return null;\n const trimmed = sanitizeInput(input).trim();\n\n let diameter: Decimal | null;\n let width: Decimal | null;\n let flange: string;\n\n const normal = NORMAL_PATTERN.exec(trimmed);\n if (normal !== null) {\n diameter = decimalOf(normal[1]!);\n width = decimalOf(normal[2]!);\n flange = normal[3]?.toUpperCase() ?? \"\";\n } else {\n const reversed = REVERSED_PATTERN.exec(trimmed);\n if (reversed === null) return null;\n width = decimalOf(reversed[1]!);\n flange = reversed[2]?.toUpperCase() ?? \"\";\n diameter = decimalOf(reversed[3]!);\n }\n\n if (diameter === null || width === null) return null;\n if (diameter.compareTo(MIN_DIAMETER) < 0 || diameter.compareTo(MAX_DIAMETER) > 0) return null;\n if (width.compareTo(MIN_WIDTH) < 0 || width.compareTo(MAX_WIDTH) > 0) return null;\n\n return new WheelRimDimension(diameter, width, flange);\n }\n\n static parse(input: string): WheelRimDimension {\n const result = WheelRimDimension.tryParse(input);\n if (result === null) throw new Error(\"Invalid wheel rim dimension.\");\n return result;\n }\n\n static isValid(input: string | null | undefined): boolean {\n return WheelRimDimension.tryParse(input) !== null;\n }\n\n /** Returns the spaced display form, e.g. `18 x 7 J`. */\n static format(\n input: string | null | undefined,\n options?: WheelRimDimensionFormatOptions,\n ): string | null {\n const parsed = WheelRimDimension.tryParse(input);\n if (parsed !== null) return parsed.toString();\n return fallback(input, options);\n }\n\n /** Returns the compact form, e.g. `18x7J`. */\n static normalize(\n input: string | null | undefined,\n options?: WheelRimDimensionFormatOptions,\n ): string | null {\n const parsed = WheelRimDimension.tryParse(input);\n if (parsed !== null) return parsed.value;\n return fallback(input, options);\n }\n\n static isNormalized(input: string | null | undefined): boolean {\n return input != null && WheelRimDimension.normalize(input) === input;\n }\n\n /** Finds wheel rim dimensions in unstructured text, e.g. `18x7J` or `7.5Jx17`. */\n static findCandidatesInText(text: string): readonly TextCandidate<WheelRimDimension>[] {\n if (!text) return [];\n\n const out: TextCandidate<WheelRimDimension>[] = [];\n const pattern = new RegExp(SCAN_PATTERN.source, SCAN_PATTERN.flags);\n let match: RegExpExecArray | null;\n\n while ((match = pattern.exec(text)) !== null) {\n const value = WheelRimDimension.tryParse(match[0]);\n if (value === null) continue;\n out.push(\n new TextCandidate<WheelRimDimension>({\n startIndex: match.index,\n length: match[0].length,\n originalText: match[0],\n typeName: \"WheelRimDimension\",\n category: TextCandidateCategory.Vehicle,\n normalizedForm: value.toNormalizedString(),\n formattedForm: value.toString(),\n maskedForm: maskWheelRimDimension(value),\n confidence: TextMatchConfidence.Medium,\n value,\n }),\n );\n }\n\n return out;\n }\n\n /** Returns the compact form, e.g. `18x7J`. */\n toNormalizedString(): string {\n return this.value;\n }\n\n /** Returns the spaced display form, e.g. `18 x 7 J`. */\n toString(): string {\n return build(this.exactDiameter, this.exactWidth, this.flangeType, true);\n }\n\n equals(other: WheelRimDimension | null | undefined): boolean {\n return (\n other != null &&\n this.exactDiameter.equals(other.exactDiameter) &&\n this.exactWidth.equals(other.exactWidth) &&\n this.flangeType === other.flangeType\n );\n }\n\n compareTo(other: WheelRimDimension | null | undefined): number {\n if (other == null) return 1;\n const byDiameter = this.exactDiameter.compareTo(other.exactDiameter);\n if (byDiameter !== 0) return byDiameter;\n const byWidth = this.exactWidth.compareTo(other.exactWidth);\n if (byWidth !== 0) return byWidth;\n return this.flangeType < other.flangeType ? -1 : this.flangeType > other.flangeType ? 1 : 0;\n }\n\n /** @internal Exposes the parsed scale, which masking mirrors star for star. */\n get _exactParts(): { diameter: Decimal; width: Decimal } {\n return { diameter: this.exactDiameter, width: this.exactWidth };\n }\n}\n\n/** Returns a masked rim dimension keeping the flange type, e.g. `18x7J` becomes `** x * J`. */\nexport function maskWheelRimDimension(dimension: WheelRimDimension): string {\n const { diameter, width } = dimension._exactParts;\n const d = \"*\".repeat(diameter.toString().length);\n const w = \"*\".repeat(width.toString().length);\n return dimension.flangeType.length > 0 ? `${d} x ${w} ${dimension.flangeType}` : `${d} x ${w}`;\n}\n\nfunction build(diameter: Decimal, width: Decimal, flange: string, spaced: boolean): string {\n const d = diameter.toTrimmedString();\n const w = width.toTrimmedString();\n if (spaced) return flange.length > 0 ? `${d} x ${w} ${flange}` : `${d} x ${w}`;\n return flange.length > 0 ? `${d}x${w}${flange}` : `${d}x${w}`;\n}\n\nfunction decimalOf(text: string): Decimal | null {\n return Decimal.parse(text.replace(\",\", \".\"));\n}\n\nfunction fallback(\n input: string | null | undefined,\n options?: WheelRimDimensionFormatOptions,\n): string | null {\n if (options?.fallbackToTrimmedInputWhenInvalid !== true || input == null) return null;\n const trimmed = input.trim();\n return trimmed.length > 0 ? trimmed : null;\n}\n"],
5
+ "mappings": "AAAA,SAAS,eAAe;AACxB,SAAS,qBAAqB;AAE9B,SAAS,qBAAqB;AAC9B,SAAS,6BAA6B;AACtC,SAAS,2BAA2B;AAOpC,MAAM,eAAe,QAAQ,MAAM,IAAI;AACvC,MAAM,eAAe,QAAQ,MAAM,IAAI;AACvC,MAAM,YAAY,QAAQ,MAAM,GAAG;AACnC,MAAM,YAAY,QAAQ,MAAM,IAAI;AAEpC,MAAM,iBACJ;AAEF,MAAM,mBACJ;AAEF,MAAM,eACJ;AAWK,MAAM,kBAAkB;AAAA,EAC7B,OAAgB,WAA8B,OAAO,OAAO;AAAA,IAC1D,aAAa;AAAA,IACb,eAAe;AAAA,IACf,OAAO;AAAA,IACP,SAAS,OAAO,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAAA;AAAA,EAGQ;AAAA;AAAA,EAGA;AAAA,EAEQ;AAAA,EACA;AAAA,EAET,YAAY,UAAmB,OAAgB,YAAoB;AACzE,SAAK,gBAAgB;AACrB,SAAK,aAAa;AAClB,SAAK,aAAa;AAClB,SAAK,QAAQ,MAAM,UAAU,OAAO,YAAY,KAAK;AAAA,EACvD;AAAA;AAAA,EAGA,IAAI,iBAAyB;AAC3B,WAAO,KAAK,cAAc,SAAS;AAAA,EACrC;AAAA;AAAA,EAGA,IAAI,cAAsB;AACxB,WAAO,KAAK,WAAW,SAAS;AAAA,EAClC;AAAA,EAEA,OAAO,SAAS,OAA4D;AAC1E,QAAI,SAAS,QAAQ,MAAM,KAAK,EAAE,WAAW,EAAG,QAAO;AACvD,UAAM,UAAU,cAAc,KAAK,EAAE,KAAK;AAE1C,QAAI;AACJ,QAAI;AACJ,QAAI;AAEJ,UAAM,SAAS,eAAe,KAAK,OAAO;AAC1C,QAAI,WAAW,MAAM;AACnB,iBAAW,UAAU,OAAO,CAAC,CAAE;AAC/B,cAAQ,UAAU,OAAO,CAAC,CAAE;AAC5B,eAAS,OAAO,CAAC,GAAG,YAAY,KAAK;AAAA,IACvC,OAAO;AACL,YAAM,WAAW,iBAAiB,KAAK,OAAO;AAC9C,UAAI,aAAa,KAAM,QAAO;AAC9B,cAAQ,UAAU,SAAS,CAAC,CAAE;AAC9B,eAAS,SAAS,CAAC,GAAG,YAAY,KAAK;AACvC,iBAAW,UAAU,SAAS,CAAC,CAAE;AAAA,IACnC;AAEA,QAAI,aAAa,QAAQ,UAAU,KAAM,QAAO;AAChD,QAAI,SAAS,UAAU,YAAY,IAAI,KAAK,SAAS,UAAU,YAAY,IAAI,EAAG,QAAO;AACzF,QAAI,MAAM,UAAU,SAAS,IAAI,KAAK,MAAM,UAAU,SAAS,IAAI,EAAG,QAAO;AAE7E,WAAO,IAAI,kBAAkB,UAAU,OAAO,MAAM;AAAA,EACtD;AAAA,EAEA,OAAO,MAAM,OAAkC;AAC7C,UAAM,SAAS,kBAAkB,SAAS,KAAK;AAC/C,QAAI,WAAW,KAAM,OAAM,IAAI,MAAM,8BAA8B;AACnE,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,QAAQ,OAA2C;AACxD,WAAO,kBAAkB,SAAS,KAAK,MAAM;AAAA,EAC/C;AAAA;AAAA,EAGA,OAAO,OACL,OACA,SACe;AACf,UAAM,SAAS,kBAAkB,SAAS,KAAK;AAC/C,QAAI,WAAW,KAAM,QAAO,OAAO,SAAS;AAC5C,WAAO,SAAS,OAAO,OAAO;AAAA,EAChC;AAAA;AAAA,EAGA,OAAO,UACL,OACA,SACe;AACf,UAAM,SAAS,kBAAkB,SAAS,KAAK;AAC/C,QAAI,WAAW,KAAM,QAAO,OAAO;AACnC,WAAO,SAAS,OAAO,OAAO;AAAA,EAChC;AAAA,EAEA,OAAO,aAAa,OAA2C;AAC7D,WAAO,SAAS,QAAQ,kBAAkB,UAAU,KAAK,MAAM;AAAA,EACjE;AAAA;AAAA,EAGA,OAAO,qBAAqB,MAA2D;AACrF,QAAI,CAAC,KAAM,QAAO,CAAC;AAEnB,UAAM,MAA0C,CAAC;AACjD,UAAM,UAAU,IAAI,OAAO,aAAa,QAAQ,aAAa,KAAK;AAClE,QAAI;AAEJ,YAAQ,QAAQ,QAAQ,KAAK,IAAI,OAAO,MAAM;AAC5C,YAAM,QAAQ,kBAAkB,SAAS,MAAM,CAAC,CAAC;AACjD,UAAI,UAAU,KAAM;AACpB,UAAI;AAAA,QACF,IAAI,cAAiC;AAAA,UACnC,YAAY,MAAM;AAAA,UAClB,QAAQ,MAAM,CAAC,EAAE;AAAA,UACjB,cAAc,MAAM,CAAC;AAAA,UACrB,UAAU;AAAA,UACV,UAAU,sBAAsB;AAAA,UAChC,gBAAgB,MAAM,mBAAmB;AAAA,UACzC,eAAe,MAAM,SAAS;AAAA,UAC9B,YAAY,sBAAsB,KAAK;AAAA,UACvC,YAAY,oBAAoB;AAAA,UAChC;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,qBAA6B;AAC3B,WAAO,KAAK;AAAA,EACd;AAAA;AAAA,EAGA,WAAmB;AACjB,WAAO,MAAM,KAAK,eAAe,KAAK,YAAY,KAAK,YAAY,IAAI;AAAA,EACzE;AAAA,EAEA,OAAO,OAAsD;AAC3D,WACE,SAAS,QACT,KAAK,cAAc,OAAO,MAAM,aAAa,KAC7C,KAAK,WAAW,OAAO,MAAM,UAAU,KACvC,KAAK,eAAe,MAAM;AAAA,EAE9B;AAAA,EAEA,UAAU,OAAqD;AAC7D,QAAI,SAAS,KAAM,QAAO;AAC1B,UAAM,aAAa,KAAK,cAAc,UAAU,MAAM,aAAa;AACnE,QAAI,eAAe,EAAG,QAAO;AAC7B,UAAM,UAAU,KAAK,WAAW,UAAU,MAAM,UAAU;AAC1D,QAAI,YAAY,EAAG,QAAO;AAC1B,WAAO,KAAK,aAAa,MAAM,aAAa,KAAK,KAAK,aAAa,MAAM,aAAa,IAAI;AAAA,EAC5F;AAAA;AAAA,EAGA,IAAI,cAAqD;AACvD,WAAO,EAAE,UAAU,KAAK,eAAe,OAAO,KAAK,WAAW;AAAA,EAChE;AACF;AAGO,SAAS,sBAAsB,WAAsC;AAC1E,QAAM,EAAE,UAAU,MAAM,IAAI,UAAU;AACtC,QAAM,IAAI,IAAI,OAAO,SAAS,SAAS,EAAE,MAAM;AAC/C,QAAM,IAAI,IAAI,OAAO,MAAM,SAAS,EAAE,MAAM;AAC5C,SAAO,UAAU,WAAW,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,UAAU,UAAU,KAAK,GAAG,CAAC,MAAM,CAAC;AAC9F;AAEA,SAAS,MAAM,UAAmB,OAAgB,QAAgB,QAAyB;AACzF,QAAM,IAAI,SAAS,gBAAgB;AACnC,QAAM,IAAI,MAAM,gBAAgB;AAChC,MAAI,OAAQ,QAAO,OAAO,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC;AAC5E,SAAO,OAAO,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC;AAC7D;AAEA,SAAS,UAAU,MAA8B;AAC/C,SAAO,QAAQ,MAAM,KAAK,QAAQ,KAAK,GAAG,CAAC;AAC7C;AAEA,SAAS,SACP,OACA,SACe;AACf,MAAI,SAAS,sCAAsC,QAAQ,SAAS,KAAM,QAAO;AACjF,QAAM,UAAU,MAAM,KAAK;AAC3B,SAAO,QAAQ,SAAS,IAAI,UAAU;AACxC;",
6
+ "names": []
7
+ }