@voyantjs/products 0.20.0 → 0.21.1
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/dist/booking-engine/handler.d.ts +203 -0
- package/dist/booking-engine/handler.d.ts.map +1 -0
- package/dist/booking-engine/handler.js +330 -0
- package/dist/booking-engine/index.d.ts +8 -0
- package/dist/booking-engine/index.d.ts.map +1 -0
- package/dist/booking-engine/index.js +7 -0
- package/dist/catalog-policy.d.ts.map +1 -1
- package/dist/catalog-policy.js +15 -1
- package/dist/content-shape.d.ts +217 -0
- package/dist/content-shape.d.ts.map +1 -0
- package/dist/content-shape.js +159 -0
- package/dist/draft-shape.d.ts +43 -0
- package/dist/draft-shape.d.ts.map +1 -0
- package/dist/draft-shape.js +46 -0
- package/dist/events.d.ts +37 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +32 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/routes-content.d.ts +74 -0
- package/dist/routes-content.d.ts.map +1 -0
- package/dist/routes-content.js +117 -0
- package/dist/routes.d.ts +40 -20
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +83 -13
- package/dist/schema-core.d.ts +240 -1
- package/dist/schema-core.d.ts.map +1 -1
- package/dist/schema-core.js +49 -0
- package/dist/schema-itinerary.d.ts +18 -1
- package/dist/schema-itinerary.d.ts.map +1 -1
- package/dist/schema-itinerary.js +1 -0
- package/dist/schema-settings.d.ts +1 -1
- package/dist/schema-sourced-content.d.ts +262 -0
- package/dist/schema-sourced-content.d.ts.map +1 -0
- package/dist/schema-sourced-content.js +69 -0
- package/dist/schema-taxonomy.d.ts +17 -0
- package/dist/schema-taxonomy.d.ts.map +1 -1
- package/dist/schema-taxonomy.js +13 -0
- package/dist/schema.d.ts +1 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +1 -0
- package/dist/service-catalog-plane.d.ts.map +1 -1
- package/dist/service-catalog-plane.js +1 -0
- package/dist/service-content-owned.d.ts +68 -0
- package/dist/service-content-owned.d.ts.map +1 -0
- package/dist/service-content-owned.js +224 -0
- package/dist/service-content-synthesizer.d.ts +90 -0
- package/dist/service-content-synthesizer.d.ts.map +1 -0
- package/dist/service-content-synthesizer.js +171 -0
- package/dist/service-content.d.ts +106 -0
- package/dist/service-content.d.ts.map +1 -0
- package/dist/service-content.js +365 -0
- package/dist/service.d.ts +76 -22
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +4 -0
- package/dist/tasks/brochures.d.ts +1 -0
- package/dist/tasks/brochures.d.ts.map +1 -1
- package/dist/tasks/brochures.js +3 -0
- package/dist/validation-catalog.d.ts +4 -4
- package/dist/validation-config.d.ts +3 -3
- package/dist/validation-content.d.ts +34 -4
- package/dist/validation-content.d.ts.map +1 -1
- package/dist/validation-content.js +13 -0
- package/dist/validation-core.d.ts +53 -3
- package/dist/validation-core.d.ts.map +1 -1
- package/dist/validation-core.js +16 -0
- package/dist/validation-public.d.ts +9 -9
- package/dist/validation-shared.d.ts +4 -4
- package/package.json +12 -7
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Product content routes — unified owned + sourced detail endpoint.
|
|
3
|
+
*
|
|
4
|
+
* GET /:id/content
|
|
5
|
+
*
|
|
6
|
+
* Returns the full `ProductContent` payload for ANY product:
|
|
7
|
+
* - **Sourced**: cache hit → cached row + overlay merge; cache miss
|
|
8
|
+
* with rich adapter → adapter fetch + write-through; cache miss
|
|
9
|
+
* with thin adapter → synthesizer fallback (sourced-content §3.3,
|
|
10
|
+
* §3.4, §3.6).
|
|
11
|
+
* - **Owned**: read from the products module's own tables and
|
|
12
|
+
* project to ProductContent. Overlay merge applies the same way.
|
|
13
|
+
* Marked `source: "owned"` in the response.
|
|
14
|
+
*
|
|
15
|
+
* 404 only when the entity doesn't exist (no sourced-entry row AND
|
|
16
|
+
* no owned product row). The catalog detail sheet calls this on
|
|
17
|
+
* click to enrich the indexed projection with itinerary, media,
|
|
18
|
+
* options, and policies.
|
|
19
|
+
*
|
|
20
|
+
* Templates mount this router under their preferred prefix; the
|
|
21
|
+
* factory takes a `resolveRegistry` callback so the catalog
|
|
22
|
+
* `SourceAdapterRegistry` stays template-owned (singleton lifetime,
|
|
23
|
+
* adapters carry HTTP clients).
|
|
24
|
+
*
|
|
25
|
+
* See `docs/architecture/catalog-sourced-content.md` §3.3.
|
|
26
|
+
*/
|
|
27
|
+
import { Hono } from "hono";
|
|
28
|
+
import { getProductContent } from "./service-content.js";
|
|
29
|
+
/**
|
|
30
|
+
* Build the product content router. Returns a Hono instance that
|
|
31
|
+
* exposes a single `GET /:id/content` route. Templates mount it under
|
|
32
|
+
* `/v1/admin/products` or `/v1/public/products` as appropriate.
|
|
33
|
+
*/
|
|
34
|
+
export function createProductContentRoutes(options) {
|
|
35
|
+
return new Hono().get("/:id/content", async (c) => {
|
|
36
|
+
const entityId = c.req.param("id");
|
|
37
|
+
const scope = parseScope(c);
|
|
38
|
+
const registry = options.resolveRegistry(c);
|
|
39
|
+
const result = await getProductContent(c.var.db, entityId, scope, {
|
|
40
|
+
registry,
|
|
41
|
+
onOverlayError: options.onOverlayError,
|
|
42
|
+
});
|
|
43
|
+
if (!result) {
|
|
44
|
+
return c.json({
|
|
45
|
+
error: "not_found",
|
|
46
|
+
detail: `Product ${entityId} not found (no owned row + no sourced-entry row).`,
|
|
47
|
+
}, 404);
|
|
48
|
+
}
|
|
49
|
+
return c.json({
|
|
50
|
+
data: {
|
|
51
|
+
content: result.content,
|
|
52
|
+
served_locale: result.resolution.served_locale,
|
|
53
|
+
match_kind: result.resolution.match_kind,
|
|
54
|
+
source: result.source,
|
|
55
|
+
served_stale: result.served_stale,
|
|
56
|
+
synthesized: result.synthesized,
|
|
57
|
+
machine_translated: result.machine_translated,
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
function parseScope(c) {
|
|
62
|
+
// Locale priority: explicit query param > Accept-Language header
|
|
63
|
+
// > en-GB fallback. Multiple `?locale=` query params are joined
|
|
64
|
+
// into the preference chain.
|
|
65
|
+
const localeParams = c.req.queries("locale") ?? c.req.queries("locales") ?? [];
|
|
66
|
+
const headerLocale = c.req.header("accept-language");
|
|
67
|
+
const acceptLanguageList = headerLocale ? parseAcceptLanguage(headerLocale) : [];
|
|
68
|
+
const preferredLocales = localeParams.length > 0
|
|
69
|
+
? localeParams
|
|
70
|
+
: acceptLanguageList.length > 0
|
|
71
|
+
? acceptLanguageList
|
|
72
|
+
: ["en-GB"];
|
|
73
|
+
const market = c.req.query("market") ?? undefined;
|
|
74
|
+
const currency = c.req.query("currency") ?? undefined;
|
|
75
|
+
const acceptMTQuery = c.req.query("accept_mt");
|
|
76
|
+
const acceptMachineTranslated = acceptMTQuery != null
|
|
77
|
+
? acceptMTQuery !== "false" && acceptMTQuery !== "0"
|
|
78
|
+
: (options.defaultAcceptMachineTranslated ?? true);
|
|
79
|
+
return {
|
|
80
|
+
preferredLocales,
|
|
81
|
+
market,
|
|
82
|
+
currency,
|
|
83
|
+
acceptMachineTranslated,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Parse an `Accept-Language` header into an ordered list of BCP 47
|
|
89
|
+
* tags. Quality factors are honored — higher-q first; ties keep
|
|
90
|
+
* insertion order. Lifted out of the route handler so it's testable
|
|
91
|
+
* in isolation.
|
|
92
|
+
*/
|
|
93
|
+
export function parseAcceptLanguage(header) {
|
|
94
|
+
const parts = header.split(",");
|
|
95
|
+
const ranked = [];
|
|
96
|
+
for (let i = 0; i < parts.length; i += 1) {
|
|
97
|
+
const part = parts[i].trim();
|
|
98
|
+
if (!part)
|
|
99
|
+
continue;
|
|
100
|
+
const [tagRaw, ...params] = part.split(";");
|
|
101
|
+
const tag = tagRaw.trim();
|
|
102
|
+
if (!tag || tag === "*")
|
|
103
|
+
continue;
|
|
104
|
+
let q = 1;
|
|
105
|
+
for (const p of params) {
|
|
106
|
+
const [k, v] = p.split("=").map((s) => s.trim());
|
|
107
|
+
if (k === "q" && v) {
|
|
108
|
+
const parsed = Number.parseFloat(v);
|
|
109
|
+
if (Number.isFinite(parsed))
|
|
110
|
+
q = parsed;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
ranked.push({ tag, q, idx: i });
|
|
114
|
+
}
|
|
115
|
+
ranked.sort((a, b) => b.q - a.q || a.idx - b.idx);
|
|
116
|
+
return ranked.map((r) => r.tag);
|
|
117
|
+
}
|
package/dist/routes.d.ts
CHANGED
|
@@ -50,10 +50,13 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
50
50
|
costAmountCents: number | null;
|
|
51
51
|
marginPercent: number | null;
|
|
52
52
|
facilityId: string | null;
|
|
53
|
+
supplierId: string | null;
|
|
53
54
|
startDate: string | null;
|
|
54
55
|
endDate: string | null;
|
|
55
56
|
pax: number | null;
|
|
56
57
|
productTypeId: string | null;
|
|
58
|
+
taxClassId: string | null;
|
|
59
|
+
customerPaymentPolicy: import("hono/utils/types").JSONValue;
|
|
57
60
|
tags: string[] | null;
|
|
58
61
|
createdAt: string;
|
|
59
62
|
updatedAt: string;
|
|
@@ -87,6 +90,7 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
87
90
|
activated: boolean;
|
|
88
91
|
productTypeId: string | null;
|
|
89
92
|
facilityId: string | null;
|
|
93
|
+
supplierId: string | null;
|
|
90
94
|
pax: number | null;
|
|
91
95
|
reservationTimeoutMinutes: number | null;
|
|
92
96
|
sellAmountCents: number | null;
|
|
@@ -94,6 +98,8 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
94
98
|
costAmountCents: number | null;
|
|
95
99
|
marginPercent: number | null;
|
|
96
100
|
tags: string[] | null;
|
|
101
|
+
taxClassId: string | null;
|
|
102
|
+
customerPaymentPolicy: import("hono/utils/types").JSONValue;
|
|
97
103
|
};
|
|
98
104
|
};
|
|
99
105
|
outputFormat: "json";
|
|
@@ -582,7 +588,7 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
582
588
|
data: {
|
|
583
589
|
id: string;
|
|
584
590
|
productId: string;
|
|
585
|
-
capability: "on_request" | "private" | "instant_confirmation" | "pickup_available" | "dropoff_available" | "guided" | "shared" | "digital_ticket" | "voucher_required" | "external_inventory" | "multi_day" | "
|
|
591
|
+
capability: "accommodation" | "on_request" | "private" | "instant_confirmation" | "pickup_available" | "dropoff_available" | "guided" | "shared" | "digital_ticket" | "voucher_required" | "external_inventory" | "multi_day" | "transport";
|
|
586
592
|
enabled: boolean;
|
|
587
593
|
notes: string | null;
|
|
588
594
|
createdAt: string;
|
|
@@ -619,7 +625,7 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
619
625
|
data: {
|
|
620
626
|
id: string;
|
|
621
627
|
productId: string;
|
|
622
|
-
capability: "on_request" | "private" | "instant_confirmation" | "pickup_available" | "dropoff_available" | "guided" | "shared" | "digital_ticket" | "voucher_required" | "external_inventory" | "multi_day" | "
|
|
628
|
+
capability: "accommodation" | "on_request" | "private" | "instant_confirmation" | "pickup_available" | "dropoff_available" | "guided" | "shared" | "digital_ticket" | "voucher_required" | "external_inventory" | "multi_day" | "transport";
|
|
623
629
|
enabled: boolean;
|
|
624
630
|
notes: string | null;
|
|
625
631
|
createdAt: string;
|
|
@@ -657,7 +663,7 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
657
663
|
updatedAt: string;
|
|
658
664
|
notes: string | null;
|
|
659
665
|
productId: string;
|
|
660
|
-
capability: "on_request" | "private" | "instant_confirmation" | "pickup_available" | "dropoff_available" | "guided" | "shared" | "digital_ticket" | "voucher_required" | "external_inventory" | "multi_day" | "
|
|
666
|
+
capability: "accommodation" | "on_request" | "private" | "instant_confirmation" | "pickup_available" | "dropoff_available" | "guided" | "shared" | "digital_ticket" | "voucher_required" | "external_inventory" | "multi_day" | "transport";
|
|
661
667
|
};
|
|
662
668
|
};
|
|
663
669
|
outputFormat: "json";
|
|
@@ -687,7 +693,7 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
687
693
|
data: {
|
|
688
694
|
id: string;
|
|
689
695
|
productId: string;
|
|
690
|
-
capability: "on_request" | "private" | "instant_confirmation" | "pickup_available" | "dropoff_available" | "guided" | "shared" | "digital_ticket" | "voucher_required" | "external_inventory" | "multi_day" | "
|
|
696
|
+
capability: "accommodation" | "on_request" | "private" | "instant_confirmation" | "pickup_available" | "dropoff_available" | "guided" | "shared" | "digital_ticket" | "voucher_required" | "external_inventory" | "multi_day" | "transport";
|
|
691
697
|
enabled: boolean;
|
|
692
698
|
notes: string | null;
|
|
693
699
|
createdAt: string;
|
|
@@ -1272,11 +1278,11 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
1272
1278
|
updatedAt: string;
|
|
1273
1279
|
productId: string;
|
|
1274
1280
|
title: string;
|
|
1275
|
-
sortOrder: number;
|
|
1276
|
-
locationType: "start" | "other" | "end" | "meeting_point" | "pickup" | "dropoff" | "point_of_interest";
|
|
1277
|
-
address: string | null;
|
|
1278
1281
|
city: string | null;
|
|
1282
|
+
address: string | null;
|
|
1283
|
+
sortOrder: number;
|
|
1279
1284
|
countryCode: string | null;
|
|
1285
|
+
locationType: "start" | "other" | "end" | "meeting_point" | "pickup" | "dropoff" | "point_of_interest";
|
|
1280
1286
|
latitude: number | null;
|
|
1281
1287
|
longitude: number | null;
|
|
1282
1288
|
googlePlaceId: string | null;
|
|
@@ -1921,7 +1927,7 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
1921
1927
|
name: string;
|
|
1922
1928
|
code: string | null;
|
|
1923
1929
|
description: string | null;
|
|
1924
|
-
unitType: "service" | "other" | "
|
|
1930
|
+
unitType: "service" | "other" | "group" | "person" | "room" | "vehicle";
|
|
1925
1931
|
minQuantity: number | null;
|
|
1926
1932
|
maxQuantity: number | null;
|
|
1927
1933
|
minAge: number | null;
|
|
@@ -1968,7 +1974,7 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
1968
1974
|
name: string;
|
|
1969
1975
|
code: string | null;
|
|
1970
1976
|
description: string | null;
|
|
1971
|
-
unitType: "service" | "other" | "
|
|
1977
|
+
unitType: "service" | "other" | "group" | "person" | "room" | "vehicle";
|
|
1972
1978
|
minQuantity: number | null;
|
|
1973
1979
|
maxQuantity: number | null;
|
|
1974
1980
|
minAge: number | null;
|
|
@@ -2014,12 +2020,12 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
2014
2020
|
description: string | null;
|
|
2015
2021
|
code: string | null;
|
|
2016
2022
|
optionId: string;
|
|
2023
|
+
maxAge: number | null;
|
|
2024
|
+
minAge: number | null;
|
|
2017
2025
|
sortOrder: number;
|
|
2018
|
-
unitType: "service" | "other" | "
|
|
2026
|
+
unitType: "service" | "other" | "group" | "person" | "room" | "vehicle";
|
|
2019
2027
|
minQuantity: number | null;
|
|
2020
2028
|
maxQuantity: number | null;
|
|
2021
|
-
minAge: number | null;
|
|
2022
|
-
maxAge: number | null;
|
|
2023
2029
|
occupancyMin: number | null;
|
|
2024
2030
|
occupancyMax: number | null;
|
|
2025
2031
|
isRequired: boolean;
|
|
@@ -2056,7 +2062,7 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
2056
2062
|
name: string;
|
|
2057
2063
|
code: string | null;
|
|
2058
2064
|
description: string | null;
|
|
2059
|
-
unitType: "service" | "other" | "
|
|
2065
|
+
unitType: "service" | "other" | "group" | "person" | "room" | "vehicle";
|
|
2060
2066
|
minQuantity: number | null;
|
|
2061
2067
|
maxQuantity: number | null;
|
|
2062
2068
|
minAge: number | null;
|
|
@@ -2738,6 +2744,7 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
2738
2744
|
description: string | null;
|
|
2739
2745
|
sortOrder: number;
|
|
2740
2746
|
active: boolean;
|
|
2747
|
+
customerPaymentPolicy: import("hono/utils/types").JSONValue;
|
|
2741
2748
|
metadata: {
|
|
2742
2749
|
[x: string]: import("hono/utils/types").JSONValue;
|
|
2743
2750
|
} | null;
|
|
@@ -2780,6 +2787,7 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
2780
2787
|
description: string | null;
|
|
2781
2788
|
sortOrder: number;
|
|
2782
2789
|
active: boolean;
|
|
2790
|
+
customerPaymentPolicy: import("hono/utils/types").JSONValue;
|
|
2783
2791
|
metadata: {
|
|
2784
2792
|
[x: string]: import("hono/utils/types").JSONValue;
|
|
2785
2793
|
} | null;
|
|
@@ -2807,6 +2815,7 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
2807
2815
|
slug: string;
|
|
2808
2816
|
description: string | null;
|
|
2809
2817
|
active: boolean;
|
|
2818
|
+
customerPaymentPolicy: import("hono/utils/types").JSONValue;
|
|
2810
2819
|
sortOrder: number;
|
|
2811
2820
|
parentId: string | null;
|
|
2812
2821
|
} | undefined;
|
|
@@ -2843,6 +2852,7 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
2843
2852
|
description: string | null;
|
|
2844
2853
|
sortOrder: number;
|
|
2845
2854
|
active: boolean;
|
|
2855
|
+
customerPaymentPolicy: import("hono/utils/types").JSONValue;
|
|
2846
2856
|
metadata: {
|
|
2847
2857
|
[x: string]: import("hono/utils/types").JSONValue;
|
|
2848
2858
|
} | null;
|
|
@@ -3487,10 +3497,13 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
3487
3497
|
costAmountCents: number | null;
|
|
3488
3498
|
marginPercent: number | null;
|
|
3489
3499
|
facilityId: string | null;
|
|
3500
|
+
supplierId: string | null;
|
|
3490
3501
|
startDate: string | null;
|
|
3491
3502
|
endDate: string | null;
|
|
3492
3503
|
pax: number | null;
|
|
3493
3504
|
productTypeId: string | null;
|
|
3505
|
+
taxClassId: string | null;
|
|
3506
|
+
customerPaymentPolicy: import("hono/utils/types").JSONValue;
|
|
3494
3507
|
tags: string[] | null;
|
|
3495
3508
|
createdAt: string;
|
|
3496
3509
|
updatedAt: string;
|
|
@@ -3536,10 +3549,13 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
3536
3549
|
costAmountCents: number | null;
|
|
3537
3550
|
marginPercent: number | null;
|
|
3538
3551
|
facilityId: string | null;
|
|
3552
|
+
supplierId: string | null;
|
|
3539
3553
|
startDate: string | null;
|
|
3540
3554
|
endDate: string | null;
|
|
3541
3555
|
pax: number | null;
|
|
3542
3556
|
productTypeId: string | null;
|
|
3557
|
+
taxClassId: string | null;
|
|
3558
|
+
customerPaymentPolicy: import("hono/utils/types").JSONValue;
|
|
3543
3559
|
tags: string[] | null;
|
|
3544
3560
|
createdAt: string;
|
|
3545
3561
|
updatedAt: string;
|
|
@@ -3782,9 +3798,9 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
3782
3798
|
updatedAt: string;
|
|
3783
3799
|
description: string | null;
|
|
3784
3800
|
title: string | null;
|
|
3801
|
+
location: string | null;
|
|
3785
3802
|
itineraryId: string;
|
|
3786
3803
|
dayNumber: number;
|
|
3787
|
-
location: string | null;
|
|
3788
3804
|
};
|
|
3789
3805
|
};
|
|
3790
3806
|
outputFormat: "json";
|
|
@@ -3841,9 +3857,9 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
3841
3857
|
updatedAt: string;
|
|
3842
3858
|
description: string | null;
|
|
3843
3859
|
title: string | null;
|
|
3860
|
+
location: string | null;
|
|
3844
3861
|
itineraryId: string;
|
|
3845
3862
|
dayNumber: number;
|
|
3846
|
-
location: string | null;
|
|
3847
3863
|
};
|
|
3848
3864
|
};
|
|
3849
3865
|
outputFormat: "json";
|
|
@@ -3934,9 +3950,10 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
3934
3950
|
id: string;
|
|
3935
3951
|
dayId: string;
|
|
3936
3952
|
supplierServiceId: string | null;
|
|
3937
|
-
serviceType: "other" | "
|
|
3953
|
+
serviceType: "other" | "accommodation" | "transfer" | "experience" | "guide" | "meal";
|
|
3938
3954
|
name: string;
|
|
3939
3955
|
description: string | null;
|
|
3956
|
+
countryCode: string | null;
|
|
3940
3957
|
costCurrency: string;
|
|
3941
3958
|
costAmountCents: number;
|
|
3942
3959
|
quantity: number;
|
|
@@ -3981,11 +3998,12 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
3981
3998
|
description: string | null;
|
|
3982
3999
|
supplierServiceId: string | null;
|
|
3983
4000
|
costAmountCents: number;
|
|
4001
|
+
quantity: number;
|
|
3984
4002
|
sortOrder: number | null;
|
|
3985
4003
|
dayId: string;
|
|
3986
|
-
serviceType: "other" | "
|
|
4004
|
+
serviceType: "other" | "accommodation" | "transfer" | "experience" | "guide" | "meal";
|
|
4005
|
+
countryCode: string | null;
|
|
3987
4006
|
costCurrency: string;
|
|
3988
|
-
quantity: number;
|
|
3989
4007
|
};
|
|
3990
4008
|
};
|
|
3991
4009
|
outputFormat: "json";
|
|
@@ -4024,9 +4042,10 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
4024
4042
|
id: string;
|
|
4025
4043
|
dayId: string;
|
|
4026
4044
|
supplierServiceId: string | null;
|
|
4027
|
-
serviceType: "other" | "
|
|
4045
|
+
serviceType: "other" | "accommodation" | "transfer" | "experience" | "guide" | "meal";
|
|
4028
4046
|
name: string;
|
|
4029
4047
|
description: string | null;
|
|
4048
|
+
countryCode: string | null;
|
|
4030
4049
|
costCurrency: string;
|
|
4031
4050
|
costAmountCents: number;
|
|
4032
4051
|
quantity: number;
|
|
@@ -4175,8 +4194,8 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
4175
4194
|
id: string;
|
|
4176
4195
|
createdAt: string;
|
|
4177
4196
|
productId: string;
|
|
4178
|
-
authorId: string;
|
|
4179
4197
|
content: string;
|
|
4198
|
+
authorId: string;
|
|
4180
4199
|
};
|
|
4181
4200
|
};
|
|
4182
4201
|
outputFormat: "json";
|
|
@@ -4200,6 +4219,7 @@ export declare const productRoutes: import("hono/hono-base").HonoBase<Env, {
|
|
|
4200
4219
|
description: string | null;
|
|
4201
4220
|
sortOrder: number;
|
|
4202
4221
|
active: boolean;
|
|
4222
|
+
customerPaymentPolicy: import("hono/utils/types").JSONValue;
|
|
4203
4223
|
metadata: {
|
|
4204
4224
|
[x: string]: import("hono/utils/types").JSONValue;
|
|
4205
4225
|
} | null;
|
package/dist/routes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAmFjE,KAAK,GAAG,GAAG;IACT,SAAS,EAAE;QACT,EAAE,EAAE,kBAAkB,CAAA;QACtB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,QAAQ,CAAC,EAAE,OAAO,gBAAgB,EAAE,QAAQ,CAAA;KAC7C,CAAA;CACF,CAAA;AAMD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAumDtB,CAAA;AAEJ,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAA"}
|