@budiauktioner/buildi-primitives 0.2.1 → 0.3.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/CHANGELOG.md +44 -0
- package/PARITY.md +7 -7
- package/README.md +18 -1
- package/dist/cjs/contact/phone-number-test-data.js +1 -1
- package/dist/cjs/contact/phone-number-test-data.js.map +1 -1
- package/dist/cjs/contact/phone-number.js +36 -14
- package/dist/cjs/contact/phone-number.js.map +2 -2
- package/dist/cjs/organization/swedish-organization-number.js.map +2 -2
- package/dist/cjs/register-default-text-scanners.js +2 -0
- package/dist/cjs/register-default-text-scanners.js.map +2 -2
- package/dist/cjs/sample-data/index.js +18 -1
- package/dist/cjs/sample-data/index.js.map +2 -2
- package/dist/cjs/text-scanning/text-scan-result.js +3 -0
- package/dist/cjs/text-scanning/text-scan-result.js.map +2 -2
- package/dist/cjs/validation/validation-error-reason.js +6 -1
- package/dist/cjs/validation/validation-error-reason.js.map +2 -2
- package/dist/cjs/vehicle/index.js +4 -0
- package/dist/cjs/vehicle/index.js.map +2 -2
- package/dist/cjs/vehicle/watercraft-identification-number.js +332 -0
- package/dist/cjs/vehicle/watercraft-identification-number.js.map +7 -0
- package/dist/esm/contact/phone-number-test-data.js +1 -1
- package/dist/esm/contact/phone-number-test-data.js.map +1 -1
- package/dist/esm/contact/phone-number.js +36 -14
- package/dist/esm/contact/phone-number.js.map +2 -2
- package/dist/esm/organization/swedish-organization-number.js.map +2 -2
- package/dist/esm/register-default-text-scanners.js +2 -0
- package/dist/esm/register-default-text-scanners.js.map +2 -2
- package/dist/esm/sample-data/index.js +18 -1
- package/dist/esm/sample-data/index.js.map +2 -2
- package/dist/esm/text-scanning/text-scan-result.js +3 -0
- package/dist/esm/text-scanning/text-scan-result.js.map +2 -2
- package/dist/esm/validation/validation-error-reason.js +6 -1
- package/dist/esm/validation/validation-error-reason.js.map +2 -2
- package/dist/esm/vehicle/index.js +8 -0
- package/dist/esm/vehicle/index.js.map +2 -2
- package/dist/esm/vehicle/watercraft-identification-number.js +315 -0
- package/dist/esm/vehicle/watercraft-identification-number.js.map +7 -0
- package/dist/types/banking/index.d.cts +2 -2
- package/dist/types/banking/index.d.ts +2 -2
- package/dist/types/contact/index.d.cts +1 -1
- package/dist/types/contact/index.d.ts +1 -1
- package/dist/types/index.d.cts +2 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/sample-data/index.d.cts +10 -2
- package/dist/types/sample-data/index.d.ts +10 -2
- package/dist/types/text-scanning/index.d.cts +3 -1
- package/dist/types/text-scanning/index.d.ts +3 -1
- package/dist/types/validation/index.d.cts +4 -0
- package/dist/types/validation/index.d.ts +4 -0
- package/dist/types/vehicle/index.d.cts +2 -0
- package/dist/types/vehicle/index.d.ts +2 -0
- package/dist/types/watercraft-identification-number-Db1I2LQM.d.cts +123 -0
- package/dist/types/watercraft-identification-number-o8B3C6Nx.d.ts +123 -0
- package/package.json +18 -13
- package/dist/types/{swedish-swish-number-CL6Gx_h3.d.cts → swedish-swish-number-Bh-UbVoN.d.cts} +136 -136
- package/dist/types/{swedish-swish-number-DDG3mNDg.d.ts → swedish-swish-number-C2Wccuyr.d.ts} +136 -136
|
@@ -60,6 +60,11 @@ import {
|
|
|
60
60
|
VehicleIdentificationNumber,
|
|
61
61
|
maskVehicleIdentificationNumber
|
|
62
62
|
} from "./vehicle-identification-number.js";
|
|
63
|
+
import {
|
|
64
|
+
WatercraftIdentificationNumber,
|
|
65
|
+
WatercraftIdentificationNumberScheme,
|
|
66
|
+
maskWatercraftIdentificationNumber
|
|
67
|
+
} from "./watercraft-identification-number.js";
|
|
63
68
|
import {
|
|
64
69
|
WheelRimDimension,
|
|
65
70
|
maskWheelRimDimension
|
|
@@ -106,6 +111,8 @@ export {
|
|
|
106
111
|
TrackType,
|
|
107
112
|
TransmissionType,
|
|
108
113
|
VehicleIdentificationNumber,
|
|
114
|
+
WatercraftIdentificationNumber,
|
|
115
|
+
WatercraftIdentificationNumberScheme,
|
|
109
116
|
WheelRimDimension,
|
|
110
117
|
getBiluppgifterUrl,
|
|
111
118
|
getCarInfoUrl,
|
|
@@ -128,6 +135,7 @@ export {
|
|
|
128
135
|
maskTireType,
|
|
129
136
|
maskTrackType,
|
|
130
137
|
maskVehicleIdentificationNumber,
|
|
138
|
+
maskWatercraftIdentificationNumber,
|
|
131
139
|
maskWheelRimDimension,
|
|
132
140
|
toBiluppgifterUrl
|
|
133
141
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/vehicle/index.ts"],
|
|
4
|
-
"sourcesContent": ["export {\n BoatCeDesignCategory,\n type BoatCeDesignCategoryFormatOptions,\n} from \"./boat-ce-design-category.js\";\nexport { BoatHullMaterial, type BoatHullMaterialFormatOptions } from \"./boat-hull-material.js\";\nexport { BodyType, type BodyTypeFormatOptions } from \"./body-type.js\";\nexport { DrivetrainType, type DrivetrainTypeFormatOptions } from \"./drivetrain-type.js\";\nexport { EuroEmissionClass, type EuroEmissionClassFormatOptions } from \"./euro-emission-class.js\";\nexport {\n FuelConsumptionNorm,\n type FuelConsumptionNormFormatOptions,\n} from \"./fuel-consumption-norm.js\";\nexport { FuelType, type FuelTypeFormatOptions } from \"./fuel-type.js\";\nexport { SuspensionType, type SuspensionTypeFormatOptions } from \"./suspension-type.js\";\nexport {\n SwedishDrivingLicenseCategory,\n type SwedishDrivingLicenseCategoryFormatOptions,\n} from \"./swedish-driving-license-category.js\";\nexport { SwedishDrivingLicenseVehicleGroup } from \"./swedish-driving-license-vehicle-group.js\";\nexport {\n SwedishEcoVehicleClassification,\n type SwedishEcoVehicleClassificationFormatOptions,\n} from \"./swedish-eco-vehicle-classification.js\";\nexport {\n SwedishVehicleStatus,\n type SwedishVehicleStatusFormatOptions,\n} from \"./swedish-vehicle-status.js\";\nexport {\n SwedishVehicleType,\n type SwedishVehicleTypeFormatOptions,\n} from \"./swedish-vehicle-type.js\";\nexport { TireType, type TireTypeFormatOptions } from \"./tire-type.js\";\nexport { TrackType, type TrackTypeFormatOptions } from \"./track-type.js\";\nexport { TransmissionType, type TransmissionTypeFormatOptions } from \"./transmission-type.js\";\n\nexport { EmissionRate, maskEmissionRate, type EmissionRateFormatOptions } from \"./emission-rate.js\";\nexport {\n EnergyConsumption,\n maskEnergyConsumption,\n type EnergyConsumptionFormatOptions,\n} from \"./energy-consumption.js\";\nexport { EngineDisplacement, type EngineDisplacementFormatOptions } from \"./engine-displacement.js\";\nexport { EnginePower, maskEnginePower, type EnginePowerFormatOptions } from \"./engine-power.js\";\nexport {\n FuelConsumption,\n maskFuelConsumption,\n type FuelConsumptionFormatOptions,\n} from \"./fuel-consumption.js\";\nexport { OdometerReading, type OdometerReadingFormatOptions } from \"./odometer-reading.js\";\nexport {\n OperatingHours,\n maskOperatingHours,\n type OperatingHoursFormatOptions,\n} from \"./operating-hours.js\";\n\nexport { BoltPattern, maskBoltPattern, type BoltPatternFormatOptions } from \"./bolt-pattern.js\";\nexport {\n EuTypeApprovalNumber,\n maskEuTypeApprovalNumber,\n type EuTypeApprovalNumberFormatOptions,\n} from \"./eu-type-approval-number.js\";\nexport { EuVehicleCategory, type EuVehicleCategoryFormatOptions } from \"./eu-vehicle-category.js\";\nexport {\n SwedishVehicleRegistrationNumber,\n maskSwedishVehicleRegistrationNumber,\n type SwedishVehicleRegistrationNumberFormatOptions,\n} from \"./swedish-vehicle-registration-number.js\";\nexport {\n TireDimension,\n maskTireDimension,\n type TireDimensionFormatOptions,\n} from \"./tire-dimension.js\";\nexport {\n VehicleIdentificationNumber,\n maskVehicleIdentificationNumber,\n type VehicleIdentificationNumberFormatOptions,\n} from \"./vehicle-identification-number.js\";\nexport {\n WheelRimDimension,\n maskWheelRimDimension,\n type WheelRimDimensionFormatOptions,\n} from \"./wheel-rim-dimension.js\";\n\nexport { getBiluppgifterUrl, getCarInfoUrl, toBiluppgifterUrl } from \"./vehicle-extensions.js\";\n\nexport {\n maskBoatCeDesignCategory,\n maskBoatHullMaterial,\n maskBodyType,\n maskDrivetrainType,\n maskFuelConsumptionNorm,\n maskSuspensionType,\n maskSwedishEcoVehicleClassification,\n maskTireType,\n maskTrackType,\n} from \"./vehicle-masking.js\";\n"],
|
|
5
|
-
"mappings": "AAAA;AAAA,EACE;AAAA,OAEK;AACP,SAAS,wBAA4D;AACrE,SAAS,gBAA4C;AACrD,SAAS,sBAAwD;AACjE,SAAS,yBAA8D;AACvE;AAAA,EACE;AAAA,OAEK;AACP,SAAS,gBAA4C;AACrD,SAAS,sBAAwD;AACjE;AAAA,EACE;AAAA,OAEK;AACP,SAAS,yCAAyC;AAClD;AAAA,EACE;AAAA,OAEK;AACP;AAAA,EACE;AAAA,OAEK;AACP;AAAA,EACE;AAAA,OAEK;AACP,SAAS,gBAA4C;AACrD,SAAS,iBAA8C;AACvD,SAAS,wBAA4D;AAErE,SAAS,cAAc,wBAAwD;AAC/E;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP,SAAS,0BAAgE;AACzE,SAAS,aAAa,uBAAsD;AAC5E;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP,SAAS,uBAA0D;AACnE;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AAEP,SAAS,aAAa,uBAAsD;AAC5E;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP,SAAS,yBAA8D;AACvE;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AAEP,SAAS,oBAAoB,eAAe,yBAAyB;AAErE;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;",
|
|
4
|
+
"sourcesContent": ["export {\n BoatCeDesignCategory,\n type BoatCeDesignCategoryFormatOptions,\n} from \"./boat-ce-design-category.js\";\nexport { BoatHullMaterial, type BoatHullMaterialFormatOptions } from \"./boat-hull-material.js\";\nexport { BodyType, type BodyTypeFormatOptions } from \"./body-type.js\";\nexport { DrivetrainType, type DrivetrainTypeFormatOptions } from \"./drivetrain-type.js\";\nexport { EuroEmissionClass, type EuroEmissionClassFormatOptions } from \"./euro-emission-class.js\";\nexport {\n FuelConsumptionNorm,\n type FuelConsumptionNormFormatOptions,\n} from \"./fuel-consumption-norm.js\";\nexport { FuelType, type FuelTypeFormatOptions } from \"./fuel-type.js\";\nexport { SuspensionType, type SuspensionTypeFormatOptions } from \"./suspension-type.js\";\nexport {\n SwedishDrivingLicenseCategory,\n type SwedishDrivingLicenseCategoryFormatOptions,\n} from \"./swedish-driving-license-category.js\";\nexport { SwedishDrivingLicenseVehicleGroup } from \"./swedish-driving-license-vehicle-group.js\";\nexport {\n SwedishEcoVehicleClassification,\n type SwedishEcoVehicleClassificationFormatOptions,\n} from \"./swedish-eco-vehicle-classification.js\";\nexport {\n SwedishVehicleStatus,\n type SwedishVehicleStatusFormatOptions,\n} from \"./swedish-vehicle-status.js\";\nexport {\n SwedishVehicleType,\n type SwedishVehicleTypeFormatOptions,\n} from \"./swedish-vehicle-type.js\";\nexport { TireType, type TireTypeFormatOptions } from \"./tire-type.js\";\nexport { TrackType, type TrackTypeFormatOptions } from \"./track-type.js\";\nexport { TransmissionType, type TransmissionTypeFormatOptions } from \"./transmission-type.js\";\n\nexport { EmissionRate, maskEmissionRate, type EmissionRateFormatOptions } from \"./emission-rate.js\";\nexport {\n EnergyConsumption,\n maskEnergyConsumption,\n type EnergyConsumptionFormatOptions,\n} from \"./energy-consumption.js\";\nexport { EngineDisplacement, type EngineDisplacementFormatOptions } from \"./engine-displacement.js\";\nexport { EnginePower, maskEnginePower, type EnginePowerFormatOptions } from \"./engine-power.js\";\nexport {\n FuelConsumption,\n maskFuelConsumption,\n type FuelConsumptionFormatOptions,\n} from \"./fuel-consumption.js\";\nexport { OdometerReading, type OdometerReadingFormatOptions } from \"./odometer-reading.js\";\nexport {\n OperatingHours,\n maskOperatingHours,\n type OperatingHoursFormatOptions,\n} from \"./operating-hours.js\";\n\nexport { BoltPattern, maskBoltPattern, type BoltPatternFormatOptions } from \"./bolt-pattern.js\";\nexport {\n EuTypeApprovalNumber,\n maskEuTypeApprovalNumber,\n type EuTypeApprovalNumberFormatOptions,\n} from \"./eu-type-approval-number.js\";\nexport { EuVehicleCategory, type EuVehicleCategoryFormatOptions } from \"./eu-vehicle-category.js\";\nexport {\n SwedishVehicleRegistrationNumber,\n maskSwedishVehicleRegistrationNumber,\n type SwedishVehicleRegistrationNumberFormatOptions,\n} from \"./swedish-vehicle-registration-number.js\";\nexport {\n TireDimension,\n maskTireDimension,\n type TireDimensionFormatOptions,\n} from \"./tire-dimension.js\";\nexport {\n VehicleIdentificationNumber,\n maskVehicleIdentificationNumber,\n type VehicleIdentificationNumberFormatOptions,\n} from \"./vehicle-identification-number.js\";\nexport {\n WatercraftIdentificationNumber,\n WatercraftIdentificationNumberScheme,\n maskWatercraftIdentificationNumber,\n type WatercraftIdentificationNumberFormatOptions,\n} from \"./watercraft-identification-number.js\";\nexport {\n WheelRimDimension,\n maskWheelRimDimension,\n type WheelRimDimensionFormatOptions,\n} from \"./wheel-rim-dimension.js\";\n\nexport { getBiluppgifterUrl, getCarInfoUrl, toBiluppgifterUrl } from \"./vehicle-extensions.js\";\n\nexport {\n maskBoatCeDesignCategory,\n maskBoatHullMaterial,\n maskBodyType,\n maskDrivetrainType,\n maskFuelConsumptionNorm,\n maskSuspensionType,\n maskSwedishEcoVehicleClassification,\n maskTireType,\n maskTrackType,\n} from \"./vehicle-masking.js\";\n"],
|
|
5
|
+
"mappings": "AAAA;AAAA,EACE;AAAA,OAEK;AACP,SAAS,wBAA4D;AACrE,SAAS,gBAA4C;AACrD,SAAS,sBAAwD;AACjE,SAAS,yBAA8D;AACvE;AAAA,EACE;AAAA,OAEK;AACP,SAAS,gBAA4C;AACrD,SAAS,sBAAwD;AACjE;AAAA,EACE;AAAA,OAEK;AACP,SAAS,yCAAyC;AAClD;AAAA,EACE;AAAA,OAEK;AACP;AAAA,EACE;AAAA,OAEK;AACP;AAAA,EACE;AAAA,OAEK;AACP,SAAS,gBAA4C;AACrD,SAAS,iBAA8C;AACvD,SAAS,wBAA4D;AAErE,SAAS,cAAc,wBAAwD;AAC/E;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP,SAAS,0BAAgE;AACzE,SAAS,aAAa,uBAAsD;AAC5E;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP,SAAS,uBAA0D;AACnE;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AAEP,SAAS,aAAa,uBAAsD;AAC5E;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP,SAAS,yBAA8D;AACvE;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AAEP,SAAS,oBAAoB,eAAe,yBAAyB;AAErE;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
import { Country } from "../geography/country.js";
|
|
2
|
+
import { sanitizeInput } from "../internal/input-sanitization.js";
|
|
3
|
+
import { TextCandidate } from "../text-scanning/text-candidate.js";
|
|
4
|
+
import { TextCandidateCategory } from "../text-scanning/text-candidate-category.js";
|
|
5
|
+
import { TextMatchConfidence } from "../text-scanning/text-match-confidence.js";
|
|
6
|
+
import { ValidationErrorReason } from "../validation/validation-error-reason.js";
|
|
7
|
+
import { ValidationIssue } from "../validation/validation-issue.js";
|
|
8
|
+
import {
|
|
9
|
+
invalidResult,
|
|
10
|
+
validResult
|
|
11
|
+
} from "../validation/validation-result.js";
|
|
12
|
+
const WatercraftIdentificationNumberScheme = {
|
|
13
|
+
Unknown: 0,
|
|
14
|
+
/**
|
|
15
|
+
* ISO 10087 craft or watercraft identification number (CIN/WIN): a two-letter
|
|
16
|
+
* country code, a hyphen and twelve characters, e.g. `NL-HXAB7A33G506`.
|
|
17
|
+
*/
|
|
18
|
+
Iso10087: 1,
|
|
19
|
+
/**
|
|
20
|
+
* United States hull identification number (HIN) in the twelve-character format
|
|
21
|
+
* required since 1 August 1984 by 33 CFR 181.25, e.g. `ZZZ00001A020`.
|
|
22
|
+
*/
|
|
23
|
+
UnitedStatesHullIdentificationNumber: 2
|
|
24
|
+
};
|
|
25
|
+
const MAX_INPUT_LENGTH = 30;
|
|
26
|
+
const ISO_LENGTH = 14;
|
|
27
|
+
const UNITED_STATES_LENGTH = 12;
|
|
28
|
+
const ALLOWED_CHARACTERS_PATTERN = /^[A-Z0-9-]+$/u;
|
|
29
|
+
const WHITESPACE_PATTERN = / +/g;
|
|
30
|
+
const LOWERCASE_ASCII_PATTERN = /[a-z]/g;
|
|
31
|
+
const DOTNET_WHITESPACE_ONLY_PATTERN = /^[\p{Z}\t\n\v\f\r\u0085]*$/u;
|
|
32
|
+
const DOTNET_TRIM_PATTERN = /^[\p{Z}\t\n\v\f\r\u0085]+|[\p{Z}\t\n\v\f\r\u0085]+$/gu;
|
|
33
|
+
const COUNTRY_CODE_PATTERN = /^[A-Z]{2}$/u;
|
|
34
|
+
const ISO_MANUFACTURER_CODE_PATTERN = /^[A-Z2-9]{3}$/u;
|
|
35
|
+
const UNITED_STATES_MANUFACTURER_CODE_PATTERN = /^[A-Z0-9]{3}$/u;
|
|
36
|
+
const SERIAL_NUMBER_PATTERN = /^[A-HJ-NPR-Z0-9]{5}$/u;
|
|
37
|
+
const YEAR_DIGITS_PATTERN = /^[0-9]{3}$/u;
|
|
38
|
+
const SCAN_PATTERN = /(?<![A-Z0-9-])(?:[A-Z]{2}-?[A-Z0-9]{12}|[A-Z0-9]{12})(?![A-Z0-9-])/gu;
|
|
39
|
+
class WatercraftIdentificationNumber {
|
|
40
|
+
static typeInfo = Object.freeze({
|
|
41
|
+
englishName: "Watercraft Identification Number",
|
|
42
|
+
localizedName: "Skrovnummer",
|
|
43
|
+
emoji: "\u{1F6A4}",
|
|
44
|
+
sources: Object.freeze([
|
|
45
|
+
"https://www.iso.org/standard/82383.html",
|
|
46
|
+
"https://www.ecfr.gov/current/title-33/chapter-I/subchapter-S/part-181/subpart-C/section-181.25",
|
|
47
|
+
"https://www.transportstyrelsen.se/sv/sjofart/fritidsbatar/lagar-och-regler-for-fritidsbatar/cemarkning/bygga-om-tillverka-distribuera-och-importera/tillverka/instruktionsbok-tillverkarskylt-och-win/"
|
|
48
|
+
])
|
|
49
|
+
});
|
|
50
|
+
/**
|
|
51
|
+
* The number in uppercase without separators: fourteen characters for ISO 10087,
|
|
52
|
+
* e.g. `NLHXAB7A33G506`, or twelve for a US HIN, e.g. `ZZZ00001A020`.
|
|
53
|
+
*/
|
|
54
|
+
value;
|
|
55
|
+
/**
|
|
56
|
+
* The number as it is marked on the hull: ISO 10087 with the hyphen after the
|
|
57
|
+
* country code, e.g. `NL-HXAB7A33G506`, and a US HIN unchanged, e.g. `ZZZ00001A020`.
|
|
58
|
+
*/
|
|
59
|
+
formatted;
|
|
60
|
+
/** Which of the two supported formats the number follows. */
|
|
61
|
+
scheme;
|
|
62
|
+
/**
|
|
63
|
+
* The ISO 3166-1 alpha-2 code of the country where the manufacturer is established,
|
|
64
|
+
* e.g. `NL`, or `null` for a US HIN, which carries no country.
|
|
65
|
+
*/
|
|
66
|
+
countryCode;
|
|
67
|
+
/** The country of {@link countryCode}, or `null` for a US HIN. */
|
|
68
|
+
country;
|
|
69
|
+
/** The three-character manufacturer identification code (MIC), e.g. `HXA`. */
|
|
70
|
+
manufacturerCode;
|
|
71
|
+
/** The five-character serial number assigned by the manufacturer, e.g. `B7A33`. */
|
|
72
|
+
serialNumber;
|
|
73
|
+
/**
|
|
74
|
+
* The production month letter, `A` for January through `L` for December. For a US
|
|
75
|
+
* HIN this is the month of certification when one is required, otherwise the month
|
|
76
|
+
* of manufacture.
|
|
77
|
+
*/
|
|
78
|
+
productionMonthCode;
|
|
79
|
+
/** The production month decoded from {@link productionMonthCode}, 1–12. */
|
|
80
|
+
productionMonth;
|
|
81
|
+
/** The last digit of the production year, 0–9. The decade is not encoded. */
|
|
82
|
+
productionYearDigit;
|
|
83
|
+
/** The last two digits of the model year as written, e.g. `06`. The century is not encoded. */
|
|
84
|
+
modelYearDigits;
|
|
85
|
+
constructor(value, scheme, country) {
|
|
86
|
+
this.value = value;
|
|
87
|
+
this.scheme = scheme;
|
|
88
|
+
this.country = country;
|
|
89
|
+
const isIso = scheme === WatercraftIdentificationNumberScheme.Iso10087;
|
|
90
|
+
const body = isIso ? value.slice(2) : value;
|
|
91
|
+
this.countryCode = isIso ? value.slice(0, 2) : null;
|
|
92
|
+
this.formatted = this.countryCode === null ? value : `${this.countryCode}-${body}`;
|
|
93
|
+
this.manufacturerCode = body.slice(0, 3);
|
|
94
|
+
this.serialNumber = body.slice(3, 8);
|
|
95
|
+
this.productionMonthCode = body[8];
|
|
96
|
+
this.productionMonth = body.charCodeAt(8) - 64;
|
|
97
|
+
this.productionYearDigit = body.charCodeAt(9) - 48;
|
|
98
|
+
this.modelYearDigits = body.slice(10, 12);
|
|
99
|
+
}
|
|
100
|
+
static tryParse(input) {
|
|
101
|
+
return WatercraftIdentificationNumber.tryParseCore(input, null);
|
|
102
|
+
}
|
|
103
|
+
static parse(input) {
|
|
104
|
+
const result = WatercraftIdentificationNumber.tryParse(input);
|
|
105
|
+
if (result === null) throw new Error("Invalid watercraft identification number.");
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
static isValid(input) {
|
|
109
|
+
return WatercraftIdentificationNumber.tryParse(input) !== null;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Returns the number as it is marked on the hull, e.g. `NL-HXAB7A33G506` or
|
|
113
|
+
* `ZZZ00001A020`.
|
|
114
|
+
*/
|
|
115
|
+
static format(input, options) {
|
|
116
|
+
const parsed = WatercraftIdentificationNumber.tryParse(input);
|
|
117
|
+
if (parsed !== null) return parsed.formatted;
|
|
118
|
+
return fallback(input, options);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Returns the number in uppercase without separators, e.g. `NLHXAB7A33G506` or
|
|
122
|
+
* `ZZZ00001A020`.
|
|
123
|
+
*/
|
|
124
|
+
static normalize(input, options) {
|
|
125
|
+
const parsed = WatercraftIdentificationNumber.tryParse(input);
|
|
126
|
+
if (parsed !== null) return parsed.value;
|
|
127
|
+
return fallback(input, options);
|
|
128
|
+
}
|
|
129
|
+
static isNormalized(input) {
|
|
130
|
+
return input != null && WatercraftIdentificationNumber.normalize(input) === input;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Describes every invalid segment of the input, one issue per segment, or reports
|
|
134
|
+
* it as valid.
|
|
135
|
+
*/
|
|
136
|
+
static validate(input) {
|
|
137
|
+
const issues = [];
|
|
138
|
+
return WatercraftIdentificationNumber.tryParseCore(input, issues) !== null ? validResult(input) : invalidResult(input, issues);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Finds watercraft identification number candidates in unstructured text. An ISO
|
|
142
|
+
* 10087 number written with its hyphen is reported with medium confidence; one
|
|
143
|
+
* without the hyphen, and a US HIN, are bare runs of letters and digits and
|
|
144
|
+
* reported with low confidence. Results are heuristic and may include false
|
|
145
|
+
* positives.
|
|
146
|
+
*/
|
|
147
|
+
static findCandidatesInText(text) {
|
|
148
|
+
if (!text) return [];
|
|
149
|
+
const upper = toAsciiUpper(text);
|
|
150
|
+
const out = [];
|
|
151
|
+
const pattern = new RegExp(SCAN_PATTERN.source, SCAN_PATTERN.flags);
|
|
152
|
+
let match;
|
|
153
|
+
while ((match = pattern.exec(upper)) !== null) {
|
|
154
|
+
const value = WatercraftIdentificationNumber.tryParse(match[0]);
|
|
155
|
+
if (value === null) continue;
|
|
156
|
+
out.push(
|
|
157
|
+
new TextCandidate({
|
|
158
|
+
startIndex: match.index,
|
|
159
|
+
length: match[0].length,
|
|
160
|
+
originalText: text.slice(match.index, match.index + match[0].length),
|
|
161
|
+
typeName: "WatercraftIdentificationNumber",
|
|
162
|
+
category: TextCandidateCategory.Vehicle,
|
|
163
|
+
normalizedForm: value.toNormalizedString(),
|
|
164
|
+
formattedForm: value.toString(),
|
|
165
|
+
maskedForm: maskWatercraftIdentificationNumber(value),
|
|
166
|
+
confidence: match[0].includes("-") ? TextMatchConfidence.Medium : TextMatchConfidence.Low,
|
|
167
|
+
value
|
|
168
|
+
})
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
return out;
|
|
172
|
+
}
|
|
173
|
+
/** Returns the number without separators, e.g. `NLHXAB7A33G506`. */
|
|
174
|
+
toNormalizedString() {
|
|
175
|
+
return this.value;
|
|
176
|
+
}
|
|
177
|
+
/** Returns the number as it is marked on the hull, e.g. `NL-HXAB7A33G506`. */
|
|
178
|
+
toString() {
|
|
179
|
+
return this.formatted;
|
|
180
|
+
}
|
|
181
|
+
equals(other) {
|
|
182
|
+
return other != null && this.value === other.value;
|
|
183
|
+
}
|
|
184
|
+
compareTo(other) {
|
|
185
|
+
if (other == null) return 1;
|
|
186
|
+
return this.value < other.value ? -1 : this.value > other.value ? 1 : 0;
|
|
187
|
+
}
|
|
188
|
+
static tryParseCore(input, issues) {
|
|
189
|
+
const fail = (reason, english, swedish) => {
|
|
190
|
+
issues?.push(new ValidationIssue(reason, english, swedish));
|
|
191
|
+
return false;
|
|
192
|
+
};
|
|
193
|
+
if (isNullOrWhiteSpace(input)) {
|
|
194
|
+
fail(ValidationErrorReason.InputIsEmpty, "Input is empty or whitespace.", "V\xE4rdet \xE4r tomt.");
|
|
195
|
+
return null;
|
|
196
|
+
}
|
|
197
|
+
const cleaned = toAsciiUpper(sanitizeInput(input).replace(WHITESPACE_PATTERN, ""));
|
|
198
|
+
if (cleaned.length > MAX_INPUT_LENGTH) {
|
|
199
|
+
fail(
|
|
200
|
+
ValidationErrorReason.InputTooLong,
|
|
201
|
+
"Input contains too many characters.",
|
|
202
|
+
"V\xE4rdet inneh\xE5ller f\xF6r m\xE5nga tecken."
|
|
203
|
+
);
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
if (!ALLOWED_CHARACTERS_PATTERN.test(cleaned)) {
|
|
207
|
+
fail(
|
|
208
|
+
ValidationErrorReason.InvalidCharacters,
|
|
209
|
+
"Only letters A\u2013Z, digits and the hyphen after the country code are allowed.",
|
|
210
|
+
"Endast bokst\xE4verna A\u2013Z, siffror och bindestrecket efter landskoden \xE4r till\xE5tna."
|
|
211
|
+
);
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
const hyphenIndex = cleaned.indexOf("-");
|
|
215
|
+
const hasCountrySeparator = hyphenIndex >= 0;
|
|
216
|
+
if (hasCountrySeparator && (hyphenIndex !== 2 || cleaned.indexOf("-", hyphenIndex + 1) >= 0)) {
|
|
217
|
+
fail(
|
|
218
|
+
ValidationErrorReason.InvalidFormat,
|
|
219
|
+
"A hyphen is only allowed directly after the two-letter country code.",
|
|
220
|
+
"Bindestreck f\xE5r bara st\xE5 direkt efter den tv\xE5bokstaviga landskoden."
|
|
221
|
+
);
|
|
222
|
+
return null;
|
|
223
|
+
}
|
|
224
|
+
const compact = hasCountrySeparator ? cleaned.slice(0, hyphenIndex) + cleaned.slice(hyphenIndex + 1) : cleaned;
|
|
225
|
+
const scheme = compact.length === ISO_LENGTH ? WatercraftIdentificationNumberScheme.Iso10087 : compact.length === UNITED_STATES_LENGTH && !hasCountrySeparator ? WatercraftIdentificationNumberScheme.UnitedStatesHullIdentificationNumber : WatercraftIdentificationNumberScheme.Unknown;
|
|
226
|
+
if (scheme === WatercraftIdentificationNumberScheme.Unknown) {
|
|
227
|
+
fail(
|
|
228
|
+
ValidationErrorReason.InvalidLength,
|
|
229
|
+
"Must be 14 characters after an ISO 10087 country code and hyphen, or 12 characters for a US HIN.",
|
|
230
|
+
"M\xE5ste vara 14 tecken enligt ISO 10087 (landskod, bindestreck och 12 tecken) eller 12 tecken f\xF6r ett amerikanskt HIN."
|
|
231
|
+
);
|
|
232
|
+
return null;
|
|
233
|
+
}
|
|
234
|
+
const isIso = scheme === WatercraftIdentificationNumberScheme.Iso10087;
|
|
235
|
+
const body = isIso ? compact.slice(2) : compact;
|
|
236
|
+
let isValid = true;
|
|
237
|
+
let country = null;
|
|
238
|
+
if (isIso) {
|
|
239
|
+
country = resolveCountry(compact.slice(0, 2));
|
|
240
|
+
if (country === null) {
|
|
241
|
+
isValid = fail(
|
|
242
|
+
ValidationErrorReason.UnknownCountryCode,
|
|
243
|
+
"The first two characters must be an ISO 3166-1 alpha-2 country code.",
|
|
244
|
+
"De tv\xE5 f\xF6rsta tecknen m\xE5ste vara en landskod enligt ISO 3166-1 alpha-2."
|
|
245
|
+
);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
if (isIso && !ISO_MANUFACTURER_CODE_PATTERN.test(body.slice(0, 3))) {
|
|
249
|
+
isValid = fail(
|
|
250
|
+
ValidationErrorReason.InvalidManufacturerCode,
|
|
251
|
+
"The manufacturer code must be three letters or digits, except the digits 0 and 1.",
|
|
252
|
+
"Tillverkarkoden m\xE5ste vara tre bokst\xE4ver eller siffror, men inte siffrorna 0 och 1."
|
|
253
|
+
);
|
|
254
|
+
}
|
|
255
|
+
if (!isIso && !UNITED_STATES_MANUFACTURER_CODE_PATTERN.test(body.slice(0, 3))) {
|
|
256
|
+
isValid = fail(
|
|
257
|
+
ValidationErrorReason.InvalidManufacturerCode,
|
|
258
|
+
"The manufacturer code must be three letters or digits.",
|
|
259
|
+
"Tillverkarkoden m\xE5ste vara tre bokst\xE4ver eller siffror."
|
|
260
|
+
);
|
|
261
|
+
}
|
|
262
|
+
if (!SERIAL_NUMBER_PATTERN.test(body.slice(3, 8))) {
|
|
263
|
+
isValid = fail(
|
|
264
|
+
ValidationErrorReason.InvalidSerialNumber,
|
|
265
|
+
"The serial number must be five letters or digits, except the letters I, O and Q.",
|
|
266
|
+
"Serienumret m\xE5ste vara fem bokst\xE4ver eller siffror, men inte bokst\xE4verna I, O och Q."
|
|
267
|
+
);
|
|
268
|
+
}
|
|
269
|
+
const monthCode = body[8];
|
|
270
|
+
if (monthCode < "A" || monthCode > "L") {
|
|
271
|
+
isValid = fail(
|
|
272
|
+
ValidationErrorReason.InvalidMonthCode,
|
|
273
|
+
"The production month must be a letter from A (January) to L (December).",
|
|
274
|
+
"Tillverkningsm\xE5naden m\xE5ste vara en bokstav fr\xE5n A (januari) till L (december)."
|
|
275
|
+
);
|
|
276
|
+
}
|
|
277
|
+
if (!YEAR_DIGITS_PATTERN.test(body.slice(9, 12))) {
|
|
278
|
+
isValid = fail(
|
|
279
|
+
ValidationErrorReason.InvalidYearDigits,
|
|
280
|
+
"The production year and model year must be digits.",
|
|
281
|
+
"Tillverknings\xE5r och \xE5rsmodell m\xE5ste anges med siffror."
|
|
282
|
+
);
|
|
283
|
+
}
|
|
284
|
+
if (!isValid) return null;
|
|
285
|
+
return new WatercraftIdentificationNumber(compact, scheme, country);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
function maskWatercraftIdentificationNumber(win) {
|
|
289
|
+
const prefix = win.countryCode === null ? win.manufacturerCode : `${win.countryCode}-${win.manufacturerCode}`;
|
|
290
|
+
return prefix + "*".repeat(win.formatted.length - prefix.length);
|
|
291
|
+
}
|
|
292
|
+
function resolveCountry(code) {
|
|
293
|
+
if (!COUNTRY_CODE_PATTERN.test(code)) return null;
|
|
294
|
+
const parsed = Country.tryParse(code);
|
|
295
|
+
return parsed !== null && parsed.alpha2Code === code ? parsed : null;
|
|
296
|
+
}
|
|
297
|
+
function toAsciiUpper(text) {
|
|
298
|
+
return text.replace(LOWERCASE_ASCII_PATTERN, (c) => String.fromCharCode(c.charCodeAt(0) - 32));
|
|
299
|
+
}
|
|
300
|
+
function fallback(input, options) {
|
|
301
|
+
if (options?.fallbackToTrimmedInputWhenInvalid !== true || isNullOrWhiteSpace(input)) return null;
|
|
302
|
+
return trimLikeDotnet(input);
|
|
303
|
+
}
|
|
304
|
+
function isNullOrWhiteSpace(input) {
|
|
305
|
+
return input == null || DOTNET_WHITESPACE_ONLY_PATTERN.test(input);
|
|
306
|
+
}
|
|
307
|
+
function trimLikeDotnet(input) {
|
|
308
|
+
return input.replace(DOTNET_TRIM_PATTERN, "");
|
|
309
|
+
}
|
|
310
|
+
export {
|
|
311
|
+
WatercraftIdentificationNumber,
|
|
312
|
+
WatercraftIdentificationNumberScheme,
|
|
313
|
+
maskWatercraftIdentificationNumber
|
|
314
|
+
};
|
|
315
|
+
//# sourceMappingURL=watercraft-identification-number.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/vehicle/watercraft-identification-number.ts"],
|
|
4
|
+
"sourcesContent": ["import { Country } from \"../geography/country.js\";\nimport { sanitizeInput } from \"../internal/input-sanitization.js\";\nimport type { PrimitiveTypeInfo } from \"../primitive-type-info.js\";\nimport { TextCandidate } from \"../text-scanning/text-candidate.js\";\nimport { TextCandidateCategory } from \"../text-scanning/text-candidate-category.js\";\nimport { TextMatchConfidence } from \"../text-scanning/text-match-confidence.js\";\nimport { ValidationErrorReason } from \"../validation/validation-error-reason.js\";\nimport { ValidationIssue } from \"../validation/validation-issue.js\";\nimport {\n invalidResult,\n validResult,\n type ValidationResult,\n} from \"../validation/validation-result.js\";\n\n/** Options for {@link WatercraftIdentificationNumber.format} and `normalize`. */\nexport interface WatercraftIdentificationNumberFormatOptions {\n fallbackToTrimmedInputWhenInvalid?: boolean;\n}\n\n/** The scheme a {@link WatercraftIdentificationNumber} was written in. */\nexport const WatercraftIdentificationNumberScheme = {\n Unknown: 0,\n /**\n * ISO 10087 craft or watercraft identification number (CIN/WIN): a two-letter\n * country code, a hyphen and twelve characters, e.g. `NL-HXAB7A33G506`.\n */\n Iso10087: 1,\n /**\n * United States hull identification number (HIN) in the twelve-character format\n * required since 1 August 1984 by 33 CFR 181.25, e.g. `ZZZ00001A020`.\n */\n UnitedStatesHullIdentificationNumber: 2,\n} as const;\n\nexport type WatercraftIdentificationNumberScheme =\n (typeof WatercraftIdentificationNumberScheme)[keyof typeof WatercraftIdentificationNumberScheme];\n\nconst MAX_INPUT_LENGTH = 30;\nconst ISO_LENGTH = 14;\nconst UNITED_STATES_LENGTH = 12;\n\nconst ALLOWED_CHARACTERS_PATTERN = /^[A-Z0-9-]+$/u;\n// sanitizeInput has already turned every whitespace character into an ASCII space and dropped\n// U+0085, U+FEFF, \\v and \\f, so a space is all that is left to strip. `\\s` would differ from the\n// .NET port, where it also matches U+0085 but not U+FEFF.\nconst WHITESPACE_PATTERN = / +/g;\nconst LOWERCASE_ASCII_PATTERN = /[a-z]/g;\nconst DOTNET_WHITESPACE_ONLY_PATTERN = /^[\\p{Z}\\t\\n\\v\\f\\r\\u0085]*$/u;\nconst DOTNET_TRIM_PATTERN = /^[\\p{Z}\\t\\n\\v\\f\\r\\u0085]+|[\\p{Z}\\t\\n\\v\\f\\r\\u0085]+$/gu;\nconst COUNTRY_CODE_PATTERN = /^[A-Z]{2}$/u;\n\n// ISO 10087 \u00A74.3: letters and numerals, except the numerals 0 and 1.\nconst ISO_MANUFACTURER_CODE_PATTERN = /^[A-Z2-9]{3}$/u;\n\n// 33 CFR 181.25(a) leaves the characters of a Coast Guard assigned code unrestricted.\nconst UNITED_STATES_MANUFACTURER_CODE_PATTERN = /^[A-Z0-9]{3}$/u;\n\n// ISO 10087 \u00A74.4 and 33 CFR 181.25(b): letters and numerals, except the letters I, O and Q.\nconst SERIAL_NUMBER_PATTERN = /^[A-HJ-NPR-Z0-9]{5}$/u;\n\nconst YEAR_DIGITS_PATTERN = /^[0-9]{3}$/u;\n\nconst SCAN_PATTERN = /(?<![A-Z0-9-])(?:[A-Z]{2}-?[A-Z0-9]{12}|[A-Z0-9]{12})(?![A-Z0-9-])/gu;\n\n/**\n * A watercraft identification number (`skrovnummer`), the hull marking of a small\n * craft: either the ISO 10087 craft identification number (CIN, now called WIN by\n * Transportstyrelsen) of fourteen characters plus a hyphen, or the twelve-character\n * US hull identification number (HIN).\n *\n * The number is assigned by the manufacturer and carries no check digit, so a parsed\n * value is structurally valid only \u2014 it does not prove that the manufacturer code is\n * registered or that the number belongs to a particular craft. The production year\n * and model year are encoded as one and two digits respectively, so the century\n * cannot be derived from the number alone; they are exposed as digits rather than\n * full years. Older markings that predate these formats (for example US HINs from\n * before August 1984) are not accepted.\n *\n * Sources:\n * - https://www.iso.org/standard/82383.html\n * - https://www.ecfr.gov/current/title-33/chapter-I/subchapter-S/part-181/subpart-C/section-181.25\n * - https://www.transportstyrelsen.se/sv/sjofart/fritidsbatar/lagar-och-regler-for-fritidsbatar/cemarkning/bygga-om-tillverka-distribuera-och-importera/tillverka/instruktionsbok-tillverkarskylt-och-win/\n */\nexport class WatercraftIdentificationNumber {\n static readonly typeInfo: PrimitiveTypeInfo = Object.freeze({\n englishName: \"Watercraft Identification Number\",\n localizedName: \"Skrovnummer\",\n emoji: \"\uD83D\uDEA4\",\n sources: Object.freeze([\n \"https://www.iso.org/standard/82383.html\",\n \"https://www.ecfr.gov/current/title-33/chapter-I/subchapter-S/part-181/subpart-C/section-181.25\",\n \"https://www.transportstyrelsen.se/sv/sjofart/fritidsbatar/lagar-och-regler-for-fritidsbatar/cemarkning/bygga-om-tillverka-distribuera-och-importera/tillverka/instruktionsbok-tillverkarskylt-och-win/\",\n ]),\n });\n\n /**\n * The number in uppercase without separators: fourteen characters for ISO 10087,\n * e.g. `NLHXAB7A33G506`, or twelve for a US HIN, e.g. `ZZZ00001A020`.\n */\n readonly value: string;\n\n /**\n * The number as it is marked on the hull: ISO 10087 with the hyphen after the\n * country code, e.g. `NL-HXAB7A33G506`, and a US HIN unchanged, e.g. `ZZZ00001A020`.\n */\n readonly formatted: string;\n\n /** Which of the two supported formats the number follows. */\n readonly scheme: WatercraftIdentificationNumberScheme;\n\n /**\n * The ISO 3166-1 alpha-2 code of the country where the manufacturer is established,\n * e.g. `NL`, or `null` for a US HIN, which carries no country.\n */\n readonly countryCode: string | null;\n\n /** The country of {@link countryCode}, or `null` for a US HIN. */\n readonly country: Country | null;\n\n /** The three-character manufacturer identification code (MIC), e.g. `HXA`. */\n readonly manufacturerCode: string;\n\n /** The five-character serial number assigned by the manufacturer, e.g. `B7A33`. */\n readonly serialNumber: string;\n\n /**\n * The production month letter, `A` for January through `L` for December. For a US\n * HIN this is the month of certification when one is required, otherwise the month\n * of manufacture.\n */\n readonly productionMonthCode: string;\n\n /** The production month decoded from {@link productionMonthCode}, 1\u201312. */\n readonly productionMonth: number;\n\n /** The last digit of the production year, 0\u20139. The decade is not encoded. */\n readonly productionYearDigit: number;\n\n /** The last two digits of the model year as written, e.g. `06`. The century is not encoded. */\n readonly modelYearDigits: string;\n\n private constructor(\n value: string,\n scheme: WatercraftIdentificationNumberScheme,\n country: Country | null,\n ) {\n this.value = value;\n this.scheme = scheme;\n this.country = country;\n\n const isIso = scheme === WatercraftIdentificationNumberScheme.Iso10087;\n const body = isIso ? value.slice(2) : value;\n this.countryCode = isIso ? value.slice(0, 2) : null;\n this.formatted = this.countryCode === null ? value : `${this.countryCode}-${body}`;\n this.manufacturerCode = body.slice(0, 3);\n this.serialNumber = body.slice(3, 8);\n this.productionMonthCode = body[8]!;\n this.productionMonth = body.charCodeAt(8) - 64;\n this.productionYearDigit = body.charCodeAt(9) - 48;\n this.modelYearDigits = body.slice(10, 12);\n }\n\n static tryParse(input: string | null | undefined): WatercraftIdentificationNumber | null {\n return WatercraftIdentificationNumber.tryParseCore(input, null);\n }\n\n static parse(input: string): WatercraftIdentificationNumber {\n const result = WatercraftIdentificationNumber.tryParse(input);\n if (result === null) throw new Error(\"Invalid watercraft identification number.\");\n return result;\n }\n\n static isValid(input: string | null | undefined): boolean {\n return WatercraftIdentificationNumber.tryParse(input) !== null;\n }\n\n /**\n * Returns the number as it is marked on the hull, e.g. `NL-HXAB7A33G506` or\n * `ZZZ00001A020`.\n */\n static format(\n input: string | null | undefined,\n options?: WatercraftIdentificationNumberFormatOptions,\n ): string | null {\n const parsed = WatercraftIdentificationNumber.tryParse(input);\n if (parsed !== null) return parsed.formatted;\n return fallback(input, options);\n }\n\n /**\n * Returns the number in uppercase without separators, e.g. `NLHXAB7A33G506` or\n * `ZZZ00001A020`.\n */\n static normalize(\n input: string | null | undefined,\n options?: WatercraftIdentificationNumberFormatOptions,\n ): string | null {\n const parsed = WatercraftIdentificationNumber.tryParse(input);\n if (parsed !== null) return parsed.value;\n return fallback(input, options);\n }\n\n static isNormalized(input: string | null | undefined): boolean {\n return input != null && WatercraftIdentificationNumber.normalize(input) === input;\n }\n\n /**\n * Describes every invalid segment of the input, one issue per segment, or reports\n * it as valid.\n */\n static validate(input: string | null | undefined): ValidationResult {\n const issues: ValidationIssue[] = [];\n return WatercraftIdentificationNumber.tryParseCore(input, issues) !== null\n ? validResult(input)\n : invalidResult(input, issues);\n }\n\n /**\n * Finds watercraft identification number candidates in unstructured text. An ISO\n * 10087 number written with its hyphen is reported with medium confidence; one\n * without the hyphen, and a US HIN, are bare runs of letters and digits and\n * reported with low confidence. Results are heuristic and may include false\n * positives.\n */\n static findCandidatesInText(\n text: string,\n ): readonly TextCandidate<WatercraftIdentificationNumber>[] {\n if (!text) return [];\n\n const upper = toAsciiUpper(text);\n const out: TextCandidate<WatercraftIdentificationNumber>[] = [];\n const pattern = new RegExp(SCAN_PATTERN.source, SCAN_PATTERN.flags);\n let match: RegExpExecArray | null;\n\n while ((match = pattern.exec(upper)) !== null) {\n const value = WatercraftIdentificationNumber.tryParse(match[0]);\n if (value === null) continue;\n out.push(\n new TextCandidate<WatercraftIdentificationNumber>({\n startIndex: match.index,\n length: match[0].length,\n originalText: text.slice(match.index, match.index + match[0].length),\n typeName: \"WatercraftIdentificationNumber\",\n category: TextCandidateCategory.Vehicle,\n normalizedForm: value.toNormalizedString(),\n formattedForm: value.toString(),\n maskedForm: maskWatercraftIdentificationNumber(value),\n confidence: match[0].includes(\"-\") ? TextMatchConfidence.Medium : TextMatchConfidence.Low,\n value,\n }),\n );\n }\n\n return out;\n }\n\n /** Returns the number without separators, e.g. `NLHXAB7A33G506`. */\n toNormalizedString(): string {\n return this.value;\n }\n\n /** Returns the number as it is marked on the hull, e.g. `NL-HXAB7A33G506`. */\n toString(): string {\n return this.formatted;\n }\n\n equals(other: WatercraftIdentificationNumber | null | undefined): boolean {\n return other != null && this.value === other.value;\n }\n\n compareTo(other: WatercraftIdentificationNumber | null | undefined): number {\n if (other == null) return 1;\n return this.value < other.value ? -1 : this.value > other.value ? 1 : 0;\n }\n\n private static tryParseCore(\n input: string | null | undefined,\n issues: ValidationIssue[] | null,\n ): WatercraftIdentificationNumber | null {\n const fail = (reason: ValidationErrorReason, english: string, swedish: string): false => {\n issues?.push(new ValidationIssue(reason, english, swedish));\n return false;\n };\n\n if (isNullOrWhiteSpace(input)) {\n fail(ValidationErrorReason.InputIsEmpty, \"Input is empty or whitespace.\", \"V\u00E4rdet \u00E4r tomt.\");\n return null;\n }\n\n const cleaned = toAsciiUpper(sanitizeInput(input).replace(WHITESPACE_PATTERN, \"\"));\n\n if (cleaned.length > MAX_INPUT_LENGTH) {\n fail(\n ValidationErrorReason.InputTooLong,\n \"Input contains too many characters.\",\n \"V\u00E4rdet inneh\u00E5ller f\u00F6r m\u00E5nga tecken.\",\n );\n return null;\n }\n\n if (!ALLOWED_CHARACTERS_PATTERN.test(cleaned)) {\n fail(\n ValidationErrorReason.InvalidCharacters,\n \"Only letters A\u2013Z, digits and the hyphen after the country code are allowed.\",\n \"Endast bokst\u00E4verna A\u2013Z, siffror och bindestrecket efter landskoden \u00E4r till\u00E5tna.\",\n );\n return null;\n }\n\n const hyphenIndex = cleaned.indexOf(\"-\");\n const hasCountrySeparator = hyphenIndex >= 0;\n if (hasCountrySeparator && (hyphenIndex !== 2 || cleaned.indexOf(\"-\", hyphenIndex + 1) >= 0)) {\n fail(\n ValidationErrorReason.InvalidFormat,\n \"A hyphen is only allowed directly after the two-letter country code.\",\n \"Bindestreck f\u00E5r bara st\u00E5 direkt efter den tv\u00E5bokstaviga landskoden.\",\n );\n return null;\n }\n\n const compact = hasCountrySeparator\n ? cleaned.slice(0, hyphenIndex) + cleaned.slice(hyphenIndex + 1)\n : cleaned;\n const scheme =\n compact.length === ISO_LENGTH\n ? WatercraftIdentificationNumberScheme.Iso10087\n : compact.length === UNITED_STATES_LENGTH && !hasCountrySeparator\n ? WatercraftIdentificationNumberScheme.UnitedStatesHullIdentificationNumber\n : WatercraftIdentificationNumberScheme.Unknown;\n\n if (scheme === WatercraftIdentificationNumberScheme.Unknown) {\n fail(\n ValidationErrorReason.InvalidLength,\n \"Must be 14 characters after an ISO 10087 country code and hyphen, or 12 characters for a US HIN.\",\n \"M\u00E5ste vara 14 tecken enligt ISO 10087 (landskod, bindestreck och 12 tecken) eller 12 tecken f\u00F6r ett amerikanskt HIN.\",\n );\n return null;\n }\n\n const isIso = scheme === WatercraftIdentificationNumberScheme.Iso10087;\n const body = isIso ? compact.slice(2) : compact;\n let isValid = true;\n let country: Country | null = null;\n\n if (isIso) {\n country = resolveCountry(compact.slice(0, 2));\n if (country === null) {\n isValid = fail(\n ValidationErrorReason.UnknownCountryCode,\n \"The first two characters must be an ISO 3166-1 alpha-2 country code.\",\n \"De tv\u00E5 f\u00F6rsta tecknen m\u00E5ste vara en landskod enligt ISO 3166-1 alpha-2.\",\n );\n }\n }\n\n if (isIso && !ISO_MANUFACTURER_CODE_PATTERN.test(body.slice(0, 3))) {\n isValid = fail(\n ValidationErrorReason.InvalidManufacturerCode,\n \"The manufacturer code must be three letters or digits, except the digits 0 and 1.\",\n \"Tillverkarkoden m\u00E5ste vara tre bokst\u00E4ver eller siffror, men inte siffrorna 0 och 1.\",\n );\n }\n\n if (!isIso && !UNITED_STATES_MANUFACTURER_CODE_PATTERN.test(body.slice(0, 3))) {\n isValid = fail(\n ValidationErrorReason.InvalidManufacturerCode,\n \"The manufacturer code must be three letters or digits.\",\n \"Tillverkarkoden m\u00E5ste vara tre bokst\u00E4ver eller siffror.\",\n );\n }\n\n if (!SERIAL_NUMBER_PATTERN.test(body.slice(3, 8))) {\n isValid = fail(\n ValidationErrorReason.InvalidSerialNumber,\n \"The serial number must be five letters or digits, except the letters I, O and Q.\",\n \"Serienumret m\u00E5ste vara fem bokst\u00E4ver eller siffror, men inte bokst\u00E4verna I, O och Q.\",\n );\n }\n\n const monthCode = body[8]!;\n if (monthCode < \"A\" || monthCode > \"L\") {\n isValid = fail(\n ValidationErrorReason.InvalidMonthCode,\n \"The production month must be a letter from A (January) to L (December).\",\n \"Tillverkningsm\u00E5naden m\u00E5ste vara en bokstav fr\u00E5n A (januari) till L (december).\",\n );\n }\n\n if (!YEAR_DIGITS_PATTERN.test(body.slice(9, 12))) {\n isValid = fail(\n ValidationErrorReason.InvalidYearDigits,\n \"The production year and model year must be digits.\",\n \"Tillverknings\u00E5r och \u00E5rsmodell m\u00E5ste anges med siffror.\",\n );\n }\n\n if (!isValid) return null;\n\n return new WatercraftIdentificationNumber(compact, scheme, country);\n }\n}\n\n/**\n * Returns a watercraft identification number with only the country and manufacturer\n * codes visible, e.g. `NL-HXAB7A33G506` becomes `NL-HXA*********` and\n * `ZZZ00001A020` becomes `ZZZ*********`.\n */\nexport function maskWatercraftIdentificationNumber(win: WatercraftIdentificationNumber): string {\n const prefix =\n win.countryCode === null ? win.manufacturerCode : `${win.countryCode}-${win.manufacturerCode}`;\n return prefix + \"*\".repeat(win.formatted.length - prefix.length);\n}\n\nfunction resolveCountry(code: string): Country | null {\n if (!COUNTRY_CODE_PATTERN.test(code)) return null;\n const parsed = Country.tryParse(code);\n return parsed !== null && parsed.alpha2Code === code ? parsed : null;\n}\n\n/**\n * Upper-cases a\u2013z only and leaves every other code unit as it is, so the length and\n * match offsets are unchanged. `toUpperCase` maps some non-ASCII letters onto ASCII\n * (`\u0131` \u2192 `I`, `\u017F` \u2192 `S`), which would let a look-alike pass as A\u2013Z; the .NET port uses\n * the same ASCII-only rule.\n */\nfunction toAsciiUpper(text: string): string {\n return text.replace(LOWERCASE_ASCII_PATTERN, (c) => String.fromCharCode(c.charCodeAt(0) - 32));\n}\n\nfunction fallback(\n input: string | null | undefined,\n options?: WatercraftIdentificationNumberFormatOptions,\n): string | null {\n if (options?.fallbackToTrimmedInputWhenInvalid !== true || isNullOrWhiteSpace(input)) return null;\n return trimLikeDotnet(input);\n}\n\n/**\n * .NET `string.IsNullOrWhiteSpace` and `string.Trim()` use `char.IsWhiteSpace`, which counts\n * U+0085 and not U+FEFF \u2014 the reverse of `String.prototype.trim`. These mirror the .NET port so\n * the empty check and the fallback text agree for every input.\n */\nfunction isNullOrWhiteSpace(input: string | null | undefined): input is null | undefined {\n return input == null || DOTNET_WHITESPACE_ONLY_PATTERN.test(input);\n}\n\nfunction trimLikeDotnet(input: string): string {\n return input.replace(DOTNET_TRIM_PATTERN, \"\");\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,eAAe;AACxB,SAAS,qBAAqB;AAE9B,SAAS,qBAAqB;AAC9B,SAAS,6BAA6B;AACtC,SAAS,2BAA2B;AACpC,SAAS,6BAA6B;AACtC,SAAS,uBAAuB;AAChC;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AAQA,MAAM,uCAAuC;AAAA,EAClD,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,EAKT,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAKV,sCAAsC;AACxC;AAKA,MAAM,mBAAmB;AACzB,MAAM,aAAa;AACnB,MAAM,uBAAuB;AAE7B,MAAM,6BAA6B;AAInC,MAAM,qBAAqB;AAC3B,MAAM,0BAA0B;AAChC,MAAM,iCAAiC;AACvC,MAAM,sBAAsB;AAC5B,MAAM,uBAAuB;AAG7B,MAAM,gCAAgC;AAGtC,MAAM,0CAA0C;AAGhD,MAAM,wBAAwB;AAE9B,MAAM,sBAAsB;AAE5B,MAAM,eAAe;AAqBd,MAAM,+BAA+B;AAAA,EAC1C,OAAgB,WAA8B,OAAO,OAAO;AAAA,IAC1D,aAAa;AAAA,IACb,eAAe;AAAA,IACf,OAAO;AAAA,IACP,SAAS,OAAO,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA;AAAA;AAAA,EAGA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA;AAAA;AAAA,EAGA;AAAA;AAAA,EAGA;AAAA;AAAA,EAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA;AAAA;AAAA,EAGA;AAAA;AAAA,EAGA;AAAA;AAAA,EAGA;AAAA,EAED,YACN,OACA,QACA,SACA;AACA,SAAK,QAAQ;AACb,SAAK,SAAS;AACd,SAAK,UAAU;AAEf,UAAM,QAAQ,WAAW,qCAAqC;AAC9D,UAAM,OAAO,QAAQ,MAAM,MAAM,CAAC,IAAI;AACtC,SAAK,cAAc,QAAQ,MAAM,MAAM,GAAG,CAAC,IAAI;AAC/C,SAAK,YAAY,KAAK,gBAAgB,OAAO,QAAQ,GAAG,KAAK,WAAW,IAAI,IAAI;AAChF,SAAK,mBAAmB,KAAK,MAAM,GAAG,CAAC;AACvC,SAAK,eAAe,KAAK,MAAM,GAAG,CAAC;AACnC,SAAK,sBAAsB,KAAK,CAAC;AACjC,SAAK,kBAAkB,KAAK,WAAW,CAAC,IAAI;AAC5C,SAAK,sBAAsB,KAAK,WAAW,CAAC,IAAI;AAChD,SAAK,kBAAkB,KAAK,MAAM,IAAI,EAAE;AAAA,EAC1C;AAAA,EAEA,OAAO,SAAS,OAAyE;AACvF,WAAO,+BAA+B,aAAa,OAAO,IAAI;AAAA,EAChE;AAAA,EAEA,OAAO,MAAM,OAA+C;AAC1D,UAAM,SAAS,+BAA+B,SAAS,KAAK;AAC5D,QAAI,WAAW,KAAM,OAAM,IAAI,MAAM,2CAA2C;AAChF,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,QAAQ,OAA2C;AACxD,WAAO,+BAA+B,SAAS,KAAK,MAAM;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,OACL,OACA,SACe;AACf,UAAM,SAAS,+BAA+B,SAAS,KAAK;AAC5D,QAAI,WAAW,KAAM,QAAO,OAAO;AACnC,WAAO,SAAS,OAAO,OAAO;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,UACL,OACA,SACe;AACf,UAAM,SAAS,+BAA+B,SAAS,KAAK;AAC5D,QAAI,WAAW,KAAM,QAAO,OAAO;AACnC,WAAO,SAAS,OAAO,OAAO;AAAA,EAChC;AAAA,EAEA,OAAO,aAAa,OAA2C;AAC7D,WAAO,SAAS,QAAQ,+BAA+B,UAAU,KAAK,MAAM;AAAA,EAC9E;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,SAAS,OAAoD;AAClE,UAAM,SAA4B,CAAC;AACnC,WAAO,+BAA+B,aAAa,OAAO,MAAM,MAAM,OAClE,YAAY,KAAK,IACjB,cAAc,OAAO,MAAM;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAO,qBACL,MAC0D;AAC1D,QAAI,CAAC,KAAM,QAAO,CAAC;AAEnB,UAAM,QAAQ,aAAa,IAAI;AAC/B,UAAM,MAAuD,CAAC;AAC9D,UAAM,UAAU,IAAI,OAAO,aAAa,QAAQ,aAAa,KAAK;AAClE,QAAI;AAEJ,YAAQ,QAAQ,QAAQ,KAAK,KAAK,OAAO,MAAM;AAC7C,YAAM,QAAQ,+BAA+B,SAAS,MAAM,CAAC,CAAC;AAC9D,UAAI,UAAU,KAAM;AACpB,UAAI;AAAA,QACF,IAAI,cAA8C;AAAA,UAChD,YAAY,MAAM;AAAA,UAClB,QAAQ,MAAM,CAAC,EAAE;AAAA,UACjB,cAAc,KAAK,MAAM,MAAM,OAAO,MAAM,QAAQ,MAAM,CAAC,EAAE,MAAM;AAAA,UACnE,UAAU;AAAA,UACV,UAAU,sBAAsB;AAAA,UAChC,gBAAgB,MAAM,mBAAmB;AAAA,UACzC,eAAe,MAAM,SAAS;AAAA,UAC9B,YAAY,mCAAmC,KAAK;AAAA,UACpD,YAAY,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,oBAAoB,SAAS,oBAAoB;AAAA,UACtF;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,qBAA6B;AAC3B,WAAO,KAAK;AAAA,EACd;AAAA;AAAA,EAGA,WAAmB;AACjB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,OAAO,OAAmE;AACxE,WAAO,SAAS,QAAQ,KAAK,UAAU,MAAM;AAAA,EAC/C;AAAA,EAEA,UAAU,OAAkE;AAC1E,QAAI,SAAS,KAAM,QAAO;AAC1B,WAAO,KAAK,QAAQ,MAAM,QAAQ,KAAK,KAAK,QAAQ,MAAM,QAAQ,IAAI;AAAA,EACxE;AAAA,EAEA,OAAe,aACb,OACA,QACuC;AACvC,UAAM,OAAO,CAAC,QAA+B,SAAiB,YAA2B;AACvF,cAAQ,KAAK,IAAI,gBAAgB,QAAQ,SAAS,OAAO,CAAC;AAC1D,aAAO;AAAA,IACT;AAEA,QAAI,mBAAmB,KAAK,GAAG;AAC7B,WAAK,sBAAsB,cAAc,iCAAiC,uBAAiB;AAC3F,aAAO;AAAA,IACT;AAEA,UAAM,UAAU,aAAa,cAAc,KAAK,EAAE,QAAQ,oBAAoB,EAAE,CAAC;AAEjF,QAAI,QAAQ,SAAS,kBAAkB;AACrC;AAAA,QACE,sBAAsB;AAAA,QACtB;AAAA,QACA;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,QAAI,CAAC,2BAA2B,KAAK,OAAO,GAAG;AAC7C;AAAA,QACE,sBAAsB;AAAA,QACtB;AAAA,QACA;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,UAAM,cAAc,QAAQ,QAAQ,GAAG;AACvC,UAAM,sBAAsB,eAAe;AAC3C,QAAI,wBAAwB,gBAAgB,KAAK,QAAQ,QAAQ,KAAK,cAAc,CAAC,KAAK,IAAI;AAC5F;AAAA,QACE,sBAAsB;AAAA,QACtB;AAAA,QACA;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,UAAM,UAAU,sBACZ,QAAQ,MAAM,GAAG,WAAW,IAAI,QAAQ,MAAM,cAAc,CAAC,IAC7D;AACJ,UAAM,SACJ,QAAQ,WAAW,aACf,qCAAqC,WACrC,QAAQ,WAAW,wBAAwB,CAAC,sBAC1C,qCAAqC,uCACrC,qCAAqC;AAE7C,QAAI,WAAW,qCAAqC,SAAS;AAC3D;AAAA,QACE,sBAAsB;AAAA,QACtB;AAAA,QACA;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,UAAM,QAAQ,WAAW,qCAAqC;AAC9D,UAAM,OAAO,QAAQ,QAAQ,MAAM,CAAC,IAAI;AACxC,QAAI,UAAU;AACd,QAAI,UAA0B;AAE9B,QAAI,OAAO;AACT,gBAAU,eAAe,QAAQ,MAAM,GAAG,CAAC,CAAC;AAC5C,UAAI,YAAY,MAAM;AACpB,kBAAU;AAAA,UACR,sBAAsB;AAAA,UACtB;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,QAAI,SAAS,CAAC,8BAA8B,KAAK,KAAK,MAAM,GAAG,CAAC,CAAC,GAAG;AAClE,gBAAU;AAAA,QACR,sBAAsB;AAAA,QACtB;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,QAAI,CAAC,SAAS,CAAC,wCAAwC,KAAK,KAAK,MAAM,GAAG,CAAC,CAAC,GAAG;AAC7E,gBAAU;AAAA,QACR,sBAAsB;AAAA,QACtB;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,QAAI,CAAC,sBAAsB,KAAK,KAAK,MAAM,GAAG,CAAC,CAAC,GAAG;AACjD,gBAAU;AAAA,QACR,sBAAsB;AAAA,QACtB;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,UAAM,YAAY,KAAK,CAAC;AACxB,QAAI,YAAY,OAAO,YAAY,KAAK;AACtC,gBAAU;AAAA,QACR,sBAAsB;AAAA,QACtB;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,QAAI,CAAC,oBAAoB,KAAK,KAAK,MAAM,GAAG,EAAE,CAAC,GAAG;AAChD,gBAAU;AAAA,QACR,sBAAsB;AAAA,QACtB;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,QAAI,CAAC,QAAS,QAAO;AAErB,WAAO,IAAI,+BAA+B,SAAS,QAAQ,OAAO;AAAA,EACpE;AACF;AAOO,SAAS,mCAAmC,KAA6C;AAC9F,QAAM,SACJ,IAAI,gBAAgB,OAAO,IAAI,mBAAmB,GAAG,IAAI,WAAW,IAAI,IAAI,gBAAgB;AAC9F,SAAO,SAAS,IAAI,OAAO,IAAI,UAAU,SAAS,OAAO,MAAM;AACjE;AAEA,SAAS,eAAe,MAA8B;AACpD,MAAI,CAAC,qBAAqB,KAAK,IAAI,EAAG,QAAO;AAC7C,QAAM,SAAS,QAAQ,SAAS,IAAI;AACpC,SAAO,WAAW,QAAQ,OAAO,eAAe,OAAO,SAAS;AAClE;AAQA,SAAS,aAAa,MAAsB;AAC1C,SAAO,KAAK,QAAQ,yBAAyB,CAAC,MAAM,OAAO,aAAa,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC;AAC/F;AAEA,SAAS,SACP,OACA,SACe;AACf,MAAI,SAAS,sCAAsC,QAAQ,mBAAmB,KAAK,EAAG,QAAO;AAC7F,SAAO,eAAe,KAAK;AAC7B;AAOA,SAAS,mBAAmB,OAA6D;AACvF,SAAO,SAAS,QAAQ,+BAA+B,KAAK,KAAK;AACnE;AAEA,SAAS,eAAe,OAAuB;AAC7C,SAAO,MAAM,QAAQ,qBAAqB,EAAE;AAC9C;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { d as SwedishBankgiroNumber, f as SwedishPostgiroNumber, e as SwedishOcrReferenceNumber, I as Iban, b as SwedishBankAccount, B as Bic } from '../swedish-swish-number-
|
|
2
|
-
export { O as OcrReferenceControlType, a as OcrReferenceOptions, S as SwedishBank, c as SwedishBankClearingNumber, g as SwedishSwishNumber, h as getBankgirotUrl, m as maskBic, i as maskIban, j as maskSwedishBankAccount, k as maskSwedishBankClearingNumber, l as maskSwedishBankgiroNumber, n as maskSwedishOcrReferenceNumber, o as maskSwedishPostgiroNumber, p as maskSwedishSwishNumber } from '../swedish-swish-number-
|
|
1
|
+
import { d as SwedishBankgiroNumber, f as SwedishPostgiroNumber, e as SwedishOcrReferenceNumber, I as Iban, b as SwedishBankAccount, B as Bic } from '../swedish-swish-number-Bh-UbVoN.cjs';
|
|
2
|
+
export { O as OcrReferenceControlType, a as OcrReferenceOptions, S as SwedishBank, c as SwedishBankClearingNumber, g as SwedishSwishNumber, h as getBankgirotUrl, m as maskBic, i as maskIban, j as maskSwedishBankAccount, k as maskSwedishBankClearingNumber, l as maskSwedishBankgiroNumber, n as maskSwedishOcrReferenceNumber, o as maskSwedishPostgiroNumber, p as maskSwedishSwishNumber } from '../swedish-swish-number-Bh-UbVoN.cjs';
|
|
3
3
|
export { B as BankAccountHolderType, S as SwedishBankAccountHolderName, m as maskSwedishBankAccountHolderName } from '../swedish-bank-account-holder-name-BFJ8h1aO.cjs';
|
|
4
4
|
import '../text-candidate-qg2bD9PY.cjs';
|
|
5
5
|
import '../validation/index.cjs';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { d as SwedishBankgiroNumber, f as SwedishPostgiroNumber, e as SwedishOcrReferenceNumber, I as Iban, b as SwedishBankAccount, B as Bic } from '../swedish-swish-number-
|
|
2
|
-
export { O as OcrReferenceControlType, a as OcrReferenceOptions, S as SwedishBank, c as SwedishBankClearingNumber, g as SwedishSwishNumber, h as getBankgirotUrl, m as maskBic, i as maskIban, j as maskSwedishBankAccount, k as maskSwedishBankClearingNumber, l as maskSwedishBankgiroNumber, n as maskSwedishOcrReferenceNumber, o as maskSwedishPostgiroNumber, p as maskSwedishSwishNumber } from '../swedish-swish-number-
|
|
1
|
+
import { d as SwedishBankgiroNumber, f as SwedishPostgiroNumber, e as SwedishOcrReferenceNumber, I as Iban, b as SwedishBankAccount, B as Bic } from '../swedish-swish-number-C2Wccuyr.js';
|
|
2
|
+
export { O as OcrReferenceControlType, a as OcrReferenceOptions, S as SwedishBank, c as SwedishBankClearingNumber, g as SwedishSwishNumber, h as getBankgirotUrl, m as maskBic, i as maskIban, j as maskSwedishBankAccount, k as maskSwedishBankClearingNumber, l as maskSwedishBankgiroNumber, n as maskSwedishOcrReferenceNumber, o as maskSwedishPostgiroNumber, p as maskSwedishSwishNumber } from '../swedish-swish-number-C2Wccuyr.js';
|
|
3
3
|
export { B as BankAccountHolderType, S as SwedishBankAccountHolderName, m as maskSwedishBankAccountHolderName } from '../swedish-bank-account-holder-name-CAAru07F.js';
|
|
4
4
|
import '../text-candidate-qg2bD9PY.js';
|
|
5
5
|
import '../validation/index.js';
|
|
@@ -59,7 +59,7 @@ declare const PhoneNumberTestData: {
|
|
|
59
59
|
readonly landlineGothenburg: readonly string[];
|
|
60
60
|
/** Landline Malmö: 040-628 04 00 through 040-628 04 99 (100 numbers). */
|
|
61
61
|
readonly landlineMalmo: readonly string[];
|
|
62
|
-
/** Landline Stockholm: 08-
|
|
62
|
+
/** Landline Stockholm: 08-465 004 00 through 08-465 004 99 (100 numbers). */
|
|
63
63
|
readonly landlineStockholm: readonly string[];
|
|
64
64
|
/** Landline Kiruna: 0980-31 92 00 through 0980-31 92 99 (100 numbers). */
|
|
65
65
|
readonly landlineKiruna: readonly string[];
|
|
@@ -59,7 +59,7 @@ declare const PhoneNumberTestData: {
|
|
|
59
59
|
readonly landlineGothenburg: readonly string[];
|
|
60
60
|
/** Landline Malmö: 040-628 04 00 through 040-628 04 99 (100 numbers). */
|
|
61
61
|
readonly landlineMalmo: readonly string[];
|
|
62
|
-
/** Landline Stockholm: 08-
|
|
62
|
+
/** Landline Stockholm: 08-465 004 00 through 08-465 004 99 (100 numbers). */
|
|
63
63
|
readonly landlineStockholm: readonly string[];
|
|
64
64
|
/** Landline Kiruna: 0980-31 92 00 through 0980-31 92 99 (100 numbers). */
|
|
65
65
|
readonly landlineKiruna: readonly string[];
|
package/dist/types/index.d.cts
CHANGED
|
@@ -20,7 +20,7 @@ export { I as Isin, m as maskIsin } from './isin-ZlQLBVm8.cjs';
|
|
|
20
20
|
export { ExchangeRates, IExchangeRates, MoneyAmount, maskMoneyAmount } from './finance/index.cjs';
|
|
21
21
|
export { S as SwedishPropertyDesignation, g as getLantmaterietUrl, a as getPropertyHittaUrl, m as maskSwedishPropertyDesignation } from './swedish-property-designation-BaHXufqV.cjs';
|
|
22
22
|
export { SwedishPropertyTaxationCategory, SwedishPropertyTaxationCode } from './property/index.cjs';
|
|
23
|
-
export { B as Bic, I as Iban, O as OcrReferenceControlType, a as OcrReferenceOptions, S as SwedishBank, b as SwedishBankAccount, c as SwedishBankClearingNumber, d as SwedishBankgiroNumber, e as SwedishOcrReferenceNumber, f as SwedishPostgiroNumber, g as SwedishSwishNumber, h as getBankgirotUrl, m as maskBic, i as maskIban, j as maskSwedishBankAccount, k as maskSwedishBankClearingNumber, l as maskSwedishBankgiroNumber, n as maskSwedishOcrReferenceNumber, o as maskSwedishPostgiroNumber, p as maskSwedishSwishNumber } from './swedish-swish-number-
|
|
23
|
+
export { B as Bic, I as Iban, O as OcrReferenceControlType, a as OcrReferenceOptions, S as SwedishBank, b as SwedishBankAccount, c as SwedishBankClearingNumber, d as SwedishBankgiroNumber, e as SwedishOcrReferenceNumber, f as SwedishPostgiroNumber, g as SwedishSwishNumber, h as getBankgirotUrl, m as maskBic, i as maskIban, j as maskSwedishBankAccount, k as maskSwedishBankClearingNumber, l as maskSwedishBankgiroNumber, n as maskSwedishOcrReferenceNumber, o as maskSwedishPostgiroNumber, p as maskSwedishSwishNumber } from './swedish-swish-number-Bh-UbVoN.cjs';
|
|
24
24
|
export { B as BankAccountHolderType, S as SwedishBankAccountHolderName, m as maskSwedishBankAccountHolderName } from './swedish-bank-account-holder-name-BFJ8h1aO.cjs';
|
|
25
25
|
export { SwedishBankingNumber, SwedishBankingNumberParser, SwedishBankingNumberType } from './banking/index.cjs';
|
|
26
26
|
export { A as Area, a as AreaFormatOptions, b as AreaUnit, E as ElectricCurrent, c as ElectricCurrentFormatOptions, d as ElectricCurrentUnit, F as FlowRate, e as FlowRateFormatOptions, f as FlowRateUnit, L as Luminance, g as LuminanceFormatOptions, h as LuminanceUnit, i as LuminousFlux, j as LuminousFluxFormatOptions, k as LuminousFluxUnit, P as Percentage, l as PercentageFormatOptions, m as Pressure, n as PressureFormatOptions, o as PressureUnit, R as RotationalSpeed, p as RotationalSpeedFormatOptions, q as RotationalSpeedUnit, S as SoundLevel, r as SoundLevelFormatOptions, s as SoundWeighting, t as Speed, u as SpeedFormatOptions, v as SpeedUnit, T as Temperature, w as TemperatureDelta, x as TemperatureFormatOptions, y as TemperatureUnit, z as Torque, B as TorqueFormatOptions, C as TorqueUnit, V as Voltage, D as VoltageFormatOptions, G as VoltageUnit, W as Weight, H as WeightFormatOptions, I as WeightUnit, J as maskArea, K as maskElectricCurrent, M as maskFlowRate, N as maskLuminance, O as maskLuminousFlux, Q as maskPercentage, U as maskPressure, X as maskRotationalSpeed, Y as maskSoundLevel, Z as maskSpeed, _ as maskTemperature, $ as maskTorque, a0 as maskVoltage, a1 as maskWeight } from './weight-C5C7OuV_.cjs';
|
|
@@ -30,6 +30,7 @@ export { L as Length, a as LengthFormatOptions, b as LengthUnit, m as maskLength
|
|
|
30
30
|
export { P as Power, a as PowerFormatOptions, b as PowerUnit, V as Volume, c as VolumeFormatOptions, d as VolumeUnit, m as maskPower, e as maskVolume } from './volume-CFA4e3dc.cjs';
|
|
31
31
|
export { BoatCeDesignCategory, BoatCeDesignCategoryFormatOptions, BoatHullMaterial, BoatHullMaterialFormatOptions, BodyType, BodyTypeFormatOptions, DrivetrainType, DrivetrainTypeFormatOptions, EnergyConsumption, EnergyConsumptionFormatOptions, EngineDisplacement, EngineDisplacementFormatOptions, EuVehicleCategory, EuVehicleCategoryFormatOptions, FuelConsumptionNorm, FuelConsumptionNormFormatOptions, FuelType, FuelTypeFormatOptions, OdometerReading, OdometerReadingFormatOptions, SuspensionType, SuspensionTypeFormatOptions, SwedishVehicleStatus, SwedishVehicleStatusFormatOptions, SwedishVehicleType, SwedishVehicleTypeFormatOptions, TireType, TireTypeFormatOptions, TrackType, TrackTypeFormatOptions, TransmissionType, TransmissionTypeFormatOptions, getBiluppgifterUrl, getCarInfoUrl, maskBoatCeDesignCategory, maskBoatHullMaterial, maskBodyType, maskDrivetrainType, maskEnergyConsumption, maskFuelConsumptionNorm, maskSuspensionType, maskSwedishEcoVehicleClassification, maskTireType, maskTrackType, toBiluppgifterUrl } from './vehicle/index.cjs';
|
|
32
32
|
export { B as BoltPattern, a as BoltPatternFormatOptions, E as EmissionRate, b as EmissionRateFormatOptions, c as EnginePower, d as EnginePowerFormatOptions, e as EuTypeApprovalNumber, f as EuTypeApprovalNumberFormatOptions, g as EuroEmissionClass, h as EuroEmissionClassFormatOptions, F as FuelConsumption, i as FuelConsumptionFormatOptions, O as OperatingHours, j as OperatingHoursFormatOptions, S as SwedishDrivingLicenseCategory, k as SwedishDrivingLicenseCategoryFormatOptions, l as SwedishDrivingLicenseVehicleGroup, m as SwedishEcoVehicleClassification, n as SwedishEcoVehicleClassificationFormatOptions, o as SwedishVehicleRegistrationNumber, p as SwedishVehicleRegistrationNumberFormatOptions, T as TireDimension, q as TireDimensionFormatOptions, V as VehicleIdentificationNumber, r as VehicleIdentificationNumberFormatOptions, W as WheelRimDimension, s as WheelRimDimensionFormatOptions, t as maskBoltPattern, u as maskEmissionRate, v as maskEnginePower, w as maskEuTypeApprovalNumber, x as maskFuelConsumption, y as maskOperatingHours, z as maskSwedishVehicleRegistrationNumber, A as maskTireDimension, C as maskVehicleIdentificationNumber, D as maskWheelRimDimension } from './wheel-rim-dimension-CdkDrzad.cjs';
|
|
33
|
+
export { W as WatercraftIdentificationNumber, a as WatercraftIdentificationNumberFormatOptions, b as WatercraftIdentificationNumberScheme, m as maskWatercraftIdentificationNumber } from './watercraft-identification-number-Db1I2LQM.cjs';
|
|
33
34
|
export { AdultClothingSize, AdultClothingSizeFormatOptions, AdultShoeSize, AdultShoeSizeFormatOptions, AspectRatio, AspectRatioFormatOptions, BatteryCapacity, BatteryCapacityFormatOptions, BatteryChemistry, BatteryChemistryFormatOptions, CameraResolution, CameraResolutionFormatOptions, ChildClothingSize, ChildClothingSizeFormatOptions, ChildShoeSize, ChildShoeSizeFormatOptions, ClothingFit, ClothingFitFormatOptions, ClothingGender, ClothingGenderFormatOptions, ClothingSeason, ClothingSeasonFormatOptions, ClothingSize, ClothingSizeFormatOptions, ClothingSizeSystem, DisplayPanelType, DisplayPanelTypeFormatOptions, EnergyScale, EuEnergyEfficiencyClass, EuEnergyEfficiencyClassFormatOptions, GoogleProductCategory, GoogleProductCategoryFormatOptions, Gtin, GtinFormatOptions, HsCode, HsCodeFormatOptions, HsCodeLevel, OperatingSystemFamily, OperatingSystemInfo, OperatingSystemInfoFormatOptions, OperatingSystemName, OperatingSystemNameFormatOptions, OperatingSystemVersion, OperatingSystemVersionFormatOptions, PowerSource, PowerSourceFormatOptions, ProcessorSpeed, ProcessorSpeedFormatOptions, RamCapacity, RamCapacityFormatOptions, ShoeSize, ShoeSizeFormatOptions, ShoeSizeSystem, StorageCapacity, StorageCapacityFormatOptions, StorageMediaType, StorageMediaTypeFormatOptions, maskAspectRatio, maskBatteryChemistry, maskCameraResolution, maskClothingFit, maskClothingSeason, maskColor, maskDisplayPanelType, maskElectricalPhase, maskGtin12, maskGtin13, maskGtin14, maskGtin8, maskIpRating, maskPowerSource, maskRefrigerant, maskScreenResolution, maskScreenSize, maskStorageMediaType, toBarcodeLookupUrl } from './product/index.cjs';
|
|
34
35
|
export { C as Color, a as ColorFormatOptions, E as ElectricalPhase, b as ElectricalPhaseFormatOptions, G as Gtin12, c as Gtin12FormatOptions, d as Gtin13, e as Gtin13FormatOptions, f as Gtin14, g as Gtin14FormatOptions, h as Gtin8, i as Gtin8FormatOptions, I as IpRating, j as IpRatingFormatOptions, R as Refrigerant, k as RefrigerantFamily, l as RefrigerantFormatOptions, S as ScreenResolution, m as ScreenResolutionFormatOptions, n as ScreenSize, o as ScreenSizeFormatOptions } from './screen-size-BD4t3wzb.cjs';
|
|
35
36
|
|
package/dist/types/index.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ export { I as Isin, m as maskIsin } from './isin-EeVPpNWu.js';
|
|
|
20
20
|
export { ExchangeRates, IExchangeRates, MoneyAmount, maskMoneyAmount } from './finance/index.js';
|
|
21
21
|
export { S as SwedishPropertyDesignation, g as getLantmaterietUrl, a as getPropertyHittaUrl, m as maskSwedishPropertyDesignation } from './swedish-property-designation-BM-gdd9x.js';
|
|
22
22
|
export { SwedishPropertyTaxationCategory, SwedishPropertyTaxationCode } from './property/index.js';
|
|
23
|
-
export { B as Bic, I as Iban, O as OcrReferenceControlType, a as OcrReferenceOptions, S as SwedishBank, b as SwedishBankAccount, c as SwedishBankClearingNumber, d as SwedishBankgiroNumber, e as SwedishOcrReferenceNumber, f as SwedishPostgiroNumber, g as SwedishSwishNumber, h as getBankgirotUrl, m as maskBic, i as maskIban, j as maskSwedishBankAccount, k as maskSwedishBankClearingNumber, l as maskSwedishBankgiroNumber, n as maskSwedishOcrReferenceNumber, o as maskSwedishPostgiroNumber, p as maskSwedishSwishNumber } from './swedish-swish-number-
|
|
23
|
+
export { B as Bic, I as Iban, O as OcrReferenceControlType, a as OcrReferenceOptions, S as SwedishBank, b as SwedishBankAccount, c as SwedishBankClearingNumber, d as SwedishBankgiroNumber, e as SwedishOcrReferenceNumber, f as SwedishPostgiroNumber, g as SwedishSwishNumber, h as getBankgirotUrl, m as maskBic, i as maskIban, j as maskSwedishBankAccount, k as maskSwedishBankClearingNumber, l as maskSwedishBankgiroNumber, n as maskSwedishOcrReferenceNumber, o as maskSwedishPostgiroNumber, p as maskSwedishSwishNumber } from './swedish-swish-number-C2Wccuyr.js';
|
|
24
24
|
export { B as BankAccountHolderType, S as SwedishBankAccountHolderName, m as maskSwedishBankAccountHolderName } from './swedish-bank-account-holder-name-CAAru07F.js';
|
|
25
25
|
export { SwedishBankingNumber, SwedishBankingNumberParser, SwedishBankingNumberType } from './banking/index.js';
|
|
26
26
|
export { A as Area, a as AreaFormatOptions, b as AreaUnit, E as ElectricCurrent, c as ElectricCurrentFormatOptions, d as ElectricCurrentUnit, F as FlowRate, e as FlowRateFormatOptions, f as FlowRateUnit, L as Luminance, g as LuminanceFormatOptions, h as LuminanceUnit, i as LuminousFlux, j as LuminousFluxFormatOptions, k as LuminousFluxUnit, P as Percentage, l as PercentageFormatOptions, m as Pressure, n as PressureFormatOptions, o as PressureUnit, R as RotationalSpeed, p as RotationalSpeedFormatOptions, q as RotationalSpeedUnit, S as SoundLevel, r as SoundLevelFormatOptions, s as SoundWeighting, t as Speed, u as SpeedFormatOptions, v as SpeedUnit, T as Temperature, w as TemperatureDelta, x as TemperatureFormatOptions, y as TemperatureUnit, z as Torque, B as TorqueFormatOptions, C as TorqueUnit, V as Voltage, D as VoltageFormatOptions, G as VoltageUnit, W as Weight, H as WeightFormatOptions, I as WeightUnit, J as maskArea, K as maskElectricCurrent, M as maskFlowRate, N as maskLuminance, O as maskLuminousFlux, Q as maskPercentage, U as maskPressure, X as maskRotationalSpeed, Y as maskSoundLevel, Z as maskSpeed, _ as maskTemperature, $ as maskTorque, a0 as maskVoltage, a1 as maskWeight } from './weight-B30-Hzxu.js';
|
|
@@ -30,6 +30,7 @@ export { L as Length, a as LengthFormatOptions, b as LengthUnit, m as maskLength
|
|
|
30
30
|
export { P as Power, a as PowerFormatOptions, b as PowerUnit, V as Volume, c as VolumeFormatOptions, d as VolumeUnit, m as maskPower, e as maskVolume } from './volume-DGLPQypt.js';
|
|
31
31
|
export { BoatCeDesignCategory, BoatCeDesignCategoryFormatOptions, BoatHullMaterial, BoatHullMaterialFormatOptions, BodyType, BodyTypeFormatOptions, DrivetrainType, DrivetrainTypeFormatOptions, EnergyConsumption, EnergyConsumptionFormatOptions, EngineDisplacement, EngineDisplacementFormatOptions, EuVehicleCategory, EuVehicleCategoryFormatOptions, FuelConsumptionNorm, FuelConsumptionNormFormatOptions, FuelType, FuelTypeFormatOptions, OdometerReading, OdometerReadingFormatOptions, SuspensionType, SuspensionTypeFormatOptions, SwedishVehicleStatus, SwedishVehicleStatusFormatOptions, SwedishVehicleType, SwedishVehicleTypeFormatOptions, TireType, TireTypeFormatOptions, TrackType, TrackTypeFormatOptions, TransmissionType, TransmissionTypeFormatOptions, getBiluppgifterUrl, getCarInfoUrl, maskBoatCeDesignCategory, maskBoatHullMaterial, maskBodyType, maskDrivetrainType, maskEnergyConsumption, maskFuelConsumptionNorm, maskSuspensionType, maskSwedishEcoVehicleClassification, maskTireType, maskTrackType, toBiluppgifterUrl } from './vehicle/index.js';
|
|
32
32
|
export { B as BoltPattern, a as BoltPatternFormatOptions, E as EmissionRate, b as EmissionRateFormatOptions, c as EnginePower, d as EnginePowerFormatOptions, e as EuTypeApprovalNumber, f as EuTypeApprovalNumberFormatOptions, g as EuroEmissionClass, h as EuroEmissionClassFormatOptions, F as FuelConsumption, i as FuelConsumptionFormatOptions, O as OperatingHours, j as OperatingHoursFormatOptions, S as SwedishDrivingLicenseCategory, k as SwedishDrivingLicenseCategoryFormatOptions, l as SwedishDrivingLicenseVehicleGroup, m as SwedishEcoVehicleClassification, n as SwedishEcoVehicleClassificationFormatOptions, o as SwedishVehicleRegistrationNumber, p as SwedishVehicleRegistrationNumberFormatOptions, T as TireDimension, q as TireDimensionFormatOptions, V as VehicleIdentificationNumber, r as VehicleIdentificationNumberFormatOptions, W as WheelRimDimension, s as WheelRimDimensionFormatOptions, t as maskBoltPattern, u as maskEmissionRate, v as maskEnginePower, w as maskEuTypeApprovalNumber, x as maskFuelConsumption, y as maskOperatingHours, z as maskSwedishVehicleRegistrationNumber, A as maskTireDimension, C as maskVehicleIdentificationNumber, D as maskWheelRimDimension } from './wheel-rim-dimension-CVCmLASl.js';
|
|
33
|
+
export { W as WatercraftIdentificationNumber, a as WatercraftIdentificationNumberFormatOptions, b as WatercraftIdentificationNumberScheme, m as maskWatercraftIdentificationNumber } from './watercraft-identification-number-o8B3C6Nx.js';
|
|
33
34
|
export { AdultClothingSize, AdultClothingSizeFormatOptions, AdultShoeSize, AdultShoeSizeFormatOptions, AspectRatio, AspectRatioFormatOptions, BatteryCapacity, BatteryCapacityFormatOptions, BatteryChemistry, BatteryChemistryFormatOptions, CameraResolution, CameraResolutionFormatOptions, ChildClothingSize, ChildClothingSizeFormatOptions, ChildShoeSize, ChildShoeSizeFormatOptions, ClothingFit, ClothingFitFormatOptions, ClothingGender, ClothingGenderFormatOptions, ClothingSeason, ClothingSeasonFormatOptions, ClothingSize, ClothingSizeFormatOptions, ClothingSizeSystem, DisplayPanelType, DisplayPanelTypeFormatOptions, EnergyScale, EuEnergyEfficiencyClass, EuEnergyEfficiencyClassFormatOptions, GoogleProductCategory, GoogleProductCategoryFormatOptions, Gtin, GtinFormatOptions, HsCode, HsCodeFormatOptions, HsCodeLevel, OperatingSystemFamily, OperatingSystemInfo, OperatingSystemInfoFormatOptions, OperatingSystemName, OperatingSystemNameFormatOptions, OperatingSystemVersion, OperatingSystemVersionFormatOptions, PowerSource, PowerSourceFormatOptions, ProcessorSpeed, ProcessorSpeedFormatOptions, RamCapacity, RamCapacityFormatOptions, ShoeSize, ShoeSizeFormatOptions, ShoeSizeSystem, StorageCapacity, StorageCapacityFormatOptions, StorageMediaType, StorageMediaTypeFormatOptions, maskAspectRatio, maskBatteryChemistry, maskCameraResolution, maskClothingFit, maskClothingSeason, maskColor, maskDisplayPanelType, maskElectricalPhase, maskGtin12, maskGtin13, maskGtin14, maskGtin8, maskIpRating, maskPowerSource, maskRefrigerant, maskScreenResolution, maskScreenSize, maskStorageMediaType, toBarcodeLookupUrl } from './product/index.js';
|
|
34
35
|
export { C as Color, a as ColorFormatOptions, E as ElectricalPhase, b as ElectricalPhaseFormatOptions, G as Gtin12, c as Gtin12FormatOptions, d as Gtin13, e as Gtin13FormatOptions, f as Gtin14, g as Gtin14FormatOptions, h as Gtin8, i as Gtin8FormatOptions, I as IpRating, j as IpRatingFormatOptions, R as Refrigerant, k as RefrigerantFamily, l as RefrigerantFormatOptions, S as ScreenResolution, m as ScreenResolutionFormatOptions, n as ScreenSize, o as ScreenSizeFormatOptions } from './screen-size-DUmjNjxG.js';
|
|
35
36
|
|
|
@@ -8,7 +8,8 @@ import { I as Isin } from '../isin-ZlQLBVm8.cjs';
|
|
|
8
8
|
import { MoneyAmount } from '../finance/index.cjs';
|
|
9
9
|
import { S as SwedishPropertyDesignation } from '../swedish-property-designation-BaHXufqV.cjs';
|
|
10
10
|
import { SwedishPropertyTaxationCode } from '../property/index.cjs';
|
|
11
|
-
import {
|
|
11
|
+
import { W as WatercraftIdentificationNumber } from '../watercraft-identification-number-Db1I2LQM.cjs';
|
|
12
|
+
import { I as Iban, B as Bic, d as SwedishBankgiroNumber, f as SwedishPostgiroNumber, e as SwedishOcrReferenceNumber, c as SwedishBankClearingNumber, b as SwedishBankAccount, g as SwedishSwishNumber } from '../swedish-swish-number-Bh-UbVoN.cjs';
|
|
12
13
|
import { S as SwedishBankAccountHolderName } from '../swedish-bank-account-holder-name-BFJ8h1aO.cjs';
|
|
13
14
|
import '../text-candidate-qg2bD9PY.cjs';
|
|
14
15
|
import '../validation/index.cjs';
|
|
@@ -123,6 +124,13 @@ declare const PropertySampleData: Readonly<{
|
|
|
123
124
|
industriBebyggd: SwedishPropertyTaxationCode;
|
|
124
125
|
}>;
|
|
125
126
|
}>;
|
|
127
|
+
declare const VehicleSampleData: Readonly<{
|
|
128
|
+
WatercraftIdentificationNumber: Readonly<{
|
|
129
|
+
all: readonly WatercraftIdentificationNumber[];
|
|
130
|
+
iso10087Example: WatercraftIdentificationNumber;
|
|
131
|
+
unitedStatesExample: WatercraftIdentificationNumber;
|
|
132
|
+
}>;
|
|
133
|
+
}>;
|
|
126
134
|
declare const BankingSampleData: Readonly<{
|
|
127
135
|
Iban: Readonly<{
|
|
128
136
|
all: readonly Iban[];
|
|
@@ -257,4 +265,4 @@ declare const OrganizationSampleData: Readonly<{
|
|
|
257
265
|
}>;
|
|
258
266
|
}>;
|
|
259
267
|
|
|
260
|
-
export { BankingSampleData, ContactSampleData, FinanceSampleData, GeographySampleData, OrganizationSampleData, PropertySampleData, WebSampleData };
|
|
268
|
+
export { BankingSampleData, ContactSampleData, FinanceSampleData, GeographySampleData, OrganizationSampleData, PropertySampleData, VehicleSampleData, WebSampleData };
|
|
@@ -8,7 +8,8 @@ import { I as Isin } from '../isin-EeVPpNWu.js';
|
|
|
8
8
|
import { MoneyAmount } from '../finance/index.js';
|
|
9
9
|
import { S as SwedishPropertyDesignation } from '../swedish-property-designation-BM-gdd9x.js';
|
|
10
10
|
import { SwedishPropertyTaxationCode } from '../property/index.js';
|
|
11
|
-
import {
|
|
11
|
+
import { W as WatercraftIdentificationNumber } from '../watercraft-identification-number-o8B3C6Nx.js';
|
|
12
|
+
import { I as Iban, B as Bic, d as SwedishBankgiroNumber, f as SwedishPostgiroNumber, e as SwedishOcrReferenceNumber, c as SwedishBankClearingNumber, b as SwedishBankAccount, g as SwedishSwishNumber } from '../swedish-swish-number-C2Wccuyr.js';
|
|
12
13
|
import { S as SwedishBankAccountHolderName } from '../swedish-bank-account-holder-name-CAAru07F.js';
|
|
13
14
|
import '../text-candidate-qg2bD9PY.js';
|
|
14
15
|
import '../validation/index.js';
|
|
@@ -123,6 +124,13 @@ declare const PropertySampleData: Readonly<{
|
|
|
123
124
|
industriBebyggd: SwedishPropertyTaxationCode;
|
|
124
125
|
}>;
|
|
125
126
|
}>;
|
|
127
|
+
declare const VehicleSampleData: Readonly<{
|
|
128
|
+
WatercraftIdentificationNumber: Readonly<{
|
|
129
|
+
all: readonly WatercraftIdentificationNumber[];
|
|
130
|
+
iso10087Example: WatercraftIdentificationNumber;
|
|
131
|
+
unitedStatesExample: WatercraftIdentificationNumber;
|
|
132
|
+
}>;
|
|
133
|
+
}>;
|
|
126
134
|
declare const BankingSampleData: Readonly<{
|
|
127
135
|
Iban: Readonly<{
|
|
128
136
|
all: readonly Iban[];
|
|
@@ -257,4 +265,4 @@ declare const OrganizationSampleData: Readonly<{
|
|
|
257
265
|
}>;
|
|
258
266
|
}>;
|
|
259
267
|
|
|
260
|
-
export { BankingSampleData, ContactSampleData, FinanceSampleData, GeographySampleData, OrganizationSampleData, PropertySampleData, WebSampleData };
|
|
268
|
+
export { BankingSampleData, ContactSampleData, FinanceSampleData, GeographySampleData, OrganizationSampleData, PropertySampleData, VehicleSampleData, WebSampleData };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { T as TextCandidate, a as TextCandidateCategory, b as TextMatchConfidence } from '../text-candidate-qg2bD9PY.cjs';
|
|
2
|
-
import { I as Iban, B as Bic, d as SwedishBankgiroNumber, f as SwedishPostgiroNumber, b as SwedishBankAccount, e as SwedishOcrReferenceNumber, g as SwedishSwishNumber } from '../swedish-swish-number-
|
|
2
|
+
import { I as Iban, B as Bic, d as SwedishBankgiroNumber, f as SwedishPostgiroNumber, b as SwedishBankAccount, e as SwedishOcrReferenceNumber, g as SwedishSwishNumber } from '../swedish-swish-number-Bh-UbVoN.cjs';
|
|
3
3
|
import { c as AddressZipCode, A as Address, S as SwedishAddress } from '../swedish-address-DNC3ftRF.cjs';
|
|
4
4
|
import { a as PhoneNumber } from '../phone-number-DZ-YxCQQ.cjs';
|
|
5
5
|
import { I as Isin } from '../isin-ZlQLBVm8.cjs';
|
|
@@ -15,6 +15,7 @@ import { S as SwedishPropertyDesignation } from '../swedish-property-designation
|
|
|
15
15
|
import { EmailAddress, Url } from '../web/index.cjs';
|
|
16
16
|
import { h as Gtin8, G as Gtin12, d as Gtin13, f as Gtin14, I as IpRating, E as ElectricalPhase, R as Refrigerant, C as Color, S as ScreenResolution, n as ScreenSize } from '../screen-size-BD4t3wzb.cjs';
|
|
17
17
|
import { o as SwedishVehicleRegistrationNumber, V as VehicleIdentificationNumber, O as OperatingHours, B as BoltPattern, W as WheelRimDimension, T as TireDimension, e as EuTypeApprovalNumber, c as EnginePower, F as FuelConsumption, E as EmissionRate, g as EuroEmissionClass, m as SwedishEcoVehicleClassification, S as SwedishDrivingLicenseCategory } from '../wheel-rim-dimension-CdkDrzad.cjs';
|
|
18
|
+
import { W as WatercraftIdentificationNumber } from '../watercraft-identification-number-Db1I2LQM.cjs';
|
|
18
19
|
import '../validation/index.cjs';
|
|
19
20
|
import '../swedish-organization-type-CZOdETwG.cjs';
|
|
20
21
|
|
|
@@ -94,6 +95,7 @@ declare class TextScanResult {
|
|
|
94
95
|
get weights(): TextCandidate<Weight>[];
|
|
95
96
|
get vehicleRegistrationNumbers(): TextCandidate<SwedishVehicleRegistrationNumber>[];
|
|
96
97
|
get vehicleIdentificationNumbers(): TextCandidate<VehicleIdentificationNumber>[];
|
|
98
|
+
get watercraftIdentificationNumbers(): TextCandidate<WatercraftIdentificationNumber>[];
|
|
97
99
|
get operatingHourValues(): TextCandidate<OperatingHours>[];
|
|
98
100
|
get boltPatterns(): TextCandidate<BoltPattern>[];
|
|
99
101
|
get wheelRimDimensions(): TextCandidate<WheelRimDimension>[];
|