@mailwoman/api 9.1.0 → 9.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/README.md +1 -1
- package/app.ts +13 -8
- package/engine.ts +23 -11
- package/out/app.d.ts +2 -1
- package/out/app.d.ts.map +1 -1
- package/out/app.js +7 -7
- package/out/app.js.map +1 -1
- package/out/engine.d.ts +18 -22
- package/out/engine.d.ts.map +1 -1
- package/out/routes.d.ts +2 -1
- package/out/routes.d.ts.map +1 -1
- package/out/routes.js +28 -32
- package/out/routes.js.map +1 -1
- package/out/schema.d.ts +277 -1
- package/out/schema.d.ts.map +1 -1
- package/out/schema.js +69 -12
- package/out/schema.js.map +1 -1
- package/package.json +21 -6
- package/routes.ts +46 -35
- package/schema.ts +125 -63
package/out/schema.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* libpostal), nothing here is a vendor contract — this surface is ours to design, so request
|
|
8
8
|
* bodies are REQUIRED and validator-enforced (no legacy tolerance to preserve). A `defaultHook`
|
|
9
9
|
* on the app maps validation failures through the shared `APIErrorSchema` envelope
|
|
10
|
-
* (`
|
|
10
|
+
* (`errorResponse(c, 400, "invalid request body", <zod summary>)`) — the pattern boundary every
|
|
11
11
|
* surface holds to: where no legacy contract exists, the validator MAY speak, but only in
|
|
12
12
|
* our envelope.
|
|
13
13
|
*
|
|
@@ -87,6 +87,165 @@ export declare const GeocodeRequestSchema: z.ZodObject<{
|
|
|
87
87
|
formatted: "formatted";
|
|
88
88
|
}>>;
|
|
89
89
|
}, z.core.$strip>;
|
|
90
|
+
/**
|
|
91
|
+
* `POST /v1/geocode` response — a hand-modeled mirror of `GeocodeResult`'s wire shape (`mailwoman/geocode-core.ts`),
|
|
92
|
+
* `.loose()` so a field the engine adds that this schema doesn't yet know about still rides through undocumented rather
|
|
93
|
+
* than being stripped or rejected. DOC-ACCURACY ONLY: the route passes `engine.geocode()`'s outcome through verbatim
|
|
94
|
+
* (`GeocodeOutcome = Record<string, unknown>`, `api/engine.ts`) — nothing here validates a real response, so a
|
|
95
|
+
* schema/engine mismatch can never reject or mutate a result at runtime. Deliberately carries NO import from
|
|
96
|
+
* `mailwoman` (the engine-agnosticism boundary — `mailwoman` is the one workspace allowed to depend on
|
|
97
|
+
* `@mailwoman/api`, never the reverse). `mailwoman/test/api-schema-drift.test.ts` is the compile-time tripwire that
|
|
98
|
+
* catches this shape drifting from the real `GeocodeResult` interface.
|
|
99
|
+
*/
|
|
100
|
+
export declare const GeocodeOutcomeLikeSchema: z.ZodObject<{
|
|
101
|
+
input: z.ZodString;
|
|
102
|
+
components: z.ZodRecord<z.ZodEnum<{
|
|
103
|
+
country: "country";
|
|
104
|
+
region: "region";
|
|
105
|
+
locality: "locality";
|
|
106
|
+
dependent_locality: "dependent_locality";
|
|
107
|
+
postcode: "postcode";
|
|
108
|
+
subregion: "subregion";
|
|
109
|
+
house_number: "house_number";
|
|
110
|
+
street: "street";
|
|
111
|
+
street_prefix: "street_prefix";
|
|
112
|
+
street_prefix_particle: "street_prefix_particle";
|
|
113
|
+
street_suffix: "street_suffix";
|
|
114
|
+
intersection_a: "intersection_a";
|
|
115
|
+
intersection_b: "intersection_b";
|
|
116
|
+
unit: "unit";
|
|
117
|
+
venue: "venue";
|
|
118
|
+
attention: "attention";
|
|
119
|
+
po_box: "po_box";
|
|
120
|
+
cedex: "cedex";
|
|
121
|
+
prefecture: "prefecture";
|
|
122
|
+
municipality: "municipality";
|
|
123
|
+
district: "district";
|
|
124
|
+
block: "block";
|
|
125
|
+
sub_block: "sub_block";
|
|
126
|
+
building_number: "building_number";
|
|
127
|
+
building_name: "building_name";
|
|
128
|
+
}> & z.core.$partial, z.ZodString>;
|
|
129
|
+
lat: z.ZodNullable<z.ZodNumber>;
|
|
130
|
+
lon: z.ZodNullable<z.ZodNumber>;
|
|
131
|
+
resolution_tier: z.ZodEnum<{
|
|
132
|
+
street: "street";
|
|
133
|
+
venue: "venue";
|
|
134
|
+
address_point: "address_point";
|
|
135
|
+
interpolated: "interpolated";
|
|
136
|
+
admin: "admin";
|
|
137
|
+
plus_code: "plus_code";
|
|
138
|
+
}>;
|
|
139
|
+
entity: z.ZodOptional<z.ZodObject<{
|
|
140
|
+
name: z.ZodString;
|
|
141
|
+
categoryID: z.ZodNullable<z.ZodString>;
|
|
142
|
+
confidence: z.ZodNumber;
|
|
143
|
+
country: z.ZodString;
|
|
144
|
+
}, z.core.$strip>>;
|
|
145
|
+
uncertainty_m: z.ZodNullable<z.ZodNumber>;
|
|
146
|
+
locality: z.ZodNullable<z.ZodString>;
|
|
147
|
+
region: z.ZodNullable<z.ZodString>;
|
|
148
|
+
postcode: z.ZodNullable<z.ZodString>;
|
|
149
|
+
house_number: z.ZodNullable<z.ZodString>;
|
|
150
|
+
street: z.ZodNullable<z.ZodString>;
|
|
151
|
+
venue: z.ZodNullable<z.ZodString>;
|
|
152
|
+
dependent_locality: z.ZodNullable<z.ZodString>;
|
|
153
|
+
unit: z.ZodNullable<z.ZodString>;
|
|
154
|
+
countryCode: z.ZodNullable<z.ZodString>;
|
|
155
|
+
hierarchy: z.ZodArray<z.ZodObject<{
|
|
156
|
+
tag: z.ZodString;
|
|
157
|
+
value: z.ZodString;
|
|
158
|
+
name: z.ZodString;
|
|
159
|
+
lat: z.ZodOptional<z.ZodNumber>;
|
|
160
|
+
lon: z.ZodOptional<z.ZodNumber>;
|
|
161
|
+
placeID: z.ZodOptional<z.ZodString>;
|
|
162
|
+
in_winner_lineage: z.ZodOptional<z.ZodBoolean>;
|
|
163
|
+
}, z.core.$strip>>;
|
|
164
|
+
candidates: z.ZodArray<z.ZodObject<{
|
|
165
|
+
name: z.ZodString;
|
|
166
|
+
tag: z.ZodString;
|
|
167
|
+
lat: z.ZodNumber;
|
|
168
|
+
lon: z.ZodNumber;
|
|
169
|
+
countryCode: z.ZodNullable<z.ZodString>;
|
|
170
|
+
placeID: z.ZodOptional<z.ZodString>;
|
|
171
|
+
}, z.core.$strip>>;
|
|
172
|
+
rooftop: z.ZodOptional<z.ZodObject<{
|
|
173
|
+
localityNorm: z.ZodOptional<z.ZodString>;
|
|
174
|
+
postcode: z.ZodOptional<z.ZodString>;
|
|
175
|
+
}, z.core.$strip>>;
|
|
176
|
+
postcode_country_scope: z.ZodNullable<z.ZodString>;
|
|
177
|
+
intent_markers: z.ZodArray<z.ZodObject<{
|
|
178
|
+
kind: z.ZodEnum<{
|
|
179
|
+
intersection: "intersection";
|
|
180
|
+
po_box: "po_box";
|
|
181
|
+
postcode_only: "postcode_only";
|
|
182
|
+
locality_only: "locality_only";
|
|
183
|
+
structured_address: "structured_address";
|
|
184
|
+
landmark: "landmark";
|
|
185
|
+
poi_query: "poi_query";
|
|
186
|
+
vague: "vague";
|
|
187
|
+
bare_toponym: "bare_toponym";
|
|
188
|
+
route_pair: "route_pair";
|
|
189
|
+
near_me: "near_me";
|
|
190
|
+
poi_category: "poi_category";
|
|
191
|
+
}>;
|
|
192
|
+
code: z.ZodEnum<{
|
|
193
|
+
poi_category: "poi_category";
|
|
194
|
+
declared_ambiguity: "declared_ambiguity";
|
|
195
|
+
declared_fork: "declared_fork";
|
|
196
|
+
focus_point_required: "focus_point_required";
|
|
197
|
+
}>;
|
|
198
|
+
mechanism: z.ZodString;
|
|
199
|
+
message: z.ZodString;
|
|
200
|
+
evidence: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
201
|
+
}, z.core.$strip>>;
|
|
202
|
+
admin_coherence: z.ZodOptional<z.ZodObject<{
|
|
203
|
+
region: z.ZodEnum<{
|
|
204
|
+
confirmed: "confirmed";
|
|
205
|
+
contradicted: "contradicted";
|
|
206
|
+
unstated: "unstated";
|
|
207
|
+
unverifiable: "unverifiable";
|
|
208
|
+
}>;
|
|
209
|
+
country: z.ZodEnum<{
|
|
210
|
+
confirmed: "confirmed";
|
|
211
|
+
contradicted: "contradicted";
|
|
212
|
+
unstated: "unstated";
|
|
213
|
+
unverifiable: "unverifiable";
|
|
214
|
+
}>;
|
|
215
|
+
}, z.core.$strip>>;
|
|
216
|
+
dropped_components: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
217
|
+
tag: z.ZodEnum<{
|
|
218
|
+
country: "country";
|
|
219
|
+
region: "region";
|
|
220
|
+
locality: "locality";
|
|
221
|
+
dependent_locality: "dependent_locality";
|
|
222
|
+
postcode: "postcode";
|
|
223
|
+
subregion: "subregion";
|
|
224
|
+
house_number: "house_number";
|
|
225
|
+
street: "street";
|
|
226
|
+
street_prefix: "street_prefix";
|
|
227
|
+
street_prefix_particle: "street_prefix_particle";
|
|
228
|
+
street_suffix: "street_suffix";
|
|
229
|
+
intersection_a: "intersection_a";
|
|
230
|
+
intersection_b: "intersection_b";
|
|
231
|
+
unit: "unit";
|
|
232
|
+
venue: "venue";
|
|
233
|
+
attention: "attention";
|
|
234
|
+
po_box: "po_box";
|
|
235
|
+
cedex: "cedex";
|
|
236
|
+
prefecture: "prefecture";
|
|
237
|
+
municipality: "municipality";
|
|
238
|
+
district: "district";
|
|
239
|
+
block: "block";
|
|
240
|
+
sub_block: "sub_block";
|
|
241
|
+
building_number: "building_number";
|
|
242
|
+
building_name: "building_name";
|
|
243
|
+
}>;
|
|
244
|
+
value: z.ZodString;
|
|
245
|
+
kept: z.ZodString;
|
|
246
|
+
}, z.core.$strip>>>;
|
|
247
|
+
}, z.core.$strip>;
|
|
248
|
+
export type GeocodeOutcomeLike = z.infer<typeof GeocodeOutcomeLikeSchema>;
|
|
90
249
|
/**
|
|
91
250
|
* `POST /v1/geocode` response — a hand-modeled mirror of `GeocodeResult`'s wire shape (`mailwoman/geocode-core.ts`),
|
|
92
251
|
* `.loose()` so a field the engine adds that this schema doesn't yet know about still rides through undocumented rather
|
|
@@ -130,10 +289,18 @@ export declare const GeocodeOutcomeSchema: z.ZodObject<{
|
|
|
130
289
|
lon: z.ZodNullable<z.ZodNumber>;
|
|
131
290
|
resolution_tier: z.ZodEnum<{
|
|
132
291
|
street: "street";
|
|
292
|
+
venue: "venue";
|
|
133
293
|
address_point: "address_point";
|
|
134
294
|
interpolated: "interpolated";
|
|
135
295
|
admin: "admin";
|
|
296
|
+
plus_code: "plus_code";
|
|
136
297
|
}>;
|
|
298
|
+
entity: z.ZodOptional<z.ZodObject<{
|
|
299
|
+
name: z.ZodString;
|
|
300
|
+
categoryID: z.ZodNullable<z.ZodString>;
|
|
301
|
+
confidence: z.ZodNumber;
|
|
302
|
+
country: z.ZodString;
|
|
303
|
+
}, z.core.$strip>>;
|
|
137
304
|
uncertainty_m: z.ZodNullable<z.ZodNumber>;
|
|
138
305
|
locality: z.ZodNullable<z.ZodString>;
|
|
139
306
|
region: z.ZodNullable<z.ZodString>;
|
|
@@ -151,6 +318,7 @@ export declare const GeocodeOutcomeSchema: z.ZodObject<{
|
|
|
151
318
|
lat: z.ZodOptional<z.ZodNumber>;
|
|
152
319
|
lon: z.ZodOptional<z.ZodNumber>;
|
|
153
320
|
placeID: z.ZodOptional<z.ZodString>;
|
|
321
|
+
in_winner_lineage: z.ZodOptional<z.ZodBoolean>;
|
|
154
322
|
}, z.core.$strip>>;
|
|
155
323
|
candidates: z.ZodArray<z.ZodObject<{
|
|
156
324
|
name: z.ZodString;
|
|
@@ -160,6 +328,10 @@ export declare const GeocodeOutcomeSchema: z.ZodObject<{
|
|
|
160
328
|
countryCode: z.ZodNullable<z.ZodString>;
|
|
161
329
|
placeID: z.ZodOptional<z.ZodString>;
|
|
162
330
|
}, z.core.$strip>>;
|
|
331
|
+
rooftop: z.ZodOptional<z.ZodObject<{
|
|
332
|
+
localityNorm: z.ZodOptional<z.ZodString>;
|
|
333
|
+
postcode: z.ZodOptional<z.ZodString>;
|
|
334
|
+
}, z.core.$strip>>;
|
|
163
335
|
postcode_country_scope: z.ZodNullable<z.ZodString>;
|
|
164
336
|
intent_markers: z.ZodArray<z.ZodObject<{
|
|
165
337
|
kind: z.ZodEnum<{
|
|
@@ -186,7 +358,53 @@ export declare const GeocodeOutcomeSchema: z.ZodObject<{
|
|
|
186
358
|
message: z.ZodString;
|
|
187
359
|
evidence: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
188
360
|
}, z.core.$strip>>;
|
|
361
|
+
admin_coherence: z.ZodOptional<z.ZodObject<{
|
|
362
|
+
region: z.ZodEnum<{
|
|
363
|
+
confirmed: "confirmed";
|
|
364
|
+
contradicted: "contradicted";
|
|
365
|
+
unstated: "unstated";
|
|
366
|
+
unverifiable: "unverifiable";
|
|
367
|
+
}>;
|
|
368
|
+
country: z.ZodEnum<{
|
|
369
|
+
confirmed: "confirmed";
|
|
370
|
+
contradicted: "contradicted";
|
|
371
|
+
unstated: "unstated";
|
|
372
|
+
unverifiable: "unverifiable";
|
|
373
|
+
}>;
|
|
374
|
+
}, z.core.$strip>>;
|
|
375
|
+
dropped_components: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
376
|
+
tag: z.ZodEnum<{
|
|
377
|
+
country: "country";
|
|
378
|
+
region: "region";
|
|
379
|
+
locality: "locality";
|
|
380
|
+
dependent_locality: "dependent_locality";
|
|
381
|
+
postcode: "postcode";
|
|
382
|
+
subregion: "subregion";
|
|
383
|
+
house_number: "house_number";
|
|
384
|
+
street: "street";
|
|
385
|
+
street_prefix: "street_prefix";
|
|
386
|
+
street_prefix_particle: "street_prefix_particle";
|
|
387
|
+
street_suffix: "street_suffix";
|
|
388
|
+
intersection_a: "intersection_a";
|
|
389
|
+
intersection_b: "intersection_b";
|
|
390
|
+
unit: "unit";
|
|
391
|
+
venue: "venue";
|
|
392
|
+
attention: "attention";
|
|
393
|
+
po_box: "po_box";
|
|
394
|
+
cedex: "cedex";
|
|
395
|
+
prefecture: "prefecture";
|
|
396
|
+
municipality: "municipality";
|
|
397
|
+
district: "district";
|
|
398
|
+
block: "block";
|
|
399
|
+
sub_block: "sub_block";
|
|
400
|
+
building_number: "building_number";
|
|
401
|
+
building_name: "building_name";
|
|
402
|
+
}>;
|
|
403
|
+
value: z.ZodString;
|
|
404
|
+
kept: z.ZodString;
|
|
405
|
+
}, z.core.$strip>>>;
|
|
189
406
|
}, z.core.$loose>;
|
|
407
|
+
export type GeocodeOutcome = z.infer<typeof GeocodeOutcomeSchema>;
|
|
190
408
|
/**
|
|
191
409
|
* `POST /v1/batch` request body.
|
|
192
410
|
*/
|
|
@@ -234,10 +452,18 @@ export declare const BatchResponseSchema: z.ZodObject<{
|
|
|
234
452
|
lon: z.ZodNullable<z.ZodNumber>;
|
|
235
453
|
resolution_tier: z.ZodEnum<{
|
|
236
454
|
street: "street";
|
|
455
|
+
venue: "venue";
|
|
237
456
|
address_point: "address_point";
|
|
238
457
|
interpolated: "interpolated";
|
|
239
458
|
admin: "admin";
|
|
459
|
+
plus_code: "plus_code";
|
|
240
460
|
}>;
|
|
461
|
+
entity: z.ZodOptional<z.ZodObject<{
|
|
462
|
+
name: z.ZodString;
|
|
463
|
+
categoryID: z.ZodNullable<z.ZodString>;
|
|
464
|
+
confidence: z.ZodNumber;
|
|
465
|
+
country: z.ZodString;
|
|
466
|
+
}, z.core.$strip>>;
|
|
241
467
|
uncertainty_m: z.ZodNullable<z.ZodNumber>;
|
|
242
468
|
locality: z.ZodNullable<z.ZodString>;
|
|
243
469
|
region: z.ZodNullable<z.ZodString>;
|
|
@@ -255,6 +481,7 @@ export declare const BatchResponseSchema: z.ZodObject<{
|
|
|
255
481
|
lat: z.ZodOptional<z.ZodNumber>;
|
|
256
482
|
lon: z.ZodOptional<z.ZodNumber>;
|
|
257
483
|
placeID: z.ZodOptional<z.ZodString>;
|
|
484
|
+
in_winner_lineage: z.ZodOptional<z.ZodBoolean>;
|
|
258
485
|
}, z.core.$strip>>;
|
|
259
486
|
candidates: z.ZodArray<z.ZodObject<{
|
|
260
487
|
name: z.ZodString;
|
|
@@ -264,6 +491,10 @@ export declare const BatchResponseSchema: z.ZodObject<{
|
|
|
264
491
|
countryCode: z.ZodNullable<z.ZodString>;
|
|
265
492
|
placeID: z.ZodOptional<z.ZodString>;
|
|
266
493
|
}, z.core.$strip>>;
|
|
494
|
+
rooftop: z.ZodOptional<z.ZodObject<{
|
|
495
|
+
localityNorm: z.ZodOptional<z.ZodString>;
|
|
496
|
+
postcode: z.ZodOptional<z.ZodString>;
|
|
497
|
+
}, z.core.$strip>>;
|
|
267
498
|
postcode_country_scope: z.ZodNullable<z.ZodString>;
|
|
268
499
|
intent_markers: z.ZodArray<z.ZodObject<{
|
|
269
500
|
kind: z.ZodEnum<{
|
|
@@ -290,6 +521,51 @@ export declare const BatchResponseSchema: z.ZodObject<{
|
|
|
290
521
|
message: z.ZodString;
|
|
291
522
|
evidence: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
292
523
|
}, z.core.$strip>>;
|
|
524
|
+
admin_coherence: z.ZodOptional<z.ZodObject<{
|
|
525
|
+
region: z.ZodEnum<{
|
|
526
|
+
confirmed: "confirmed";
|
|
527
|
+
contradicted: "contradicted";
|
|
528
|
+
unstated: "unstated";
|
|
529
|
+
unverifiable: "unverifiable";
|
|
530
|
+
}>;
|
|
531
|
+
country: z.ZodEnum<{
|
|
532
|
+
confirmed: "confirmed";
|
|
533
|
+
contradicted: "contradicted";
|
|
534
|
+
unstated: "unstated";
|
|
535
|
+
unverifiable: "unverifiable";
|
|
536
|
+
}>;
|
|
537
|
+
}, z.core.$strip>>;
|
|
538
|
+
dropped_components: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
539
|
+
tag: z.ZodEnum<{
|
|
540
|
+
country: "country";
|
|
541
|
+
region: "region";
|
|
542
|
+
locality: "locality";
|
|
543
|
+
dependent_locality: "dependent_locality";
|
|
544
|
+
postcode: "postcode";
|
|
545
|
+
subregion: "subregion";
|
|
546
|
+
house_number: "house_number";
|
|
547
|
+
street: "street";
|
|
548
|
+
street_prefix: "street_prefix";
|
|
549
|
+
street_prefix_particle: "street_prefix_particle";
|
|
550
|
+
street_suffix: "street_suffix";
|
|
551
|
+
intersection_a: "intersection_a";
|
|
552
|
+
intersection_b: "intersection_b";
|
|
553
|
+
unit: "unit";
|
|
554
|
+
venue: "venue";
|
|
555
|
+
attention: "attention";
|
|
556
|
+
po_box: "po_box";
|
|
557
|
+
cedex: "cedex";
|
|
558
|
+
prefecture: "prefecture";
|
|
559
|
+
municipality: "municipality";
|
|
560
|
+
district: "district";
|
|
561
|
+
block: "block";
|
|
562
|
+
sub_block: "sub_block";
|
|
563
|
+
building_number: "building_number";
|
|
564
|
+
building_name: "building_name";
|
|
565
|
+
}>;
|
|
566
|
+
value: z.ZodString;
|
|
567
|
+
kept: z.ZodString;
|
|
568
|
+
}, z.core.$strip>>>;
|
|
293
569
|
}, z.core.$loose>, z.ZodObject<{
|
|
294
570
|
input: z.ZodString;
|
|
295
571
|
error: z.ZodString;
|
package/out/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAA;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;EAA2D,CAAA;AAEvF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kBAAkB,OAAO,CAAA;AAEtC;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;iBAMN,CAAA;AAEzB;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;iBAA6E,CAAA;AAE9G;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;iBAON,CAAA;AAEzB;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;iBAKN,CAAA;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAA;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;EAA2D,CAAA;AAEvF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kBAAkB,OAAO,CAAA;AAEtC;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;iBAMN,CAAA;AAEzB;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;iBAA6E,CAAA;AAE9G;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;iBAON,CAAA;AAEzB;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;iBAKN,CAAA;AA8G3B;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsEnC,CAAA;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAEzE;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA6D,CAAA;AAE9F,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEjE;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;iBAUN,CAAA;AAYzB;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAIN,CAAA;AAE1B;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;;;;iBAKN,CAAA;AAE3B;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;iBAIN,CAAA;AAQ5B;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;;;;iBAMN,CAAA;AAE1B;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;iBAKN,CAAA;AAE3B;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;;;iBAMN,CAAA"}
|
package/out/schema.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* libpostal), nothing here is a vendor contract — this surface is ours to design, so request
|
|
8
8
|
* bodies are REQUIRED and validator-enforced (no legacy tolerance to preserve). A `defaultHook`
|
|
9
9
|
* on the app maps validation failures through the shared `APIErrorSchema` envelope
|
|
10
|
-
* (`
|
|
10
|
+
* (`errorResponse(c, 400, "invalid request body", <zod summary>)`) — the pattern boundary every
|
|
11
11
|
* surface holds to: where no legacy contract exists, the validator MAY speak, but only in
|
|
12
12
|
* our envelope.
|
|
13
13
|
*
|
|
@@ -89,6 +89,9 @@ const GeocodeHierarchyEntrySchema = z
|
|
|
89
89
|
lat: z.number().optional(),
|
|
90
90
|
lon: z.number().optional(),
|
|
91
91
|
placeID: z.string().optional(),
|
|
92
|
+
// #1731 tri-state lineage provenance: true = the winner's ancestor chain vouches for this entry, false =
|
|
93
|
+
// resolved independently OUTSIDE the winner's lineage, absent = unverifiable. Absence is not false.
|
|
94
|
+
in_winner_lineage: z.boolean().optional(),
|
|
92
95
|
})
|
|
93
96
|
.openapi("GeocodeHierarchyEntry");
|
|
94
97
|
/**
|
|
@@ -106,11 +109,11 @@ const GeocodeCandidateSchema = z
|
|
|
106
109
|
})
|
|
107
110
|
.openapi("GeocodeCandidate");
|
|
108
111
|
/**
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
+
* The `ComponentTag` union at this engine-agnostic boundary, named once so every schema that speaks about a tag speaks
|
|
113
|
+
* about the SAME list. Two hand-copied enums would agree on the day they were written and diverge on the day a tag is
|
|
114
|
+
* added — the shape of defect `feedback-parity-needs-shared-function-not-shared-constants` describes.
|
|
112
115
|
*/
|
|
113
|
-
const
|
|
116
|
+
const ComponentTagSchema = z.enum([
|
|
114
117
|
"country",
|
|
115
118
|
"region",
|
|
116
119
|
"locality",
|
|
@@ -136,7 +139,13 @@ const GeocodeComponentsSchema = z.partialRecord(z.enum([
|
|
|
136
139
|
"sub_block",
|
|
137
140
|
"building_number",
|
|
138
141
|
"building_name",
|
|
139
|
-
])
|
|
142
|
+
]);
|
|
143
|
+
/**
|
|
144
|
+
* Canonical parsed-component map carried by `GeocodeResult.components`. Spelled out at this engine-agnostic API
|
|
145
|
+
* boundary for the same reason the result schema is hand-modeled; the compile-time drift pin in
|
|
146
|
+
* `mailwoman/test/api-schema-drift.test.ts` catches any mismatch with the real `ComponentTag`-keyed result type.
|
|
147
|
+
*/
|
|
148
|
+
const GeocodeComponentsSchema = z.partialRecord(ComponentTagSchema, z.string());
|
|
140
149
|
/**
|
|
141
150
|
* One `GeocodeOutcome.intent_markers` entry — an advisory the ROAD_TO_V9 §4 intent vocabulary raised about the QUERY.
|
|
142
151
|
* Mirrors `QueryIntentMarker` (`core/pipeline/types.ts`).
|
|
@@ -180,13 +189,22 @@ const QueryIntentMarkerSchema = z
|
|
|
180
189
|
* `@mailwoman/api`, never the reverse). `mailwoman/test/api-schema-drift.test.ts` is the compile-time tripwire that
|
|
181
190
|
* catches this shape drifting from the real `GeocodeResult` interface.
|
|
182
191
|
*/
|
|
183
|
-
export const
|
|
184
|
-
.object({
|
|
192
|
+
export const GeocodeOutcomeLikeSchema = z.object({
|
|
185
193
|
input: z.string(),
|
|
186
194
|
components: GeocodeComponentsSchema,
|
|
187
195
|
lat: z.number().nullable(),
|
|
188
196
|
lon: z.number().nullable(),
|
|
189
|
-
resolution_tier: z.enum(["address_point", "interpolated", "street", "admin"]),
|
|
197
|
+
resolution_tier: z.enum(["address_point", "interpolated", "street", "admin", "venue", "plus_code"]),
|
|
198
|
+
// The fork→entity probe's answer (#1585) — present only on the `venue` tier; see geocode-core's
|
|
199
|
+
// GeocodeResult.entity.
|
|
200
|
+
entity: z
|
|
201
|
+
.object({
|
|
202
|
+
name: z.string(),
|
|
203
|
+
categoryID: z.string().nullable(),
|
|
204
|
+
confidence: z.number(),
|
|
205
|
+
country: z.string(),
|
|
206
|
+
})
|
|
207
|
+
.optional(),
|
|
190
208
|
uncertainty_m: z.number().nullable(),
|
|
191
209
|
locality: z.string().nullable(),
|
|
192
210
|
region: z.string().nullable(),
|
|
@@ -202,6 +220,14 @@ export const GeocodeOutcomeSchema = z
|
|
|
202
220
|
countryCode: z.string().nullable(),
|
|
203
221
|
hierarchy: z.array(GeocodeHierarchyEntrySchema),
|
|
204
222
|
candidates: z.array(GeocodeCandidateSchema),
|
|
223
|
+
// The register row's OWN scope tags when the address_point tier answered and its shard carries
|
|
224
|
+
// them (normalized locality key + postcode of the ROOFTOP) — see geocode-core's GeocodeResult.rooftop.
|
|
225
|
+
rooftop: z
|
|
226
|
+
.object({
|
|
227
|
+
localityNorm: z.string().optional(),
|
|
228
|
+
postcode: z.string().optional(),
|
|
229
|
+
})
|
|
230
|
+
.optional(),
|
|
205
231
|
// #42: the country the postcode-country coherence pass scoped the walk to, or null. Non-null ONLY when it
|
|
206
232
|
// OVERRODE the request's country prior — so a caller who asked for US and got an FR answer can see which
|
|
207
233
|
// evidence bought the change instead of reading it as a bug.
|
|
@@ -209,9 +235,40 @@ export const GeocodeOutcomeSchema = z
|
|
|
209
235
|
// ROAD_TO_V9 §4: query-intent advisories. Always present; empty means the vocabulary looked and had nothing to
|
|
210
236
|
// say. Advisory ONLY — no marker changed which answer won, and a client is free to ignore the array entirely.
|
|
211
237
|
intent_markers: z.array(QueryIntentMarkerSchema),
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
238
|
+
// #1717 stage 1: flag-only admin-coherence verdicts — did the winning candidate's resolved ancestry confirm,
|
|
239
|
+
// contradict, or fail to speak to the PARSED region/country qualifiers? Nothing ranks or gates on these; present
|
|
240
|
+
// whenever a winner resolved (both members always populated — `unstated` is the explicit no-qualifier claim),
|
|
241
|
+
// absent when nothing resolved to check against. See mailwoman's `admin-coherence.ts` for the verdict contract.
|
|
242
|
+
admin_coherence: z
|
|
243
|
+
.object({
|
|
244
|
+
region: z.enum(["confirmed", "contradicted", "unstated", "unverifiable"]),
|
|
245
|
+
country: z.enum(["confirmed", "contradicted", "unstated", "unverifiable"]),
|
|
246
|
+
})
|
|
247
|
+
.optional(),
|
|
248
|
+
// #1755: spans the flat `components` map could not represent. `components` holds one value per tag, so a second
|
|
249
|
+
// `locality` span ceases to exist there — and without this line `region: null` means both "the input named no
|
|
250
|
+
// region" and "it named one and we deleted it". Absent when nothing was dropped; never an empty array on the wire,
|
|
251
|
+
// because the common case is nothing dropped and a client should not have to read a field to learn that.
|
|
252
|
+
dropped_components: z
|
|
253
|
+
.array(z.object({
|
|
254
|
+
tag: ComponentTagSchema,
|
|
255
|
+
value: z.string(),
|
|
256
|
+
// The value that held the slot, so a reader sees which of the two survived without re-deriving it.
|
|
257
|
+
kept: z.string(),
|
|
258
|
+
}))
|
|
259
|
+
.optional(),
|
|
260
|
+
});
|
|
261
|
+
/**
|
|
262
|
+
* `POST /v1/geocode` response — a hand-modeled mirror of `GeocodeResult`'s wire shape (`mailwoman/geocode-core.ts`),
|
|
263
|
+
* `.loose()` so a field the engine adds that this schema doesn't yet know about still rides through undocumented rather
|
|
264
|
+
* than being stripped or rejected. DOC-ACCURACY ONLY: the route passes `engine.geocode()`'s outcome through verbatim
|
|
265
|
+
* (`GeocodeOutcome = Record<string, unknown>`, `api/engine.ts`) — nothing here validates a real response, so a
|
|
266
|
+
* schema/engine mismatch can never reject or mutate a result at runtime. Deliberately carries NO import from
|
|
267
|
+
* `mailwoman` (the engine-agnosticism boundary — `mailwoman` is the one workspace allowed to depend on
|
|
268
|
+
* `@mailwoman/api`, never the reverse). `mailwoman/test/api-schema-drift.test.ts` is the compile-time tripwire that
|
|
269
|
+
* catches this shape drifting from the real `GeocodeResult` interface.
|
|
270
|
+
*/
|
|
271
|
+
export const GeocodeOutcomeSchema = GeocodeOutcomeLikeSchema.loose().openapi("GeocodeOutcome");
|
|
215
272
|
/**
|
|
216
273
|
* `POST /v1/batch` request body.
|
|
217
274
|
*/
|
package/out/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAA;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;AAEvF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAA;AAEtC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KACjC,MAAM,CAAC;IACP,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC3C,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC7B,UAAU,EAAE,eAAe,CAAC,QAAQ,EAAE;CACtC,CAAC;KACD,OAAO,CAAC,cAAc,CAAC,CAAA;AAEzB;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;AAE9G;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KACjC,MAAM,CAAC;IACP,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;IACpD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC;KACD,OAAO,CAAC,cAAc,CAAC,CAAA;AAEzB;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KACnC,MAAM,CAAC;IACP,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC3C,UAAU,EAAE,eAAe,CAAC,QAAQ,EAAE;CACtC,CAAC;KACD,OAAO,CAAC,gBAAgB,CAAC,CAAA;AAE3B;;;;GAIG;AACH,MAAM,2BAA2B,GAAG,CAAC;KACnC,MAAM,CAAC;IACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../schema.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mailwoman/api",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.2.0",
|
|
4
4
|
"description": "The native Mailwoman HTTP API — engine-agnostic /v1 surface (parse, geocode, batch, resolve, format) with health, metrics, and an emitted OpenAPI document.",
|
|
5
5
|
"license": "AGPL-3.0-only OR LicenseRef-Commercial",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
8
|
"url": "https://github.com/sister-software/mailwoman.git",
|
|
9
|
-
"directory": "api"
|
|
9
|
+
"directory": "packages/api"
|
|
10
10
|
},
|
|
11
11
|
"files": [
|
|
12
12
|
"out/**/*.js",
|
|
@@ -21,14 +21,22 @@
|
|
|
21
21
|
"!*.test.ts",
|
|
22
22
|
"!*.test.tsx",
|
|
23
23
|
"!**/*.test.ts",
|
|
24
|
-
"!**/*.test.tsx"
|
|
24
|
+
"!**/*.test.tsx",
|
|
25
|
+
"!test/**"
|
|
25
26
|
],
|
|
26
27
|
"type": "module",
|
|
28
|
+
"imports": {
|
|
29
|
+
"#package.json": "./package.json"
|
|
30
|
+
},
|
|
27
31
|
"exports": {
|
|
28
32
|
"./package.json": "./package.json",
|
|
29
33
|
".": {
|
|
30
34
|
"types": "./out/index.d.ts",
|
|
31
35
|
"default": "./out/index.js"
|
|
36
|
+
},
|
|
37
|
+
"./schema": {
|
|
38
|
+
"types": "./out/schema.d.ts",
|
|
39
|
+
"default": "./out/schema.js"
|
|
32
40
|
}
|
|
33
41
|
},
|
|
34
42
|
"publishConfig": {
|
|
@@ -38,14 +46,21 @@
|
|
|
38
46
|
".": {
|
|
39
47
|
"types": "./out/index.d.ts",
|
|
40
48
|
"default": "./out/index.js"
|
|
49
|
+
},
|
|
50
|
+
"./schema": {
|
|
51
|
+
"types": "./out/schema.d.ts",
|
|
52
|
+
"default": "./out/schema.js"
|
|
41
53
|
}
|
|
54
|
+
},
|
|
55
|
+
"imports": {
|
|
56
|
+
"#package.json": "./package.json"
|
|
42
57
|
}
|
|
43
58
|
},
|
|
44
59
|
"dependencies": {
|
|
45
60
|
"@hono/zod-openapi": "^1.5.1",
|
|
46
|
-
"@mailwoman/api-kit": "9.
|
|
47
|
-
"@mailwoman/core": "9.
|
|
48
|
-
"@mailwoman/formatter": "9.
|
|
61
|
+
"@mailwoman/api-kit": "9.2.0",
|
|
62
|
+
"@mailwoman/core": "9.2.0",
|
|
63
|
+
"@mailwoman/formatter": "9.2.0",
|
|
49
64
|
"hono": "^4.13.0",
|
|
50
65
|
"zod": "^4.4.3"
|
|
51
66
|
}
|