@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.
- package/BREAKING_CHANGES.md +81 -0
- package/CHANGELOG.md +72 -1
- package/PARITY.md +202 -0
- package/README.md +58 -9
- package/dist/cjs/banking/bank-resolver.js +378 -0
- package/dist/cjs/banking/bank-resolver.js.map +7 -0
- package/dist/cjs/banking/bic.js +189 -0
- package/dist/cjs/banking/bic.js.map +7 -0
- package/dist/cjs/banking/iban.js +314 -0
- package/dist/cjs/banking/iban.js.map +7 -0
- package/dist/cjs/banking/index.js +60 -0
- package/dist/cjs/banking/index.js.map +7 -0
- package/dist/cjs/banking/swedish-bank-account-holder-name.js +124 -0
- package/dist/cjs/banking/swedish-bank-account-holder-name.js.map +7 -0
- package/dist/cjs/banking/swedish-bank-account.js +211 -0
- package/dist/cjs/banking/swedish-bank-account.js.map +7 -0
- package/dist/cjs/banking/swedish-bank-clearing-number.js +156 -0
- package/dist/cjs/banking/swedish-bank-clearing-number.js.map +7 -0
- package/dist/cjs/banking/swedish-bank.js +89 -0
- package/dist/cjs/banking/swedish-bank.js.map +7 -0
- package/dist/cjs/banking/swedish-bankgiro-number.js +176 -0
- package/dist/cjs/banking/swedish-bankgiro-number.js.map +7 -0
- package/dist/cjs/banking/swedish-banking-number.js +201 -0
- package/dist/cjs/banking/swedish-banking-number.js.map +7 -0
- package/dist/cjs/banking/swedish-ocr-reference-number.js +215 -0
- package/dist/cjs/banking/swedish-ocr-reference-number.js.map +7 -0
- package/dist/cjs/banking/swedish-postgiro-number.js +173 -0
- package/dist/cjs/banking/swedish-postgiro-number.js.map +7 -0
- package/dist/cjs/banking/swedish-swish-number.js +165 -0
- package/dist/cjs/banking/swedish-swish-number.js.map +7 -0
- package/dist/cjs/contact/address-city.js +104 -0
- package/dist/cjs/contact/address-city.js.map +7 -0
- package/dist/cjs/contact/address-street.js +220 -0
- package/dist/cjs/contact/address-street.js.map +7 -0
- package/dist/cjs/contact/address-zip-code.js +195 -0
- package/dist/cjs/contact/address-zip-code.js.map +7 -0
- package/dist/cjs/contact/address.js +405 -0
- package/dist/cjs/contact/address.js.map +7 -0
- package/dist/cjs/contact/contact-address.js +142 -0
- package/dist/cjs/contact/contact-address.js.map +7 -0
- package/dist/cjs/contact/contact-external-links.js +39 -0
- package/dist/cjs/contact/contact-external-links.js.map +7 -0
- package/dist/cjs/contact/contact-lookup.js +31 -0
- package/dist/cjs/contact/contact-lookup.js.map +7 -0
- package/dist/cjs/contact/contact-masking.js +117 -0
- package/dist/cjs/contact/contact-masking.js.map +7 -0
- package/dist/cjs/contact/country-address-factory.js +97 -0
- package/dist/cjs/contact/country-address-factory.js.map +7 -0
- package/dist/cjs/contact/country-address-registry.js +36 -0
- package/dist/cjs/contact/country-address-registry.js.map +7 -0
- package/dist/cjs/contact/country-address.js +98 -0
- package/dist/cjs/contact/country-address.js.map +7 -0
- package/dist/cjs/contact/country-addresses.js +346 -0
- package/dist/cjs/contact/country-addresses.js.map +7 -0
- package/dist/cjs/contact/country-zip-code-factory.js +117 -0
- package/dist/cjs/contact/country-zip-code-factory.js.map +7 -0
- package/dist/cjs/contact/country-zip-codes.js +376 -0
- package/dist/cjs/contact/country-zip-codes.js.map +7 -0
- package/dist/cjs/contact/index.js +72 -0
- package/dist/cjs/contact/index.js.map +7 -0
- package/dist/cjs/contact/phone-calling-code.js +439 -0
- package/dist/cjs/contact/phone-calling-code.js.map +7 -0
- package/dist/cjs/contact/phone-number-test-data.js +63 -0
- package/dist/cjs/contact/phone-number-test-data.js.map +7 -0
- package/dist/cjs/contact/phone-number.js +325 -0
- package/dist/cjs/contact/phone-number.js.map +7 -0
- package/dist/cjs/contact/register-default-country-addresses.js +88 -0
- package/dist/cjs/contact/register-default-country-addresses.js.map +7 -0
- package/dist/cjs/contact/swedish-address-zip-code.js +92 -0
- package/dist/cjs/contact/swedish-address-zip-code.js.map +7 -0
- package/dist/cjs/contact/swedish-address.js +169 -0
- package/dist/cjs/contact/swedish-address.js.map +7 -0
- package/dist/cjs/finance/currency.js +251 -0
- package/dist/cjs/finance/currency.js.map +7 -0
- package/dist/cjs/finance/exchange-rates.js +51 -0
- package/dist/cjs/finance/exchange-rates.js.map +7 -0
- package/dist/cjs/finance/index.js +34 -0
- package/dist/cjs/finance/index.js.map +7 -0
- package/dist/cjs/finance/isin.js +161 -0
- package/dist/cjs/finance/isin.js.map +7 -0
- package/dist/cjs/finance/money-amount.js +307 -0
- package/dist/cjs/finance/money-amount.js.map +7 -0
- package/dist/cjs/geography/adjacency-data.js +335 -0
- package/dist/cjs/geography/adjacency-data.js.map +7 -0
- package/dist/cjs/geography/continent.js +125 -0
- package/dist/cjs/geography/continent.js.map +7 -0
- package/dist/cjs/geography/country-capital.js +45 -0
- package/dist/cjs/geography/country-capital.js.map +7 -0
- package/dist/cjs/geography/country-capitals.js +288 -0
- package/dist/cjs/geography/country-capitals.js.map +7 -0
- package/dist/cjs/geography/country-coordinates.js +238 -0
- package/dist/cjs/geography/country-coordinates.js.map +7 -0
- package/dist/cjs/geography/country-data.js +530 -0
- package/dist/cjs/geography/country-data.js.map +7 -0
- package/dist/cjs/geography/country-metadata.js +627 -0
- package/dist/cjs/geography/country-metadata.js.map +7 -0
- package/dist/cjs/geography/country.js +427 -0
- package/dist/cjs/geography/country.js.map +7 -0
- package/dist/cjs/geography/geo-coordinate.js +244 -0
- package/dist/cjs/geography/geo-coordinate.js.map +7 -0
- package/dist/cjs/geography/geography-extensions.js +82 -0
- package/dist/cjs/geography/geography-extensions.js.map +7 -0
- package/dist/cjs/geography/geography-external-links.js +52 -0
- package/dist/cjs/geography/geography-external-links.js.map +7 -0
- package/dist/cjs/geography/geography-lookup.js +31 -0
- package/dist/cjs/geography/geography-lookup.js.map +7 -0
- package/dist/cjs/geography/geography-masking.js +54 -0
- package/dist/cjs/geography/geography-masking.js.map +7 -0
- package/dist/cjs/geography/index.js +57 -0
- package/dist/cjs/geography/index.js.map +7 -0
- package/dist/cjs/geography/language.js +462 -0
- package/dist/cjs/geography/language.js.map +7 -0
- package/dist/cjs/geography/swedish-county.js +232 -0
- package/dist/cjs/geography/swedish-county.js.map +7 -0
- package/dist/cjs/geography/swedish-municipality-data.js +316 -0
- package/dist/cjs/geography/swedish-municipality-data.js.map +7 -0
- package/dist/cjs/geography/swedish-municipality.js +218 -0
- package/dist/cjs/geography/swedish-municipality.js.map +7 -0
- package/dist/cjs/index.js +33 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/internal/case-folding.js +32 -0
- package/dist/cjs/internal/case-folding.js.map +7 -0
- package/dist/cjs/internal/clock.js +32 -0
- package/dist/cjs/internal/clock.js.map +7 -0
- package/dist/cjs/internal/decimal.js +262 -0
- package/dist/cjs/internal/decimal.js.map +7 -0
- package/dist/cjs/internal/gs1-prefix.js +164 -0
- package/dist/cjs/internal/gs1-prefix.js.map +7 -0
- package/dist/cjs/internal/gtin-check-digit.js +46 -0
- package/dist/cjs/internal/gtin-check-digit.js.map +7 -0
- package/dist/cjs/internal/input-sanitization.js +79 -0
- package/dist/cjs/internal/input-sanitization.js.map +7 -0
- package/dist/cjs/internal/luhn.js +40 -0
- package/dist/cjs/internal/luhn.js.map +7 -0
- package/dist/cjs/internal/measurement-unit-parser.js +86 -0
- package/dist/cjs/internal/measurement-unit-parser.js.map +7 -0
- package/dist/cjs/internal/measurement-unit.js +130 -0
- package/dist/cjs/internal/measurement-unit.js.map +7 -0
- package/dist/cjs/internal/quantity.js +122 -0
- package/dist/cjs/internal/quantity.js.map +7 -0
- package/dist/cjs/internal/shoe-size-format.js +31 -0
- package/dist/cjs/internal/shoe-size-format.js.map +7 -0
- package/dist/cjs/measurement/area-unit.js +158 -0
- package/dist/cjs/measurement/area-unit.js.map +7 -0
- package/dist/cjs/measurement/area.js +183 -0
- package/dist/cjs/measurement/area.js.map +7 -0
- package/dist/cjs/measurement/count.js +132 -0
- package/dist/cjs/measurement/count.js.map +7 -0
- package/dist/cjs/measurement/data-size-unit.js +208 -0
- package/dist/cjs/measurement/data-size-unit.js.map +7 -0
- package/dist/cjs/measurement/data-size.js +207 -0
- package/dist/cjs/measurement/data-size.js.map +7 -0
- package/dist/cjs/measurement/electric-charge-unit.js +109 -0
- package/dist/cjs/measurement/electric-charge-unit.js.map +7 -0
- package/dist/cjs/measurement/electric-charge.js +148 -0
- package/dist/cjs/measurement/electric-charge.js.map +7 -0
- package/dist/cjs/measurement/electric-current-unit.js +108 -0
- package/dist/cjs/measurement/electric-current-unit.js.map +7 -0
- package/dist/cjs/measurement/electric-current.js +154 -0
- package/dist/cjs/measurement/electric-current.js.map +7 -0
- package/dist/cjs/measurement/energy-unit.js +201 -0
- package/dist/cjs/measurement/energy-unit.js.map +7 -0
- package/dist/cjs/measurement/energy.js +207 -0
- package/dist/cjs/measurement/energy.js.map +7 -0
- package/dist/cjs/measurement/flow-rate-unit.js +132 -0
- package/dist/cjs/measurement/flow-rate-unit.js.map +7 -0
- package/dist/cjs/measurement/flow-rate.js +162 -0
- package/dist/cjs/measurement/flow-rate.js.map +7 -0
- package/dist/cjs/measurement/frequency-unit.js +132 -0
- package/dist/cjs/measurement/frequency-unit.js.map +7 -0
- package/dist/cjs/measurement/frequency.js +165 -0
- package/dist/cjs/measurement/frequency.js.map +7 -0
- package/dist/cjs/measurement/index.js +136 -0
- package/dist/cjs/measurement/index.js.map +7 -0
- package/dist/cjs/measurement/length-unit.js +210 -0
- package/dist/cjs/measurement/length-unit.js.map +7 -0
- package/dist/cjs/measurement/length.js +208 -0
- package/dist/cjs/measurement/length.js.map +7 -0
- package/dist/cjs/measurement/luminance-unit.js +110 -0
- package/dist/cjs/measurement/luminance-unit.js.map +7 -0
- package/dist/cjs/measurement/luminance.js +158 -0
- package/dist/cjs/measurement/luminance.js.map +7 -0
- package/dist/cjs/measurement/luminous-flux-unit.js +86 -0
- package/dist/cjs/measurement/luminous-flux-unit.js.map +7 -0
- package/dist/cjs/measurement/luminous-flux.js +139 -0
- package/dist/cjs/measurement/luminous-flux.js.map +7 -0
- package/dist/cjs/measurement/percentage.js +212 -0
- package/dist/cjs/measurement/percentage.js.map +7 -0
- package/dist/cjs/measurement/power-unit.js +155 -0
- package/dist/cjs/measurement/power-unit.js.map +7 -0
- package/dist/cjs/measurement/power.js +184 -0
- package/dist/cjs/measurement/power.js.map +7 -0
- package/dist/cjs/measurement/pressure-unit.js +168 -0
- package/dist/cjs/measurement/pressure-unit.js.map +7 -0
- package/dist/cjs/measurement/pressure.js +189 -0
- package/dist/cjs/measurement/pressure.js.map +7 -0
- package/dist/cjs/measurement/rotational-speed-unit.js +96 -0
- package/dist/cjs/measurement/rotational-speed-unit.js.map +7 -0
- package/dist/cjs/measurement/rotational-speed.js +152 -0
- package/dist/cjs/measurement/rotational-speed.js.map +7 -0
- package/dist/cjs/measurement/sound-level.js +185 -0
- package/dist/cjs/measurement/sound-level.js.map +7 -0
- package/dist/cjs/measurement/speed-unit.js +119 -0
- package/dist/cjs/measurement/speed-unit.js.map +7 -0
- package/dist/cjs/measurement/speed.js +159 -0
- package/dist/cjs/measurement/speed.js.map +7 -0
- package/dist/cjs/measurement/temperature-delta.js +101 -0
- package/dist/cjs/measurement/temperature-delta.js.map +7 -0
- package/dist/cjs/measurement/temperature-unit.js +130 -0
- package/dist/cjs/measurement/temperature-unit.js.map +7 -0
- package/dist/cjs/measurement/temperature.js +216 -0
- package/dist/cjs/measurement/temperature.js.map +7 -0
- package/dist/cjs/measurement/torque-unit.js +138 -0
- package/dist/cjs/measurement/torque-unit.js.map +7 -0
- package/dist/cjs/measurement/torque.js +165 -0
- package/dist/cjs/measurement/torque.js.map +7 -0
- package/dist/cjs/measurement/voltage-unit.js +127 -0
- package/dist/cjs/measurement/voltage-unit.js.map +7 -0
- package/dist/cjs/measurement/voltage.js +159 -0
- package/dist/cjs/measurement/voltage.js.map +7 -0
- package/dist/cjs/measurement/volume-unit.js +178 -0
- package/dist/cjs/measurement/volume-unit.js.map +7 -0
- package/dist/cjs/measurement/volume.js +195 -0
- package/dist/cjs/measurement/volume.js.map +7 -0
- package/dist/cjs/measurement/weight-unit.js +158 -0
- package/dist/cjs/measurement/weight-unit.js.map +7 -0
- package/dist/cjs/measurement/weight.js +183 -0
- package/dist/cjs/measurement/weight.js.map +7 -0
- package/dist/cjs/measurement/year-month.js +204 -0
- package/dist/cjs/measurement/year-month.js.map +7 -0
- package/dist/cjs/measurement/year.js +109 -0
- package/dist/cjs/measurement/year.js.map +7 -0
- package/dist/cjs/organization/duns-number.js +114 -0
- package/dist/cjs/organization/duns-number.js.map +7 -0
- package/dist/cjs/organization/elf-code.js +132 -0
- package/dist/cjs/organization/elf-code.js.map +7 -0
- package/dist/cjs/organization/eu-organization-name.js +119 -0
- package/dist/cjs/organization/eu-organization-name.js.map +7 -0
- package/dist/cjs/organization/eu-vat-number.js +444 -0
- package/dist/cjs/organization/eu-vat-number.js.map +7 -0
- package/dist/cjs/organization/index.js +65 -0
- package/dist/cjs/organization/index.js.map +7 -0
- package/dist/cjs/organization/lei-code.js +133 -0
- package/dist/cjs/organization/lei-code.js.map +7 -0
- package/dist/cjs/organization/organization-extensions.js +80 -0
- package/dist/cjs/organization/organization-extensions.js.map +7 -0
- package/dist/cjs/organization/organization-validation-utils.js +78 -0
- package/dist/cjs/organization/organization-validation-utils.js.map +7 -0
- package/dist/cjs/organization/swedish-cfar-number.js +88 -0
- package/dist/cjs/organization/swedish-cfar-number.js.map +7 -0
- package/dist/cjs/organization/swedish-organization-identifier-type.js +34 -0
- package/dist/cjs/organization/swedish-organization-identifier-type.js.map +7 -0
- package/dist/cjs/organization/swedish-organization-identifier.js +166 -0
- package/dist/cjs/organization/swedish-organization-identifier.js.map +7 -0
- package/dist/cjs/organization/swedish-organization-name.js +255 -0
- package/dist/cjs/organization/swedish-organization-name.js.map +7 -0
- package/dist/cjs/organization/swedish-organization-number.js +289 -0
- package/dist/cjs/organization/swedish-organization-number.js.map +7 -0
- package/dist/cjs/organization/swedish-organization-type.js +51 -0
- package/dist/cjs/organization/swedish-organization-type.js.map +7 -0
- package/dist/cjs/organization/swedish-sni-code.js +96 -0
- package/dist/cjs/organization/swedish-sni-code.js.map +7 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/person/index.js +49 -0
- package/dist/cjs/person/index.js.map +7 -0
- package/dist/cjs/person/person-age.js +187 -0
- package/dist/cjs/person/person-age.js.map +7 -0
- package/dist/cjs/person/person-family-name.js +83 -0
- package/dist/cjs/person/person-family-name.js.map +7 -0
- package/dist/cjs/person/person-full-name.js +106 -0
- package/dist/cjs/person/person-full-name.js.map +7 -0
- package/dist/cjs/person/person-given-name.js +103 -0
- package/dist/cjs/person/person-given-name.js.map +7 -0
- package/dist/cjs/person/person-masking.js +48 -0
- package/dist/cjs/person/person-masking.js.map +7 -0
- package/dist/cjs/person/person-name-normalization.js +99 -0
- package/dist/cjs/person/person-name-normalization.js.map +7 -0
- package/dist/cjs/person/personnummer-parser.js +156 -0
- package/dist/cjs/person/personnummer-parser.js.map +7 -0
- package/dist/cjs/person/swedish-coordination-number.js +186 -0
- package/dist/cjs/person/swedish-coordination-number.js.map +7 -0
- package/dist/cjs/person/swedish-personal-identity-number.js +188 -0
- package/dist/cjs/person/swedish-personal-identity-number.js.map +7 -0
- package/dist/cjs/primitive-type-info.js +17 -0
- package/dist/cjs/primitive-type-info.js.map +7 -0
- package/dist/cjs/primitives-defaults.js +92 -0
- package/dist/cjs/primitives-defaults.js.map +7 -0
- package/dist/cjs/product/adult-clothing-size.js +148 -0
- package/dist/cjs/product/adult-clothing-size.js.map +7 -0
- package/dist/cjs/product/adult-shoe-size.js +139 -0
- package/dist/cjs/product/adult-shoe-size.js.map +7 -0
- package/dist/cjs/product/aspect-ratio.js +188 -0
- package/dist/cjs/product/aspect-ratio.js.map +7 -0
- package/dist/cjs/product/battery-capacity.js +184 -0
- package/dist/cjs/product/battery-capacity.js.map +7 -0
- package/dist/cjs/product/battery-chemistry.js +259 -0
- package/dist/cjs/product/battery-chemistry.js.map +7 -0
- package/dist/cjs/product/camera-resolution.js +161 -0
- package/dist/cjs/product/camera-resolution.js.map +7 -0
- package/dist/cjs/product/child-clothing-size.js +254 -0
- package/dist/cjs/product/child-clothing-size.js.map +7 -0
- package/dist/cjs/product/child-shoe-size.js +200 -0
- package/dist/cjs/product/child-shoe-size.js.map +7 -0
- package/dist/cjs/product/clothing-fit.js +223 -0
- package/dist/cjs/product/clothing-fit.js.map +7 -0
- package/dist/cjs/product/clothing-gender.js +198 -0
- package/dist/cjs/product/clothing-gender.js.map +7 -0
- package/dist/cjs/product/clothing-season.js +202 -0
- package/dist/cjs/product/clothing-season.js.map +7 -0
- package/dist/cjs/product/clothing-size-system.js +31 -0
- package/dist/cjs/product/clothing-size-system.js.map +7 -0
- package/dist/cjs/product/clothing-size.js +146 -0
- package/dist/cjs/product/clothing-size.js.map +7 -0
- package/dist/cjs/product/color.js +334 -0
- package/dist/cjs/product/color.js.map +7 -0
- package/dist/cjs/product/display-panel-type.js +287 -0
- package/dist/cjs/product/display-panel-type.js.map +7 -0
- package/dist/cjs/product/electrical-phase.js +194 -0
- package/dist/cjs/product/electrical-phase.js.map +7 -0
- package/dist/cjs/product/energy-scale.js +31 -0
- package/dist/cjs/product/energy-scale.js.map +7 -0
- package/dist/cjs/product/eu-energy-efficiency-class.js +135 -0
- package/dist/cjs/product/eu-energy-efficiency-class.js.map +7 -0
- package/dist/cjs/product/google-product-category.js +114 -0
- package/dist/cjs/product/google-product-category.js.map +7 -0
- package/dist/cjs/product/gtin.js +99 -0
- package/dist/cjs/product/gtin.js.map +7 -0
- package/dist/cjs/product/gtin12.js +130 -0
- package/dist/cjs/product/gtin12.js.map +7 -0
- package/dist/cjs/product/gtin13.js +147 -0
- package/dist/cjs/product/gtin13.js.map +7 -0
- package/dist/cjs/product/gtin14.js +135 -0
- package/dist/cjs/product/gtin14.js.map +7 -0
- package/dist/cjs/product/gtin8.js +130 -0
- package/dist/cjs/product/gtin8.js.map +7 -0
- package/dist/cjs/product/hs-code-level.js +32 -0
- package/dist/cjs/product/hs-code-level.js.map +7 -0
- package/dist/cjs/product/hs-code.js +126 -0
- package/dist/cjs/product/hs-code.js.map +7 -0
- package/dist/cjs/product/index.js +128 -0
- package/dist/cjs/product/index.js.map +7 -0
- package/dist/cjs/product/ip-rating.js +166 -0
- package/dist/cjs/product/ip-rating.js.map +7 -0
- package/dist/cjs/product/operating-system-family.js +37 -0
- package/dist/cjs/product/operating-system-family.js.map +7 -0
- package/dist/cjs/product/operating-system-info.js +100 -0
- package/dist/cjs/product/operating-system-info.js.map +7 -0
- package/dist/cjs/product/operating-system-name.js +127 -0
- package/dist/cjs/product/operating-system-name.js.map +7 -0
- package/dist/cjs/product/operating-system-version.js +110 -0
- package/dist/cjs/product/operating-system-version.js.map +7 -0
- package/dist/cjs/product/power-source.js +318 -0
- package/dist/cjs/product/power-source.js.map +7 -0
- package/dist/cjs/product/processor-speed.js +159 -0
- package/dist/cjs/product/processor-speed.js.map +7 -0
- package/dist/cjs/product/product-extensions.js +27 -0
- package/dist/cjs/product/product-extensions.js.map +7 -0
- package/dist/cjs/product/product-masking.js +102 -0
- package/dist/cjs/product/product-masking.js.map +7 -0
- package/dist/cjs/product/ram-capacity.js +154 -0
- package/dist/cjs/product/ram-capacity.js.map +7 -0
- package/dist/cjs/product/refrigerant-family.js +40 -0
- package/dist/cjs/product/refrigerant-family.js.map +7 -0
- package/dist/cjs/product/refrigerant.js +419 -0
- package/dist/cjs/product/refrigerant.js.map +7 -0
- package/dist/cjs/product/screen-resolution.js +197 -0
- package/dist/cjs/product/screen-resolution.js.map +7 -0
- package/dist/cjs/product/screen-size.js +184 -0
- package/dist/cjs/product/screen-size.js.map +7 -0
- package/dist/cjs/product/shoe-size-system.js +31 -0
- package/dist/cjs/product/shoe-size-system.js.map +7 -0
- package/dist/cjs/product/shoe-size.js +138 -0
- package/dist/cjs/product/shoe-size.js.map +7 -0
- package/dist/cjs/product/storage-capacity.js +159 -0
- package/dist/cjs/product/storage-capacity.js.map +7 -0
- package/dist/cjs/product/storage-media-type.js +271 -0
- package/dist/cjs/product/storage-media-type.js.map +7 -0
- package/dist/cjs/property/index.js +31 -0
- package/dist/cjs/property/index.js.map +7 -0
- package/dist/cjs/property/swedish-property-designation.js +179 -0
- package/dist/cjs/property/swedish-property-designation.js.map +7 -0
- package/dist/cjs/property/swedish-property-taxation-code.js +218 -0
- package/dist/cjs/property/swedish-property-taxation-code.js.map +7 -0
- package/dist/cjs/register-default-text-scanners.js +290 -0
- package/dist/cjs/register-default-text-scanners.js.map +7 -0
- package/dist/cjs/sample-data/index.js +358 -0
- package/dist/cjs/sample-data/index.js.map +7 -0
- package/dist/cjs/text-scanning/index.js +38 -0
- package/dist/cjs/text-scanning/index.js.map +7 -0
- package/dist/cjs/text-scanning/text-candidate-category.js +35 -0
- package/dist/cjs/text-scanning/text-candidate-category.js.map +7 -0
- package/dist/cjs/text-scanning/text-candidate.js +75 -0
- package/dist/cjs/text-scanning/text-candidate.js.map +7 -0
- package/dist/cjs/text-scanning/text-match-confidence.js +43 -0
- package/dist/cjs/text-scanning/text-match-confidence.js.map +7 -0
- package/dist/cjs/text-scanning/text-scan-helpers.js +98 -0
- package/dist/cjs/text-scanning/text-scan-helpers.js.map +7 -0
- package/dist/cjs/text-scanning/text-scan-result.js +333 -0
- package/dist/cjs/text-scanning/text-scan-result.js.map +7 -0
- package/dist/cjs/text-scanning/text-scanner-options.js +29 -0
- package/dist/cjs/text-scanning/text-scanner-options.js.map +7 -0
- package/dist/cjs/text-scanning/text-scanner.js +60 -0
- package/dist/cjs/text-scanning/text-scanner.js.map +7 -0
- package/dist/cjs/validation/index.js +29 -0
- package/dist/cjs/validation/index.js.map +7 -0
- package/dist/cjs/validation/validation-error-reason.js +53 -0
- package/dist/cjs/validation/validation-error-reason.js.map +7 -0
- package/dist/cjs/validation/validation-issue.js +43 -0
- package/dist/cjs/validation/validation-issue.js.map +7 -0
- package/dist/cjs/validation/validation-result.js +52 -0
- package/dist/cjs/validation/validation-result.js.map +7 -0
- package/dist/cjs/vehicle/boat-ce-design-category.js +200 -0
- package/dist/cjs/vehicle/boat-ce-design-category.js.map +7 -0
- package/dist/cjs/vehicle/boat-hull-material.js +222 -0
- package/dist/cjs/vehicle/boat-hull-material.js.map +7 -0
- package/dist/cjs/vehicle/body-type.js +325 -0
- package/dist/cjs/vehicle/body-type.js.map +7 -0
- package/dist/cjs/vehicle/bolt-pattern.js +150 -0
- package/dist/cjs/vehicle/bolt-pattern.js.map +7 -0
- package/dist/cjs/vehicle/drivetrain-type.js +200 -0
- package/dist/cjs/vehicle/drivetrain-type.js.map +7 -0
- package/dist/cjs/vehicle/emission-rate.js +194 -0
- package/dist/cjs/vehicle/emission-rate.js.map +7 -0
- package/dist/cjs/vehicle/energy-consumption.js +250 -0
- package/dist/cjs/vehicle/energy-consumption.js.map +7 -0
- package/dist/cjs/vehicle/engine-displacement.js +169 -0
- package/dist/cjs/vehicle/engine-displacement.js.map +7 -0
- package/dist/cjs/vehicle/engine-power.js +211 -0
- package/dist/cjs/vehicle/engine-power.js.map +7 -0
- package/dist/cjs/vehicle/eu-type-approval-number.js +196 -0
- package/dist/cjs/vehicle/eu-type-approval-number.js.map +7 -0
- package/dist/cjs/vehicle/eu-vehicle-category.js +167 -0
- package/dist/cjs/vehicle/eu-vehicle-category.js.map +7 -0
- package/dist/cjs/vehicle/euro-emission-class.js +313 -0
- package/dist/cjs/vehicle/euro-emission-class.js.map +7 -0
- package/dist/cjs/vehicle/fuel-consumption-norm.js +206 -0
- package/dist/cjs/vehicle/fuel-consumption-norm.js.map +7 -0
- package/dist/cjs/vehicle/fuel-consumption.js +281 -0
- package/dist/cjs/vehicle/fuel-consumption.js.map +7 -0
- package/dist/cjs/vehicle/fuel-type.js +288 -0
- package/dist/cjs/vehicle/fuel-type.js.map +7 -0
- package/dist/cjs/vehicle/index.js +108 -0
- package/dist/cjs/vehicle/index.js.map +7 -0
- package/dist/cjs/vehicle/odometer-reading.js +165 -0
- package/dist/cjs/vehicle/odometer-reading.js.map +7 -0
- package/dist/cjs/vehicle/operating-hours.js +174 -0
- package/dist/cjs/vehicle/operating-hours.js.map +7 -0
- package/dist/cjs/vehicle/suspension-type.js +312 -0
- package/dist/cjs/vehicle/suspension-type.js.map +7 -0
- package/dist/cjs/vehicle/swedish-driving-license-category.js +404 -0
- package/dist/cjs/vehicle/swedish-driving-license-category.js.map +7 -0
- package/dist/cjs/vehicle/swedish-driving-license-vehicle-group.js +32 -0
- package/dist/cjs/vehicle/swedish-driving-license-vehicle-group.js.map +7 -0
- package/dist/cjs/vehicle/swedish-eco-vehicle-classification.js +232 -0
- package/dist/cjs/vehicle/swedish-eco-vehicle-classification.js.map +7 -0
- package/dist/cjs/vehicle/swedish-vehicle-registration-number.js +193 -0
- package/dist/cjs/vehicle/swedish-vehicle-registration-number.js.map +7 -0
- package/dist/cjs/vehicle/swedish-vehicle-status.js +172 -0
- package/dist/cjs/vehicle/swedish-vehicle-status.js.map +7 -0
- package/dist/cjs/vehicle/swedish-vehicle-type.js +282 -0
- package/dist/cjs/vehicle/swedish-vehicle-type.js.map +7 -0
- package/dist/cjs/vehicle/tire-dimension.js +206 -0
- package/dist/cjs/vehicle/tire-dimension.js.map +7 -0
- package/dist/cjs/vehicle/tire-type.js +228 -0
- package/dist/cjs/vehicle/tire-type.js.map +7 -0
- package/dist/cjs/vehicle/track-type.js +188 -0
- package/dist/cjs/vehicle/track-type.js.map +7 -0
- package/dist/cjs/vehicle/transmission-type.js +258 -0
- package/dist/cjs/vehicle/transmission-type.js.map +7 -0
- package/dist/cjs/vehicle/vehicle-extensions.js +35 -0
- package/dist/cjs/vehicle/vehicle-extensions.js.map +7 -0
- package/dist/cjs/vehicle/vehicle-identification-number.js +265 -0
- package/dist/cjs/vehicle/vehicle-identification-number.js.map +7 -0
- package/dist/cjs/vehicle/vehicle-masking.js +68 -0
- package/dist/cjs/vehicle/vehicle-masking.js.map +7 -0
- package/dist/cjs/vehicle/wheel-rim-dimension.js +183 -0
- package/dist/cjs/vehicle/wheel-rim-dimension.js.map +7 -0
- package/dist/cjs/web/email-address.js +542 -0
- package/dist/cjs/web/email-address.js.map +7 -0
- package/dist/cjs/web/index.js +31 -0
- package/dist/cjs/web/index.js.map +7 -0
- package/dist/cjs/web/url.js +353 -0
- package/dist/cjs/web/url.js.map +7 -0
- package/dist/esm/banking/bank-resolver.js +358 -0
- package/dist/esm/banking/bank-resolver.js.map +7 -0
- package/dist/esm/banking/bic.js +169 -0
- package/dist/esm/banking/bic.js.map +7 -0
- package/dist/esm/banking/iban.js +294 -0
- package/dist/esm/banking/iban.js.map +7 -0
- package/dist/esm/banking/index.js +60 -0
- package/dist/esm/banking/index.js.map +7 -0
- package/dist/esm/banking/swedish-bank-account-holder-name.js +104 -0
- package/dist/esm/banking/swedish-bank-account-holder-name.js.map +7 -0
- package/dist/esm/banking/swedish-bank-account.js +199 -0
- package/dist/esm/banking/swedish-bank-account.js.map +7 -0
- package/dist/esm/banking/swedish-bank-clearing-number.js +136 -0
- package/dist/esm/banking/swedish-bank-clearing-number.js.map +7 -0
- package/dist/esm/banking/swedish-bank.js +69 -0
- package/dist/esm/banking/swedish-bank.js.map +7 -0
- package/dist/esm/banking/swedish-bankgiro-number.js +156 -0
- package/dist/esm/banking/swedish-bankgiro-number.js.map +7 -0
- package/dist/esm/banking/swedish-banking-number.js +181 -0
- package/dist/esm/banking/swedish-banking-number.js.map +7 -0
- package/dist/esm/banking/swedish-ocr-reference-number.js +195 -0
- package/dist/esm/banking/swedish-ocr-reference-number.js.map +7 -0
- package/dist/esm/banking/swedish-postgiro-number.js +153 -0
- package/dist/esm/banking/swedish-postgiro-number.js.map +7 -0
- package/dist/esm/banking/swedish-swish-number.js +145 -0
- package/dist/esm/banking/swedish-swish-number.js.map +7 -0
- package/dist/esm/contact/address-city.js +84 -0
- package/dist/esm/contact/address-city.js.map +7 -0
- package/dist/esm/contact/address-street.js +200 -0
- package/dist/esm/contact/address-street.js.map +7 -0
- package/dist/esm/contact/address-zip-code.js +175 -0
- package/dist/esm/contact/address-zip-code.js.map +7 -0
- package/dist/esm/contact/address.js +388 -0
- package/dist/esm/contact/address.js.map +7 -0
- package/dist/esm/contact/contact-address.js +122 -0
- package/dist/esm/contact/contact-address.js.map +7 -0
- package/dist/esm/contact/contact-external-links.js +19 -0
- package/dist/esm/contact/contact-external-links.js.map +7 -0
- package/dist/esm/contact/contact-lookup.js +11 -0
- package/dist/esm/contact/contact-lookup.js.map +7 -0
- package/dist/esm/contact/contact-masking.js +97 -0
- package/dist/esm/contact/contact-masking.js.map +7 -0
- package/dist/esm/contact/country-address-factory.js +80 -0
- package/dist/esm/contact/country-address-factory.js.map +7 -0
- package/dist/esm/contact/country-address-registry.js +16 -0
- package/dist/esm/contact/country-address-registry.js.map +7 -0
- package/dist/esm/contact/country-address.js +78 -0
- package/dist/esm/contact/country-address.js.map +7 -0
- package/dist/esm/contact/country-addresses.js +316 -0
- package/dist/esm/contact/country-addresses.js.map +7 -0
- package/dist/esm/contact/country-zip-code-factory.js +97 -0
- package/dist/esm/contact/country-zip-code-factory.js.map +7 -0
- package/dist/esm/contact/country-zip-codes.js +363 -0
- package/dist/esm/contact/country-zip-codes.js.map +7 -0
- package/dist/esm/contact/index.js +63 -0
- package/dist/esm/contact/index.js.map +7 -0
- package/dist/esm/contact/phone-calling-code.js +419 -0
- package/dist/esm/contact/phone-calling-code.js.map +7 -0
- package/dist/esm/contact/phone-number-test-data.js +43 -0
- package/dist/esm/contact/phone-number-test-data.js.map +7 -0
- package/dist/esm/contact/phone-number.js +305 -0
- package/dist/esm/contact/phone-number.js.map +7 -0
- package/dist/esm/contact/register-default-country-addresses.js +58 -0
- package/dist/esm/contact/register-default-country-addresses.js.map +7 -0
- package/dist/esm/contact/swedish-address-zip-code.js +72 -0
- package/dist/esm/contact/swedish-address-zip-code.js.map +7 -0
- package/dist/esm/contact/swedish-address.js +149 -0
- package/dist/esm/contact/swedish-address.js.map +7 -0
- package/dist/esm/finance/currency.js +231 -0
- package/dist/esm/finance/currency.js.map +7 -0
- package/dist/esm/finance/exchange-rates.js +31 -0
- package/dist/esm/finance/exchange-rates.js.map +7 -0
- package/dist/esm/finance/index.js +14 -0
- package/dist/esm/finance/index.js.map +7 -0
- package/dist/esm/finance/isin.js +141 -0
- package/dist/esm/finance/isin.js.map +7 -0
- package/dist/esm/finance/money-amount.js +287 -0
- package/dist/esm/finance/money-amount.js.map +7 -0
- package/dist/esm/geography/adjacency-data.js +315 -0
- package/dist/esm/geography/adjacency-data.js.map +7 -0
- package/dist/esm/geography/continent.js +105 -0
- package/dist/esm/geography/continent.js.map +7 -0
- package/dist/esm/geography/country-capital.js +25 -0
- package/dist/esm/geography/country-capital.js.map +7 -0
- package/dist/esm/geography/country-capitals.js +268 -0
- package/dist/esm/geography/country-capitals.js.map +7 -0
- package/dist/esm/geography/country-coordinates.js +218 -0
- package/dist/esm/geography/country-coordinates.js.map +7 -0
- package/dist/esm/geography/country-data.js +510 -0
- package/dist/esm/geography/country-data.js.map +7 -0
- package/dist/esm/geography/country-metadata.js +607 -0
- package/dist/esm/geography/country-metadata.js.map +7 -0
- package/dist/esm/geography/country.js +417 -0
- package/dist/esm/geography/country.js.map +7 -0
- package/dist/esm/geography/geo-coordinate.js +224 -0
- package/dist/esm/geography/geo-coordinate.js.map +7 -0
- package/dist/esm/geography/geography-extensions.js +62 -0
- package/dist/esm/geography/geography-extensions.js.map +7 -0
- package/dist/esm/geography/geography-external-links.js +32 -0
- package/dist/esm/geography/geography-external-links.js.map +7 -0
- package/dist/esm/geography/geography-lookup.js +11 -0
- package/dist/esm/geography/geography-lookup.js.map +7 -0
- package/dist/esm/geography/geography-masking.js +34 -0
- package/dist/esm/geography/geography-masking.js.map +7 -0
- package/dist/esm/geography/index.js +55 -0
- package/dist/esm/geography/index.js.map +7 -0
- package/dist/esm/geography/language.js +442 -0
- package/dist/esm/geography/language.js.map +7 -0
- package/dist/esm/geography/swedish-county.js +212 -0
- package/dist/esm/geography/swedish-county.js.map +7 -0
- package/dist/esm/geography/swedish-municipality-data.js +296 -0
- package/dist/esm/geography/swedish-municipality-data.js.map +7 -0
- package/dist/esm/geography/swedish-municipality.js +198 -0
- package/dist/esm/geography/swedish-municipality.js.map +7 -0
- package/dist/esm/index.js +16 -0
- package/dist/esm/index.js.map +7 -0
- package/dist/esm/internal/case-folding.js +12 -0
- package/dist/esm/internal/case-folding.js.map +7 -0
- package/dist/esm/internal/clock.js +12 -0
- package/dist/esm/internal/clock.js.map +7 -0
- package/dist/esm/internal/decimal.js +242 -0
- package/dist/esm/internal/decimal.js.map +7 -0
- package/dist/esm/internal/gs1-prefix.js +144 -0
- package/dist/esm/internal/gs1-prefix.js.map +7 -0
- package/dist/esm/internal/gtin-check-digit.js +26 -0
- package/dist/esm/internal/gtin-check-digit.js.map +7 -0
- package/dist/esm/internal/input-sanitization.js +59 -0
- package/dist/esm/internal/input-sanitization.js.map +7 -0
- package/dist/esm/internal/luhn.js +20 -0
- package/dist/esm/internal/luhn.js.map +7 -0
- package/dist/esm/internal/measurement-unit-parser.js +66 -0
- package/dist/esm/internal/measurement-unit-parser.js.map +7 -0
- package/dist/esm/internal/measurement-unit.js +110 -0
- package/dist/esm/internal/measurement-unit.js.map +7 -0
- package/dist/esm/internal/quantity.js +102 -0
- package/dist/esm/internal/quantity.js.map +7 -0
- package/dist/esm/internal/shoe-size-format.js +11 -0
- package/dist/esm/internal/shoe-size-format.js.map +7 -0
- package/dist/esm/measurement/area-unit.js +138 -0
- package/dist/esm/measurement/area-unit.js.map +7 -0
- package/dist/esm/measurement/area.js +163 -0
- package/dist/esm/measurement/area.js.map +7 -0
- package/dist/esm/measurement/count.js +112 -0
- package/dist/esm/measurement/count.js.map +7 -0
- package/dist/esm/measurement/data-size-unit.js +188 -0
- package/dist/esm/measurement/data-size-unit.js.map +7 -0
- package/dist/esm/measurement/data-size.js +187 -0
- package/dist/esm/measurement/data-size.js.map +7 -0
- package/dist/esm/measurement/electric-charge-unit.js +89 -0
- package/dist/esm/measurement/electric-charge-unit.js.map +7 -0
- package/dist/esm/measurement/electric-charge.js +128 -0
- package/dist/esm/measurement/electric-charge.js.map +7 -0
- package/dist/esm/measurement/electric-current-unit.js +88 -0
- package/dist/esm/measurement/electric-current-unit.js.map +7 -0
- package/dist/esm/measurement/electric-current.js +134 -0
- package/dist/esm/measurement/electric-current.js.map +7 -0
- package/dist/esm/measurement/energy-unit.js +181 -0
- package/dist/esm/measurement/energy-unit.js.map +7 -0
- package/dist/esm/measurement/energy.js +187 -0
- package/dist/esm/measurement/energy.js.map +7 -0
- package/dist/esm/measurement/flow-rate-unit.js +112 -0
- package/dist/esm/measurement/flow-rate-unit.js.map +7 -0
- package/dist/esm/measurement/flow-rate.js +142 -0
- package/dist/esm/measurement/flow-rate.js.map +7 -0
- package/dist/esm/measurement/frequency-unit.js +112 -0
- package/dist/esm/measurement/frequency-unit.js.map +7 -0
- package/dist/esm/measurement/frequency.js +145 -0
- package/dist/esm/measurement/frequency.js.map +7 -0
- package/dist/esm/measurement/index.js +129 -0
- package/dist/esm/measurement/index.js.map +7 -0
- package/dist/esm/measurement/length-unit.js +190 -0
- package/dist/esm/measurement/length-unit.js.map +7 -0
- package/dist/esm/measurement/length.js +188 -0
- package/dist/esm/measurement/length.js.map +7 -0
- package/dist/esm/measurement/luminance-unit.js +90 -0
- package/dist/esm/measurement/luminance-unit.js.map +7 -0
- package/dist/esm/measurement/luminance.js +138 -0
- package/dist/esm/measurement/luminance.js.map +7 -0
- package/dist/esm/measurement/luminous-flux-unit.js +66 -0
- package/dist/esm/measurement/luminous-flux-unit.js.map +7 -0
- package/dist/esm/measurement/luminous-flux.js +119 -0
- package/dist/esm/measurement/luminous-flux.js.map +7 -0
- package/dist/esm/measurement/percentage.js +192 -0
- package/dist/esm/measurement/percentage.js.map +7 -0
- package/dist/esm/measurement/power-unit.js +135 -0
- package/dist/esm/measurement/power-unit.js.map +7 -0
- package/dist/esm/measurement/power.js +164 -0
- package/dist/esm/measurement/power.js.map +7 -0
- package/dist/esm/measurement/pressure-unit.js +148 -0
- package/dist/esm/measurement/pressure-unit.js.map +7 -0
- package/dist/esm/measurement/pressure.js +169 -0
- package/dist/esm/measurement/pressure.js.map +7 -0
- package/dist/esm/measurement/rotational-speed-unit.js +76 -0
- package/dist/esm/measurement/rotational-speed-unit.js.map +7 -0
- package/dist/esm/measurement/rotational-speed.js +132 -0
- package/dist/esm/measurement/rotational-speed.js.map +7 -0
- package/dist/esm/measurement/sound-level.js +165 -0
- package/dist/esm/measurement/sound-level.js.map +7 -0
- package/dist/esm/measurement/speed-unit.js +99 -0
- package/dist/esm/measurement/speed-unit.js.map +7 -0
- package/dist/esm/measurement/speed.js +139 -0
- package/dist/esm/measurement/speed.js.map +7 -0
- package/dist/esm/measurement/temperature-delta.js +81 -0
- package/dist/esm/measurement/temperature-delta.js.map +7 -0
- package/dist/esm/measurement/temperature-unit.js +110 -0
- package/dist/esm/measurement/temperature-unit.js.map +7 -0
- package/dist/esm/measurement/temperature.js +196 -0
- package/dist/esm/measurement/temperature.js.map +7 -0
- package/dist/esm/measurement/torque-unit.js +118 -0
- package/dist/esm/measurement/torque-unit.js.map +7 -0
- package/dist/esm/measurement/torque.js +145 -0
- package/dist/esm/measurement/torque.js.map +7 -0
- package/dist/esm/measurement/voltage-unit.js +107 -0
- package/dist/esm/measurement/voltage-unit.js.map +7 -0
- package/dist/esm/measurement/voltage.js +139 -0
- package/dist/esm/measurement/voltage.js.map +7 -0
- package/dist/esm/measurement/volume-unit.js +158 -0
- package/dist/esm/measurement/volume-unit.js.map +7 -0
- package/dist/esm/measurement/volume.js +175 -0
- package/dist/esm/measurement/volume.js.map +7 -0
- package/dist/esm/measurement/weight-unit.js +138 -0
- package/dist/esm/measurement/weight-unit.js.map +7 -0
- package/dist/esm/measurement/weight.js +163 -0
- package/dist/esm/measurement/weight.js.map +7 -0
- package/dist/esm/measurement/year-month.js +184 -0
- package/dist/esm/measurement/year-month.js.map +7 -0
- package/dist/esm/measurement/year.js +89 -0
- package/dist/esm/measurement/year.js.map +7 -0
- package/dist/esm/organization/duns-number.js +94 -0
- package/dist/esm/organization/duns-number.js.map +7 -0
- package/dist/esm/organization/elf-code.js +112 -0
- package/dist/esm/organization/elf-code.js.map +7 -0
- package/dist/esm/organization/eu-organization-name.js +99 -0
- package/dist/esm/organization/eu-organization-name.js.map +7 -0
- package/dist/esm/organization/eu-vat-number.js +424 -0
- package/dist/esm/organization/eu-vat-number.js.map +7 -0
- package/dist/esm/organization/index.js +62 -0
- package/dist/esm/organization/index.js.map +7 -0
- package/dist/esm/organization/lei-code.js +113 -0
- package/dist/esm/organization/lei-code.js.map +7 -0
- package/dist/esm/organization/organization-extensions.js +60 -0
- package/dist/esm/organization/organization-extensions.js.map +7 -0
- package/dist/esm/organization/organization-validation-utils.js +58 -0
- package/dist/esm/organization/organization-validation-utils.js.map +7 -0
- package/dist/esm/organization/swedish-cfar-number.js +68 -0
- package/dist/esm/organization/swedish-cfar-number.js.map +7 -0
- package/dist/esm/organization/swedish-organization-identifier-type.js +14 -0
- package/dist/esm/organization/swedish-organization-identifier-type.js.map +7 -0
- package/dist/esm/organization/swedish-organization-identifier.js +146 -0
- package/dist/esm/organization/swedish-organization-identifier.js.map +7 -0
- package/dist/esm/organization/swedish-organization-name.js +235 -0
- package/dist/esm/organization/swedish-organization-name.js.map +7 -0
- package/dist/esm/organization/swedish-organization-number.js +269 -0
- package/dist/esm/organization/swedish-organization-number.js.map +7 -0
- package/dist/esm/organization/swedish-organization-type.js +31 -0
- package/dist/esm/organization/swedish-organization-type.js.map +7 -0
- package/dist/esm/organization/swedish-sni-code.js +76 -0
- package/dist/esm/organization/swedish-sni-code.js.map +7 -0
- package/dist/esm/person/index.js +42 -0
- package/dist/esm/person/index.js.map +7 -0
- package/dist/esm/person/person-age.js +167 -0
- package/dist/esm/person/person-age.js.map +7 -0
- package/dist/esm/person/person-family-name.js +67 -0
- package/dist/esm/person/person-family-name.js.map +7 -0
- package/dist/esm/person/person-full-name.js +86 -0
- package/dist/esm/person/person-full-name.js.map +7 -0
- package/dist/esm/person/person-given-name.js +87 -0
- package/dist/esm/person/person-given-name.js.map +7 -0
- package/dist/esm/person/person-masking.js +28 -0
- package/dist/esm/person/person-masking.js.map +7 -0
- package/dist/esm/person/person-name-normalization.js +79 -0
- package/dist/esm/person/person-name-normalization.js.map +7 -0
- package/dist/esm/person/personnummer-parser.js +136 -0
- package/dist/esm/person/personnummer-parser.js.map +7 -0
- package/dist/esm/person/swedish-coordination-number.js +173 -0
- package/dist/esm/person/swedish-coordination-number.js.map +7 -0
- package/dist/esm/person/swedish-personal-identity-number.js +175 -0
- package/dist/esm/person/swedish-personal-identity-number.js.map +7 -0
- package/dist/esm/primitive-type-info.js +1 -0
- package/dist/esm/primitive-type-info.js.map +7 -0
- package/dist/esm/primitives-defaults.js +72 -0
- package/dist/esm/primitives-defaults.js.map +7 -0
- package/dist/esm/product/adult-clothing-size.js +128 -0
- package/dist/esm/product/adult-clothing-size.js.map +7 -0
- package/dist/esm/product/adult-shoe-size.js +119 -0
- package/dist/esm/product/adult-shoe-size.js.map +7 -0
- package/dist/esm/product/aspect-ratio.js +168 -0
- package/dist/esm/product/aspect-ratio.js.map +7 -0
- package/dist/esm/product/battery-capacity.js +164 -0
- package/dist/esm/product/battery-capacity.js.map +7 -0
- package/dist/esm/product/battery-chemistry.js +239 -0
- package/dist/esm/product/battery-chemistry.js.map +7 -0
- package/dist/esm/product/camera-resolution.js +141 -0
- package/dist/esm/product/camera-resolution.js.map +7 -0
- package/dist/esm/product/child-clothing-size.js +234 -0
- package/dist/esm/product/child-clothing-size.js.map +7 -0
- package/dist/esm/product/child-shoe-size.js +180 -0
- package/dist/esm/product/child-shoe-size.js.map +7 -0
- package/dist/esm/product/clothing-fit.js +203 -0
- package/dist/esm/product/clothing-fit.js.map +7 -0
- package/dist/esm/product/clothing-gender.js +178 -0
- package/dist/esm/product/clothing-gender.js.map +7 -0
- package/dist/esm/product/clothing-season.js +182 -0
- package/dist/esm/product/clothing-season.js.map +7 -0
- package/dist/esm/product/clothing-size-system.js +11 -0
- package/dist/esm/product/clothing-size-system.js.map +7 -0
- package/dist/esm/product/clothing-size.js +126 -0
- package/dist/esm/product/clothing-size.js.map +7 -0
- package/dist/esm/product/color.js +314 -0
- package/dist/esm/product/color.js.map +7 -0
- package/dist/esm/product/display-panel-type.js +267 -0
- package/dist/esm/product/display-panel-type.js.map +7 -0
- package/dist/esm/product/electrical-phase.js +174 -0
- package/dist/esm/product/electrical-phase.js.map +7 -0
- package/dist/esm/product/energy-scale.js +11 -0
- package/dist/esm/product/energy-scale.js.map +7 -0
- package/dist/esm/product/eu-energy-efficiency-class.js +115 -0
- package/dist/esm/product/eu-energy-efficiency-class.js.map +7 -0
- package/dist/esm/product/google-product-category.js +94 -0
- package/dist/esm/product/google-product-category.js.map +7 -0
- package/dist/esm/product/gtin.js +83 -0
- package/dist/esm/product/gtin.js.map +7 -0
- package/dist/esm/product/gtin12.js +110 -0
- package/dist/esm/product/gtin12.js.map +7 -0
- package/dist/esm/product/gtin13.js +127 -0
- package/dist/esm/product/gtin13.js.map +7 -0
- package/dist/esm/product/gtin14.js +115 -0
- package/dist/esm/product/gtin14.js.map +7 -0
- package/dist/esm/product/gtin8.js +110 -0
- package/dist/esm/product/gtin8.js.map +7 -0
- package/dist/esm/product/hs-code-level.js +12 -0
- package/dist/esm/product/hs-code-level.js.map +7 -0
- package/dist/esm/product/hs-code.js +106 -0
- package/dist/esm/product/hs-code.js.map +7 -0
- package/dist/esm/product/index.js +137 -0
- package/dist/esm/product/index.js.map +7 -0
- package/dist/esm/product/ip-rating.js +146 -0
- package/dist/esm/product/ip-rating.js.map +7 -0
- package/dist/esm/product/operating-system-family.js +17 -0
- package/dist/esm/product/operating-system-family.js.map +7 -0
- package/dist/esm/product/operating-system-info.js +80 -0
- package/dist/esm/product/operating-system-info.js.map +7 -0
- package/dist/esm/product/operating-system-name.js +107 -0
- package/dist/esm/product/operating-system-name.js.map +7 -0
- package/dist/esm/product/operating-system-version.js +90 -0
- package/dist/esm/product/operating-system-version.js.map +7 -0
- package/dist/esm/product/power-source.js +298 -0
- package/dist/esm/product/power-source.js.map +7 -0
- package/dist/esm/product/processor-speed.js +139 -0
- package/dist/esm/product/processor-speed.js.map +7 -0
- package/dist/esm/product/product-extensions.js +7 -0
- package/dist/esm/product/product-extensions.js.map +7 -0
- package/dist/esm/product/product-masking.js +82 -0
- package/dist/esm/product/product-masking.js.map +7 -0
- package/dist/esm/product/ram-capacity.js +134 -0
- package/dist/esm/product/ram-capacity.js.map +7 -0
- package/dist/esm/product/refrigerant-family.js +20 -0
- package/dist/esm/product/refrigerant-family.js.map +7 -0
- package/dist/esm/product/refrigerant.js +399 -0
- package/dist/esm/product/refrigerant.js.map +7 -0
- package/dist/esm/product/screen-resolution.js +177 -0
- package/dist/esm/product/screen-resolution.js.map +7 -0
- package/dist/esm/product/screen-size.js +164 -0
- package/dist/esm/product/screen-size.js.map +7 -0
- package/dist/esm/product/shoe-size-system.js +11 -0
- package/dist/esm/product/shoe-size-system.js.map +7 -0
- package/dist/esm/product/shoe-size.js +118 -0
- package/dist/esm/product/shoe-size.js.map +7 -0
- package/dist/esm/product/storage-capacity.js +139 -0
- package/dist/esm/product/storage-capacity.js.map +7 -0
- package/dist/esm/product/storage-media-type.js +251 -0
- package/dist/esm/product/storage-media-type.js.map +7 -0
- package/dist/esm/property/index.js +19 -0
- package/dist/esm/property/index.js.map +7 -0
- package/dist/esm/property/swedish-property-designation.js +159 -0
- package/dist/esm/property/swedish-property-designation.js.map +7 -0
- package/dist/esm/property/swedish-property-taxation-code.js +198 -0
- package/dist/esm/property/swedish-property-taxation-code.js.map +7 -0
- package/dist/esm/register-default-text-scanners.js +270 -0
- package/dist/esm/register-default-text-scanners.js.map +7 -0
- package/dist/esm/sample-data/index.js +355 -0
- package/dist/esm/sample-data/index.js.map +7 -0
- package/dist/esm/text-scanning/index.js +21 -0
- package/dist/esm/text-scanning/index.js.map +7 -0
- package/dist/esm/text-scanning/text-candidate-category.js +15 -0
- package/dist/esm/text-scanning/text-candidate-category.js.map +7 -0
- package/dist/esm/text-scanning/text-candidate.js +55 -0
- package/dist/esm/text-scanning/text-candidate.js.map +7 -0
- package/dist/esm/text-scanning/text-match-confidence.js +23 -0
- package/dist/esm/text-scanning/text-match-confidence.js.map +7 -0
- package/dist/esm/text-scanning/text-scan-helpers.js +78 -0
- package/dist/esm/text-scanning/text-scan-helpers.js.map +7 -0
- package/dist/esm/text-scanning/text-scan-result.js +313 -0
- package/dist/esm/text-scanning/text-scan-result.js.map +7 -0
- package/dist/esm/text-scanning/text-scanner-options.js +9 -0
- package/dist/esm/text-scanning/text-scanner-options.js.map +7 -0
- package/dist/esm/text-scanning/text-scanner.js +40 -0
- package/dist/esm/text-scanning/text-scanner.js.map +7 -0
- package/dist/esm/validation/index.js +9 -0
- package/dist/esm/validation/index.js.map +7 -0
- package/dist/esm/validation/validation-error-reason.js +33 -0
- package/dist/esm/validation/validation-error-reason.js.map +7 -0
- package/dist/esm/validation/validation-issue.js +23 -0
- package/dist/esm/validation/validation-issue.js.map +7 -0
- package/dist/esm/validation/validation-result.js +32 -0
- package/dist/esm/validation/validation-result.js.map +7 -0
- package/dist/esm/vehicle/boat-ce-design-category.js +180 -0
- package/dist/esm/vehicle/boat-ce-design-category.js.map +7 -0
- package/dist/esm/vehicle/boat-hull-material.js +202 -0
- package/dist/esm/vehicle/boat-hull-material.js.map +7 -0
- package/dist/esm/vehicle/body-type.js +305 -0
- package/dist/esm/vehicle/body-type.js.map +7 -0
- package/dist/esm/vehicle/bolt-pattern.js +130 -0
- package/dist/esm/vehicle/bolt-pattern.js.map +7 -0
- package/dist/esm/vehicle/drivetrain-type.js +180 -0
- package/dist/esm/vehicle/drivetrain-type.js.map +7 -0
- package/dist/esm/vehicle/emission-rate.js +174 -0
- package/dist/esm/vehicle/emission-rate.js.map +7 -0
- package/dist/esm/vehicle/energy-consumption.js +230 -0
- package/dist/esm/vehicle/energy-consumption.js.map +7 -0
- package/dist/esm/vehicle/engine-displacement.js +149 -0
- package/dist/esm/vehicle/engine-displacement.js.map +7 -0
- package/dist/esm/vehicle/engine-power.js +191 -0
- package/dist/esm/vehicle/engine-power.js.map +7 -0
- package/dist/esm/vehicle/eu-type-approval-number.js +176 -0
- package/dist/esm/vehicle/eu-type-approval-number.js.map +7 -0
- package/dist/esm/vehicle/eu-vehicle-category.js +147 -0
- package/dist/esm/vehicle/eu-vehicle-category.js.map +7 -0
- package/dist/esm/vehicle/euro-emission-class.js +293 -0
- package/dist/esm/vehicle/euro-emission-class.js.map +7 -0
- package/dist/esm/vehicle/fuel-consumption-norm.js +186 -0
- package/dist/esm/vehicle/fuel-consumption-norm.js.map +7 -0
- package/dist/esm/vehicle/fuel-consumption.js +261 -0
- package/dist/esm/vehicle/fuel-consumption.js.map +7 -0
- package/dist/esm/vehicle/fuel-type.js +268 -0
- package/dist/esm/vehicle/fuel-type.js.map +7 -0
- package/dist/esm/vehicle/index.js +134 -0
- package/dist/esm/vehicle/index.js.map +7 -0
- package/dist/esm/vehicle/odometer-reading.js +145 -0
- package/dist/esm/vehicle/odometer-reading.js.map +7 -0
- package/dist/esm/vehicle/operating-hours.js +154 -0
- package/dist/esm/vehicle/operating-hours.js.map +7 -0
- package/dist/esm/vehicle/suspension-type.js +292 -0
- package/dist/esm/vehicle/suspension-type.js.map +7 -0
- package/dist/esm/vehicle/swedish-driving-license-category.js +384 -0
- package/dist/esm/vehicle/swedish-driving-license-category.js.map +7 -0
- package/dist/esm/vehicle/swedish-driving-license-vehicle-group.js +12 -0
- package/dist/esm/vehicle/swedish-driving-license-vehicle-group.js.map +7 -0
- package/dist/esm/vehicle/swedish-eco-vehicle-classification.js +212 -0
- package/dist/esm/vehicle/swedish-eco-vehicle-classification.js.map +7 -0
- package/dist/esm/vehicle/swedish-vehicle-registration-number.js +176 -0
- package/dist/esm/vehicle/swedish-vehicle-registration-number.js.map +7 -0
- package/dist/esm/vehicle/swedish-vehicle-status.js +152 -0
- package/dist/esm/vehicle/swedish-vehicle-status.js.map +7 -0
- package/dist/esm/vehicle/swedish-vehicle-type.js +262 -0
- package/dist/esm/vehicle/swedish-vehicle-type.js.map +7 -0
- package/dist/esm/vehicle/tire-dimension.js +186 -0
- package/dist/esm/vehicle/tire-dimension.js.map +7 -0
- package/dist/esm/vehicle/tire-type.js +208 -0
- package/dist/esm/vehicle/tire-type.js.map +7 -0
- package/dist/esm/vehicle/track-type.js +168 -0
- package/dist/esm/vehicle/track-type.js.map +7 -0
- package/dist/esm/vehicle/transmission-type.js +238 -0
- package/dist/esm/vehicle/transmission-type.js.map +7 -0
- package/dist/esm/vehicle/vehicle-extensions.js +15 -0
- package/dist/esm/vehicle/vehicle-extensions.js.map +7 -0
- package/dist/esm/vehicle/vehicle-identification-number.js +248 -0
- package/dist/esm/vehicle/vehicle-identification-number.js.map +7 -0
- package/dist/esm/vehicle/vehicle-masking.js +48 -0
- package/dist/esm/vehicle/vehicle-masking.js.map +7 -0
- package/dist/esm/vehicle/wheel-rim-dimension.js +163 -0
- package/dist/esm/vehicle/wheel-rim-dimension.js.map +7 -0
- package/dist/esm/web/email-address.js +522 -0
- package/dist/esm/web/email-address.js.map +7 -0
- package/dist/esm/web/index.js +16 -0
- package/dist/esm/web/index.js.map +7 -0
- package/dist/esm/web/url.js +333 -0
- package/dist/esm/web/url.js.map +7 -0
- package/dist/types/frequency-CweGfJFS.d.cts +329 -0
- package/dist/types/frequency-DdOMV6Sw.d.ts +329 -0
- package/dist/{index.d.cts → types/index.d.cts} +9 -0
- package/dist/{index.d.ts → types/index.d.ts} +9 -0
- package/dist/types/length-CceXIJYY.d.ts +354 -0
- package/dist/types/length-XRL5Eg7F.d.cts +354 -0
- package/dist/types/measurement/index.d.cts +136 -0
- package/dist/types/measurement/index.d.ts +136 -0
- package/dist/types/product/index.d.cts +1239 -0
- package/dist/types/product/index.d.ts +1239 -0
- package/dist/types/screen-size-BD4t3wzb.d.cts +473 -0
- package/dist/types/screen-size-DUmjNjxG.d.ts +473 -0
- package/dist/{text-scanning → types/text-scanning}/index.d.cts +50 -0
- package/dist/{text-scanning → types/text-scanning}/index.d.ts +50 -0
- package/dist/types/vehicle/index.d.cts +798 -0
- package/dist/types/vehicle/index.d.ts +798 -0
- package/dist/types/volume-CFA4e3dc.d.cts +175 -0
- package/dist/types/volume-DGLPQypt.d.ts +175 -0
- package/dist/types/weight-B30-Hzxu.d.ts +1057 -0
- package/dist/types/weight-C5C7OuV_.d.cts +1057 -0
- package/dist/types/wheel-rim-dimension-CVCmLASl.d.ts +699 -0
- package/dist/types/wheel-rim-dimension-CdkDrzad.d.cts +699 -0
- package/package.json +100 -65
- package/dist/banking/index.cjs +0 -6491
- package/dist/banking/index.cjs.map +0 -1
- package/dist/banking/index.js +0 -6464
- package/dist/banking/index.js.map +0 -1
- package/dist/contact/index.cjs +0 -6678
- package/dist/contact/index.cjs.map +0 -1
- package/dist/contact/index.js +0 -6586
- package/dist/contact/index.js.map +0 -1
- package/dist/finance/index.cjs +0 -3592
- package/dist/finance/index.cjs.map +0 -1
- package/dist/finance/index.js +0 -3584
- package/dist/finance/index.js.map +0 -1
- package/dist/geography/index.cjs +0 -4227
- package/dist/geography/index.cjs.map +0 -1
- package/dist/geography/index.js +0 -4202
- package/dist/geography/index.js.map +0 -1
- package/dist/index.cjs +0 -14087
- package/dist/index.cjs.map +0 -1
- package/dist/index.js +0 -13868
- package/dist/index.js.map +0 -1
- package/dist/organization/index.cjs +0 -2376
- package/dist/organization/index.cjs.map +0 -1
- package/dist/organization/index.js +0 -2346
- package/dist/organization/index.js.map +0 -1
- package/dist/person/index.cjs +0 -1144
- package/dist/person/index.cjs.map +0 -1
- package/dist/person/index.js +0 -1125
- package/dist/person/index.js.map +0 -1
- package/dist/property/index.cjs +0 -487
- package/dist/property/index.cjs.map +0 -1
- package/dist/property/index.js +0 -480
- package/dist/property/index.js.map +0 -1
- package/dist/sample-data/index.cjs +0 -12310
- package/dist/sample-data/index.cjs.map +0 -1
- package/dist/sample-data/index.js +0 -12302
- package/dist/sample-data/index.js.map +0 -1
- package/dist/text-scanning/index.cjs +0 -10414
- package/dist/text-scanning/index.cjs.map +0 -1
- package/dist/text-scanning/index.js +0 -10406
- package/dist/text-scanning/index.js.map +0 -1
- package/dist/validation/index.cjs +0 -83
- package/dist/validation/index.cjs.map +0 -1
- package/dist/validation/index.js +0 -79
- package/dist/validation/index.js.map +0 -1
- package/dist/web/index.cjs +0 -3994
- package/dist/web/index.cjs.map +0 -1
- package/dist/web/index.js +0 -3987
- package/dist/web/index.js.map +0 -1
- /package/dist/{banking → types/banking}/index.d.cts +0 -0
- /package/dist/{banking → types/banking}/index.d.ts +0 -0
- /package/dist/{contact → types/contact}/index.d.cts +0 -0
- /package/dist/{contact → types/contact}/index.d.ts +0 -0
- /package/dist/{country-BhD51LDL.d.cts → types/country-BhD51LDL.d.cts} +0 -0
- /package/dist/{country-p0n0EVQ9.d.ts → types/country-p0n0EVQ9.d.ts} +0 -0
- /package/dist/{finance → types/finance}/index.d.cts +0 -0
- /package/dist/{finance → types/finance}/index.d.ts +0 -0
- /package/dist/{geography → types/geography}/index.d.cts +0 -0
- /package/dist/{geography → types/geography}/index.d.ts +0 -0
- /package/dist/{isin-EeVPpNWu.d.ts → types/isin-EeVPpNWu.d.ts} +0 -0
- /package/dist/{isin-ZlQLBVm8.d.cts → types/isin-ZlQLBVm8.d.cts} +0 -0
- /package/dist/{organization → types/organization}/index.d.cts +0 -0
- /package/dist/{organization → types/organization}/index.d.ts +0 -0
- /package/dist/{person → types/person}/index.d.cts +0 -0
- /package/dist/{person → types/person}/index.d.ts +0 -0
- /package/dist/{person-full-name-Cmc9Ynuc.d.cts → types/person-full-name-Cmc9Ynuc.d.cts} +0 -0
- /package/dist/{person-full-name-D6Hbsab6.d.ts → types/person-full-name-D6Hbsab6.d.ts} +0 -0
- /package/dist/{phone-number-C24--ggy.d.ts → types/phone-number-C24--ggy.d.ts} +0 -0
- /package/dist/{phone-number-DZ-YxCQQ.d.cts → types/phone-number-DZ-YxCQQ.d.cts} +0 -0
- /package/dist/{property → types/property}/index.d.cts +0 -0
- /package/dist/{property → types/property}/index.d.ts +0 -0
- /package/dist/{sample-data → types/sample-data}/index.d.cts +0 -0
- /package/dist/{sample-data → types/sample-data}/index.d.ts +0 -0
- /package/dist/{swedish-address-DNC3ftRF.d.cts → types/swedish-address-DNC3ftRF.d.cts} +0 -0
- /package/dist/{swedish-address-GMzjqgxb.d.ts → types/swedish-address-GMzjqgxb.d.ts} +0 -0
- /package/dist/{swedish-bank-account-holder-name-BFJ8h1aO.d.cts → types/swedish-bank-account-holder-name-BFJ8h1aO.d.cts} +0 -0
- /package/dist/{swedish-bank-account-holder-name-CAAru07F.d.ts → types/swedish-bank-account-holder-name-CAAru07F.d.ts} +0 -0
- /package/dist/{swedish-municipality-DlUS7g7h.d.cts → types/swedish-municipality-DlUS7g7h.d.cts} +0 -0
- /package/dist/{swedish-municipality-nDRHYRAd.d.ts → types/swedish-municipality-nDRHYRAd.d.ts} +0 -0
- /package/dist/{swedish-organization-name-D7NvERxA.d.cts → types/swedish-organization-name-D7NvERxA.d.cts} +0 -0
- /package/dist/{swedish-organization-name-rR0Q836C.d.ts → types/swedish-organization-name-rR0Q836C.d.ts} +0 -0
- /package/dist/{swedish-organization-number-Bcj7V_lh.d.cts → types/swedish-organization-number-Bcj7V_lh.d.cts} +0 -0
- /package/dist/{swedish-organization-number-DM8dpXwR.d.ts → types/swedish-organization-number-DM8dpXwR.d.ts} +0 -0
- /package/dist/{swedish-organization-type-CZOdETwG.d.cts → types/swedish-organization-type-CZOdETwG.d.cts} +0 -0
- /package/dist/{swedish-organization-type-CZOdETwG.d.ts → types/swedish-organization-type-CZOdETwG.d.ts} +0 -0
- /package/dist/{swedish-personal-identity-number-BiIg4io3.d.ts → types/swedish-personal-identity-number-BiIg4io3.d.ts} +0 -0
- /package/dist/{swedish-personal-identity-number-Cp9Coz55.d.cts → types/swedish-personal-identity-number-Cp9Coz55.d.cts} +0 -0
- /package/dist/{swedish-property-designation-BM-gdd9x.d.ts → types/swedish-property-designation-BM-gdd9x.d.ts} +0 -0
- /package/dist/{swedish-property-designation-BaHXufqV.d.cts → types/swedish-property-designation-BaHXufqV.d.cts} +0 -0
- /package/dist/{swedish-sni-code-Ccsswpni.d.ts → types/swedish-sni-code-Ccsswpni.d.ts} +0 -0
- /package/dist/{swedish-sni-code-CuJFyM6l.d.cts → types/swedish-sni-code-CuJFyM6l.d.cts} +0 -0
- /package/dist/{swedish-swish-number-CL6Gx_h3.d.cts → types/swedish-swish-number-CL6Gx_h3.d.cts} +0 -0
- /package/dist/{swedish-swish-number-DDG3mNDg.d.ts → types/swedish-swish-number-DDG3mNDg.d.ts} +0 -0
- /package/dist/{text-candidate-qg2bD9PY.d.cts → types/text-candidate-qg2bD9PY.d.cts} +0 -0
- /package/dist/{text-candidate-qg2bD9PY.d.ts → types/text-candidate-qg2bD9PY.d.ts} +0 -0
- /package/dist/{validation → types/validation}/index.d.cts +0 -0
- /package/dist/{validation → types/validation}/index.d.ts +0 -0
- /package/dist/{web → types/web}/index.d.cts +0 -0
- /package/dist/{web → types/web}/index.d.ts +0 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { Decimal } from "./decimal.js";
|
|
2
|
+
import { trySplitMeasurement } from "./measurement-unit-parser.js";
|
|
3
|
+
function formatQuantityDecimal(value, decimals) {
|
|
4
|
+
const rounded = decimals === void 0 ? value : value.round(decimals, "away-from-zero");
|
|
5
|
+
return rounded.toTrimmedString();
|
|
6
|
+
}
|
|
7
|
+
class Quantity {
|
|
8
|
+
constructor(baseValue, originalUnit) {
|
|
9
|
+
this.baseValue = baseValue;
|
|
10
|
+
this.originalUnit = originalUnit;
|
|
11
|
+
}
|
|
12
|
+
baseValue;
|
|
13
|
+
originalUnit;
|
|
14
|
+
/** The exact value converted to `unit`. */
|
|
15
|
+
inDecimal(unit) {
|
|
16
|
+
const units = this.units;
|
|
17
|
+
units.assertOwns(unit);
|
|
18
|
+
return unit.fromBase(this.baseValue);
|
|
19
|
+
}
|
|
20
|
+
/** The value converted to `unit`, as a `number` for ergonomic access. */
|
|
21
|
+
in(unit) {
|
|
22
|
+
return this.inDecimal(unit).toNumber();
|
|
23
|
+
}
|
|
24
|
+
/** The most human-readable unit on this dimension's natural scale. */
|
|
25
|
+
get naturalUnit() {
|
|
26
|
+
return this.units.getNatural(this.baseValue);
|
|
27
|
+
}
|
|
28
|
+
/** The value in the base unit, e.g. `10000 m`. */
|
|
29
|
+
toNormalizedString() {
|
|
30
|
+
return `${formatQuantityDecimal(this.baseValue)} ${this.units.baseUnit.symbol}`;
|
|
31
|
+
}
|
|
32
|
+
/** The value in the unit it was parsed from, e.g. `10 km`. */
|
|
33
|
+
toString() {
|
|
34
|
+
return `${formatQuantityDecimal(this.inDecimal(this.originalUnit))} ${this.originalUnit.symbol}`;
|
|
35
|
+
}
|
|
36
|
+
/** The value converted to `unit`, e.g. `0.01 km`. */
|
|
37
|
+
toStringInUnit(unit, decimals) {
|
|
38
|
+
return `${formatQuantityDecimal(this.inDecimal(unit), decimals)} ${unit.symbol}`;
|
|
39
|
+
}
|
|
40
|
+
/** The value in the most readable unit, e.g. `1.5 km` rather than `1500 m`. */
|
|
41
|
+
toNaturalString(decimals) {
|
|
42
|
+
return this.toStringInUnit(this.naturalUnit, decimals);
|
|
43
|
+
}
|
|
44
|
+
// TypeScript has no operator overloading, so the C# `+ - * /` become methods.
|
|
45
|
+
plus(other) {
|
|
46
|
+
this.assertSameDimension(other);
|
|
47
|
+
return this.withBaseValue(this.baseValue.plus(other.baseValue), this.originalUnit);
|
|
48
|
+
}
|
|
49
|
+
minus(other) {
|
|
50
|
+
this.assertSameDimension(other);
|
|
51
|
+
return this.withBaseValue(this.baseValue.minus(other.baseValue), this.originalUnit);
|
|
52
|
+
}
|
|
53
|
+
times(factor) {
|
|
54
|
+
return this.withBaseValue(this.baseValue.times(toDecimal(factor)), this.originalUnit);
|
|
55
|
+
}
|
|
56
|
+
dividedBy(divisor) {
|
|
57
|
+
return this.withBaseValue(this.baseValue.dividedBy(toDecimal(divisor)), this.originalUnit);
|
|
58
|
+
}
|
|
59
|
+
negated() {
|
|
60
|
+
return this.withBaseValue(this.baseValue.negated(), this.originalUnit);
|
|
61
|
+
}
|
|
62
|
+
compareTo(other) {
|
|
63
|
+
if (other == null) return 1;
|
|
64
|
+
this.assertSameDimension(other);
|
|
65
|
+
return this.baseValue.compareTo(other.baseValue);
|
|
66
|
+
}
|
|
67
|
+
equals(other) {
|
|
68
|
+
return other != null && this.units === other.units && this.baseValue.equals(other.baseValue);
|
|
69
|
+
}
|
|
70
|
+
isLessThan(other) {
|
|
71
|
+
return this.compareTo(other) < 0;
|
|
72
|
+
}
|
|
73
|
+
isGreaterThan(other) {
|
|
74
|
+
return this.compareTo(other) > 0;
|
|
75
|
+
}
|
|
76
|
+
assertSameDimension(other) {
|
|
77
|
+
if (this.units !== other.units) throw new RangeError("Quantity belongs to another dimension.");
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
function toDecimal(value) {
|
|
81
|
+
if (value instanceof Decimal) return value;
|
|
82
|
+
const parsed = Decimal.fromNumber(value);
|
|
83
|
+
if (parsed === null) throw new RangeError(`Scalar cannot be represented as a decimal: ${value}`);
|
|
84
|
+
return parsed;
|
|
85
|
+
}
|
|
86
|
+
function tryParseQuantity(input, units, resolveUnit) {
|
|
87
|
+
const split = trySplitMeasurement(input);
|
|
88
|
+
if (split === null) return null;
|
|
89
|
+
const unit = resolveUnit ? resolveUnit(split.unitSuffix) : units.tryParse(split.unitSuffix);
|
|
90
|
+
if (unit === null) return null;
|
|
91
|
+
try {
|
|
92
|
+
return { baseValue: unit.toBase(split.value), unit };
|
|
93
|
+
} catch {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
export {
|
|
98
|
+
Quantity,
|
|
99
|
+
formatQuantityDecimal,
|
|
100
|
+
tryParseQuantity
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=quantity.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/internal/quantity.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Shared behaviour for the `Measurement` quantity types (`Length`, `Power`,\n * `Weight`, and the rest).\n *\n * Each of those is ~230 near-identical lines in .NET. Here the common half \u2014\n * parsing, conversion, formatting, comparison and arithmetic \u2014 lives once, and\n * a public type supplies its unit table plus the named accessors that make its\n * API readable.\n *\n * The value is held in the base unit as an exact {@link Decimal}. Converting\n * only at the formatting boundary is what keeps `normalize()` byte-identical to\n * .NET; see the note at the top of `decimal.ts`.\n *\n * Internal; not re-exported publicly.\n */\n\nimport { Decimal } from \"./decimal.js\";\nimport { trySplitMeasurement } from \"./measurement-unit-parser.js\";\nimport type { MeasurementUnit, MeasurementUnitIndex } from \"./measurement-unit.js\";\n\n/** Options shared by the `format` static on every quantity type. */\nexport interface QuantityFormatOptions<TUnit extends MeasurementUnit> {\n fallbackToTrimmedInputWhenInvalid?: boolean;\n /** Convert to this unit instead of preserving the parsed one. */\n unit?: TUnit;\n /** Round to this many fractional digits, away from zero. */\n decimals?: number;\n}\n\n/**\n * Renders a value the way .NET's private `FormatDecimal` does: optionally\n * rounded away from zero, then stripped of trailing fractional zeros.\n */\nexport function formatQuantityDecimal(value: Decimal, decimals?: number): string {\n const rounded = decimals === undefined ? value : value.round(decimals, \"away-from-zero\");\n return rounded.toTrimmedString();\n}\n\nexport abstract class Quantity<TUnit extends MeasurementUnit> {\n protected constructor(\n /** The value expressed in the dimension's base unit. */\n protected readonly baseValue: Decimal,\n /** The unit the value was originally parsed from. */\n readonly originalUnit: TUnit,\n ) {}\n\n /** The unit index for this dimension, supplied by the concrete type. */\n protected abstract get units(): MeasurementUnitIndex<TUnit>;\n\n /** Builds another instance of the concrete type, used by the arithmetic. */\n protected abstract withBaseValue(baseValue: Decimal, unit: TUnit): this;\n\n /** The exact value converted to `unit`. */\n inDecimal(unit: TUnit): Decimal {\n const units: MeasurementUnitIndex<TUnit> = this.units;\n units.assertOwns(unit);\n return unit.fromBase(this.baseValue);\n }\n\n /** The value converted to `unit`, as a `number` for ergonomic access. */\n in(unit: TUnit): number {\n return this.inDecimal(unit).toNumber();\n }\n\n /** The most human-readable unit on this dimension's natural scale. */\n get naturalUnit(): TUnit {\n return this.units.getNatural(this.baseValue);\n }\n\n /** The value in the base unit, e.g. `10000 m`. */\n toNormalizedString(): string {\n return `${formatQuantityDecimal(this.baseValue)} ${this.units.baseUnit.symbol}`;\n }\n\n /** The value in the unit it was parsed from, e.g. `10 km`. */\n toString(): string {\n return `${formatQuantityDecimal(this.inDecimal(this.originalUnit))} ${this.originalUnit.symbol}`;\n }\n\n /** The value converted to `unit`, e.g. `0.01 km`. */\n toStringInUnit(unit: TUnit, decimals?: number): string {\n return `${formatQuantityDecimal(this.inDecimal(unit), decimals)} ${unit.symbol}`;\n }\n\n /** The value in the most readable unit, e.g. `1.5 km` rather than `1500 m`. */\n toNaturalString(decimals?: number): string {\n return this.toStringInUnit(this.naturalUnit, decimals);\n }\n\n // TypeScript has no operator overloading, so the C# `+ - * /` become methods.\n\n plus(other: Quantity<TUnit>): this {\n this.assertSameDimension(other);\n return this.withBaseValue(this.baseValue.plus(other.baseValue), this.originalUnit);\n }\n\n minus(other: Quantity<TUnit>): this {\n this.assertSameDimension(other);\n return this.withBaseValue(this.baseValue.minus(other.baseValue), this.originalUnit);\n }\n\n times(factor: number | Decimal): this {\n return this.withBaseValue(this.baseValue.times(toDecimal(factor)), this.originalUnit);\n }\n\n dividedBy(divisor: number | Decimal): this {\n return this.withBaseValue(this.baseValue.dividedBy(toDecimal(divisor)), this.originalUnit);\n }\n\n negated(): this {\n return this.withBaseValue(this.baseValue.negated(), this.originalUnit);\n }\n\n compareTo(other: Quantity<TUnit> | null | undefined): number {\n if (other == null) return 1;\n this.assertSameDimension(other);\n return this.baseValue.compareTo(other.baseValue);\n }\n\n equals(other: Quantity<TUnit> | null | undefined): boolean {\n return other != null && this.units === other.units && this.baseValue.equals(other.baseValue);\n }\n\n isLessThan(other: Quantity<TUnit>): boolean {\n return this.compareTo(other) < 0;\n }\n\n isGreaterThan(other: Quantity<TUnit>): boolean {\n return this.compareTo(other) > 0;\n }\n\n private assertSameDimension(other: Quantity<TUnit>): void {\n if (this.units !== other.units) throw new RangeError(\"Quantity belongs to another dimension.\");\n }\n}\n\nfunction toDecimal(value: number | Decimal): Decimal {\n if (value instanceof Decimal) return value;\n const parsed = Decimal.fromNumber(value);\n if (parsed === null) throw new RangeError(`Scalar cannot be represented as a decimal: ${value}`);\n return parsed;\n}\n\n/**\n * The shared body of every quantity's `tryParse`: split off the unit suffix,\n * resolve it against the dimension's index, and scale into the base unit.\n *\n * Returns the exact base value and the unit it came from, or `null` when the\n * input is not a measurement in this dimension. Overflow is reported as `null`\n * rather than thrown, matching the .NET types which swallow `OverflowException`\n * inside `TryParse`.\n */\nexport function tryParseQuantity<TUnit extends MeasurementUnit>(\n input: string | null | undefined,\n units: MeasurementUnitIndex<TUnit>,\n resolveUnit?: (suffix: string) => TUnit | null,\n): { baseValue: Decimal; unit: TUnit } | null {\n const split = trySplitMeasurement(input);\n if (split === null) return null;\n\n const unit = resolveUnit ? resolveUnit(split.unitSuffix) : units.tryParse(split.unitSuffix);\n if (unit === null) return null;\n\n try {\n return { baseValue: unit.toBase(split.value), unit };\n } catch {\n return null;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
function formatEuShoeSize(euSize) {
|
|
2
|
+
return `EU ${formatShoeNumber(euSize)}`;
|
|
3
|
+
}
|
|
4
|
+
function formatShoeNumber(size) {
|
|
5
|
+
return Number.isInteger(size) ? String(Math.trunc(size)) : size.toFixed(1);
|
|
6
|
+
}
|
|
7
|
+
export {
|
|
8
|
+
formatEuShoeSize,
|
|
9
|
+
formatShoeNumber
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=shoe-size-format.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/internal/shoe-size-format.ts"],
|
|
4
|
+
"sourcesContent": ["/** Renders a shoe size as `EU 42` for whole sizes and `EU 42.5` for half sizes. */\nexport function formatEuShoeSize(euSize: number): string {\n return `EU ${formatShoeNumber(euSize)}`;\n}\n\n/** Renders a shoe size number with one decimal only when it has a fractional part. */\nexport function formatShoeNumber(size: number): string {\n return Number.isInteger(size) ? String(Math.trunc(size)) : size.toFixed(1);\n}\n"],
|
|
5
|
+
"mappings": "AACO,SAAS,iBAAiB,QAAwB;AACvD,SAAO,MAAM,iBAAiB,MAAM,CAAC;AACvC;AAGO,SAAS,iBAAiB,MAAsB;AACrD,SAAO,OAAO,UAAU,IAAI,IAAI,OAAO,KAAK,MAAM,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC3E;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { Decimal } from "../internal/decimal.js";
|
|
2
|
+
import { MeasurementUnit, MeasurementUnitIndex } from "../internal/measurement-unit.js";
|
|
3
|
+
function factor(literal) {
|
|
4
|
+
const parsed = Decimal.parse(literal);
|
|
5
|
+
if (parsed === null) throw new Error(`Invalid conversion factor: ${literal}`);
|
|
6
|
+
return parsed;
|
|
7
|
+
}
|
|
8
|
+
class AreaUnit extends MeasurementUnit {
|
|
9
|
+
static typeInfo = Object.freeze({
|
|
10
|
+
englishName: "Area Unit",
|
|
11
|
+
localizedName: "Ytenhet",
|
|
12
|
+
emoji: "\u{1F4D0}",
|
|
13
|
+
sources: Object.freeze([])
|
|
14
|
+
});
|
|
15
|
+
static SquareMillimeter = new AreaUnit({
|
|
16
|
+
symbol: "mm\xB2",
|
|
17
|
+
englishName: "square millimeter",
|
|
18
|
+
localizedName: "kvadratmillimeter",
|
|
19
|
+
pluralEnglish: "square millimeters",
|
|
20
|
+
pluralSwedish: "kvadratmillimeter",
|
|
21
|
+
toBaseUnitFactor: factor("0.000001"),
|
|
22
|
+
aliases: ["mm2", "sq mm", "square millimetre", "square millimetres"]
|
|
23
|
+
});
|
|
24
|
+
static SquareCentimeter = new AreaUnit({
|
|
25
|
+
symbol: "cm\xB2",
|
|
26
|
+
englishName: "square centimeter",
|
|
27
|
+
localizedName: "kvadratcentimeter",
|
|
28
|
+
pluralEnglish: "square centimeters",
|
|
29
|
+
pluralSwedish: "kvadratcentimeter",
|
|
30
|
+
toBaseUnitFactor: factor("0.0001"),
|
|
31
|
+
aliases: ["cm2", "sq cm", "square centimetre", "square centimetres"]
|
|
32
|
+
});
|
|
33
|
+
static SquareMeter = new AreaUnit({
|
|
34
|
+
symbol: "m\xB2",
|
|
35
|
+
englishName: "square meter",
|
|
36
|
+
localizedName: "kvadratmeter",
|
|
37
|
+
pluralEnglish: "square meters",
|
|
38
|
+
pluralSwedish: "kvadratmeter",
|
|
39
|
+
toBaseUnitFactor: factor("1"),
|
|
40
|
+
aliases: ["m2", "sq m", "sqm", "square metre", "square metres"]
|
|
41
|
+
});
|
|
42
|
+
static SquareKilometer = new AreaUnit({
|
|
43
|
+
symbol: "km\xB2",
|
|
44
|
+
englishName: "square kilometer",
|
|
45
|
+
localizedName: "kvadratkilometer",
|
|
46
|
+
pluralEnglish: "square kilometers",
|
|
47
|
+
pluralSwedish: "kvadratkilometer",
|
|
48
|
+
toBaseUnitFactor: factor("1000000"),
|
|
49
|
+
aliases: ["km2", "sq km", "square kilometre", "square kilometres"]
|
|
50
|
+
});
|
|
51
|
+
static Hectare = new AreaUnit({
|
|
52
|
+
symbol: "ha",
|
|
53
|
+
englishName: "hectare",
|
|
54
|
+
localizedName: "hektar",
|
|
55
|
+
pluralEnglish: "hectares",
|
|
56
|
+
pluralSwedish: "hektar",
|
|
57
|
+
toBaseUnitFactor: factor("10000")
|
|
58
|
+
});
|
|
59
|
+
static Acre = new AreaUnit({
|
|
60
|
+
symbol: "acre",
|
|
61
|
+
englishName: "acre",
|
|
62
|
+
localizedName: "acre",
|
|
63
|
+
pluralEnglish: "acres",
|
|
64
|
+
pluralSwedish: "acre",
|
|
65
|
+
toBaseUnitFactor: factor("4046.8564224")
|
|
66
|
+
});
|
|
67
|
+
static SquareFoot = new AreaUnit({
|
|
68
|
+
symbol: "sq ft",
|
|
69
|
+
englishName: "square foot",
|
|
70
|
+
localizedName: "kvadratfot",
|
|
71
|
+
pluralEnglish: "square feet",
|
|
72
|
+
pluralSwedish: "kvadratfot",
|
|
73
|
+
toBaseUnitFactor: factor("0.09290304"),
|
|
74
|
+
aliases: ["sqft", "square feet", "square foot"]
|
|
75
|
+
});
|
|
76
|
+
static SquareInch = new AreaUnit({
|
|
77
|
+
symbol: "sq in",
|
|
78
|
+
englishName: "square inch",
|
|
79
|
+
localizedName: "kvadrattum",
|
|
80
|
+
pluralEnglish: "square inches",
|
|
81
|
+
pluralSwedish: "kvadrattum",
|
|
82
|
+
toBaseUnitFactor: factor("0.00064516"),
|
|
83
|
+
aliases: ["sqin", "square inches", "square inch"]
|
|
84
|
+
});
|
|
85
|
+
static SquareYard = new AreaUnit({
|
|
86
|
+
symbol: "sq yd",
|
|
87
|
+
englishName: "square yard",
|
|
88
|
+
localizedName: "kvadratyard",
|
|
89
|
+
pluralEnglish: "square yards",
|
|
90
|
+
pluralSwedish: "kvadratyard",
|
|
91
|
+
toBaseUnitFactor: factor("0.83612736"),
|
|
92
|
+
aliases: ["sqyd", "square yards", "square yard"]
|
|
93
|
+
});
|
|
94
|
+
/** @internal Shared lookup and natural-scale walk. */
|
|
95
|
+
static index = new MeasurementUnitIndex(
|
|
96
|
+
[
|
|
97
|
+
AreaUnit.SquareMillimeter,
|
|
98
|
+
AreaUnit.SquareCentimeter,
|
|
99
|
+
AreaUnit.SquareMeter,
|
|
100
|
+
AreaUnit.SquareKilometer,
|
|
101
|
+
AreaUnit.Hectare,
|
|
102
|
+
AreaUnit.Acre,
|
|
103
|
+
AreaUnit.SquareFoot,
|
|
104
|
+
AreaUnit.SquareInch,
|
|
105
|
+
AreaUnit.SquareYard
|
|
106
|
+
],
|
|
107
|
+
AreaUnit.SquareMeter,
|
|
108
|
+
[AreaUnit.SquareCentimeter, AreaUnit.SquareMeter, AreaUnit.Hectare, AreaUnit.SquareKilometer]
|
|
109
|
+
);
|
|
110
|
+
static get all() {
|
|
111
|
+
return AreaUnit.index.all;
|
|
112
|
+
}
|
|
113
|
+
/** The base unit: m². */
|
|
114
|
+
static get baseUnit() {
|
|
115
|
+
return AreaUnit.index.baseUnit;
|
|
116
|
+
}
|
|
117
|
+
/** Units ordered small to large, used to auto-scale display. */
|
|
118
|
+
static get naturalScale() {
|
|
119
|
+
return AreaUnit.index.naturalScale;
|
|
120
|
+
}
|
|
121
|
+
/** Resolves a unit from a symbol, name, plural or alias, case-insensitively. */
|
|
122
|
+
static tryParse(input) {
|
|
123
|
+
return AreaUnit.index.tryParse(input);
|
|
124
|
+
}
|
|
125
|
+
static parse(input) {
|
|
126
|
+
const result = AreaUnit.tryParse(input);
|
|
127
|
+
if (result === null) throw new Error("Unknown area unit.");
|
|
128
|
+
return result;
|
|
129
|
+
}
|
|
130
|
+
/** Returns the most human-readable unit for a value in m². */
|
|
131
|
+
static getNatural(baseValue) {
|
|
132
|
+
return AreaUnit.index.getNatural(baseValue);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
export {
|
|
136
|
+
AreaUnit
|
|
137
|
+
};
|
|
138
|
+
//# sourceMappingURL=area-unit.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/measurement/area-unit.ts"],
|
|
4
|
+
"sourcesContent": ["import { Decimal } from \"../internal/decimal.js\";\nimport { MeasurementUnit, MeasurementUnitIndex } from \"../internal/measurement-unit.js\";\nimport type { PrimitiveTypeInfo } from \"../primitive-type-info.js\";\n\nfunction factor(literal: string): Decimal {\n const parsed = Decimal.parse(literal);\n /* c8 ignore next */\n if (parsed === null) throw new Error(`Invalid conversion factor: ${literal}`);\n return parsed;\n}\n\n/**\n * A unit of area identified by its symbol.\n * Each unit carries English and Swedish names, singular and plural forms, and an\n * exact conversion factor to the base unit.\n */\nexport class AreaUnit extends MeasurementUnit {\n declare private readonly __areaUnitBrand: void;\n\n static readonly typeInfo: PrimitiveTypeInfo = Object.freeze({\n englishName: \"Area Unit\",\n localizedName: \"Ytenhet\",\n emoji: \"\uD83D\uDCD0\",\n sources: Object.freeze([]),\n });\n\n static readonly SquareMillimeter = new AreaUnit({\n symbol: \"mm\u00B2\",\n englishName: \"square millimeter\",\n localizedName: \"kvadratmillimeter\",\n pluralEnglish: \"square millimeters\",\n pluralSwedish: \"kvadratmillimeter\",\n toBaseUnitFactor: factor(\"0.000001\"),\n aliases: [\"mm2\", \"sq mm\", \"square millimetre\", \"square millimetres\"],\n });\n\n static readonly SquareCentimeter = new AreaUnit({\n symbol: \"cm\u00B2\",\n englishName: \"square centimeter\",\n localizedName: \"kvadratcentimeter\",\n pluralEnglish: \"square centimeters\",\n pluralSwedish: \"kvadratcentimeter\",\n toBaseUnitFactor: factor(\"0.0001\"),\n aliases: [\"cm2\", \"sq cm\", \"square centimetre\", \"square centimetres\"],\n });\n\n static readonly SquareMeter = new AreaUnit({\n symbol: \"m\u00B2\",\n englishName: \"square meter\",\n localizedName: \"kvadratmeter\",\n pluralEnglish: \"square meters\",\n pluralSwedish: \"kvadratmeter\",\n toBaseUnitFactor: factor(\"1\"),\n aliases: [\"m2\", \"sq m\", \"sqm\", \"square metre\", \"square metres\"],\n });\n\n static readonly SquareKilometer = new AreaUnit({\n symbol: \"km\u00B2\",\n englishName: \"square kilometer\",\n localizedName: \"kvadratkilometer\",\n pluralEnglish: \"square kilometers\",\n pluralSwedish: \"kvadratkilometer\",\n toBaseUnitFactor: factor(\"1000000\"),\n aliases: [\"km2\", \"sq km\", \"square kilometre\", \"square kilometres\"],\n });\n\n static readonly Hectare = new AreaUnit({\n symbol: \"ha\",\n englishName: \"hectare\",\n localizedName: \"hektar\",\n pluralEnglish: \"hectares\",\n pluralSwedish: \"hektar\",\n toBaseUnitFactor: factor(\"10000\"),\n });\n\n static readonly Acre = new AreaUnit({\n symbol: \"acre\",\n englishName: \"acre\",\n localizedName: \"acre\",\n pluralEnglish: \"acres\",\n pluralSwedish: \"acre\",\n toBaseUnitFactor: factor(\"4046.8564224\"),\n });\n\n static readonly SquareFoot = new AreaUnit({\n symbol: \"sq ft\",\n englishName: \"square foot\",\n localizedName: \"kvadratfot\",\n pluralEnglish: \"square feet\",\n pluralSwedish: \"kvadratfot\",\n toBaseUnitFactor: factor(\"0.09290304\"),\n aliases: [\"sqft\", \"square feet\", \"square foot\"],\n });\n\n static readonly SquareInch = new AreaUnit({\n symbol: \"sq in\",\n englishName: \"square inch\",\n localizedName: \"kvadrattum\",\n pluralEnglish: \"square inches\",\n pluralSwedish: \"kvadrattum\",\n toBaseUnitFactor: factor(\"0.00064516\"),\n aliases: [\"sqin\", \"square inches\", \"square inch\"],\n });\n\n static readonly SquareYard = new AreaUnit({\n symbol: \"sq yd\",\n englishName: \"square yard\",\n localizedName: \"kvadratyard\",\n pluralEnglish: \"square yards\",\n pluralSwedish: \"kvadratyard\",\n toBaseUnitFactor: factor(\"0.83612736\"),\n aliases: [\"sqyd\", \"square yards\", \"square yard\"],\n });\n\n /** @internal Shared lookup and natural-scale walk. */\n static readonly index: MeasurementUnitIndex<AreaUnit> = new MeasurementUnitIndex<AreaUnit>(\n [\n AreaUnit.SquareMillimeter,\n AreaUnit.SquareCentimeter,\n AreaUnit.SquareMeter,\n AreaUnit.SquareKilometer,\n AreaUnit.Hectare,\n AreaUnit.Acre,\n AreaUnit.SquareFoot,\n AreaUnit.SquareInch,\n AreaUnit.SquareYard,\n ],\n AreaUnit.SquareMeter,\n [AreaUnit.SquareCentimeter, AreaUnit.SquareMeter, AreaUnit.Hectare, AreaUnit.SquareKilometer],\n );\n\n static get all(): readonly AreaUnit[] {\n return AreaUnit.index.all;\n }\n\n /** The base unit: m\u00B2. */\n static get baseUnit(): AreaUnit {\n return AreaUnit.index.baseUnit;\n }\n\n /** Units ordered small to large, used to auto-scale display. */\n static get naturalScale(): readonly AreaUnit[] {\n return AreaUnit.index.naturalScale;\n }\n\n /** Resolves a unit from a symbol, name, plural or alias, case-insensitively. */\n static tryParse(input: string | null | undefined): AreaUnit | null {\n return AreaUnit.index.tryParse(input);\n }\n\n static parse(input: string): AreaUnit {\n const result = AreaUnit.tryParse(input);\n if (result === null) throw new Error(\"Unknown area unit.\");\n return result;\n }\n\n /** Returns the most human-readable unit for a value in m\u00B2. */\n static getNatural(baseValue: Decimal): AreaUnit {\n return AreaUnit.index.getNatural(baseValue);\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { Decimal } from "../internal/decimal.js";
|
|
2
|
+
import { Quantity, tryParseQuantity } from "../internal/quantity.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
|
+
import { AreaUnit } from "./area-unit.js";
|
|
7
|
+
const SCAN_PATTERN = new RegExp(
|
|
8
|
+
String.raw`(?<!\w)(?:[+-]\s*)?\d+[0-9 .,]*\s*(?:(?:mm|cm|km|m)(?:²|2)|ha\b|hectare\b|hectares\b|hektar\b|acre\b|acres\b|sq\s*ft\b|sq\s*in\b|sq\s*yd\b|kvadrat(?:millimeter|centimeter|meter|kilometer|fot|tum|yard)\b)`,
|
|
9
|
+
"giu"
|
|
10
|
+
);
|
|
11
|
+
class Area extends Quantity {
|
|
12
|
+
static typeInfo = Object.freeze({
|
|
13
|
+
englishName: "Area",
|
|
14
|
+
localizedName: "Yta",
|
|
15
|
+
emoji: "\u{1F4D0}",
|
|
16
|
+
sources: Object.freeze([
|
|
17
|
+
"https://www.bipm.org/en/measurement-units/si-base-units",
|
|
18
|
+
"https://en.wikipedia.org/wiki/Conversion_of_units"
|
|
19
|
+
])
|
|
20
|
+
});
|
|
21
|
+
get units() {
|
|
22
|
+
return AreaUnit.index;
|
|
23
|
+
}
|
|
24
|
+
withBaseValue(baseValue, unit) {
|
|
25
|
+
return new Area(baseValue, unit);
|
|
26
|
+
}
|
|
27
|
+
get squareMillimeters() {
|
|
28
|
+
return this.in(AreaUnit.SquareMillimeter);
|
|
29
|
+
}
|
|
30
|
+
get squareCentimeters() {
|
|
31
|
+
return this.in(AreaUnit.SquareCentimeter);
|
|
32
|
+
}
|
|
33
|
+
get squareMeters() {
|
|
34
|
+
return this.in(AreaUnit.SquareMeter);
|
|
35
|
+
}
|
|
36
|
+
get squareKilometers() {
|
|
37
|
+
return this.in(AreaUnit.SquareKilometer);
|
|
38
|
+
}
|
|
39
|
+
get hectares() {
|
|
40
|
+
return this.in(AreaUnit.Hectare);
|
|
41
|
+
}
|
|
42
|
+
get acres() {
|
|
43
|
+
return this.in(AreaUnit.Acre);
|
|
44
|
+
}
|
|
45
|
+
get squareFeet() {
|
|
46
|
+
return this.in(AreaUnit.SquareFoot);
|
|
47
|
+
}
|
|
48
|
+
get squareInches() {
|
|
49
|
+
return this.in(AreaUnit.SquareInch);
|
|
50
|
+
}
|
|
51
|
+
get squareYards() {
|
|
52
|
+
return this.in(AreaUnit.SquareYard);
|
|
53
|
+
}
|
|
54
|
+
/** Creates a area from a value and unit. */
|
|
55
|
+
static create(value, unit) {
|
|
56
|
+
AreaUnit.index.assertOwns(unit);
|
|
57
|
+
const amount = value instanceof Decimal ? value : Area.decimalOf(value);
|
|
58
|
+
return new Area(unit.toBase(amount), unit);
|
|
59
|
+
}
|
|
60
|
+
static fromSquareMillimeters(value) {
|
|
61
|
+
return Area.create(value, AreaUnit.SquareMillimeter);
|
|
62
|
+
}
|
|
63
|
+
static fromSquareCentimeters(value) {
|
|
64
|
+
return Area.create(value, AreaUnit.SquareCentimeter);
|
|
65
|
+
}
|
|
66
|
+
static fromSquareMeters(value) {
|
|
67
|
+
return Area.create(value, AreaUnit.SquareMeter);
|
|
68
|
+
}
|
|
69
|
+
static fromSquareKilometers(value) {
|
|
70
|
+
return Area.create(value, AreaUnit.SquareKilometer);
|
|
71
|
+
}
|
|
72
|
+
static fromHectares(value) {
|
|
73
|
+
return Area.create(value, AreaUnit.Hectare);
|
|
74
|
+
}
|
|
75
|
+
static fromAcres(value) {
|
|
76
|
+
return Area.create(value, AreaUnit.Acre);
|
|
77
|
+
}
|
|
78
|
+
static fromSquareFeet(value) {
|
|
79
|
+
return Area.create(value, AreaUnit.SquareFoot);
|
|
80
|
+
}
|
|
81
|
+
static fromSquareInches(value) {
|
|
82
|
+
return Area.create(value, AreaUnit.SquareInch);
|
|
83
|
+
}
|
|
84
|
+
static fromSquareYards(value) {
|
|
85
|
+
return Area.create(value, AreaUnit.SquareYard);
|
|
86
|
+
}
|
|
87
|
+
static tryParse(input) {
|
|
88
|
+
const parsed = tryParseQuantity(input, AreaUnit.index);
|
|
89
|
+
return parsed === null ? null : new Area(parsed.baseValue, parsed.unit);
|
|
90
|
+
}
|
|
91
|
+
static parse(input) {
|
|
92
|
+
const result = Area.tryParse(input);
|
|
93
|
+
if (result === null) throw new Error("Invalid area.");
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
96
|
+
static isValid(input) {
|
|
97
|
+
return Area.tryParse(input) !== null;
|
|
98
|
+
}
|
|
99
|
+
/** Display form in the parsed unit, or `null` when the input is invalid. */
|
|
100
|
+
static format(input, options) {
|
|
101
|
+
const parsed = Area.tryParse(input);
|
|
102
|
+
if (parsed !== null) {
|
|
103
|
+
if (options?.unit !== void 0 || options?.decimals !== void 0) {
|
|
104
|
+
return parsed.toStringInUnit(options.unit ?? parsed.originalUnit, options.decimals);
|
|
105
|
+
}
|
|
106
|
+
return parsed.toString();
|
|
107
|
+
}
|
|
108
|
+
return Area.fallback(input, options);
|
|
109
|
+
}
|
|
110
|
+
/** The value in square meters, or `null` when the input is invalid. */
|
|
111
|
+
static normalize(input, options) {
|
|
112
|
+
const parsed = Area.tryParse(input);
|
|
113
|
+
if (parsed !== null) return parsed.toNormalizedString();
|
|
114
|
+
return Area.fallback(input, options);
|
|
115
|
+
}
|
|
116
|
+
static isNormalized(input) {
|
|
117
|
+
return input != null && Area.normalize(input) === input;
|
|
118
|
+
}
|
|
119
|
+
static findCandidatesInText(text) {
|
|
120
|
+
if (!text) return [];
|
|
121
|
+
const out = [];
|
|
122
|
+
const pattern = new RegExp(SCAN_PATTERN.source, SCAN_PATTERN.flags);
|
|
123
|
+
let match;
|
|
124
|
+
while ((match = pattern.exec(text)) !== null) {
|
|
125
|
+
const value = Area.tryParse(match[0]);
|
|
126
|
+
if (value === null) continue;
|
|
127
|
+
out.push(
|
|
128
|
+
new TextCandidate({
|
|
129
|
+
startIndex: match.index,
|
|
130
|
+
length: match[0].length,
|
|
131
|
+
originalText: match[0],
|
|
132
|
+
typeName: "Area",
|
|
133
|
+
category: TextCandidateCategory.Measurement,
|
|
134
|
+
normalizedForm: value.toNormalizedString(),
|
|
135
|
+
formattedForm: value.toString(),
|
|
136
|
+
maskedForm: maskArea(value),
|
|
137
|
+
confidence: TextMatchConfidence.Medium,
|
|
138
|
+
value
|
|
139
|
+
})
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
return out;
|
|
143
|
+
}
|
|
144
|
+
static fallback(input, options) {
|
|
145
|
+
if (options?.fallbackToTrimmedInputWhenInvalid !== true) return null;
|
|
146
|
+
if (input == null) return null;
|
|
147
|
+
const trimmed = input.trim();
|
|
148
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
149
|
+
}
|
|
150
|
+
static decimalOf(value) {
|
|
151
|
+
const parsed = Decimal.fromNumber(value);
|
|
152
|
+
if (parsed === null) throw new Error(`Value cannot be represented as a area: ${value}`);
|
|
153
|
+
return parsed;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
function maskArea(value) {
|
|
157
|
+
return `*** ${value.originalUnit.symbol}`;
|
|
158
|
+
}
|
|
159
|
+
export {
|
|
160
|
+
Area,
|
|
161
|
+
maskArea
|
|
162
|
+
};
|
|
163
|
+
//# sourceMappingURL=area.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/measurement/area.ts"],
|
|
4
|
+
"sourcesContent": ["import { Decimal } from \"../internal/decimal.js\";\nimport type { MeasurementUnitIndex } from \"../internal/measurement-unit.js\";\nimport { Quantity, tryParseQuantity } from \"../internal/quantity.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 { AreaUnit } from \"./area-unit.js\";\n\n/** Options for {@link Area.format} and {@link Area.normalize}. */\nexport interface AreaFormatOptions {\n fallbackToTrimmedInputWhenInvalid?: boolean;\n /** Convert to this unit instead of preserving the parsed one. */\n unit?: AreaUnit;\n /** Round to this many fractional digits, away from zero. */\n decimals?: number;\n}\n\nconst SCAN_PATTERN = new RegExp(\n String.raw`(?<!\\w)(?:[+-]\\s*)?\\d+[0-9 .,]*\\s*(?:(?:mm|cm|km|m)(?:\u00B2|2)|ha\\b|hectare\\b|hectares\\b|hektar\\b|acre\\b|acres\\b|sq\\s*ft\\b|sq\\s*in\\b|sq\\s*yd\\b|kvadrat(?:millimeter|centimeter|meter|kilometer|fot|tum|yard)\\b)`,\n \"giu\",\n);\n\n/**\n * A area stored internally in square meters,\n * parsed from any supported unit and convertible between all of them.\n */\nexport class Area extends Quantity<AreaUnit> {\n static readonly typeInfo: PrimitiveTypeInfo = Object.freeze({\n englishName: \"Area\",\n localizedName: \"Yta\",\n emoji: \"\uD83D\uDCD0\",\n sources: Object.freeze([\n \"https://www.bipm.org/en/measurement-units/si-base-units\",\n \"https://en.wikipedia.org/wiki/Conversion_of_units\",\n ]),\n });\n\n protected get units(): MeasurementUnitIndex<AreaUnit> {\n return AreaUnit.index;\n }\n\n protected withBaseValue(baseValue: Decimal, unit: AreaUnit): this {\n return new Area(baseValue, unit) as this;\n }\n\n get squareMillimeters(): number {\n return this.in(AreaUnit.SquareMillimeter);\n }\n get squareCentimeters(): number {\n return this.in(AreaUnit.SquareCentimeter);\n }\n get squareMeters(): number {\n return this.in(AreaUnit.SquareMeter);\n }\n get squareKilometers(): number {\n return this.in(AreaUnit.SquareKilometer);\n }\n get hectares(): number {\n return this.in(AreaUnit.Hectare);\n }\n get acres(): number {\n return this.in(AreaUnit.Acre);\n }\n get squareFeet(): number {\n return this.in(AreaUnit.SquareFoot);\n }\n get squareInches(): number {\n return this.in(AreaUnit.SquareInch);\n }\n get squareYards(): number {\n return this.in(AreaUnit.SquareYard);\n }\n\n /** Creates a area from a value and unit. */\n static create(value: number | Decimal, unit: AreaUnit): Area {\n AreaUnit.index.assertOwns(unit);\n const amount = value instanceof Decimal ? value : Area.decimalOf(value);\n return new Area(unit.toBase(amount), unit);\n }\n\n static fromSquareMillimeters(value: number | Decimal): Area {\n return Area.create(value, AreaUnit.SquareMillimeter);\n }\n static fromSquareCentimeters(value: number | Decimal): Area {\n return Area.create(value, AreaUnit.SquareCentimeter);\n }\n static fromSquareMeters(value: number | Decimal): Area {\n return Area.create(value, AreaUnit.SquareMeter);\n }\n static fromSquareKilometers(value: number | Decimal): Area {\n return Area.create(value, AreaUnit.SquareKilometer);\n }\n static fromHectares(value: number | Decimal): Area {\n return Area.create(value, AreaUnit.Hectare);\n }\n static fromAcres(value: number | Decimal): Area {\n return Area.create(value, AreaUnit.Acre);\n }\n static fromSquareFeet(value: number | Decimal): Area {\n return Area.create(value, AreaUnit.SquareFoot);\n }\n static fromSquareInches(value: number | Decimal): Area {\n return Area.create(value, AreaUnit.SquareInch);\n }\n static fromSquareYards(value: number | Decimal): Area {\n return Area.create(value, AreaUnit.SquareYard);\n }\n\n static tryParse(input: string | null | undefined): Area | null {\n const parsed = tryParseQuantity(input, AreaUnit.index);\n return parsed === null ? null : new Area(parsed.baseValue, parsed.unit);\n }\n\n static parse(input: string): Area {\n const result = Area.tryParse(input);\n if (result === null) throw new Error(\"Invalid area.\");\n return result;\n }\n\n static isValid(input: string | null | undefined): boolean {\n return Area.tryParse(input) !== null;\n }\n\n /** Display form in the parsed unit, or `null` when the input is invalid. */\n static format(input: string | null | undefined, options?: AreaFormatOptions): string | null {\n const parsed = Area.tryParse(input);\n if (parsed !== null) {\n if (options?.unit !== undefined || options?.decimals !== undefined) {\n return parsed.toStringInUnit(options.unit ?? parsed.originalUnit, options.decimals);\n }\n return parsed.toString();\n }\n return Area.fallback(input, options);\n }\n\n /** The value in square meters, or `null` when the input is invalid. */\n static normalize(input: string | null | undefined, options?: AreaFormatOptions): string | null {\n const parsed = Area.tryParse(input);\n if (parsed !== null) return parsed.toNormalizedString();\n return Area.fallback(input, options);\n }\n\n static isNormalized(input: string | null | undefined): boolean {\n return input != null && Area.normalize(input) === input;\n }\n\n static findCandidatesInText(text: string): readonly TextCandidate<Area>[] {\n if (!text) return [];\n\n const out: TextCandidate<Area>[] = [];\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 = Area.tryParse(match[0]);\n if (value === null) continue;\n out.push(\n new TextCandidate<Area>({\n startIndex: match.index,\n length: match[0].length,\n originalText: match[0],\n typeName: \"Area\",\n category: TextCandidateCategory.Measurement,\n normalizedForm: value.toNormalizedString(),\n formattedForm: value.toString(),\n maskedForm: maskArea(value),\n confidence: TextMatchConfidence.Medium,\n value,\n }),\n );\n }\n\n return out;\n }\n\n private static fallback(\n input: string | null | undefined,\n options?: AreaFormatOptions,\n ): string | null {\n if (options?.fallbackToTrimmedInputWhenInvalid !== true) return null;\n if (input == null) return null;\n const trimmed = input.trim();\n return trimmed.length > 0 ? trimmed : null;\n }\n\n private static decimalOf(value: number): Decimal {\n const parsed = Decimal.fromNumber(value);\n if (parsed === null) throw new Error(`Value cannot be represented as a area: ${value}`);\n return parsed;\n }\n}\n\n/** Returns a masked area, e.g. `10 m\u00B2` becomes `*** m\u00B2`. */\nexport function maskArea(value: Area): string {\n return `*** ${value.originalUnit.symbol}`;\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,eAAe;AAExB,SAAS,UAAU,wBAAwB;AAE3C,SAAS,qBAAqB;AAC9B,SAAS,6BAA6B;AACtC,SAAS,2BAA2B;AACpC,SAAS,gBAAgB;AAWzB,MAAM,eAAe,IAAI;AAAA,EACvB,OAAO;AAAA,EACP;AACF;AAMO,MAAM,aAAa,SAAmB;AAAA,EAC3C,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,EAED,IAAc,QAAwC;AACpD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEU,cAAc,WAAoB,MAAsB;AAChE,WAAO,IAAI,KAAK,WAAW,IAAI;AAAA,EACjC;AAAA,EAEA,IAAI,oBAA4B;AAC9B,WAAO,KAAK,GAAG,SAAS,gBAAgB;AAAA,EAC1C;AAAA,EACA,IAAI,oBAA4B;AAC9B,WAAO,KAAK,GAAG,SAAS,gBAAgB;AAAA,EAC1C;AAAA,EACA,IAAI,eAAuB;AACzB,WAAO,KAAK,GAAG,SAAS,WAAW;AAAA,EACrC;AAAA,EACA,IAAI,mBAA2B;AAC7B,WAAO,KAAK,GAAG,SAAS,eAAe;AAAA,EACzC;AAAA,EACA,IAAI,WAAmB;AACrB,WAAO,KAAK,GAAG,SAAS,OAAO;AAAA,EACjC;AAAA,EACA,IAAI,QAAgB;AAClB,WAAO,KAAK,GAAG,SAAS,IAAI;AAAA,EAC9B;AAAA,EACA,IAAI,aAAqB;AACvB,WAAO,KAAK,GAAG,SAAS,UAAU;AAAA,EACpC;AAAA,EACA,IAAI,eAAuB;AACzB,WAAO,KAAK,GAAG,SAAS,UAAU;AAAA,EACpC;AAAA,EACA,IAAI,cAAsB;AACxB,WAAO,KAAK,GAAG,SAAS,UAAU;AAAA,EACpC;AAAA;AAAA,EAGA,OAAO,OAAO,OAAyB,MAAsB;AAC3D,aAAS,MAAM,WAAW,IAAI;AAC9B,UAAM,SAAS,iBAAiB,UAAU,QAAQ,KAAK,UAAU,KAAK;AACtE,WAAO,IAAI,KAAK,KAAK,OAAO,MAAM,GAAG,IAAI;AAAA,EAC3C;AAAA,EAEA,OAAO,sBAAsB,OAA+B;AAC1D,WAAO,KAAK,OAAO,OAAO,SAAS,gBAAgB;AAAA,EACrD;AAAA,EACA,OAAO,sBAAsB,OAA+B;AAC1D,WAAO,KAAK,OAAO,OAAO,SAAS,gBAAgB;AAAA,EACrD;AAAA,EACA,OAAO,iBAAiB,OAA+B;AACrD,WAAO,KAAK,OAAO,OAAO,SAAS,WAAW;AAAA,EAChD;AAAA,EACA,OAAO,qBAAqB,OAA+B;AACzD,WAAO,KAAK,OAAO,OAAO,SAAS,eAAe;AAAA,EACpD;AAAA,EACA,OAAO,aAAa,OAA+B;AACjD,WAAO,KAAK,OAAO,OAAO,SAAS,OAAO;AAAA,EAC5C;AAAA,EACA,OAAO,UAAU,OAA+B;AAC9C,WAAO,KAAK,OAAO,OAAO,SAAS,IAAI;AAAA,EACzC;AAAA,EACA,OAAO,eAAe,OAA+B;AACnD,WAAO,KAAK,OAAO,OAAO,SAAS,UAAU;AAAA,EAC/C;AAAA,EACA,OAAO,iBAAiB,OAA+B;AACrD,WAAO,KAAK,OAAO,OAAO,SAAS,UAAU;AAAA,EAC/C;AAAA,EACA,OAAO,gBAAgB,OAA+B;AACpD,WAAO,KAAK,OAAO,OAAO,SAAS,UAAU;AAAA,EAC/C;AAAA,EAEA,OAAO,SAAS,OAA+C;AAC7D,UAAM,SAAS,iBAAiB,OAAO,SAAS,KAAK;AACrD,WAAO,WAAW,OAAO,OAAO,IAAI,KAAK,OAAO,WAAW,OAAO,IAAI;AAAA,EACxE;AAAA,EAEA,OAAO,MAAM,OAAqB;AAChC,UAAM,SAAS,KAAK,SAAS,KAAK;AAClC,QAAI,WAAW,KAAM,OAAM,IAAI,MAAM,eAAe;AACpD,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,QAAQ,OAA2C;AACxD,WAAO,KAAK,SAAS,KAAK,MAAM;AAAA,EAClC;AAAA;AAAA,EAGA,OAAO,OAAO,OAAkC,SAA4C;AAC1F,UAAM,SAAS,KAAK,SAAS,KAAK;AAClC,QAAI,WAAW,MAAM;AACnB,UAAI,SAAS,SAAS,UAAa,SAAS,aAAa,QAAW;AAClE,eAAO,OAAO,eAAe,QAAQ,QAAQ,OAAO,cAAc,QAAQ,QAAQ;AAAA,MACpF;AACA,aAAO,OAAO,SAAS;AAAA,IACzB;AACA,WAAO,KAAK,SAAS,OAAO,OAAO;AAAA,EACrC;AAAA;AAAA,EAGA,OAAO,UAAU,OAAkC,SAA4C;AAC7F,UAAM,SAAS,KAAK,SAAS,KAAK;AAClC,QAAI,WAAW,KAAM,QAAO,OAAO,mBAAmB;AACtD,WAAO,KAAK,SAAS,OAAO,OAAO;AAAA,EACrC;AAAA,EAEA,OAAO,aAAa,OAA2C;AAC7D,WAAO,SAAS,QAAQ,KAAK,UAAU,KAAK,MAAM;AAAA,EACpD;AAAA,EAEA,OAAO,qBAAqB,MAA8C;AACxE,QAAI,CAAC,KAAM,QAAO,CAAC;AAEnB,UAAM,MAA6B,CAAC;AACpC,UAAM,UAAU,IAAI,OAAO,aAAa,QAAQ,aAAa,KAAK;AAClE,QAAI;AAEJ,YAAQ,QAAQ,QAAQ,KAAK,IAAI,OAAO,MAAM;AAC5C,YAAM,QAAQ,KAAK,SAAS,MAAM,CAAC,CAAC;AACpC,UAAI,UAAU,KAAM;AACpB,UAAI;AAAA,QACF,IAAI,cAAoB;AAAA,UACtB,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,SAAS,KAAK;AAAA,UAC1B,YAAY,oBAAoB;AAAA,UAChC;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,OAAe,SACb,OACA,SACe;AACf,QAAI,SAAS,sCAAsC,KAAM,QAAO;AAChE,QAAI,SAAS,KAAM,QAAO;AAC1B,UAAM,UAAU,MAAM,KAAK;AAC3B,WAAO,QAAQ,SAAS,IAAI,UAAU;AAAA,EACxC;AAAA,EAEA,OAAe,UAAU,OAAwB;AAC/C,UAAM,SAAS,QAAQ,WAAW,KAAK;AACvC,QAAI,WAAW,KAAM,OAAM,IAAI,MAAM,0CAA0C,KAAK,EAAE;AACtF,WAAO;AAAA,EACT;AACF;AAGO,SAAS,SAAS,OAAqB;AAC5C,SAAO,OAAO,MAAM,aAAa,MAAM;AACzC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { sanitizeInput } from "../internal/input-sanitization.js";
|
|
2
|
+
const MIN_VALUE = 0;
|
|
3
|
+
const MAX_VALUE = 1e9;
|
|
4
|
+
const MAX_INPUT_LENGTH = 50;
|
|
5
|
+
const INPUT_PATTERN = /^(?<number>[0-9](?:[0-9 .,\u00A0]*[0-9])?)\s*(?<suffix>st\.?|stk\.?|stycken|stycke|pcs\.?|pc\.?|pieces|piece|ea\.?|x)?$/iu;
|
|
6
|
+
class Count {
|
|
7
|
+
constructor(value) {
|
|
8
|
+
this.value = value;
|
|
9
|
+
}
|
|
10
|
+
value;
|
|
11
|
+
static typeInfo = Object.freeze({
|
|
12
|
+
englishName: "Count",
|
|
13
|
+
localizedName: "Antal",
|
|
14
|
+
emoji: "\u{1F522}",
|
|
15
|
+
sources: Object.freeze(["https://www.tnc.se/"])
|
|
16
|
+
});
|
|
17
|
+
/** The smallest count that can be represented. */
|
|
18
|
+
static minValue = MIN_VALUE;
|
|
19
|
+
/** The largest count that can be represented. */
|
|
20
|
+
static maxValue = MAX_VALUE;
|
|
21
|
+
/** Creates a count from an integer. Throws when it is out of range. */
|
|
22
|
+
static create(value) {
|
|
23
|
+
if (!Number.isInteger(value) || value < MIN_VALUE || value > MAX_VALUE) {
|
|
24
|
+
throw new Error(`Count must be between ${MIN_VALUE} and ${MAX_VALUE}.`);
|
|
25
|
+
}
|
|
26
|
+
return new Count(value);
|
|
27
|
+
}
|
|
28
|
+
static tryParse(input) {
|
|
29
|
+
if (input == null) return null;
|
|
30
|
+
const trimmed = sanitizeInput(input).trim();
|
|
31
|
+
if (trimmed.length === 0 || trimmed.length > MAX_INPUT_LENGTH) return null;
|
|
32
|
+
const match = INPUT_PATTERN.exec(trimmed);
|
|
33
|
+
const number = match?.groups?.["number"];
|
|
34
|
+
if (number === void 0) return null;
|
|
35
|
+
const value = tryParseInteger(number);
|
|
36
|
+
if (value === null || value < MIN_VALUE || value > MAX_VALUE) return null;
|
|
37
|
+
return new Count(value);
|
|
38
|
+
}
|
|
39
|
+
static parse(input) {
|
|
40
|
+
const result = Count.tryParse(input);
|
|
41
|
+
if (result === null) throw new Error("Invalid count.");
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
static isValid(input) {
|
|
45
|
+
return Count.tryParse(input) !== null;
|
|
46
|
+
}
|
|
47
|
+
/** Display form with the Swedish piece abbreviation, e.g. `1 345 st`. */
|
|
48
|
+
static format(input, options) {
|
|
49
|
+
const parsed = Count.tryParse(input);
|
|
50
|
+
if (parsed !== null) return parsed.toString();
|
|
51
|
+
return fallback(input, options);
|
|
52
|
+
}
|
|
53
|
+
/** The digit-only canonical form, e.g. `1345`. */
|
|
54
|
+
static normalize(input, options) {
|
|
55
|
+
const parsed = Count.tryParse(input);
|
|
56
|
+
if (parsed !== null) return parsed.toNormalizedString();
|
|
57
|
+
return fallback(input, options);
|
|
58
|
+
}
|
|
59
|
+
static isNormalized(input) {
|
|
60
|
+
return input != null && Count.normalize(input) === input;
|
|
61
|
+
}
|
|
62
|
+
/** The digit-only canonical form, e.g. `1345`. */
|
|
63
|
+
toNormalizedString() {
|
|
64
|
+
return String(this.value);
|
|
65
|
+
}
|
|
66
|
+
/** The count with grouped thousands and a piece abbreviation, e.g. `1 345 st`. */
|
|
67
|
+
toString() {
|
|
68
|
+
return `${formatGrouped(this.value)} st`;
|
|
69
|
+
}
|
|
70
|
+
/** Grouped but without the suffix, e.g. `1 345`. */
|
|
71
|
+
toNaturalString() {
|
|
72
|
+
return formatGrouped(this.value);
|
|
73
|
+
}
|
|
74
|
+
compareTo(other) {
|
|
75
|
+
if (other == null) return 1;
|
|
76
|
+
return this.value - other.value;
|
|
77
|
+
}
|
|
78
|
+
equals(other) {
|
|
79
|
+
return other != null && this.value === other.value;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function maskCount(count) {
|
|
83
|
+
void count;
|
|
84
|
+
return "*** st";
|
|
85
|
+
}
|
|
86
|
+
function formatGrouped(value) {
|
|
87
|
+
return String(value).replace(/\B(?=(\d{3})+(?!\d))/gu, " ");
|
|
88
|
+
}
|
|
89
|
+
function tryParseInteger(raw) {
|
|
90
|
+
const compact = raw.replace(/[ \u00A0]/gu, "");
|
|
91
|
+
if (compact.length === 0) return null;
|
|
92
|
+
const lastSeparator = Math.max(compact.lastIndexOf(","), compact.lastIndexOf("."));
|
|
93
|
+
if (lastSeparator >= 0) {
|
|
94
|
+
const trailing = compact.slice(lastSeparator + 1);
|
|
95
|
+
if (trailing.length > 0 && trailing.length < 3 && /^\d+$/u.test(trailing)) return null;
|
|
96
|
+
}
|
|
97
|
+
const digits = compact.replace(/[.,]/gu, "");
|
|
98
|
+
if (digits.length === 0 || !/^\d+$/u.test(digits)) return null;
|
|
99
|
+
const value = Number(digits);
|
|
100
|
+
return Number.isSafeInteger(value) ? value : null;
|
|
101
|
+
}
|
|
102
|
+
function fallback(input, options) {
|
|
103
|
+
if (options?.fallbackToTrimmedInputWhenInvalid !== true) return null;
|
|
104
|
+
if (input == null) return null;
|
|
105
|
+
const trimmed = input.trim();
|
|
106
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
107
|
+
}
|
|
108
|
+
export {
|
|
109
|
+
Count,
|
|
110
|
+
maskCount
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=count.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/measurement/count.ts"],
|
|
4
|
+
"sourcesContent": ["import { sanitizeInput } from \"../internal/input-sanitization.js\";\nimport type { PrimitiveTypeInfo } from \"../primitive-type-info.js\";\n\n/** Options for {@link Count.format} and {@link Count.normalize}. */\nexport interface CountFormatOptions {\n fallbackToTrimmedInputWhenInvalid?: boolean;\n}\n\nconst MIN_VALUE = 0;\nconst MAX_VALUE = 1_000_000_000;\nconst MAX_INPUT_LENGTH = 50;\n\nconst INPUT_PATTERN =\n /^(?<number>[0-9](?:[0-9 .,\\u00A0]*[0-9])?)\\s*(?<suffix>st\\.?|stk\\.?|stycken|stycke|pcs\\.?|pc\\.?|pieces|piece|ea\\.?|x)?$/iu;\n\n/**\n * A whole number of items, from 0 to one billion, written with or without a\n * piece suffix \u2014 `5`, `5 st`, `1 345 stycken`, `3 x`.\n *\n * Separators are treated as thousands grouping, so `1.345` is one thousand\n * three hundred and forty-five. A group of one or two digits after the last\n * separator cannot be grouping, so `1,5` is rejected rather than rounded.\n */\nexport class Count {\n static readonly typeInfo: PrimitiveTypeInfo = Object.freeze({\n englishName: \"Count\",\n localizedName: \"Antal\",\n emoji: \"\uD83D\uDD22\",\n sources: Object.freeze([\"https://www.tnc.se/\"]),\n });\n\n /** The smallest count that can be represented. */\n static readonly minValue = MIN_VALUE;\n\n /** The largest count that can be represented. */\n static readonly maxValue = MAX_VALUE;\n\n private constructor(\n /** The count as an integer, e.g. `5`. */\n readonly value: number,\n ) {}\n\n /** Creates a count from an integer. Throws when it is out of range. */\n static create(value: number): Count {\n if (!Number.isInteger(value) || value < MIN_VALUE || value > MAX_VALUE) {\n throw new Error(`Count must be between ${MIN_VALUE} and ${MAX_VALUE}.`);\n }\n return new Count(value);\n }\n\n static tryParse(input: string | null | undefined): Count | null {\n if (input == null) return null;\n\n const trimmed = sanitizeInput(input).trim();\n if (trimmed.length === 0 || trimmed.length > MAX_INPUT_LENGTH) return null;\n\n const match = INPUT_PATTERN.exec(trimmed);\n const number = match?.groups?.[\"number\"];\n if (number === undefined) return null;\n\n const value = tryParseInteger(number);\n if (value === null || value < MIN_VALUE || value > MAX_VALUE) return null;\n\n return new Count(value);\n }\n\n static parse(input: string): Count {\n const result = Count.tryParse(input);\n if (result === null) throw new Error(\"Invalid count.\");\n return result;\n }\n\n static isValid(input: string | null | undefined): boolean {\n return Count.tryParse(input) !== null;\n }\n\n /** Display form with the Swedish piece abbreviation, e.g. `1 345 st`. */\n static format(input: string | null | undefined, options?: CountFormatOptions): string | null {\n const parsed = Count.tryParse(input);\n if (parsed !== null) return parsed.toString();\n return fallback(input, options);\n }\n\n /** The digit-only canonical form, e.g. `1345`. */\n static normalize(input: string | null | undefined, options?: CountFormatOptions): string | null {\n const parsed = Count.tryParse(input);\n if (parsed !== null) return parsed.toNormalizedString();\n return fallback(input, options);\n }\n\n static isNormalized(input: string | null | undefined): boolean {\n return input != null && Count.normalize(input) === input;\n }\n\n /** The digit-only canonical form, e.g. `1345`. */\n toNormalizedString(): string {\n return String(this.value);\n }\n\n /** The count with grouped thousands and a piece abbreviation, e.g. `1 345 st`. */\n toString(): string {\n return `${formatGrouped(this.value)} st`;\n }\n\n /** Grouped but without the suffix, e.g. `1 345`. */\n toNaturalString(): string {\n return formatGrouped(this.value);\n }\n\n compareTo(other: Count | null | undefined): number {\n if (other == null) return 1;\n return this.value - other.value;\n }\n\n equals(other: Count | null | undefined): boolean {\n return other != null && this.value === other.value;\n }\n}\n\n/** Returns a masked count, e.g. `5 st` becomes `*** st`. */\nexport function maskCount(count: Count): string {\n void count;\n return \"*** st\";\n}\n\nfunction formatGrouped(value: number): string {\n return String(value).replace(/\\B(?=(\\d{3})+(?!\\d))/gu, \" \");\n}\n\n/**\n * Reads an integer whose separators are all thousands grouping. A trailing\n * group shorter than three digits means the separator was a decimal point, and\n * a count is not a decimal, so the input is rejected.\n */\nfunction tryParseInteger(raw: string): number | null {\n const compact = raw.replace(/[ \\u00A0]/gu, \"\");\n if (compact.length === 0) return null;\n\n const lastSeparator = Math.max(compact.lastIndexOf(\",\"), compact.lastIndexOf(\".\"));\n if (lastSeparator >= 0) {\n const trailing = compact.slice(lastSeparator + 1);\n if (trailing.length > 0 && trailing.length < 3 && /^\\d+$/u.test(trailing)) return null;\n }\n\n const digits = compact.replace(/[.,]/gu, \"\");\n if (digits.length === 0 || !/^\\d+$/u.test(digits)) return null;\n\n const value = Number(digits);\n return Number.isSafeInteger(value) ? value : null;\n}\n\nfunction fallback(input: string | null | undefined, options?: CountFormatOptions): string | null {\n if (options?.fallbackToTrimmedInputWhenInvalid !== true) return null;\n if (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": []
|
|
7
|
+
}
|