@voyantjs/storefront 0.47.0 → 0.50.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 +75 -0
- package/dist/index.d.ts +8 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/routes-admin.d.ts +192 -0
- package/dist/routes-admin.d.ts.map +1 -0
- package/dist/routes-admin.js +28 -0
- package/dist/routes-public.d.ts +598 -10
- package/dist/routes-public.d.ts.map +1 -1
- package/dist/routes-public.js +104 -3
- package/dist/service-booking-session-bootstrap.d.ts +227 -0
- package/dist/service-booking-session-bootstrap.d.ts.map +1 -0
- package/dist/service-booking-session-bootstrap.js +297 -0
- package/dist/service-departures.d.ts +301 -2
- package/dist/service-departures.d.ts.map +1 -1
- package/dist/service-departures.js +406 -42
- package/dist/service-intake.d.ts +40 -0
- package/dist/service-intake.d.ts.map +1 -0
- package/dist/service-intake.js +231 -0
- package/dist/service.d.ts +634 -6
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +127 -2
- package/dist/validation-settings.d.ts +489 -0
- package/dist/validation-settings.d.ts.map +1 -0
- package/dist/validation-settings.js +205 -0
- package/dist/validation.d.ts +1458 -433
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +238 -124
- package/package.json +17 -9
package/dist/service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
package/dist/service.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { bootstrapStorefrontBookingSession, } from "./service-booking-session-bootstrap.js";
|
|
1
2
|
import { getStorefrontDeparture, getStorefrontDepartureItinerary, getStorefrontProductAvailabilitySummary, getStorefrontProductExtensions, listStorefrontProductDepartures, previewStorefrontDeparturePrice, } from "./service-departures.js";
|
|
3
|
+
import { createStorefrontLeadSignal, subscribeStorefrontNewsletter, } from "./service-intake.js";
|
|
2
4
|
import { evaluateStorefrontTransportEligibility } from "./service-transport-eligibility.js";
|
|
3
5
|
import { storefrontSettingsInputSchema, storefrontSettingsSchema, } from "./validation.js";
|
|
4
6
|
const defaultPaymentLabels = {
|
|
@@ -28,22 +30,78 @@ function normalizePaymentMethod(method) {
|
|
|
28
30
|
enabled: method.enabled,
|
|
29
31
|
};
|
|
30
32
|
}
|
|
33
|
+
function normalizePaymentSchedule(schedule) {
|
|
34
|
+
if (!schedule)
|
|
35
|
+
return null;
|
|
36
|
+
return {
|
|
37
|
+
depositPercent: schedule.depositPercent ?? null,
|
|
38
|
+
balanceDueDaysBeforeDeparture: schedule.balanceDueDaysBeforeDeparture ?? null,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function normalizeBankTransfer(bankTransfer) {
|
|
42
|
+
if (!bankTransfer)
|
|
43
|
+
return null;
|
|
44
|
+
return {
|
|
45
|
+
accountHolder: bankTransfer.accountHolder ?? null,
|
|
46
|
+
bankName: bankTransfer.bankName ?? null,
|
|
47
|
+
iban: bankTransfer.iban ?? null,
|
|
48
|
+
bic: bankTransfer.bic ?? null,
|
|
49
|
+
paymentReference: bankTransfer.paymentReference ?? null,
|
|
50
|
+
instructions: bankTransfer.instructions ?? null,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function mergePaymentSchedule(current, patch) {
|
|
54
|
+
if (patch === null)
|
|
55
|
+
return null;
|
|
56
|
+
return {
|
|
57
|
+
...(current ?? {
|
|
58
|
+
depositPercent: null,
|
|
59
|
+
balanceDueDaysBeforeDeparture: null,
|
|
60
|
+
}),
|
|
61
|
+
...patch,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function mergeBankTransfer(current, patch) {
|
|
65
|
+
if (patch === null)
|
|
66
|
+
return null;
|
|
67
|
+
return {
|
|
68
|
+
...(current ?? {
|
|
69
|
+
accountHolder: null,
|
|
70
|
+
bankName: null,
|
|
71
|
+
iban: null,
|
|
72
|
+
bic: null,
|
|
73
|
+
paymentReference: null,
|
|
74
|
+
instructions: null,
|
|
75
|
+
}),
|
|
76
|
+
...patch,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
31
79
|
export function resolveStorefrontSettings(input) {
|
|
32
80
|
const parsed = storefrontSettingsInputSchema.parse(input ?? {});
|
|
33
81
|
return storefrontSettingsSchema.parse({
|
|
34
82
|
branding: {
|
|
35
83
|
logoUrl: parsed.branding?.logoUrl ?? null,
|
|
84
|
+
faviconUrl: parsed.branding?.faviconUrl ?? null,
|
|
85
|
+
brandMarkUrl: parsed.branding?.brandMarkUrl ?? null,
|
|
86
|
+
primaryColor: parsed.branding?.primaryColor ?? null,
|
|
87
|
+
accentColor: parsed.branding?.accentColor ?? null,
|
|
36
88
|
supportedLanguages: parsed.branding?.supportedLanguages ?? [],
|
|
37
89
|
},
|
|
38
90
|
support: {
|
|
39
91
|
email: parsed.support?.email ?? null,
|
|
40
92
|
phone: parsed.support?.phone ?? null,
|
|
93
|
+
links: parsed.support?.links ?? [],
|
|
41
94
|
},
|
|
42
95
|
legal: {
|
|
43
96
|
termsUrl: parsed.legal?.termsUrl ?? null,
|
|
44
97
|
privacyUrl: parsed.legal?.privacyUrl ?? null,
|
|
98
|
+
cancellationUrl: parsed.legal?.cancellationUrl ?? null,
|
|
45
99
|
defaultContractTemplateId: parsed.legal?.defaultContractTemplateId ?? null,
|
|
46
100
|
},
|
|
101
|
+
localization: {
|
|
102
|
+
defaultLocale: parsed.localization?.defaultLocale ?? null,
|
|
103
|
+
currencyDisplay: parsed.localization?.currencyDisplay ?? "code",
|
|
104
|
+
},
|
|
47
105
|
forms: {
|
|
48
106
|
billing: {
|
|
49
107
|
fields: (parsed.forms?.billing?.fields ?? []).map(normalizeField),
|
|
@@ -55,9 +113,43 @@ export function resolveStorefrontSettings(input) {
|
|
|
55
113
|
payment: {
|
|
56
114
|
defaultMethod: parsed.payment?.defaultMethod ?? null,
|
|
57
115
|
methods: (parsed.payment?.methods ?? []).map(normalizePaymentMethod),
|
|
116
|
+
defaultSchedule: normalizePaymentSchedule(parsed.payment?.defaultSchedule ?? null),
|
|
117
|
+
bankTransfer: normalizeBankTransfer(parsed.payment?.bankTransfer ?? null),
|
|
58
118
|
},
|
|
59
119
|
});
|
|
60
120
|
}
|
|
121
|
+
export function mergeStorefrontSettingsPatch(current, patch) {
|
|
122
|
+
return resolveStorefrontSettings({
|
|
123
|
+
branding: patch.branding ? { ...current.branding, ...patch.branding } : current.branding,
|
|
124
|
+
support: patch.support ? { ...current.support, ...patch.support } : current.support,
|
|
125
|
+
legal: patch.legal ? { ...current.legal, ...patch.legal } : current.legal,
|
|
126
|
+
localization: patch.localization
|
|
127
|
+
? { ...current.localization, ...patch.localization }
|
|
128
|
+
: current.localization,
|
|
129
|
+
forms: patch.forms
|
|
130
|
+
? {
|
|
131
|
+
billing: patch.forms.billing
|
|
132
|
+
? { ...current.forms.billing, ...patch.forms.billing }
|
|
133
|
+
: current.forms.billing,
|
|
134
|
+
travelers: patch.forms.travelers
|
|
135
|
+
? { ...current.forms.travelers, ...patch.forms.travelers }
|
|
136
|
+
: current.forms.travelers,
|
|
137
|
+
}
|
|
138
|
+
: current.forms,
|
|
139
|
+
payment: patch.payment
|
|
140
|
+
? {
|
|
141
|
+
...current.payment,
|
|
142
|
+
...patch.payment,
|
|
143
|
+
defaultSchedule: patch.payment.defaultSchedule === undefined
|
|
144
|
+
? current.payment.defaultSchedule
|
|
145
|
+
: mergePaymentSchedule(current.payment.defaultSchedule, patch.payment.defaultSchedule),
|
|
146
|
+
bankTransfer: patch.payment.bankTransfer === undefined
|
|
147
|
+
? current.payment.bankTransfer
|
|
148
|
+
: mergeBankTransfer(current.payment.bankTransfer, patch.payment.bankTransfer),
|
|
149
|
+
}
|
|
150
|
+
: current.payment,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
61
153
|
export function createStorefrontService(options) {
|
|
62
154
|
const settings = resolveStorefrontSettings(options?.settings);
|
|
63
155
|
async function resolveSettings(context = {}) {
|
|
@@ -66,6 +158,14 @@ export function createStorefrontService(options) {
|
|
|
66
158
|
}
|
|
67
159
|
return resolveStorefrontSettings(await options.resolveSettings(context));
|
|
68
160
|
}
|
|
161
|
+
async function updateSettings(patch, context = {}) {
|
|
162
|
+
if (!options?.updateSettings) {
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
const current = await resolveSettings(context);
|
|
166
|
+
const next = mergeStorefrontSettingsPatch(current, patch);
|
|
167
|
+
return resolveStorefrontSettings(await options.updateSettings(next, context));
|
|
168
|
+
}
|
|
69
169
|
async function resolveOffers(context = {}) {
|
|
70
170
|
return (await options?.resolveOffers?.(context)) ?? options?.offers;
|
|
71
171
|
}
|
|
@@ -74,19 +174,31 @@ export function createStorefrontService(options) {
|
|
|
74
174
|
options?.transportEligibilityRules ??
|
|
75
175
|
[]);
|
|
76
176
|
}
|
|
177
|
+
async function checkIntakeGuard(input) {
|
|
178
|
+
return options?.intake?.guard?.(input);
|
|
179
|
+
}
|
|
77
180
|
return {
|
|
78
181
|
getSettings() {
|
|
79
182
|
return settings;
|
|
80
183
|
},
|
|
81
184
|
resolveSettings,
|
|
185
|
+
updateSettings,
|
|
82
186
|
getDeparture(db, departureId) {
|
|
83
187
|
return getStorefrontDeparture(db, departureId);
|
|
84
188
|
},
|
|
85
189
|
listProductDepartures(db, productId, query) {
|
|
86
190
|
return listStorefrontProductDepartures(db, productId, query);
|
|
87
191
|
},
|
|
88
|
-
previewDeparturePrice(db, departureId, input) {
|
|
89
|
-
|
|
192
|
+
previewDeparturePrice(db, departureId, input, context = {}) {
|
|
193
|
+
const offerContext = { ...context, db: context.db ?? db };
|
|
194
|
+
return previewStorefrontDeparturePrice(db, departureId, input, {
|
|
195
|
+
listApplicableOffers: async (offerInput) => {
|
|
196
|
+
const offers = await resolveOffers(offerContext)?.then((resolvers) => resolvers?.listApplicableOffers?.({ ...offerInput, ...offerContext }));
|
|
197
|
+
return offers ?? [];
|
|
198
|
+
},
|
|
199
|
+
applyOffer: async (offerInput) => (await resolveOffers(offerContext)?.then((resolvers) => resolvers?.applyOffer?.({ ...offerInput, ...offerContext }))) ?? null,
|
|
200
|
+
redeemOffer: async (offerInput) => (await resolveOffers(offerContext)?.then((resolvers) => resolvers?.redeemOffer?.({ ...offerInput, ...offerContext }))) ?? null,
|
|
201
|
+
});
|
|
90
202
|
},
|
|
91
203
|
getProductExtensions(db, productId, optionId) {
|
|
92
204
|
return getStorefrontProductExtensions(db, productId, optionId);
|
|
@@ -120,6 +232,9 @@ export function createStorefrontService(options) {
|
|
|
120
232
|
rules,
|
|
121
233
|
});
|
|
122
234
|
},
|
|
235
|
+
async bootstrapBookingSession(context, input, userId) {
|
|
236
|
+
return bootstrapStorefrontBookingSession(context, input, options?.bookingSessionBootstrap, userId);
|
|
237
|
+
},
|
|
123
238
|
async listApplicableOffers(input) {
|
|
124
239
|
const { context, ...offerInput } = input;
|
|
125
240
|
const offers = await resolveOffers(context)?.then((resolvers) => resolvers?.listApplicableOffers?.({ ...offerInput, ...(context ?? {}) }));
|
|
@@ -137,5 +252,15 @@ export function createStorefrontService(options) {
|
|
|
137
252
|
const { context, ...offerInput } = input;
|
|
138
253
|
return ((await resolveOffers(context)?.then((resolvers) => resolvers?.redeemOffer?.({ ...offerInput, ...(context ?? {}) }))) ?? null);
|
|
139
254
|
},
|
|
255
|
+
checkIntakeGuard,
|
|
256
|
+
createLead(input) {
|
|
257
|
+
return createStorefrontLeadSignal(input);
|
|
258
|
+
},
|
|
259
|
+
subscribeNewsletter(input) {
|
|
260
|
+
return subscribeStorefrontNewsletter({
|
|
261
|
+
...input,
|
|
262
|
+
requestDoubleOptIn: options?.intake?.requestNewsletterDoubleOptIn,
|
|
263
|
+
});
|
|
264
|
+
},
|
|
140
265
|
};
|
|
141
266
|
}
|