@voyantjs/products 0.92.0 → 0.95.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 (35) hide show
  1. package/dist/catalog-policy-destinations.d.ts +5 -3
  2. package/dist/catalog-policy-destinations.d.ts.map +1 -1
  3. package/dist/catalog-policy-destinations.js +47 -3
  4. package/dist/routes-merchandising.d.ts +12 -0
  5. package/dist/routes-merchandising.d.ts.map +1 -1
  6. package/dist/routes-public.d.ts +15 -0
  7. package/dist/routes-public.d.ts.map +1 -1
  8. package/dist/routes.d.ts +12 -0
  9. package/dist/routes.d.ts.map +1 -1
  10. package/dist/schema-taxonomy.d.ts +51 -0
  11. package/dist/schema-taxonomy.d.ts.map +1 -1
  12. package/dist/schema-taxonomy.js +5 -1
  13. package/dist/service-catalog-plane-destinations.d.ts.map +1 -1
  14. package/dist/service-catalog-plane-destinations.js +26 -2
  15. package/dist/service-catalog.d.ts +6 -0
  16. package/dist/service-catalog.d.ts.map +1 -1
  17. package/dist/service-catalog.js +9 -0
  18. package/dist/service-public.d.ts +15 -0
  19. package/dist/service-public.d.ts.map +1 -1
  20. package/dist/service-public.js +6 -0
  21. package/dist/service.d.ts +12 -0
  22. package/dist/service.d.ts.map +1 -1
  23. package/dist/service.js +6 -0
  24. package/dist/validation-catalog.d.ts +18 -0
  25. package/dist/validation-catalog.d.ts.map +1 -1
  26. package/dist/validation-content.d.ts +31 -0
  27. package/dist/validation-content.d.ts.map +1 -1
  28. package/dist/validation-content.js +5 -0
  29. package/dist/validation-public.d.ts +52 -0
  30. package/dist/validation-public.d.ts.map +1 -1
  31. package/dist/validation-public.js +4 -0
  32. package/dist/validation-shared.d.ts +6 -0
  33. package/dist/validation-shared.d.ts.map +1 -1
  34. package/dist/validation-shared.js +12 -1
  35. package/package.json +8 -8
@@ -11,6 +11,7 @@
11
11
  * - "trips to Italy" (filter: `countries[]` includes "Italy")
12
12
  * - "trips in Rome" (filter: `cities[]` includes "Rome")
13
13
  * - "Mediterranean cruises" (filter: `regions[]` includes "Mediterranean")
14
+ * - "cruises from Amsterdam" (filter: `ports[]` or canonical place ids)
14
15
  *
15
16
  * Wire this policy into the products registry by composing with
16
17
  * `productCatalogPolicy`:
@@ -23,10 +24,11 @@
23
24
  * and wire `createProductDestinationsProjectionExtension` into
24
25
  * `createProductDocumentBuilder` so the values land in the doc.
25
26
  *
27
+ * Destination rows can carry canonical place ids (for example UN/LOCODE)
28
+ * and optional display coordinates. The gazetteer itself remains external;
29
+ * this module stores stable pointers/snapshots for faceting.
30
+ *
26
31
  * Out of scope here:
27
- * - Coordinates / geopoints. The `destinations` table has no coordinate
28
- * columns; product geolocation lives on `product_locations` and will
29
- * ship as its own policy in a follow-up PR.
30
32
  * - Slug fields per locale. Destinations have one canonical slug today;
31
33
  * locale-specific slugs are a follow-up if marketing needs them.
32
34
  */
