@mailwoman/codex 8.0.0 → 8.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/address-system-conventions.ts +7 -1
- package/au/delivery-service.ts +34 -12
- package/au/level-designator.ts +38 -14
- package/au/postcode.ts +9 -3
- package/au/state.ts +9 -3
- package/ca/postal-code.ts +10 -3
- package/ca/province.ts +23 -9
- package/ca/street-type.ts +9 -5
- package/country/country.ts +14 -8
- package/country/official-languages.ts +12 -4
- package/country/reference-data.ts +7 -3
- package/country/reference.ts +1 -1
- package/country/subdivision.ts +19 -8
- package/de/bundesland.ts +19 -6
- package/de/postleitzahl.ts +21 -7
- package/de/street-type.ts +14 -3
- package/fr/cedex.ts +15 -5
- package/fr/code-postal.ts +17 -4
- package/fr/departement.ts +18 -6
- package/fr/region.ts +23 -9
- package/fr/voie.ts +8 -4
- package/gb/country.ts +25 -9
- package/gb/postcode-area.ts +6 -2
- package/gb/postcode.ts +10 -3
- package/gb/street-type.ts +4 -2
- package/index.ts +1 -0
- package/jp/address-unit.ts +8 -4
- package/jp/postal-code.ts +7 -3
- package/jp/prefecture.ts +27 -10
- package/level-semantics.ts +55 -19
- package/nz/delivery-service.ts +43 -15
- package/nz/postcode.ts +9 -3
- package/out/address-system-conventions.d.ts +7 -1
- package/out/address-system-conventions.d.ts.map +1 -1
- package/out/address-system-conventions.js +7 -1
- package/out/address-system-conventions.js.map +1 -1
- package/out/au/delivery-service.d.ts +30 -10
- package/out/au/delivery-service.d.ts.map +1 -1
- package/out/au/delivery-service.js +7 -3
- package/out/au/delivery-service.js.map +1 -1
- package/out/au/level-designator.d.ts +27 -9
- package/out/au/level-designator.d.ts.map +1 -1
- package/out/au/level-designator.js +10 -6
- package/out/au/level-designator.js.map +1 -1
- package/out/au/postcode.d.ts +9 -3
- package/out/au/postcode.d.ts.map +1 -1
- package/out/au/postcode.js +9 -3
- package/out/au/postcode.js.map +1 -1
- package/out/au/state.d.ts +9 -3
- package/out/au/state.d.ts.map +1 -1
- package/out/au/state.js +6 -2
- package/out/au/state.js.map +1 -1
- package/out/ca/postal-code.d.ts +3 -1
- package/out/ca/postal-code.d.ts.map +1 -1
- package/out/ca/postal-code.js +9 -3
- package/out/ca/postal-code.js.map +1 -1
- package/out/ca/province.d.ts +18 -6
- package/out/ca/province.d.ts.map +1 -1
- package/out/ca/province.js +8 -4
- package/out/ca/province.js.map +1 -1
- package/out/ca/street-type.d.ts.map +1 -1
- package/out/ca/street-type.js +9 -5
- package/out/ca/street-type.js.map +1 -1
- package/out/country/country.d.ts +11 -7
- package/out/country/country.d.ts.map +1 -1
- package/out/country/country.js +7 -4
- package/out/country/country.js.map +1 -1
- package/out/country/official-languages.d.ts +12 -4
- package/out/country/official-languages.d.ts.map +1 -1
- package/out/country/official-languages.js +3 -1
- package/out/country/official-languages.js.map +1 -1
- package/out/country/reference-data.d.ts +6 -2
- package/out/country/reference-data.d.ts.map +1 -1
- package/out/country/reference-data.js +4 -2
- package/out/country/reference-data.js.map +1 -1
- package/out/country/reference.js +1 -1
- package/out/country/reference.js.map +1 -1
- package/out/country/subdivision.d.ts +12 -4
- package/out/country/subdivision.d.ts.map +1 -1
- package/out/country/subdivision.js +6 -4
- package/out/country/subdivision.js.map +1 -1
- package/out/de/bundesland.d.ts +18 -6
- package/out/de/bundesland.d.ts.map +1 -1
- package/out/de/bundesland.js +3 -1
- package/out/de/bundesland.js.map +1 -1
- package/out/de/postleitzahl.d.ts +21 -7
- package/out/de/postleitzahl.d.ts.map +1 -1
- package/out/de/postleitzahl.js +9 -3
- package/out/de/postleitzahl.js.map +1 -1
- package/out/de/street-type.d.ts +5 -4
- package/out/de/street-type.d.ts.map +1 -1
- package/out/de/street-type.js +10 -2
- package/out/de/street-type.js.map +1 -1
- package/out/fr/cedex.d.ts +15 -5
- package/out/fr/cedex.d.ts.map +1 -1
- package/out/fr/cedex.js +6 -2
- package/out/fr/cedex.js.map +1 -1
- package/out/fr/code-postal.d.ts +8 -11
- package/out/fr/code-postal.d.ts.map +1 -1
- package/out/fr/code-postal.js +24 -4
- package/out/fr/code-postal.js.map +1 -1
- package/out/fr/departement.d.ts +18 -6
- package/out/fr/departement.d.ts.map +1 -1
- package/out/fr/departement.js +3 -1
- package/out/fr/departement.js.map +1 -1
- package/out/fr/region.d.ts +18 -6
- package/out/fr/region.d.ts.map +1 -1
- package/out/fr/region.js +11 -5
- package/out/fr/region.js.map +1 -1
- package/out/fr/voie.d.ts +3 -1
- package/out/fr/voie.d.ts.map +1 -1
- package/out/fr/voie.js +3 -3
- package/out/fr/voie.js.map +1 -1
- package/out/gb/country.d.ts +18 -6
- package/out/gb/country.d.ts.map +1 -1
- package/out/gb/country.js +13 -5
- package/out/gb/country.js.map +1 -1
- package/out/gb/postcode-area.d.ts.map +1 -1
- package/out/gb/postcode-area.js +6 -2
- package/out/gb/postcode-area.js.map +1 -1
- package/out/gb/postcode.d.ts +3 -11
- package/out/gb/postcode.d.ts.map +1 -1
- package/out/gb/postcode.js +19 -3
- package/out/gb/postcode.js.map +1 -1
- package/out/gb/street-type.d.ts +3 -1
- package/out/gb/street-type.d.ts.map +1 -1
- package/out/gb/street-type.js +1 -1
- package/out/gb/street-type.js.map +1 -1
- package/out/index.d.ts.map +1 -1
- package/out/index.js.map +1 -1
- package/out/jp/address-unit.d.ts +6 -2
- package/out/jp/address-unit.d.ts.map +1 -1
- package/out/jp/address-unit.js +2 -2
- package/out/jp/address-unit.js.map +1 -1
- package/out/jp/postal-code.d.ts +6 -2
- package/out/jp/postal-code.d.ts.map +1 -1
- package/out/jp/postal-code.js +7 -3
- package/out/jp/postal-code.js.map +1 -1
- package/out/jp/prefecture.d.ts +24 -8
- package/out/jp/prefecture.d.ts.map +1 -1
- package/out/jp/prefecture.js +5 -3
- package/out/jp/prefecture.js.map +1 -1
- package/out/level-semantics.d.ts +48 -16
- package/out/level-semantics.d.ts.map +1 -1
- package/out/level-semantics.js +34 -12
- package/out/level-semantics.js.map +1 -1
- package/out/nz/delivery-service.d.ts +39 -13
- package/out/nz/delivery-service.d.ts.map +1 -1
- package/out/nz/delivery-service.js +16 -6
- package/out/nz/delivery-service.js.map +1 -1
- package/out/nz/postcode.d.ts +9 -3
- package/out/nz/postcode.d.ts.map +1 -1
- package/out/nz/postcode.js +9 -3
- package/out/nz/postcode.js.map +1 -1
- package/out/postcode-systems.d.ts +3 -1
- package/out/postcode-systems.d.ts.map +1 -1
- package/out/postcode-systems.js +1 -1
- package/out/postcode-systems.js.map +1 -1
- package/out/tools/build-country-surface-lexicon.js +26 -12
- package/out/tools/build-country-surface-lexicon.js.map +1 -1
- package/out/tools/export-country-surfaces.js.map +1 -1
- package/out/tools/generate-country-reference.d.ts +12 -4
- package/out/tools/generate-country-reference.d.ts.map +1 -1
- package/out/tools/generate-country-reference.js +10 -8
- package/out/tools/generate-country-reference.js.map +1 -1
- package/out/tools/generate-official-languages.d.ts +18 -6
- package/out/tools/generate-official-languages.d.ts.map +1 -1
- package/out/tools/generate-official-languages.js +9 -7
- package/out/tools/generate-official-languages.js.map +1 -1
- package/out/us/floor-designator.d.ts +15 -5
- package/out/us/floor-designator.d.ts.map +1 -1
- package/out/us/floor-designator.js +3 -1
- package/out/us/floor-designator.js.map +1 -1
- package/out/us/military-address.d.ts +36 -12
- package/out/us/military-address.d.ts.map +1 -1
- package/out/us/military-address.js +26 -15
- package/out/us/military-address.js.map +1 -1
- package/out/us/po-box.d.ts +9 -3
- package/out/us/po-box.d.ts.map +1 -1
- package/out/us/po-box.js +4 -2
- package/out/us/po-box.js.map +1 -1
- package/out/us/state.d.ts +6 -2
- package/out/us/state.d.ts.map +1 -1
- package/out/us/state.js +3 -1
- package/out/us/state.js.map +1 -1
- package/out/us/street-directional.d.ts +12 -3
- package/out/us/street-directional.d.ts.map +1 -1
- package/out/us/street-directional.js +8 -3
- package/out/us/street-directional.js.map +1 -1
- package/out/us/street-suffix.d.ts +24 -8
- package/out/us/street-suffix.d.ts.map +1 -1
- package/out/us/street-suffix.js +7 -3
- package/out/us/street-suffix.js.map +1 -1
- package/out/us/unit-designator.d.ts +24 -8
- package/out/us/unit-designator.d.ts.map +1 -1
- package/out/us/unit-designator.js +3 -1
- package/out/us/unit-designator.js.map +1 -1
- package/package.json +2 -2
- package/postcode-systems.ts +4 -2
- package/tools/build-country-surface-lexicon.ts +30 -12
- package/tools/export-country-surfaces.ts +2 -0
- package/tools/generate-country-reference.ts +27 -13
- package/tools/generate-official-languages.ts +27 -12
- package/us/floor-designator.ts +15 -5
- package/us/military-address.ts +53 -24
- package/us/po-box.ts +13 -5
- package/us/state.ts +6 -2
- package/us/street-directional.ts +14 -5
- package/us/street-suffix.ts +27 -9
- package/us/unit-designator.ts +25 -8
|
@@ -41,13 +41,21 @@
|
|
|
41
41
|
* @see {@link https://www.nzpost.co.nz/business/shipping-in-nz/addressing-standards NZ Post addressing standards}
|
|
42
42
|
* @see {@link https://www.nzpost.co.nz/personal/sending-in-nz/how-to-address-mail NZ Post — how to address mail}
|
|
43
43
|
*/
|
|
44
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* Identifier requirement per ADV358's Delivery Service Elements rules.
|
|
46
|
+
*/
|
|
45
47
|
export type NzIdentifierRule = "required-if-allocated" | "optional" | "not-used";
|
|
46
|
-
/**
|
|
48
|
+
/**
|
|
49
|
+
* One Delivery Service Type row from ADV358.
|
|
50
|
+
*/
|
|
47
51
|
export interface NzDeliveryServiceType {
|
|
48
|
-
/**
|
|
52
|
+
/**
|
|
53
|
+
* The Delivery Service Type, verbatim casing per ADV358 ("PO Box", "Private Bag", "CMB").
|
|
54
|
+
*/
|
|
49
55
|
type: string;
|
|
50
|
-
/**
|
|
56
|
+
/**
|
|
57
|
+
* The ADV358 description, verbatim.
|
|
58
|
+
*/
|
|
51
59
|
description: string;
|
|
52
60
|
/**
|
|
53
61
|
* Identifier rule: PO Box/Response Bag/CMB identifiers are mandatory if allocated; Private Bag may legitimately have
|
|
@@ -56,7 +64,9 @@ export interface NzDeliveryServiceType {
|
|
|
56
64
|
*/
|
|
57
65
|
identifier: NzIdentifierRule;
|
|
58
66
|
}
|
|
59
|
-
/**
|
|
67
|
+
/**
|
|
68
|
+
* The six Delivery Service Types, verbatim from ADV358 (see the module header).
|
|
69
|
+
*/
|
|
60
70
|
export declare const NZ_DELIVERY_SERVICE_TYPES: readonly [{
|
|
61
71
|
readonly type: "PO Box";
|
|
62
72
|
readonly description: "Post Box, PO Box";
|
|
@@ -82,7 +92,9 @@ export declare const NZ_DELIVERY_SERVICE_TYPES: readonly [{
|
|
|
82
92
|
readonly description: "Hold for Poste Restante collection - international mail";
|
|
83
93
|
readonly identifier: "not-used";
|
|
84
94
|
}];
|
|
85
|
-
/**
|
|
95
|
+
/**
|
|
96
|
+
* A canonical NZ Delivery Service Type.
|
|
97
|
+
*/
|
|
86
98
|
export type NzDeliveryServiceTypeName = (typeof NZ_DELIVERY_SERVICE_TYPES)[number]["type"];
|
|
87
99
|
/**
|
|
88
100
|
* Metadata for the colloquial "Private Box" alias (see the module header and operator ruling 2026-06-11). Kept separate
|
|
@@ -97,25 +109,35 @@ export type NzDeliveryServiceTypeName = (typeof NZ_DELIVERY_SERVICE_TYPES)[numbe
|
|
|
97
109
|
* treat it as a non-prescriptive form.
|
|
98
110
|
*/
|
|
99
111
|
export declare const NZ_PRIVATE_BOX_ALIAS: {
|
|
100
|
-
/**
|
|
112
|
+
/**
|
|
113
|
+
* The surface form as it appears on real mail and in postal-arena gold rows.
|
|
114
|
+
*/
|
|
101
115
|
readonly type: "Private Box";
|
|
102
116
|
/**
|
|
103
117
|
* The description of validity status — NOT a valid ADV358 Delivery Service Type; a colloquial NZ synonym for a
|
|
104
118
|
* numbered PO Box (same format as "PO Box <number>").
|
|
105
119
|
*/
|
|
106
120
|
readonly description: "Colloquial NZ synonym for a numbered PO Box — NOT a valid ADV358 Delivery Service Type";
|
|
107
|
-
/**
|
|
121
|
+
/**
|
|
122
|
+
* Identifier rule mirrors PO Box: a number is expected when the alias is used with one.
|
|
123
|
+
*/
|
|
108
124
|
readonly identifier: "required-if-allocated";
|
|
109
125
|
/**
|
|
110
126
|
* True — this form is NOT valid per ADV358 or NZ Post's live standards pages (accessed 2026-06-11).
|
|
111
127
|
*/
|
|
112
128
|
readonly officiallyInvalid: true;
|
|
113
129
|
};
|
|
114
|
-
/**
|
|
130
|
+
/**
|
|
131
|
+
* Extended type name union including the colloquial alias recognized for parsing.
|
|
132
|
+
*/
|
|
115
133
|
export type NzDeliveryServiceMatchTypeName = NzDeliveryServiceTypeName | "Private Box";
|
|
116
|
-
/**
|
|
134
|
+
/**
|
|
135
|
+
* Result of an NZ delivery-service parse.
|
|
136
|
+
*/
|
|
117
137
|
export interface NzDeliveryServiceMatch {
|
|
118
|
-
/**
|
|
138
|
+
/**
|
|
139
|
+
* The designator phrase as it appeared ("PO Box", "private bag", "Private Box").
|
|
140
|
+
*/
|
|
119
141
|
matched: string;
|
|
120
142
|
/**
|
|
121
143
|
* The canonical Delivery Service Type or recognized alias ("PO Box", "Private Bag", "CMB", …, "Private Box"). When
|
|
@@ -123,7 +145,9 @@ export interface NzDeliveryServiceMatch {
|
|
|
123
145
|
* type.
|
|
124
146
|
*/
|
|
125
147
|
type: NzDeliveryServiceMatchTypeName;
|
|
126
|
-
/**
|
|
148
|
+
/**
|
|
149
|
+
* The Delivery Service Identifier when present ("24999", "B99").
|
|
150
|
+
*/
|
|
127
151
|
id?: string;
|
|
128
152
|
/**
|
|
129
153
|
* True when the matched form is the colloquial "Private Box" alias — not a valid ADV358 Delivery Service Type. Absent
|
|
@@ -141,7 +165,9 @@ export interface NzDeliveryServiceMatch {
|
|
|
141
165
|
* formally-valid ADV358 types should check `!result.colloquial`.
|
|
142
166
|
*/
|
|
143
167
|
export declare function matchNzDeliveryService(input: unknown): NzDeliveryServiceMatch | null;
|
|
144
|
-
/**
|
|
168
|
+
/**
|
|
169
|
+
* Type-predicate: does the input look like a standalone NZ delivery-service address line?
|
|
170
|
+
*/
|
|
145
171
|
export declare function isNzDeliveryService(input: unknown): boolean;
|
|
146
172
|
/**
|
|
147
173
|
* Normalize a recognized phrase to the ADV358 form (`"p.o. box 24999"` → `"PO Box 24999"`). Returns the input unchanged
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery-service.d.ts","sourceRoot":"","sources":["../../nz/delivery-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH
|
|
1
|
+
{"version":3,"file":"delivery-service.d.ts","sourceRoot":"","sources":["../../nz/delivery-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,uBAAuB,GAAG,UAAU,GAAG,UAAU,CAAA;AAEhF;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACrC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,UAAU,EAAE,gBAAgB,CAAA;CAC5B;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;EAmBe,CAAA;AAErD;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1F;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB;IAChC;;OAEG;;IAEH;;;OAGG;;IAEH;;OAEG;;IAEH;;OAEG;;CAEM,CAAA;AAoBV;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG,yBAAyB,GAAG,aAAa,CAAA;AAqBtF;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACtC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;;;OAIG;IACH,IAAI,EAAE,8BAA8B,CAAA;IACpC;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAA;IACX;;;OAGG;IACH,UAAU,CAAC,EAAE,IAAI,CAAA;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,GAAG,IAAI,CAapF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE3D;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMhE"}
|
|
@@ -41,7 +41,9 @@
|
|
|
41
41
|
* @see {@link https://www.nzpost.co.nz/business/shipping-in-nz/addressing-standards NZ Post addressing standards}
|
|
42
42
|
* @see {@link https://www.nzpost.co.nz/personal/sending-in-nz/how-to-address-mail NZ Post — how to address mail}
|
|
43
43
|
*/
|
|
44
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* The six Delivery Service Types, verbatim from ADV358 (see the module header).
|
|
46
|
+
*/
|
|
45
47
|
export const NZ_DELIVERY_SERVICE_TYPES = [
|
|
46
48
|
{ type: "PO Box", description: "Post Box, PO Box", identifier: "required-if-allocated" },
|
|
47
49
|
{ type: "Private Bag", description: "Private Bag", identifier: "optional" },
|
|
@@ -75,14 +77,18 @@ export const NZ_DELIVERY_SERVICE_TYPES = [
|
|
|
75
77
|
* treat it as a non-prescriptive form.
|
|
76
78
|
*/
|
|
77
79
|
export const NZ_PRIVATE_BOX_ALIAS = {
|
|
78
|
-
/**
|
|
80
|
+
/**
|
|
81
|
+
* The surface form as it appears on real mail and in postal-arena gold rows.
|
|
82
|
+
*/
|
|
79
83
|
type: "Private Box",
|
|
80
84
|
/**
|
|
81
85
|
* The description of validity status — NOT a valid ADV358 Delivery Service Type; a colloquial NZ synonym for a
|
|
82
86
|
* numbered PO Box (same format as "PO Box <number>").
|
|
83
87
|
*/
|
|
84
88
|
description: "Colloquial NZ synonym for a numbered PO Box — NOT a valid ADV358 Delivery Service Type",
|
|
85
|
-
/**
|
|
89
|
+
/**
|
|
90
|
+
* Identifier rule mirrors PO Box: a number is expected when the alias is used with one.
|
|
91
|
+
*/
|
|
86
92
|
identifier: "required-if-allocated",
|
|
87
93
|
/**
|
|
88
94
|
* True — this form is NOT valid per ADV358 or NZ Post's live standards pages (accessed 2026-06-11).
|
|
@@ -111,8 +117,10 @@ const IDENTIFIER_RULES = new Map([
|
|
|
111
117
|
// "Private Box" mirrors PO Box identifier rules (required-if-allocated) per the alias metadata.
|
|
112
118
|
["Private Box", NZ_PRIVATE_BOX_ALIAS.identifier],
|
|
113
119
|
]);
|
|
114
|
-
|
|
115
|
-
|
|
120
|
+
/**
|
|
121
|
+
* One anchored regex per type. The identifier shape follows ADV358 (alphanumeric, no spaces or separators — `24999`,
|
|
122
|
+
* `B99`); the identifier-less counter services take no tail at all.
|
|
123
|
+
*/
|
|
116
124
|
const MATCHERS = TYPE_PATTERNS.map(([type, src]) => {
|
|
117
125
|
const rule = IDENTIFIER_RULES.get(type);
|
|
118
126
|
const tail = rule === "not-used" ? "" : String.raw `(?:\s+([\dA-Za-z]+))${rule === "optional" ? "?" : ""}`;
|
|
@@ -139,7 +147,9 @@ export function matchNzDeliveryService(input) {
|
|
|
139
147
|
}
|
|
140
148
|
return null;
|
|
141
149
|
}
|
|
142
|
-
/**
|
|
150
|
+
/**
|
|
151
|
+
* Type-predicate: does the input look like a standalone NZ delivery-service address line?
|
|
152
|
+
*/
|
|
143
153
|
export function isNzDeliveryService(input) {
|
|
144
154
|
return matchNzDeliveryService(input) !== null;
|
|
145
155
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery-service.js","sourceRoot":"","sources":["../../nz/delivery-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;
|
|
1
|
+
{"version":3,"file":"delivery-service.js","sourceRoot":"","sources":["../../nz/delivery-service.ts"],"names":[],"mappings":"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"}
|
package/out/nz/postcode.d.ts
CHANGED
|
@@ -22,10 +22,16 @@ import type { Tagged } from "type-fest";
|
|
|
22
22
|
* @pattern ^\d{4}$
|
|
23
23
|
*/
|
|
24
24
|
export type NzPostcode = Tagged<string, "NzPostcode">;
|
|
25
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* The NZ postcode shape: exactly four digits.
|
|
27
|
+
*/
|
|
26
28
|
export declare const NZ_POSTCODE_PATTERN: RegExp;
|
|
27
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* Normalize a postcode surface form (trim only — NZ has no country-prefix courtesy form).
|
|
31
|
+
*/
|
|
28
32
|
export declare function normalizeNzPostcode(raw: unknown): NzPostcode | null;
|
|
29
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* Type-predicate for a (normalized) New Zealand postcode.
|
|
35
|
+
*/
|
|
30
36
|
export declare function isNzPostcode(input: unknown): input is NzPostcode;
|
|
31
37
|
//# sourceMappingURL=postcode.d.ts.map
|
package/out/nz/postcode.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postcode.d.ts","sourceRoot":"","sources":["../../nz/postcode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAEvC;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;AAErD
|
|
1
|
+
{"version":3,"file":"postcode.d.ts","sourceRoot":"","sources":["../../nz/postcode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAEvC;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;AAErD;;GAEG;AACH,eAAO,MAAM,mBAAmB,QAAY,CAAA;AAE5C;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAKnE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAEhE"}
|
package/out/nz/postcode.js
CHANGED
|
@@ -12,16 +12,22 @@
|
|
|
12
12
|
* by design (shape test, not membership test).
|
|
13
13
|
* @see {@link https://www.nzpost.co.nz/sites/nz/files/2021-10/adv358-address-standards.pdf NZ Post Address Standards (ADV358, Oct 2021)}
|
|
14
14
|
*/
|
|
15
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* The NZ postcode shape: exactly four digits.
|
|
17
|
+
*/
|
|
16
18
|
export const NZ_POSTCODE_PATTERN = /^\d{4}$/;
|
|
17
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* Normalize a postcode surface form (trim only — NZ has no country-prefix courtesy form).
|
|
21
|
+
*/
|
|
18
22
|
export function normalizeNzPostcode(raw) {
|
|
19
23
|
if (typeof raw !== "string")
|
|
20
24
|
return null;
|
|
21
25
|
const s = raw.trim();
|
|
22
26
|
return NZ_POSTCODE_PATTERN.test(s) ? s : null;
|
|
23
27
|
}
|
|
24
|
-
/**
|
|
28
|
+
/**
|
|
29
|
+
* Type-predicate for a (normalized) New Zealand postcode.
|
|
30
|
+
*/
|
|
25
31
|
export function isNzPostcode(input) {
|
|
26
32
|
return typeof input === "string" && NZ_POSTCODE_PATTERN.test(input);
|
|
27
33
|
}
|
package/out/nz/postcode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postcode.js","sourceRoot":"","sources":["../../nz/postcode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAcH
|
|
1
|
+
{"version":3,"file":"postcode.js","sourceRoot":"","sources":["../../nz/postcode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAcH;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,SAAS,CAAA;AAE5C;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC/C,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IACxC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAEpB,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAgB,CAAC,CAAC,CAAC,IAAI,CAAA;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACpE,CAAC"}
|
|
@@ -20,7 +20,9 @@
|
|
|
20
20
|
* call; this function answers the coarser, model-free "which systems is this shape even eligible
|
|
21
21
|
* for".
|
|
22
22
|
*/
|
|
23
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* A codex address-system code — the subpath under `@mailwoman/codex/<system>`.
|
|
25
|
+
*/
|
|
24
26
|
export type SystemCode = "us" | "de" | "fr" | "ca" | "gb" | "jp" | "au" | "nz";
|
|
25
27
|
/**
|
|
26
28
|
* Every address system whose own postcode shape accepts `postcode`. Empty when no system recognizes the shape (e.g. a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postcode-systems.d.ts","sourceRoot":"","sources":["../postcode-systems.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAWH
|
|
1
|
+
{"version":3,"file":"postcode-systems.d.ts","sourceRoot":"","sources":["../postcode-systems.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAWH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAkB9E;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,CAW1E"}
|
package/out/postcode-systems.js
CHANGED
|
@@ -49,7 +49,7 @@ const SYSTEM_ACCEPTS = [
|
|
|
49
49
|
* postcode-shaped spans an address contains.
|
|
50
50
|
*/
|
|
51
51
|
export function candidateSystemsForPostcode(postcode) {
|
|
52
|
-
if (typeof postcode !== "string" || postcode.length
|
|
52
|
+
if (typeof postcode !== "string" || !postcode.length)
|
|
53
53
|
return [];
|
|
54
54
|
const out = [];
|
|
55
55
|
for (const [system, accepts] of SYSTEM_ACCEPTS) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postcode-systems.js","sourceRoot":"","sources":["../postcode-systems.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"postcode-systems.js","sourceRoot":"","sources":["../postcode-systems.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAOzC;;;;GAIG;AACH,MAAM,cAAc,GAAiE;IACpF,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACvC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC9C,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAChD,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC9C,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAChD,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC9C,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CAC9C,CAAA;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,QAAgB;IAC3D,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,EAAE,CAAA;IAC/D,MAAM,GAAG,GAAiB,EAAE,CAAA;IAE5B,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,cAAc,EAAE,CAAC;QAChD,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACjB,CAAC;IACF,CAAC;IAED,OAAO,GAAG,CAAA;AACX,CAAC"}
|
|
@@ -43,10 +43,20 @@ import { mkdirSync, writeFileSync } from "node:fs";
|
|
|
43
43
|
import { dirname, resolve } from "node:path";
|
|
44
44
|
import { COUNTRY_SURFACE_FORMS, ISO2_TO_NAME } from "../country/country.js";
|
|
45
45
|
import { US_STATE_ABBREVIATIONS, US_STATE_NAMES } from "../us/state.js";
|
|
46
|
+
/**
|
|
47
|
+
* Ambiguous entries printed before the list is truncated.
|
|
48
|
+
*/
|
|
49
|
+
const MAX_LISTED_AMBIGUOUS = 12;
|
|
50
|
+
/**
|
|
51
|
+
* Letters at or below which a token reads as an abbreviation rather than a word.
|
|
52
|
+
*/
|
|
53
|
+
const MAX_ABBREVIATION_LETTERS = 3;
|
|
46
54
|
const BIT = { country_surface: 1, country_ambiguous: 2 };
|
|
47
55
|
const SLOTS = ["country_surface", "country_ambiguous"];
|
|
48
|
-
|
|
49
|
-
|
|
56
|
+
/**
|
|
57
|
+
* Committed output path (a codex-derived artifact, like export-country-surfaces.ts — no argv, so the no-process-globals
|
|
58
|
+
* lint policy holds; codex stays zero-runtime-dep).
|
|
59
|
+
*/
|
|
50
60
|
const OUTPUT = resolve(import.meta.dirname, "../../data/gazetteer/country-surface-lexicon-v1.json");
|
|
51
61
|
/**
|
|
52
62
|
* THE shared word-normalization rule (identical to build-gazetteer-anchor-lexicon.mjs and mirrored in
|
|
@@ -56,23 +66,27 @@ const OUTPUT = resolve(import.meta.dirname, "../../data/gazetteer/country-surfac
|
|
|
56
66
|
*/
|
|
57
67
|
const wordNorm = (s) => s
|
|
58
68
|
.split(/\s+/)
|
|
59
|
-
.map((w) => w.
|
|
69
|
+
.map((w) => w.replaceAll(/^[^\p{L}\p{N}]+|[^\p{L}\p{N}]+$/gu, ""))
|
|
60
70
|
.filter(Boolean)
|
|
61
71
|
.join(" ");
|
|
62
72
|
const norm = (s) => wordNorm(s).toLowerCase();
|
|
63
|
-
/**
|
|
73
|
+
/**
|
|
74
|
+
* Short alphabetic code (≤3 letters once punctuation is dropped) → exact-uppercase matching.
|
|
75
|
+
*/
|
|
64
76
|
const isShortCode = (s) => {
|
|
65
|
-
const letters = s.
|
|
66
|
-
return letters.length > 0 && letters.length <=
|
|
77
|
+
const letters = s.replaceAll(/[^\p{L}]/gu, "");
|
|
78
|
+
return letters.length > 0 && letters.length <= MAX_ABBREVIATION_LETTERS && /^[\p{L}.\s]+$/u.test(s);
|
|
67
79
|
};
|
|
68
80
|
// Homograph set: a single-word country surface that is ALSO a US region (name or abbreviation) reads
|
|
69
81
|
// ambiguously (Georgia the country vs the state, IN = India vs Indiana). Computed from codex so it
|
|
70
82
|
// tracks the US region table, never hand-maintained.
|
|
71
83
|
const usStateNames = new Set(US_STATE_NAMES.map((n) => n.toLowerCase()));
|
|
72
84
|
const usStateAbbrevs = new Set(US_STATE_ABBREVIATIONS);
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
85
|
+
/**
|
|
86
|
+
* Curated common-word country surfaces — single tokens that appear far more often as ordinary street/venue/locality
|
|
87
|
+
* words than as a trailing country. A SOFT flag (the model still decides), the model-first analogue of Pelias's
|
|
88
|
+
* blacklist (north/south/east/west/street/city/king). Tunable.
|
|
89
|
+
*/
|
|
76
90
|
const COMMON_WORD_AMBIGUOUS = new Set(["america", "england", "britain", "turkey", "chad", "jordan", "jersey", "guinea"]);
|
|
77
91
|
const isAmbiguousName = (lowerKey) => usStateNames.has(lowerKey) || COMMON_WORD_AMBIGUOUS.has(lowerKey);
|
|
78
92
|
// surface → bits, split across the two match-rule maps (mirrors the gazetteer builder).
|
|
@@ -129,11 +143,11 @@ const lexicon = {
|
|
|
129
143
|
scan: "longest-first n-gram over whitespace words, left to right, non-overlapping (shared with the gazetteer matcher)",
|
|
130
144
|
feature: "emitted per-piece row = [country_surface, country_ambiguous] (the raw bits); confidence = 1.0 where country_surface fires.",
|
|
131
145
|
},
|
|
132
|
-
entries: Object.fromEntries([...entries].
|
|
133
|
-
code_entries: Object.fromEntries([...codeEntries].
|
|
146
|
+
entries: Object.fromEntries([...entries].toSorted(([a], [b]) => a.localeCompare(b))),
|
|
147
|
+
code_entries: Object.fromEntries([...codeEntries].toSorted(([a], [b]) => a.localeCompare(b))),
|
|
134
148
|
};
|
|
135
149
|
mkdirSync(dirname(OUTPUT), { recursive: true });
|
|
136
150
|
writeFileSync(OUTPUT, JSON.stringify(lexicon, null, 1) + "\n");
|
|
137
151
|
process.stderr.write(`wrote ${OUTPUT}: ${entries.size} entries + ${codeEntries.size} code_entries, ` +
|
|
138
|
-
`max_ngram=${maxNgram}, ${ambiguousEntries.length} ambiguous: ${ambiguousEntries.slice(0,
|
|
152
|
+
`max_ngram=${maxNgram}, ${ambiguousEntries.length} ambiguous: ${ambiguousEntries.slice(0, MAX_LISTED_AMBIGUOUS).join(", ")}${ambiguousEntries.length > MAX_LISTED_AMBIGUOUS ? ", …" : ""}\n`);
|
|
139
153
|
//# sourceMappingURL=build-country-surface-lexicon.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-country-surface-lexicon.js","sourceRoot":"","sources":["../../tools/build-country-surface-lexicon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAE5C,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAC3E,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEvE,MAAM,GAAG,GAAG,EAAE,eAAe,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAA;AACxD,MAAM,KAAK,GAAG,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAA;AAEtD
|
|
1
|
+
{"version":3,"file":"build-country-surface-lexicon.js","sourceRoot":"","sources":["../../tools/build-country-surface-lexicon.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export-country-surfaces.js","sourceRoot":"","sources":["../../tools/export-country-surfaces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAE3E,oGAAoG;AACpG,gGAAgG;AAChG,MAAM,QAAQ,GAA6B,EAAE,CAAA;AAE7C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC;IACnE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAA;AAC5B,CAAC;AAED,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,YAAY,EAAE,CAAC;IACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC;AACF,CAAC;AAED,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,oEAAoE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"export-country-surfaces.js","sourceRoot":"","sources":["../../tools/export-country-surfaces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAE3E,oGAAoG;AACpG,gGAAgG;AAChG,MAAM,QAAQ,GAA6B,EAAE,CAAA;AAE7C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC;IACnE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAA;AAC5B,CAAC;AAED,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,YAAY,EAAE,CAAC;IACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC;AACF,CAAC;AAED,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,oEAAoE,CAAC,CAAA;AAE9G,aAAa,CACZ,GAAG,EACH,IAAI,CAAC,SAAS,CACb;IACC,UAAU,EAAE,mGAAmG;IAC/G,QAAQ;CACR,EACD,IAAI,EACJ,CAAC,CACD,GAAG,IAAI,CACR,CAAA;AAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,CAAA"}
|
|
@@ -13,16 +13,24 @@
|
|
|
13
13
|
*
|
|
14
14
|
* Usage: mailwoman dev generate country-reference
|
|
15
15
|
*/
|
|
16
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* Options for {@linkcode generateCountryReference}.
|
|
18
|
+
*/
|
|
17
19
|
export interface GenerateCountryReferenceOptions {
|
|
18
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Output path override. Default: `codex/country/reference-data.ts` (the committed table).
|
|
22
|
+
*/
|
|
19
23
|
out?: string;
|
|
20
24
|
}
|
|
21
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* Summary returned by {@linkcode generateCountryReference}.
|
|
27
|
+
*/
|
|
22
28
|
export interface GenerateCountryReferenceSummary {
|
|
23
29
|
countries: number;
|
|
24
30
|
outPath: string;
|
|
25
31
|
}
|
|
26
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Fetch mledoze/countries and regenerate the committed `COUNTRY_REFERENCE` table.
|
|
34
|
+
*/
|
|
27
35
|
export declare function generateCountryReference(options?: GenerateCountryReferenceOptions, report?: (line: string) => void): Promise<GenerateCountryReferenceSummary>;
|
|
28
36
|
//# sourceMappingURL=generate-country-reference.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-country-reference.d.ts","sourceRoot":"","sources":["../../tools/generate-country-reference.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"generate-country-reference.d.ts","sourceRoot":"","sources":["../../tools/generate-country-reference.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAgCH;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC/C;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC/C,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CACf;AA6BD;;GAEG;AACH,wBAAsB,wBAAwB,CAC7C,OAAO,GAAE,+BAAoC,EAC7C,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC7B,OAAO,CAAC,+BAA+B,CAAC,CAqE1C"}
|
|
@@ -38,12 +38,14 @@ function callingCode(country) {
|
|
|
38
38
|
return Number.isFinite(n) ? n : undefined;
|
|
39
39
|
}
|
|
40
40
|
const serialize = (o) => JSON.stringify(o, null, 0)
|
|
41
|
-
.
|
|
42
|
-
.
|
|
43
|
-
.
|
|
44
|
-
.
|
|
45
|
-
.
|
|
46
|
-
/**
|
|
41
|
+
.replaceAll('"isoCode"', "isoCode")
|
|
42
|
+
.replaceAll('"callingCode"', "callingCode")
|
|
43
|
+
.replaceAll('"currency"', "currency")
|
|
44
|
+
.replaceAll('"name"', "name")
|
|
45
|
+
.replaceAll('"symbol"', "symbol");
|
|
46
|
+
/**
|
|
47
|
+
* Fetch mledoze/countries and regenerate the committed `COUNTRY_REFERENCE` table.
|
|
48
|
+
*/
|
|
47
49
|
export async function generateCountryReference(options = {}, report) {
|
|
48
50
|
const outPath = options.out ?? DEFAULT_OUT;
|
|
49
51
|
const response = await fetch(SOURCE);
|
|
@@ -60,7 +62,7 @@ export async function generateCountryReference(options = {}, report) {
|
|
|
60
62
|
if (cc != null) {
|
|
61
63
|
entry.callingCode = cc;
|
|
62
64
|
}
|
|
63
|
-
const currencyCodes = Object.keys(country.currencies ?? {}).
|
|
65
|
+
const currencyCodes = Object.keys(country.currencies ?? {}).toSorted();
|
|
64
66
|
if (currencyCodes.length) {
|
|
65
67
|
const code = currencyCodes[0];
|
|
66
68
|
const info = country.currencies[code] ?? {};
|
|
@@ -77,7 +79,7 @@ export async function generateCountryReference(options = {}, report) {
|
|
|
77
79
|
}
|
|
78
80
|
}
|
|
79
81
|
const body = Object.keys(rows)
|
|
80
|
-
.
|
|
82
|
+
.toSorted()
|
|
81
83
|
.map((k) => `\t${k}: ${serialize(rows[k])},`)
|
|
82
84
|
.join("\n");
|
|
83
85
|
const header = `/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-country-reference.js","sourceRoot":"","sources":["../../tools/generate-country-reference.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,MAAM,MAAM,GAAG,2EAA2E,CAAA;AAE1F;;;;;GAKG;AACH,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,8BAA8B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"generate-country-reference.js","sourceRoot":"","sources":["../../tools/generate-country-reference.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,21 +18,33 @@
|
|
|
18
18
|
* With `cldrDir`, reads cldr-territoryInfo.json + cldr-aliases.json from disk; otherwise fetches
|
|
19
19
|
* the pinned cldr-core release from jsdelivr.
|
|
20
20
|
*/
|
|
21
|
-
/**
|
|
21
|
+
/**
|
|
22
|
+
* Options for {@linkcode generateOfficialLanguages}.
|
|
23
|
+
*/
|
|
22
24
|
export interface GenerateOfficialLanguagesOptions {
|
|
23
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* Read cldr-territoryInfo.json + cldr-aliases.json from this directory instead of fetching.
|
|
27
|
+
*/
|
|
24
28
|
cldrDir?: string;
|
|
25
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* Pinned cldr-core release fetched from jsdelivr when {@linkcode GenerateOfficialLanguagesOptions.cldrDir} is absent.
|
|
31
|
+
*/
|
|
26
32
|
cldrVersion?: string;
|
|
27
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* Output path override. Default: `codex/country/official-languages.ts` (the committed table).
|
|
35
|
+
*/
|
|
28
36
|
out?: string;
|
|
29
37
|
}
|
|
30
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* Summary returned by {@linkcode generateOfficialLanguages}.
|
|
40
|
+
*/
|
|
31
41
|
export interface GenerateOfficialLanguagesSummary {
|
|
32
42
|
territories: number;
|
|
33
43
|
cldrVersion: string;
|
|
34
44
|
outPath: string;
|
|
35
45
|
}
|
|
36
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* Regenerate the committed `OFFICIAL_LANGUAGES` table from CLDR supplemental data.
|
|
48
|
+
*/
|
|
37
49
|
export declare function generateOfficialLanguages(options?: GenerateOfficialLanguagesOptions, report?: (line: string) => void): Promise<GenerateOfficialLanguagesSummary>;
|
|
38
50
|
//# sourceMappingURL=generate-official-languages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-official-languages.d.ts","sourceRoot":"","sources":["../../tools/generate-official-languages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAaH
|
|
1
|
+
{"version":3,"file":"generate-official-languages.d.ts","sourceRoot":"","sources":["../../tools/generate-official-languages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAaH;;GAEG;AACH,MAAM,WAAW,gCAAgC;IAChD;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,gCAAgC;IAChD,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CACf;AAgBD;;GAEG;AACH,wBAAsB,yBAAyB,CAC9C,OAAO,GAAE,gCAAqC,EAC9C,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC7B,OAAO,CAAC,gCAAgC,CAAC,CA2H3C"}
|
|
@@ -36,7 +36,9 @@ async function loadCLDR(file, cldrDir, cldrVersion) {
|
|
|
36
36
|
throw new Error(`${url}: HTTP ${res.status}`);
|
|
37
37
|
return res.json();
|
|
38
38
|
}
|
|
39
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* Regenerate the committed `OFFICIAL_LANGUAGES` table from CLDR supplemental data.
|
|
41
|
+
*/
|
|
40
42
|
export async function generateOfficialLanguages(options = {}, report) {
|
|
41
43
|
const cldrVersion = options.cldrVersion ?? "47.0.0";
|
|
42
44
|
const outPath = options.out ?? DEFAULT_OUT;
|
|
@@ -56,7 +58,7 @@ export async function generateOfficialLanguages(options = {}, report) {
|
|
|
56
58
|
set.add(alias);
|
|
57
59
|
}
|
|
58
60
|
const table = {};
|
|
59
|
-
for (const territory of Object.keys(territoryInfo).
|
|
61
|
+
for (const territory of Object.keys(territoryInfo).toSorted()) {
|
|
60
62
|
if (!/^[A-Z]{2}$/.test(territory))
|
|
61
63
|
continue;
|
|
62
64
|
const pops = territoryInfo[territory].languagePopulation;
|
|
@@ -70,7 +72,7 @@ export async function generateOfficialLanguages(options = {}, report) {
|
|
|
70
72
|
continue;
|
|
71
73
|
// CLDR keys can carry script subtags ("zh_Hant") — name tags use the base language.
|
|
72
74
|
const base = lang.split("_")[0];
|
|
73
|
-
const spellings = [base, ...(spellingsOf.get(base) ?? [])].
|
|
75
|
+
const spellings = [base, ...(spellingsOf.get(base) ?? [])].toSorted();
|
|
74
76
|
if (status === "official" || status === "de_facto_official") {
|
|
75
77
|
for (const s of spellings) {
|
|
76
78
|
official.add(s);
|
|
@@ -82,11 +84,11 @@ export async function generateOfficialLanguages(options = {}, report) {
|
|
|
82
84
|
}
|
|
83
85
|
}
|
|
84
86
|
}
|
|
85
|
-
if (official.size
|
|
87
|
+
if (!official.size && !regional.size)
|
|
86
88
|
continue;
|
|
87
|
-
table[territory] = { official: [...official].
|
|
88
|
-
if (regional.size
|
|
89
|
-
table[territory].regional = [...regional].
|
|
89
|
+
table[territory] = { official: [...official].toSorted() };
|
|
90
|
+
if (regional.size) {
|
|
91
|
+
table[territory].regional = [...regional].toSorted();
|
|
90
92
|
}
|
|
91
93
|
}
|
|
92
94
|
const entries = Object.entries(table)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-official-languages.js","sourceRoot":"","sources":["../../tools/generate-official-languages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC;;;;GAIG;AACH,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,kCAAkC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"generate-official-languages.js","sourceRoot":"","sources":["../../tools/generate-official-languages.ts"],"names":[],"mappings":"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"}
|