@voyantjs/storefront 0.24.1 → 0.24.2
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/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/routes-public.d.ts +476 -0
- package/dist/routes-public.d.ts.map +1 -0
- package/dist/routes-public.js +73 -0
- package/dist/service-departures.d.ts +212 -0
- package/dist/service-departures.d.ts.map +1 -0
- package/dist/service-departures.js +943 -0
- package/dist/service.d.ts +303 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +104 -0
- package/dist/validation.d.ts +859 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +377 -0
- package/package.json +10 -10
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
import { availabilitySlotStatusSchema } from "@voyantjs/availability/validation";
|
|
2
|
+
import { extraPricingModeSchema } from "@voyantjs/extras/validation";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
const languageTagSchema = z
|
|
5
|
+
.string()
|
|
6
|
+
.trim()
|
|
7
|
+
.regex(/^[A-Za-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$/);
|
|
8
|
+
const urlOrNullSchema = z.url().nullable();
|
|
9
|
+
export const storefrontPaymentMethodCodeSchema = z.enum([
|
|
10
|
+
"card",
|
|
11
|
+
"bank_transfer",
|
|
12
|
+
"cash",
|
|
13
|
+
"voucher",
|
|
14
|
+
"invoice",
|
|
15
|
+
]);
|
|
16
|
+
export const storefrontFormFieldTypeSchema = z.enum([
|
|
17
|
+
"text",
|
|
18
|
+
"email",
|
|
19
|
+
"tel",
|
|
20
|
+
"textarea",
|
|
21
|
+
"select",
|
|
22
|
+
"checkbox",
|
|
23
|
+
"date",
|
|
24
|
+
"country",
|
|
25
|
+
]);
|
|
26
|
+
export const storefrontFormFieldOptionSchema = z.object({
|
|
27
|
+
value: z.string().trim().min(1),
|
|
28
|
+
label: z.string().trim().min(1),
|
|
29
|
+
});
|
|
30
|
+
export const storefrontFormFieldInputSchema = z.object({
|
|
31
|
+
key: z.string().trim().min(1),
|
|
32
|
+
label: z.string().trim().min(1),
|
|
33
|
+
type: storefrontFormFieldTypeSchema.default("text"),
|
|
34
|
+
required: z.boolean().default(false),
|
|
35
|
+
placeholder: z.string().trim().min(1).optional().nullable(),
|
|
36
|
+
description: z.string().trim().min(1).optional().nullable(),
|
|
37
|
+
autocomplete: z.string().trim().min(1).optional().nullable(),
|
|
38
|
+
options: z.array(storefrontFormFieldOptionSchema).default([]),
|
|
39
|
+
});
|
|
40
|
+
export const storefrontFormFieldSchema = z.object({
|
|
41
|
+
key: z.string().trim().min(1),
|
|
42
|
+
label: z.string().trim().min(1),
|
|
43
|
+
type: storefrontFormFieldTypeSchema,
|
|
44
|
+
required: z.boolean(),
|
|
45
|
+
placeholder: z.string().trim().min(1).nullable(),
|
|
46
|
+
description: z.string().trim().min(1).nullable(),
|
|
47
|
+
autocomplete: z.string().trim().min(1).nullable(),
|
|
48
|
+
options: z.array(storefrontFormFieldOptionSchema),
|
|
49
|
+
});
|
|
50
|
+
export const storefrontPaymentMethodInputSchema = z.object({
|
|
51
|
+
code: storefrontPaymentMethodCodeSchema,
|
|
52
|
+
label: z.string().trim().min(1).optional(),
|
|
53
|
+
description: z.string().trim().min(1).optional().nullable(),
|
|
54
|
+
enabled: z.boolean().default(true),
|
|
55
|
+
});
|
|
56
|
+
export const storefrontPaymentMethodSchema = z.object({
|
|
57
|
+
code: storefrontPaymentMethodCodeSchema,
|
|
58
|
+
label: z.string().trim().min(1),
|
|
59
|
+
description: z.string().trim().min(1).nullable(),
|
|
60
|
+
enabled: z.boolean(),
|
|
61
|
+
});
|
|
62
|
+
export const storefrontSettingsInputSchema = z.object({
|
|
63
|
+
branding: z
|
|
64
|
+
.object({
|
|
65
|
+
logoUrl: z.url().optional().nullable(),
|
|
66
|
+
supportedLanguages: z.array(languageTagSchema).optional(),
|
|
67
|
+
})
|
|
68
|
+
.optional(),
|
|
69
|
+
support: z
|
|
70
|
+
.object({
|
|
71
|
+
email: z.email().optional().nullable(),
|
|
72
|
+
phone: z.string().trim().min(1).optional().nullable(),
|
|
73
|
+
})
|
|
74
|
+
.optional(),
|
|
75
|
+
legal: z
|
|
76
|
+
.object({
|
|
77
|
+
termsUrl: z.url().optional().nullable(),
|
|
78
|
+
privacyUrl: z.url().optional().nullable(),
|
|
79
|
+
defaultContractTemplateId: z.string().trim().min(1).optional().nullable(),
|
|
80
|
+
})
|
|
81
|
+
.optional(),
|
|
82
|
+
forms: z
|
|
83
|
+
.object({
|
|
84
|
+
billing: z
|
|
85
|
+
.object({
|
|
86
|
+
fields: z.array(storefrontFormFieldInputSchema).default([]),
|
|
87
|
+
})
|
|
88
|
+
.optional(),
|
|
89
|
+
travelers: z
|
|
90
|
+
.object({
|
|
91
|
+
fields: z.array(storefrontFormFieldInputSchema).default([]),
|
|
92
|
+
})
|
|
93
|
+
.optional(),
|
|
94
|
+
})
|
|
95
|
+
.optional(),
|
|
96
|
+
payment: z
|
|
97
|
+
.object({
|
|
98
|
+
defaultMethod: storefrontPaymentMethodCodeSchema.optional().nullable(),
|
|
99
|
+
methods: z.array(storefrontPaymentMethodInputSchema).optional(),
|
|
100
|
+
})
|
|
101
|
+
.optional(),
|
|
102
|
+
});
|
|
103
|
+
export const storefrontSettingsSchema = z.object({
|
|
104
|
+
branding: z.object({
|
|
105
|
+
logoUrl: urlOrNullSchema,
|
|
106
|
+
supportedLanguages: z.array(languageTagSchema),
|
|
107
|
+
}),
|
|
108
|
+
support: z.object({
|
|
109
|
+
email: z.email().nullable(),
|
|
110
|
+
phone: z.string().trim().min(1).nullable(),
|
|
111
|
+
}),
|
|
112
|
+
legal: z.object({
|
|
113
|
+
termsUrl: urlOrNullSchema,
|
|
114
|
+
privacyUrl: urlOrNullSchema,
|
|
115
|
+
defaultContractTemplateId: z.string().trim().min(1).nullable(),
|
|
116
|
+
}),
|
|
117
|
+
forms: z.object({
|
|
118
|
+
billing: z.object({
|
|
119
|
+
fields: z.array(storefrontFormFieldSchema),
|
|
120
|
+
}),
|
|
121
|
+
travelers: z.object({
|
|
122
|
+
fields: z.array(storefrontFormFieldSchema),
|
|
123
|
+
}),
|
|
124
|
+
}),
|
|
125
|
+
payment: z.object({
|
|
126
|
+
defaultMethod: storefrontPaymentMethodCodeSchema.nullable(),
|
|
127
|
+
methods: z.array(storefrontPaymentMethodSchema),
|
|
128
|
+
}),
|
|
129
|
+
});
|
|
130
|
+
export const storefrontDepartureStatusSchema = z.enum([
|
|
131
|
+
"open",
|
|
132
|
+
"closed",
|
|
133
|
+
"sold_out",
|
|
134
|
+
"cancelled",
|
|
135
|
+
"on_request",
|
|
136
|
+
]);
|
|
137
|
+
export const storefrontDepartureRoomOccupancySchema = z.object({
|
|
138
|
+
adultsMin: z.number().int().min(0),
|
|
139
|
+
adultsMax: z.number().int().min(0),
|
|
140
|
+
childrenMax: z.number().int().min(0),
|
|
141
|
+
});
|
|
142
|
+
export const storefrontDepartureRoomPriceSchema = z.object({
|
|
143
|
+
amount: z.number(),
|
|
144
|
+
currencyCode: z.string(),
|
|
145
|
+
roomType: z.object({
|
|
146
|
+
id: z.string(),
|
|
147
|
+
name: z.string(),
|
|
148
|
+
occupancy: storefrontDepartureRoomOccupancySchema,
|
|
149
|
+
}),
|
|
150
|
+
});
|
|
151
|
+
export const storefrontDepartureRatePlanSchema = z.object({
|
|
152
|
+
id: z.string(),
|
|
153
|
+
active: z.boolean(),
|
|
154
|
+
name: z.string(),
|
|
155
|
+
pricingModel: z.string(),
|
|
156
|
+
basePrices: z.array(z.object({
|
|
157
|
+
amount: z.number(),
|
|
158
|
+
currencyCode: z.string(),
|
|
159
|
+
})),
|
|
160
|
+
roomPrices: z.array(storefrontDepartureRoomPriceSchema),
|
|
161
|
+
});
|
|
162
|
+
export const storefrontDepartureStartTimeSchema = z.object({
|
|
163
|
+
id: z.string(),
|
|
164
|
+
label: z.string().nullable(),
|
|
165
|
+
startTimeLocal: z.string(),
|
|
166
|
+
durationMinutes: z.number().int().nullable(),
|
|
167
|
+
});
|
|
168
|
+
export const storefrontDepartureSchema = z.object({
|
|
169
|
+
id: z.string(),
|
|
170
|
+
productId: z.string(),
|
|
171
|
+
itineraryId: z.string(),
|
|
172
|
+
optionId: z.string().nullable(),
|
|
173
|
+
dateLocal: z.string().nullable(),
|
|
174
|
+
startAt: z.string().nullable(),
|
|
175
|
+
endAt: z.string().nullable(),
|
|
176
|
+
timezone: z.string(),
|
|
177
|
+
startTime: storefrontDepartureStartTimeSchema.nullable(),
|
|
178
|
+
meetingPoint: z.string().nullable(),
|
|
179
|
+
capacity: z.number().int().nullable(),
|
|
180
|
+
remaining: z.number().int().nullable(),
|
|
181
|
+
departureStatus: storefrontDepartureStatusSchema,
|
|
182
|
+
nights: z.number().int().nullable(),
|
|
183
|
+
days: z.number().int().nullable(),
|
|
184
|
+
ratePlans: z.array(storefrontDepartureRatePlanSchema),
|
|
185
|
+
});
|
|
186
|
+
export const storefrontDepartureListQuerySchema = z.object({
|
|
187
|
+
optionId: z.string().optional(),
|
|
188
|
+
status: availabilitySlotStatusSchema.optional(),
|
|
189
|
+
dateFrom: z.string().date().optional(),
|
|
190
|
+
dateTo: z.string().date().optional(),
|
|
191
|
+
limit: z.coerce.number().int().min(1).max(250).default(100),
|
|
192
|
+
offset: z.coerce.number().int().min(0).default(0),
|
|
193
|
+
});
|
|
194
|
+
export const storefrontDepartureListResponseSchema = z.object({
|
|
195
|
+
data: z.array(storefrontDepartureSchema),
|
|
196
|
+
total: z.number().int(),
|
|
197
|
+
limit: z.number().int(),
|
|
198
|
+
offset: z.number().int(),
|
|
199
|
+
});
|
|
200
|
+
export const storefrontProductAvailabilityStateSchema = z.enum([
|
|
201
|
+
"available",
|
|
202
|
+
"sold_out",
|
|
203
|
+
"closed",
|
|
204
|
+
"cancelled",
|
|
205
|
+
"on_request",
|
|
206
|
+
"past_cutoff",
|
|
207
|
+
"too_early",
|
|
208
|
+
"unavailable",
|
|
209
|
+
]);
|
|
210
|
+
export const storefrontProductAvailabilitySummaryQuerySchema = z.object({
|
|
211
|
+
optionId: z.string().optional(),
|
|
212
|
+
status: storefrontDepartureStatusSchema.optional(),
|
|
213
|
+
dateFrom: z.string().date().optional(),
|
|
214
|
+
dateTo: z.string().date().optional(),
|
|
215
|
+
locale: languageTagSchema.optional(),
|
|
216
|
+
limit: z.coerce.number().int().min(1).max(250).default(100),
|
|
217
|
+
offset: z.coerce.number().int().min(0).default(0),
|
|
218
|
+
});
|
|
219
|
+
export const storefrontProductAvailabilitySlotSchema = z.object({
|
|
220
|
+
id: z.string(),
|
|
221
|
+
productId: z.string(),
|
|
222
|
+
optionId: z.string().nullable(),
|
|
223
|
+
dateLocal: z.string().nullable(),
|
|
224
|
+
startAt: z.string().nullable(),
|
|
225
|
+
endAt: z.string().nullable(),
|
|
226
|
+
timezone: z.string(),
|
|
227
|
+
status: storefrontDepartureStatusSchema,
|
|
228
|
+
availabilityState: storefrontProductAvailabilityStateSchema,
|
|
229
|
+
capacity: z.number().int().nullable(),
|
|
230
|
+
remaining: z.number().int().nullable(),
|
|
231
|
+
pastCutoff: z.boolean(),
|
|
232
|
+
tooEarly: z.boolean(),
|
|
233
|
+
});
|
|
234
|
+
export const storefrontProductAvailabilitySummarySchema = z.object({
|
|
235
|
+
productId: z.string(),
|
|
236
|
+
availabilityState: storefrontProductAvailabilityStateSchema,
|
|
237
|
+
counts: z.object({
|
|
238
|
+
total: z.number().int(),
|
|
239
|
+
open: z.number().int(),
|
|
240
|
+
closed: z.number().int(),
|
|
241
|
+
soldOut: z.number().int(),
|
|
242
|
+
cancelled: z.number().int(),
|
|
243
|
+
onRequest: z.number().int(),
|
|
244
|
+
pastCutoff: z.number().int(),
|
|
245
|
+
tooEarly: z.number().int(),
|
|
246
|
+
available: z.number().int(),
|
|
247
|
+
}),
|
|
248
|
+
departures: z.array(storefrontProductAvailabilitySlotSchema),
|
|
249
|
+
total: z.number().int(),
|
|
250
|
+
limit: z.number().int(),
|
|
251
|
+
offset: z.number().int(),
|
|
252
|
+
});
|
|
253
|
+
export const storefrontProductAvailabilitySummaryResponseSchema = z.object({
|
|
254
|
+
data: storefrontProductAvailabilitySummarySchema,
|
|
255
|
+
});
|
|
256
|
+
export const storefrontDeparturePricePreviewInputSchema = z.object({
|
|
257
|
+
pax: z
|
|
258
|
+
.object({
|
|
259
|
+
adults: z.coerce.number().int().min(0).default(1),
|
|
260
|
+
children: z.coerce.number().int().min(0).default(0),
|
|
261
|
+
infants: z.coerce.number().int().min(0).default(0),
|
|
262
|
+
})
|
|
263
|
+
.default({ adults: 1, children: 0, infants: 0 }),
|
|
264
|
+
currencyCode: z.string().trim().min(1).optional().nullable(),
|
|
265
|
+
rooms: z
|
|
266
|
+
.array(z.object({
|
|
267
|
+
unitId: z.string().trim().min(1),
|
|
268
|
+
occupancy: z.coerce.number().int().min(1).default(1),
|
|
269
|
+
quantity: z.coerce.number().int().min(1).default(1),
|
|
270
|
+
}))
|
|
271
|
+
.default([]),
|
|
272
|
+
extras: z
|
|
273
|
+
.array(z.object({
|
|
274
|
+
extraId: z.string().trim().min(1),
|
|
275
|
+
quantity: z.coerce.number().int().min(1).default(1),
|
|
276
|
+
}))
|
|
277
|
+
.default([]),
|
|
278
|
+
});
|
|
279
|
+
export const storefrontDeparturePriceLineItemSchema = z.object({
|
|
280
|
+
name: z.string(),
|
|
281
|
+
total: z.number(),
|
|
282
|
+
quantity: z.number().int().min(1),
|
|
283
|
+
unitPrice: z.number(),
|
|
284
|
+
});
|
|
285
|
+
export const storefrontDeparturePricePreviewSchema = z.object({
|
|
286
|
+
departureId: z.string(),
|
|
287
|
+
productId: z.string(),
|
|
288
|
+
optionId: z.string().nullable(),
|
|
289
|
+
currencyCode: z.string(),
|
|
290
|
+
basePrice: z.number(),
|
|
291
|
+
taxAmount: z.number(),
|
|
292
|
+
total: z.number(),
|
|
293
|
+
notes: z.string().nullable(),
|
|
294
|
+
lineItems: z.array(storefrontDeparturePriceLineItemSchema),
|
|
295
|
+
});
|
|
296
|
+
export const storefrontProductExtensionsQuerySchema = z.object({
|
|
297
|
+
optionId: z.string().optional(),
|
|
298
|
+
});
|
|
299
|
+
export const storefrontProductExtensionMediaSchema = z.object({
|
|
300
|
+
url: z.string().trim().min(1),
|
|
301
|
+
alt: z.string().trim().min(1).nullable(),
|
|
302
|
+
});
|
|
303
|
+
export const storefrontProductExtensionDetailSchema = z.object({
|
|
304
|
+
description: z.string().nullable(),
|
|
305
|
+
media: z.array(storefrontProductExtensionMediaSchema),
|
|
306
|
+
});
|
|
307
|
+
export const storefrontProductExtensionSchema = z.object({
|
|
308
|
+
id: z.string(),
|
|
309
|
+
name: z.string(),
|
|
310
|
+
label: z.string(),
|
|
311
|
+
required: z.boolean(),
|
|
312
|
+
selectable: z.boolean(),
|
|
313
|
+
hasOptions: z.boolean(),
|
|
314
|
+
refProductId: z.string().nullable(),
|
|
315
|
+
thumb: z.string().nullable(),
|
|
316
|
+
pricePerPerson: z.number().nullable(),
|
|
317
|
+
currencyCode: z.string(),
|
|
318
|
+
pricingMode: extraPricingModeSchema,
|
|
319
|
+
defaultQuantity: z.number().int().nullable(),
|
|
320
|
+
minQuantity: z.number().int().nullable(),
|
|
321
|
+
maxQuantity: z.number().int().nullable(),
|
|
322
|
+
});
|
|
323
|
+
export const storefrontProductExtensionsResponseSchema = z.object({
|
|
324
|
+
extensions: z.array(storefrontProductExtensionSchema),
|
|
325
|
+
items: z.array(storefrontProductExtensionSchema),
|
|
326
|
+
details: z.record(z.string(), storefrontProductExtensionDetailSchema),
|
|
327
|
+
currencyCode: z.string(),
|
|
328
|
+
});
|
|
329
|
+
export const storefrontDepartureItinerarySegmentSchema = z.object({
|
|
330
|
+
id: z.string(),
|
|
331
|
+
title: z.string(),
|
|
332
|
+
description: z.string().nullable(),
|
|
333
|
+
});
|
|
334
|
+
export const storefrontDepartureItineraryDaySchema = z.object({
|
|
335
|
+
id: z.string(),
|
|
336
|
+
title: z.string(),
|
|
337
|
+
description: z.string().nullable(),
|
|
338
|
+
thumbnail: z
|
|
339
|
+
.object({
|
|
340
|
+
url: z.string().trim().min(1),
|
|
341
|
+
})
|
|
342
|
+
.nullable(),
|
|
343
|
+
segments: z.array(storefrontDepartureItinerarySegmentSchema),
|
|
344
|
+
});
|
|
345
|
+
export const storefrontDepartureItinerarySchema = z.object({
|
|
346
|
+
id: z.string(),
|
|
347
|
+
days: z.array(storefrontDepartureItineraryDaySchema),
|
|
348
|
+
});
|
|
349
|
+
export const storefrontPromotionalOfferSchema = z.object({
|
|
350
|
+
id: z.string(),
|
|
351
|
+
name: z.string(),
|
|
352
|
+
slug: z.string().nullable(),
|
|
353
|
+
description: z.string().nullable(),
|
|
354
|
+
discountType: z.enum(["percentage", "fixed_amount"]),
|
|
355
|
+
discountValue: z.string(),
|
|
356
|
+
currency: z.string().nullable(),
|
|
357
|
+
applicableProductIds: z.array(z.string()),
|
|
358
|
+
applicableDepartureIds: z.array(z.string()),
|
|
359
|
+
validFrom: z.string().nullable(),
|
|
360
|
+
validTo: z.string().nullable(),
|
|
361
|
+
minTravelers: z.number().int().nullable(),
|
|
362
|
+
imageMobileUrl: z.string().nullable(),
|
|
363
|
+
imageDesktopUrl: z.string().nullable(),
|
|
364
|
+
stackable: z.boolean(),
|
|
365
|
+
createdAt: z.string(),
|
|
366
|
+
updatedAt: z.string(),
|
|
367
|
+
});
|
|
368
|
+
export const storefrontPromotionalOfferListQuerySchema = z.object({
|
|
369
|
+
departureId: z.string().optional(),
|
|
370
|
+
locale: z.string().trim().min(2).optional(),
|
|
371
|
+
});
|
|
372
|
+
export const storefrontPromotionalOfferListResponseSchema = z.object({
|
|
373
|
+
data: z.array(storefrontPromotionalOfferSchema),
|
|
374
|
+
});
|
|
375
|
+
export const storefrontPromotionalOfferResponseSchema = z.object({
|
|
376
|
+
data: storefrontPromotionalOfferSchema,
|
|
377
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voyantjs/storefront",
|
|
3
|
-
"version": "0.24.
|
|
3
|
+
"version": "0.24.2",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -29,18 +29,18 @@
|
|
|
29
29
|
"drizzle-orm": "^0.45.2",
|
|
30
30
|
"hono": "^4.12.10",
|
|
31
31
|
"zod": "^4.3.6",
|
|
32
|
-
"@voyantjs/
|
|
33
|
-
"@voyantjs/
|
|
34
|
-
"@voyantjs/extras": "0.24.
|
|
35
|
-
"@voyantjs/
|
|
36
|
-
"@voyantjs/pricing": "0.24.
|
|
37
|
-
"@voyantjs/products": "0.24.
|
|
38
|
-
"@voyantjs/sellability": "0.24.
|
|
32
|
+
"@voyantjs/hono": "0.24.2",
|
|
33
|
+
"@voyantjs/availability": "0.24.2",
|
|
34
|
+
"@voyantjs/extras": "0.24.2",
|
|
35
|
+
"@voyantjs/core": "0.24.2",
|
|
36
|
+
"@voyantjs/pricing": "0.24.2",
|
|
37
|
+
"@voyantjs/products": "0.24.2",
|
|
38
|
+
"@voyantjs/sellability": "0.24.2"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"typescript": "^6.0.2",
|
|
42
42
|
"vitest": "^4.1.2",
|
|
43
|
-
"@voyantjs/db": "0.24.
|
|
43
|
+
"@voyantjs/db": "0.24.2",
|
|
44
44
|
"@voyantjs/voyant-typescript-config": "0.1.0"
|
|
45
45
|
},
|
|
46
46
|
"files": [
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"lint": "biome check src/",
|
|
60
60
|
"test": "vitest run",
|
|
61
61
|
"build": "pnpm run clean && tsc -p tsconfig.json",
|
|
62
|
-
"clean": "rm -rf dist"
|
|
62
|
+
"clean": "rm -rf dist tsconfig.tsbuildinfo"
|
|
63
63
|
},
|
|
64
64
|
"main": "./dist/index.js",
|
|
65
65
|
"types": "./dist/index.d.ts"
|