@@ -1 +1 @@
1
- {"version":3,"file":"catalog-policy-destinations.d.ts","sourceRoot":"","sources":["../src/catalog-policy-destinations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAErF,QAAA,MAAM,iCAAiC,EAAE,gBAAgB,EAmFxD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gCAAgC,2CAAuD,CAAA;AAEpG,OAAO,EAAE,iCAAiC,EAAE,CAAA"}
1
+ {"version":3,"file":"catalog-policy-destinations.d.ts","sourceRoot":"","sources":["../src/catalog-policy-destinations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAErF,QAAA,MAAM,iCAAiC,EAAE,gBAAgB,EA6HxD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gCAAgC,2CAAuD,CAAA;AAEpG,OAAO,EAAE,iCAAiC,EAAE,CAAA"}
@@ -11,6 +11,7 @@
11
11
  * - "trips to Italy" (filter: `countries[]` includes "Italy")
12
12
  * - "trips in Rome" (filter: `cities[]` includes "Rome")
13
13
  * - "Mediterranean cruises" (filter: `regions[]` includes "Mediterranean")
14
+ * - "cruises from Amsterdam" (filter: `ports[]` or canonical place ids)
14
15
  *
15
16
  * Wire this policy into the products registry by composing with
16
17
  * `productCatalogPolicy`:
@@ -23,10 +24,11 @@
23
24
  * and wire `createProductDestinationsProjectionExtension` into
24
25
  * `createProductDocumentBuilder` so the values land in the doc.
25
26
  *
27
+ * Destination rows can carry canonical place ids (for example UN/LOCODE)
28
+ * and optional display coordinates. The gazetteer itself remains external;
29
+ * this module stores stable pointers/snapshots for faceting.
30
+ *
26
31
  * Out of scope here:
27
- * - Coordinates / geopoints. The `destinations` table has no coordinate
28
- * columns; product geolocation lives on `product_locations` and will
29
- * ship as its own policy in a follow-up PR.
30
32
  * - Slug fields per locale. Destinations have one canonical slug today;
31
33
  * locale-specific slugs are a follow-up if marketing needs them.
32
34
  */
@@ -78,6 +80,34 @@ const PRODUCT_DESTINATIONS_FIELD_POLICY = [
78
80
  overrideFriction: "none",
79
81
  sourceFreshness: "sync",
80
82
  },
83
+ {
84
+ path: "ports[]",
85
+ class: "structural",
86
+ merge: "source-only",
87
+ drift: "low",
88
+ reindex: "entry-locale",
89
+ snapshot: "on-book",
90
+ query: "indexed-column",
91
+ localized: true,
92
+ visibility: ["staff", "customer", "partner"],
93
+ editRole: "none",
94
+ overrideFriction: "none",
95
+ sourceFreshness: "sync",
96
+ },
97
+ {
98
+ path: "waterways[]",
99
+ class: "structural",
100
+ merge: "source-only",
101
+ drift: "low",
102
+ reindex: "entry-locale",
103
+ snapshot: "on-book",
104
+ query: "indexed-column",
105
+ localized: true,
106
+ visibility: ["staff", "customer", "partner"],
107
+ editRole: "none",
108
+ overrideFriction: "none",
109
+ sourceFreshness: "sync",
110
+ },
81
111
  // ── Slugs (locale-stable) ────────────────────────────────────────────────
82
112
  // Used for category-page links — operators want stable URLs that don't
83
113
  // shift when translations are edited. One entry per linked destination.
@@ -112,6 +142,20 @@ const PRODUCT_DESTINATIONS_FIELD_POLICY = [
112
142
  overrideFriction: "none",
113
143
  sourceFreshness: "sync",
114
144
  },
145
+ {
146
+ path: "destinationCanonicalPlaceIds[]",
147
+ class: "structural",
148
+ merge: "source-only",
149
+ drift: "low",
150
+ reindex: "facet-affecting",
151
+ snapshot: "on-book",
152
+ query: "indexed-column",
153
+ localized: false,
154
+ visibility: ["staff", "customer", "partner"],
155
+ editRole: "none",
156
+ overrideFriction: "none",
157
+ sourceFreshness: "sync",
158
+ },
115
159
  ];
116
160
  /**
117
161
  * Resolved destinations policy. Compose with `productCatalogPolicy` when
@@ -506,7 +506,10 @@ export declare const productMerchandisingRoutes: import("hono/hono-base").HonoBa
506
506
  parentId: string | null;
507
507
  slug: string;
508
508
  code: string | null;
509
+ canonicalPlaceId: string | null;
509
510
  destinationType: string;
511
+ latitude: number | null;
512
+ longitude: number | null;
510
513
  sortOrder: number;
511
514
  active: boolean;
512
515
  metadata: {
@@ -559,7 +562,10 @@ export declare const productMerchandisingRoutes: import("hono/hono-base").HonoBa
559
562
  parentId: string | null;
560
563
  slug: string;
561
564
  code: string | null;
565
+ canonicalPlaceId: string | null;
562
566
  destinationType: string;
567
+ latitude: number | null;
568
+ longitude: number | null;
563
569
  sortOrder: number;
564
570
  active: boolean;
565
571
  metadata: {
@@ -585,11 +591,14 @@ export declare const productMerchandisingRoutes: import("hono/hono-base").HonoBa
585
591
  updatedAt: string;
586
592
  code: string | null;
587
593
  sortOrder: number;
594
+ latitude: number | null;
595
+ longitude: number | null;
588
596
  slug: string;
589
597
  metadata: {
590
598
  [x: string]: import("hono/utils/types").JSONValue;
591
599
  } | null;
592
600
  parentId: string | null;
601
+ canonicalPlaceId: string | null;
593
602
  destinationType: string;
594
603
  } | null;
595
604
  };
@@ -622,7 +631,10 @@ export declare const productMerchandisingRoutes: import("hono/hono-base").HonoBa
622
631
  parentId: string | null;
623
632
  slug: string;
624
633
  code: string | null;
634
+ canonicalPlaceId: string | null;
625
635
  destinationType: string;
636
+ latitude: number | null;
637
+ longitude: number | null;
626
638
  sortOrder: number;
627
639
  active: boolean;
628
640
  metadata: {
@@ -1 +1 @@
1
- {"version":3,"file":"routes-merchandising.d.ts","sourceRoot":"","sources":["../src/routes-merchandising.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAIzC,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAmfnC,CAAA"}
1
+ {"version":3,"file":"routes-merchandising.d.ts","sourceRoot":"","sources":["../src/routes-merchandising.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAIzC,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAmfnC,CAAA"}
@@ -54,11 +54,14 @@ export declare const publicProductRoutes: import("hono/hono-base").HonoBase<Env,
54
54
  id: string;
55
55
  parentId: string | null;
56
56
  slug: string;
57
+ canonicalPlaceId: string | null;
57
58
  name: string;
58
59
  description: string | null;
59
60
  seoTitle: string | null;
60
61
  seoDescription: string | null;
61
62
  destinationType: string;
63
+ latitude: number | null;
64
+ longitude: number | null;
62
65
  sortOrder: number;
63
66
  }[];
64
67
  locations: {
@@ -169,11 +172,14 @@ export declare const publicProductRoutes: import("hono/hono-base").HonoBase<Env,
169
172
  id: string;
170
173
  parentId: string | null;
171
174
  slug: string;
175
+ canonicalPlaceId: string | null;
172
176
  name: string;
173
177
  description: string | null;
174
178
  seoTitle: string | null;
175
179
  seoDescription: string | null;
176
180
  destinationType: string;
181
+ latitude: number | null;
182
+ longitude: number | null;
177
183
  sortOrder: number;
178
184
  }[];
179
185
  locations: {
@@ -274,11 +280,14 @@ export declare const publicProductRoutes: import("hono/hono-base").HonoBase<Env,
274
280
  id: string;
275
281
  parentId: string | null;
276
282
  slug: string;
283
+ canonicalPlaceId: string | null;
277
284
  name: string;
278
285
  description: string | null;
279
286
  seoTitle: string | null;
280
287
  seoDescription: string | null;
281
288
  destinationType: string;
289
+ latitude: number | null;
290
+ longitude: number | null;
282
291
  sortOrder: number;
283
292
  }[];
284
293
  locations: {
@@ -359,11 +368,14 @@ export declare const publicProductRoutes: import("hono/hono-base").HonoBase<Env,
359
368
  id: string;
360
369
  parentId: string | null;
361
370
  slug: string;
371
+ canonicalPlaceId: string | null;
362
372
  name: string;
363
373
  description: string | null;
364
374
  seoTitle: string | null;
365
375
  seoDescription: string | null;
366
376
  destinationType: string;
377
+ latitude: number | null;
378
+ longitude: number | null;
367
379
  sortOrder: number;
368
380
  }[];
369
381
  total: number;
@@ -438,11 +450,14 @@ export declare const publicProductRoutes: import("hono/hono-base").HonoBase<Env,
438
450
  id: string;
439
451
  parentId: string | null;
440
452
  slug: string;
453
+ canonicalPlaceId: string | null;
441
454
  name: string;
442
455
  description: string | null;
443
456
  seoTitle: string | null;
444
457
  seoDescription: string | null;
445
458
  destinationType: string;
459
+ latitude: number | null;
460
+ longitude: number | null;
446
461
  sortOrder: number;
447
462
  }[];
448
463
  locations: {
@@ -1 +1 @@
1
- {"version":3,"file":"routes-public.d.ts","sourceRoot":"","sources":["../src/routes-public.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAYjE,KAAK,GAAG,GAAG;IACT,SAAS,EAAE;QACT,EAAE,EAAE,kBAAkB,CAAA;QACtB,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;CACF,CAAA;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA0D5B,CAAA;AAEJ,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAA"}
1
+ {"version":3,"file":"routes-public.d.ts","sourceRoot":"","sources":["../src/routes-public.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAYjE,KAAK,GAAG,GAAG;IACT,SAAS,EAAE;QACT,EAAE,EAAE,kBAAkB,CAAA;QACtB,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;CACF,CAAA;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA0D5B,CAAA;AAEJ,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAA"}
package/dist/routes.d.ts CHANGED
@@ -1277,7 +1277,10 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, impor
1277
1277
  parentId: string | null;
1278
1278
  slug: string;
1279
1279
  code: string | null;
1280
+ canonicalPlaceId: string | null;
1280
1281
  destinationType: string;
1282
+ latitude: number | null;
1283
+ longitude: number | null;
1281
1284
  sortOrder: number;
1282
1285
  active: boolean;
1283
1286
  metadata: {
@@ -1330,7 +1333,10 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, impor
1330
1333
  parentId: string | null;
1331
1334
  slug: string;
1332
1335
  code: string | null;
1336
+ canonicalPlaceId: string | null;
1333
1337
  destinationType: string;
1338
+ latitude: number | null;
1339
+ longitude: number | null;
1334
1340
  sortOrder: number;
1335
1341
  active: boolean;
1336
1342
  metadata: {
@@ -1356,11 +1362,14 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, impor
1356
1362
  updatedAt: string;
1357
1363
  code: string | null;
1358
1364
  sortOrder: number;
1365
+ latitude: number | null;
1366
+ longitude: number | null;
1359
1367
  slug: string;
1360
1368
  metadata: {
1361
1369
  [x: string]: import("hono/utils/types").JSONValue;
1362
1370
  } | null;
1363
1371
  parentId: string | null;
1372
+ canonicalPlaceId: string | null;
1364
1373
  destinationType: string;
1365
1374
  } | null;
1366
1375
  };
@@ -1393,7 +1402,10 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, impor
1393
1402
  parentId: string | null;
1394
1403
  slug: string;
1395
1404
  code: string | null;
1405
+ canonicalPlaceId: string | null;
1396
1406
  destinationType: string;
1407
+ latitude: number | null;
1408
+ longitude: number | null;
1397
1409
  sortOrder: number;
1398
1410
  active: boolean;
1399
1411
  metadata: {
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAYzC,YAAY,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAGzC,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAUM,CAAA;AAEhC,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAA"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAYzC,YAAY,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAGzC,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAUM,CAAA;AAEhC,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAA"}
@@ -796,6 +796,23 @@ export declare const destinations: import("drizzle-orm/pg-core").PgTableWithColu
796
796
  identity: undefined;
797
797
  generated: undefined;
798
798
  }, {}, {}>;
799
+ canonicalPlaceId: import("drizzle-orm/pg-core").PgColumn<{
800
+ name: "canonical_place_id";
801
+ tableName: "destinations";
802
+ dataType: "string";
803
+ columnType: "PgText";
804
+ data: string;
805
+ driverParam: string;
806
+ notNull: false;
807
+ hasDefault: false;
808
+ isPrimaryKey: false;
809
+ isAutoincrement: false;
810
+ hasRuntimeDefault: false;
811
+ enumValues: [string, ...string[]];
812
+ baseColumn: never;
813
+ identity: undefined;
814
+ generated: undefined;
815
+ }, {}, {}>;
799
816
  destinationType: import("drizzle-orm/pg-core").PgColumn<{
800
817
  name: "destination_type";
801
818
  tableName: "destinations";
@@ -813,6 +830,40 @@ export declare const destinations: import("drizzle-orm/pg-core").PgTableWithColu
813
830
  identity: undefined;
814
831
  generated: undefined;
815
832
  }, {}, {}>;
833
+ latitude: import("drizzle-orm/pg-core").PgColumn<{
834
+ name: "latitude";
835
+ tableName: "destinations";
836
+ dataType: "number";
837
+ columnType: "PgDoublePrecision";
838
+ data: number;
839
+ driverParam: string | number;
840
+ notNull: false;
841
+ hasDefault: false;
842
+ isPrimaryKey: false;
843
+ isAutoincrement: false;
844
+ hasRuntimeDefault: false;
845
+ enumValues: undefined;
846
+ baseColumn: never;
847
+ identity: undefined;
848
+ generated: undefined;
849
+ }, {}, {}>;
850
+ longitude: import("drizzle-orm/pg-core").PgColumn<{
851
+ name: "longitude";
852
+ tableName: "destinations";
853
+ dataType: "number";
854
+ columnType: "PgDoublePrecision";
855
+ data: number;
856
+ driverParam: string | number;
857
+ notNull: false;
858
+ hasDefault: false;
859
+ isPrimaryKey: false;
860
+ isAutoincrement: false;
861
+ hasRuntimeDefault: false;
862
+ enumValues: undefined;
863
+ baseColumn: never;
864
+ identity: undefined;
865
+ generated: undefined;
866
+ }, {}, {}>;
816
867
  sortOrder: import("drizzle-orm/pg-core").PgColumn<{
817
868
  name: "sort_order";
818
869
  tableName: "destinations";
@@ -1 +1 @@
1
- {"version":3,"file":"schema-taxonomy.d.ts","sourceRoot":"","sources":["../src/schema-taxonomy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-taxonomy.d.ts","sourceRoot":"","sources":["../src/schema-taxonomy.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { typeId, typeIdRef } from "@voyantjs/db/lib/typeid-column";
2
- import { boolean, index, integer, jsonb, pgTable, primaryKey, text, timestamp, uniqueIndex, } from "drizzle-orm/pg-core";
2
+ import { boolean, doublePrecision, index, integer, jsonb, pgTable, primaryKey, text, timestamp, uniqueIndex, } from "drizzle-orm/pg-core";
3
3
  import { products } from "./schema-core.js";
4
4
  export const productTypes = pgTable("product_types", {
5
5
  id: typeId("product_types"),
@@ -107,7 +107,10 @@ export const destinations = pgTable("destinations", {
107
107
  parentId: typeIdRef("parent_id"),
108
108
  slug: text("slug").notNull(),
109
109
  code: text("code"),
110
+ canonicalPlaceId: text("canonical_place_id"),
110
111
  destinationType: text("destination_type").notNull().default("destination"),
112
+ latitude: doublePrecision("latitude"),
113
+ longitude: doublePrecision("longitude"),
111
114
  sortOrder: integer("sort_order").notNull().default(0),
112
115
  active: boolean("active").notNull().default(true),
113
116
  metadata: jsonb("metadata").$type(),
@@ -118,6 +121,7 @@ export const destinations = pgTable("destinations", {
118
121
  uniqueIndex("uidx_destinations_code").on(table.code),
119
122
  index("idx_destinations_parent").on(table.parentId),
120
123
  index("idx_destinations_active").on(table.active),
124
+ index("idx_destinations_canonical_place").on(table.canonicalPlaceId),
121
125
  index("idx_destinations_sort_slug").on(table.sortOrder, table.slug),
122
126
  index("idx_destinations_active_sort_slug").on(table.active, table.sortOrder, table.slug),
123
127
  index("idx_destinations_type_sort_slug").on(table.destinationType, table.sortOrder, table.slug),
@@ -1 +1 @@
1
- {"version":3,"file":"service-catalog-plane-destinations.d.ts","sourceRoot":"","sources":["../src/service-catalog-plane-destinations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AAgG5E;;;;;GAKG;AACH,wBAAgB,4CAA4C,IAAI,0BAA0B,CAyBzF"}
1
+ {"version":3,"file":"service-catalog-plane-destinations.d.ts","sourceRoot":"","sources":["../src/service-catalog-plane-destinations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AAsH5E;;;;;GAKG;AACH,wBAAgB,4CAA4C,IAAI,0BAA0B,CAgCzF"}
@@ -31,6 +31,7 @@ async function joinProductDestinations(db, productId, languageTag) {
31
31
  destinationId: productDestinations.destinationId,
32
32
  destinationType: destinations.destinationType,
33
33
  slug: destinations.slug,
34
+ canonicalPlaceId: destinations.canonicalPlaceId,
34
35
  active: destinations.active,
35
36
  })
36
37
  .from(productDestinations)
@@ -55,6 +56,7 @@ async function joinProductDestinations(db, productId, languageTag) {
55
56
  destinationId: row.destinationId,
56
57
  destinationType: row.destinationType,
57
58
  slug: row.slug,
59
+ canonicalPlaceId: row.canonicalPlaceId ?? null,
58
60
  translatedName: nameByDestinationId.get(row.destinationId) ?? null,
59
61
  }));
60
62
  }
@@ -63,8 +65,11 @@ function bucketByType(rows) {
63
65
  const regions = [];
64
66
  const countries = [];
65
67
  const cities = [];
68
+ const ports = [];
69
+ const waterways = [];
66
70
  const slugs = [];
67
71
  const ids = [];
72
+ const canonicalPlaceIds = [];
68
73
  for (const row of rows) {
69
74
  const label = row.translatedName ?? row.slug;
70
75
  switch (row.destinationType) {
@@ -77,14 +82,27 @@ function bucketByType(rows) {
77
82
  case "city":
78
83
  cities.push(label);
79
84
  break;
85
+ case "port":
86
+ ports.push(label);
87
+ break;
88
+ case "river":
89
+ case "sea":
90
+ case "ocean":
91
+ case "canal":
92
+ case "lake":
93
+ waterways.push(label);
94
+ break;
80
95
  // "destination" (the catch-all default) doesn't bucket into any of
81
96
  // the typed lists. Its slug + id still land in the doc so storefronts
82
97
  // can filter generically.
83
98
  }
84
99
  slugs.push(row.slug);
85
100
  ids.push(row.destinationId);
101
+ if (row.canonicalPlaceId) {
102
+ canonicalPlaceIds.push(row.canonicalPlaceId);
103
+ }
86
104
  }
87
- return { regions, countries, cities, slugs, ids };
105
+ return { regions, countries, cities, ports, waterways, slugs, ids, canonicalPlaceIds };
88
106
  }
89
107
  /**
90
108
  * Construct the destinations projection extension.
@@ -102,17 +120,23 @@ export function createProductDestinationsProjectionExtension() {
102
120
  ["regions[]", []],
103
121
  ["countries[]", []],
104
122
  ["cities[]", []],
123
+ ["ports[]", []],
124
+ ["waterways[]", []],
105
125
  ["destinationSlugs[]", []],
106
126
  ["destinationIds[]", []],
127
+ ["destinationCanonicalPlaceIds[]", []],
107
128
  ]);
108
129
  }
109
- const { regions, countries, cities, slugs, ids } = bucketByType(rows);
130
+ const { regions, countries, cities, ports, waterways, slugs, ids, canonicalPlaceIds } = bucketByType(rows);
110
131
  return new Map([
111
132
  ["regions[]", regions],
112
133
  ["countries[]", countries],
113
134
  ["cities[]", cities],
135
+ ["ports[]", ports],
136
+ ["waterways[]", waterways],
114
137
  ["destinationSlugs[]", slugs],
115
138
  ["destinationIds[]", ids],
139
+ ["destinationCanonicalPlaceIds[]", canonicalPlaceIds],
116
140
  ]);
117
141
  },
118
142
  };
@@ -52,11 +52,14 @@ export declare const catalogProductsService: {
52
52
  id: string;
53
53
  parentId: string | null;
54
54
  slug: string;
55
+ canonicalPlaceId: string | null;
55
56
  name: string;
56
57
  description: string | null;
57
58
  seoTitle: string | null;
58
59
  seoDescription: string | null;
59
60
  destinationType: string;
61
+ latitude: number | null;
62
+ longitude: number | null;
60
63
  sortOrder: number;
61
64
  }[];
62
65
  locations: {
@@ -167,11 +170,14 @@ export declare const catalogProductsService: {
167
170
  id: string;
168
171
  parentId: string | null;
169
172
  slug: string;
173
+ canonicalPlaceId: string | null;
170
174
  name: string;
171
175
  description: string | null;
172
176
  seoTitle: string | null;
173
177
  seoDescription: string | null;
174
178
  destinationType: string;
179
+ latitude: number | null;
180
+ longitude: number | null;
175
181
  sortOrder: number;
176
182
  }[];
177
183
  locations: {
@@ -1 +1 @@
1
- {"version":3,"file":"service-catalog.d.ts","sourceRoot":"","sources":["../src/service-catalog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAEjE,OAAO,EAWL,QAAQ,EAMT,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EACV,qBAAqB,EACrB,8BAA8B,EAE/B,MAAM,yBAAyB,CAAA;AAEhC,KAAK,iBAAiB,GAAG,OAAO,QAAQ,CAAC,YAAY,CAAA;AAErD,KAAK,4BAA4B,GAAG;IAClC,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;CAChC,CAAA;AAkZD,eAAO,MAAM,sBAAsB;wBAE3B,kBAAkB,eACT,iBAAiB,EAAE,YACvB,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAsHjC,kBAAkB,SACf,8BAA8B,GACpC,OAAO,CAAC;QACT,IAAI,EAAE,qBAAqB,EAAE,CAAA;QAC7B,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;QACb,MAAM,EAAE,MAAM,CAAA;KACf,CAAC;qCAkFI,kBAAkB,aACX,MAAM,UACV,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAa1F,CAAA"}
1
+ {"version":3,"file":"service-catalog.d.ts","sourceRoot":"","sources":["../src/service-catalog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAEjE,OAAO,EAWL,QAAQ,EAMT,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EACV,qBAAqB,EACrB,8BAA8B,EAE/B,MAAM,yBAAyB,CAAA;AAEhC,KAAK,iBAAiB,GAAG,OAAO,QAAQ,CAAC,YAAY,CAAA;AAErD,KAAK,4BAA4B,GAAG;IAClC,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;CAChC,CAAA;AA2ZD,eAAO,MAAM,sBAAsB;wBAE3B,kBAAkB,eACT,iBAAiB,EAAE,YACvB,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAyHjC,kBAAkB,SACf,8BAA8B,GACpC,OAAO,CAAC;QACT,IAAI,EAAE,qBAAqB,EAAE,CAAA;QAC7B,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;QACb,MAAM,EAAE,MAAM,CAAA;KACf,CAAC;qCAkFI,kBAAkB,aACX,MAAM,UACV,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAa1F,CAAA"}
@@ -149,7 +149,10 @@ async function loadCatalogHydrationData(db, productRows, options = {}) {
149
149
  destinationId: destinations.id,
150
150
  parentId: destinations.parentId,
151
151
  slug: destinations.slug,
152
+ canonicalPlaceId: destinations.canonicalPlaceId,
152
153
  destinationType: destinations.destinationType,
154
+ latitude: destinations.latitude,
155
+ longitude: destinations.longitude,
153
156
  sortOrder: productDestinations.sortOrder,
154
157
  fallbackSortOrder: destinations.sortOrder,
155
158
  translationLanguageTag: destinationTranslations.languageTag,
@@ -246,7 +249,10 @@ async function loadCatalogHydrationData(db, productRows, options = {}) {
246
249
  id: first.destinationId,
247
250
  parentId: first.parentId ?? null,
248
251
  slug: first.slug,
252
+ canonicalPlaceId: first.canonicalPlaceId ?? null,
249
253
  destinationType: first.destinationType,
254
+ latitude: first.latitude ?? null,
255
+ longitude: first.longitude ?? null,
250
256
  sortOrder: first.sortOrder ?? first.fallbackSortOrder ?? 0,
251
257
  name: translated?.translationName ?? first.slug,
252
258
  description: translated?.translationDescription ?? null,
@@ -355,11 +361,14 @@ export const catalogProductsService = {
355
361
  id: row.id,
356
362
  parentId: row.parentId,
357
363
  slug: row.slug,
364
+ canonicalPlaceId: row.canonicalPlaceId,
358
365
  name: row.name,
359
366
  description: row.description,
360
367
  seoTitle: row.seoTitle,
361
368
  seoDescription: row.seoDescription,
362
369
  destinationType: row.destinationType,
370
+ latitude: row.latitude,
371
+ longitude: row.longitude,
363
372
  sortOrder: row.sortOrder,
364
373
  })),
365
374
  locations: (hydrationData.locationsByProduct.get(product.id) ?? []).map((row) => ({