@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.
Files changed (56) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/PARITY.md +7 -7
  3. package/README.md +18 -1
  4. package/dist/cjs/contact/phone-number-test-data.js +1 -1
  5. package/dist/cjs/contact/phone-number-test-data.js.map +1 -1
  6. package/dist/cjs/contact/phone-number.js +36 -14
  7. package/dist/cjs/contact/phone-number.js.map +2 -2
  8. package/dist/cjs/organization/swedish-organization-number.js.map +2 -2
  9. package/dist/cjs/register-default-text-scanners.js +2 -0
  10. package/dist/cjs/register-default-text-scanners.js.map +2 -2
  11. package/dist/cjs/sample-data/index.js +18 -1
  12. package/dist/cjs/sample-data/index.js.map +2 -2
  13. package/dist/cjs/text-scanning/text-scan-result.js +3 -0
  14. package/dist/cjs/text-scanning/text-scan-result.js.map +2 -2
  15. package/dist/cjs/validation/validation-error-reason.js +6 -1
  16. package/dist/cjs/validation/validation-error-reason.js.map +2 -2
  17. package/dist/cjs/vehicle/index.js +4 -0
  18. package/dist/cjs/vehicle/index.js.map +2 -2
  19. package/dist/cjs/vehicle/watercraft-identification-number.js +332 -0
  20. package/dist/cjs/vehicle/watercraft-identification-number.js.map +7 -0
  21. package/dist/esm/contact/phone-number-test-data.js +1 -1
  22. package/dist/esm/contact/phone-number-test-data.js.map +1 -1
  23. package/dist/esm/contact/phone-number.js +36 -14
  24. package/dist/esm/contact/phone-number.js.map +2 -2
  25. package/dist/esm/organization/swedish-organization-number.js.map +2 -2
  26. package/dist/esm/register-default-text-scanners.js +2 -0
  27. package/dist/esm/register-default-text-scanners.js.map +2 -2
  28. package/dist/esm/sample-data/index.js +18 -1
  29. package/dist/esm/sample-data/index.js.map +2 -2
  30. package/dist/esm/text-scanning/text-scan-result.js +3 -0
  31. package/dist/esm/text-scanning/text-scan-result.js.map +2 -2
  32. package/dist/esm/validation/validation-error-reason.js +6 -1
  33. package/dist/esm/validation/validation-error-reason.js.map +2 -2
  34. package/dist/esm/vehicle/index.js +8 -0
  35. package/dist/esm/vehicle/index.js.map +2 -2
  36. package/dist/esm/vehicle/watercraft-identification-number.js +315 -0
  37. package/dist/esm/vehicle/watercraft-identification-number.js.map +7 -0
  38. package/dist/types/banking/index.d.cts +2 -2
  39. package/dist/types/banking/index.d.ts +2 -2
  40. package/dist/types/contact/index.d.cts +1 -1
  41. package/dist/types/contact/index.d.ts +1 -1
  42. package/dist/types/index.d.cts +2 -1
  43. package/dist/types/index.d.ts +2 -1
  44. package/dist/types/sample-data/index.d.cts +10 -2
  45. package/dist/types/sample-data/index.d.ts +10 -2
  46. package/dist/types/text-scanning/index.d.cts +3 -1
  47. package/dist/types/text-scanning/index.d.ts +3 -1
  48. package/dist/types/validation/index.d.cts +4 -0
  49. package/dist/types/validation/index.d.ts +4 -0
  50. package/dist/types/vehicle/index.d.cts +2 -0
  51. package/dist/types/vehicle/index.d.ts +2 -0
  52. package/dist/types/watercraft-identification-number-Db1I2LQM.d.cts +123 -0
  53. package/dist/types/watercraft-identification-number-o8B3C6Nx.d.ts +123 -0
  54. package/package.json +18 -13
  55. package/dist/types/{swedish-swish-number-CL6Gx_h3.d.cts → swedish-swish-number-Bh-UbVoN.d.cts} +136 -136
  56. 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": "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",
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-CL6Gx_h3.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-CL6Gx_h3.cjs';
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-DDG3mNDg.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-DDG3mNDg.js';
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-4650 04 00 through 08-4650 04 99 (100 numbers). */
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-4650 04 00 through 08-4650 04 99 (100 numbers). */
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[];
@@ -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-CL6Gx_h3.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-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
 
@@ -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-DDG3mNDg.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-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 { 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-CL6Gx_h3.cjs';
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 { 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-DDG3mNDg.js';
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-CL6Gx_h3.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-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>[];