@voyantjs/storefront 0.66.0 → 0.66.6

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.
@@ -1,5 +1,63 @@
1
1
  import type { PostgresJsDatabase } from "drizzle-orm/postgres-js";
2
2
  import type { StorefrontDepartureListQuery, StorefrontDeparturePricePreviewInput, StorefrontOfferMutationResult, StorefrontProductAvailabilitySummaryQuery, StorefrontPromotionalOffer } from "./validation.js";
3
+ type PricingContext = {
4
+ product: {
5
+ id: string;
6
+ sellCurrency: string;
7
+ sellAmountCents: number | null;
8
+ capacityMode: string;
9
+ } | null;
10
+ catalog: {
11
+ id: string;
12
+ currencyCode: string | null;
13
+ } | null;
14
+ option: {
15
+ id: string;
16
+ name: string;
17
+ description: string | null;
18
+ } | null;
19
+ rule: {
20
+ id: string;
21
+ name: string;
22
+ description: string | null;
23
+ pricingMode: string;
24
+ baseSellAmountCents: number | null;
25
+ } | null;
26
+ units: Array<{
27
+ id: string;
28
+ name: string;
29
+ unitType: string;
30
+ minAge: number | null;
31
+ maxAge: number | null;
32
+ occupancyMin: number | null;
33
+ occupancyMax: number | null;
34
+ isRequired: boolean;
35
+ }>;
36
+ unitRules: Array<{
37
+ id: string;
38
+ unitId: string;
39
+ pricingMode: string;
40
+ sellAmountCents: number | null;
41
+ minQuantity: number | null;
42
+ maxQuantity: number | null;
43
+ sortOrder: number;
44
+ }>;
45
+ tiers: Array<{
46
+ id: string;
47
+ optionUnitPriceRuleId: string;
48
+ minQuantity: number;
49
+ maxQuantity: number | null;
50
+ sellAmountCents: number | null;
51
+ sortOrder: number;
52
+ }>;
53
+ extraRules: Array<{
54
+ id: string;
55
+ productExtraId: string | null;
56
+ pricingMode: string;
57
+ sellAmountCents: number | null;
58
+ sortOrder: number;
59
+ }>;
60
+ };
3
61
  export interface StorefrontDeparturePricePreviewOfferResolvers {
4
62
  listApplicableOffers?: (input: {
5
63
  productId: string;
@@ -33,6 +91,16 @@ export interface StorefrontDeparturePricePreviewOfferResolvers {
33
91
  };
34
92
  }) => Promise<StorefrontOfferMutationResult | null> | StorefrontOfferMutationResult | null;
35
93
  }
94
+ export declare function buildTravelerRequestedUnits(args: {
95
+ units: PricingContext["units"];
96
+ adults: number;
97
+ children: number;
98
+ infants: number;
99
+ }): {
100
+ unitId?: string;
101
+ requestRef?: string;
102
+ quantity: number;
103
+ }[];
36
104
  export declare function getStorefrontDeparture(db: PostgresJsDatabase, departureId: string): Promise<{
37
105
  id: string;
38
106
  productId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"service-departures.d.ts","sourceRoot":"","sources":["../src/service-departures.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service-departures.d.ts","sourceRoot":"","sources":["../src/service-departures.ts"],"names":[],"mappings":"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"}
@@ -65,9 +65,9 @@ function selectTierAmount(unitRule, tiers, quantity) {
65
65
  function findNamedUnit(units, matcher) {
66
66
  return units.find(matcher) ?? null;
67
67
  }
68
- function buildTravelerRequestedUnits(args) {
68
+ export function buildTravelerRequestedUnits(args) {
69
69
  const requestedUnits = [];
70
- const normalized = args.units.filter((unit) => unit.unitType === "person" && !unit.isRequired);
70
+ const normalized = args.units.filter((unit) => unit.unitType === "person");
71
71
  const adultUnit = findNamedUnit(normalized, (unit) => (unit.maxAge == null || unit.maxAge >= 18) &&
72
72
  (unit.minAge == null || unit.minAge < 18) &&
73
73
  !/child|infant/i.test(unit.name)) ?? normalized[0];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voyantjs/storefront",
3
- "version": "0.66.0",
3
+ "version": "0.66.6",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "exports": {
@@ -39,22 +39,22 @@
39
39
  "drizzle-orm": "^0.45.2",
40
40
  "hono": "^4.12.10",
41
41
  "zod": "^4.3.6",
42
- "@voyantjs/availability": "0.66.0",
43
- "@voyantjs/bookings": "0.66.0",
44
- "@voyantjs/crm": "0.66.0",
45
- "@voyantjs/core": "0.66.0",
46
- "@voyantjs/extras": "0.66.0",
47
- "@voyantjs/finance": "0.66.0",
48
- "@voyantjs/hono": "0.66.0",
49
- "@voyantjs/pricing": "0.66.0",
50
- "@voyantjs/products": "0.66.0",
51
- "@voyantjs/sellability": "0.66.0"
42
+ "@voyantjs/availability": "0.66.6",
43
+ "@voyantjs/core": "0.66.6",
44
+ "@voyantjs/crm": "0.66.6",
45
+ "@voyantjs/extras": "0.66.6",
46
+ "@voyantjs/bookings": "0.66.6",
47
+ "@voyantjs/finance": "0.66.6",
48
+ "@voyantjs/hono": "0.66.6",
49
+ "@voyantjs/products": "0.66.6",
50
+ "@voyantjs/pricing": "0.66.6",
51
+ "@voyantjs/sellability": "0.66.6"
52
52
  },
53
53
  "devDependencies": {
54
54
  "typescript": "^6.0.2",
55
55
  "vitest": "^4.1.2",
56
56
  "@voyantjs/voyant-typescript-config": "0.1.0",
57
- "@voyantjs/db": "0.66.0"
57
+ "@voyantjs/db": "0.66.6"
58
58
  },
59
59
  "files": [
60
60
  "dist"