@voyant-travel/commerce 0.1.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/LICENSE +201 -0
- package/README.md +145 -0
- package/dist/accepted-quote-version-reservation-golden-flow.test.d.ts +2 -0
- package/dist/accepted-quote-version-reservation-golden-flow.test.d.ts.map +1 -0
- package/dist/accepted-quote-version-reservation-golden-flow.test.js +398 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/interface.d.ts +18 -0
- package/dist/interface.d.ts.map +1 -0
- package/dist/interface.js +246 -0
- package/dist/interface.test.d.ts +2 -0
- package/dist/interface.test.d.ts.map +1 -0
- package/dist/interface.test.js +357 -0
- package/dist/markets/index.d.ts +11 -0
- package/dist/markets/index.d.ts.map +1 -0
- package/dist/markets/index.js +12 -0
- package/dist/markets/routes.d.ts +1182 -0
- package/dist/markets/routes.d.ts.map +1 -0
- package/dist/markets/routes.js +209 -0
- package/dist/markets/schema.d.ts +1527 -0
- package/dist/markets/schema.d.ts.map +1 -0
- package/dist/markets/schema.js +240 -0
- package/dist/markets/service-core.d.ts +253 -0
- package/dist/markets/service-core.d.ts.map +1 -0
- package/dist/markets/service-core.js +242 -0
- package/dist/markets/service-rules.d.ts +191 -0
- package/dist/markets/service-rules.d.ts.map +1 -0
- package/dist/markets/service-rules.js +155 -0
- package/dist/markets/service-shared.d.ts +36 -0
- package/dist/markets/service-shared.d.ts.map +1 -0
- package/dist/markets/service-shared.js +7 -0
- package/dist/markets/service.d.ts +43 -0
- package/dist/markets/service.d.ts.map +1 -0
- package/dist/markets/service.js +42 -0
- package/dist/markets/validation.d.ts +451 -0
- package/dist/markets/validation.d.ts.map +1 -0
- package/dist/markets/validation.js +160 -0
- package/dist/pricing/events.d.ts +53 -0
- package/dist/pricing/events.d.ts.map +1 -0
- package/dist/pricing/events.js +28 -0
- package/dist/pricing/index.d.ts +15 -0
- package/dist/pricing/index.d.ts.map +1 -0
- package/dist/pricing/index.js +18 -0
- package/dist/pricing/routes-core.d.ts +981 -0
- package/dist/pricing/routes-core.d.ts.map +1 -0
- package/dist/pricing/routes-core.js +102 -0
- package/dist/pricing/routes-public.d.ts +136 -0
- package/dist/pricing/routes-public.d.ts.map +1 -0
- package/dist/pricing/routes-public.js +14 -0
- package/dist/pricing/routes-rules.d.ts +1339 -0
- package/dist/pricing/routes-rules.d.ts.map +1 -0
- package/dist/pricing/routes-rules.js +138 -0
- package/dist/pricing/routes-shared.d.ts +14 -0
- package/dist/pricing/routes-shared.d.ts.map +1 -0
- package/dist/pricing/routes-shared.js +3 -0
- package/dist/pricing/routes.d.ts +7 -0
- package/dist/pricing/routes.d.ts.map +1 -0
- package/dist/pricing/routes.js +6 -0
- package/dist/pricing/schema-catalogs.d.ts +467 -0
- package/dist/pricing/schema-catalogs.d.ts.map +1 -0
- package/dist/pricing/schema-catalogs.js +47 -0
- package/dist/pricing/schema-categories.d.ts +497 -0
- package/dist/pricing/schema-categories.d.ts.map +1 -0
- package/dist/pricing/schema-categories.js +54 -0
- package/dist/pricing/schema-departure-overrides.d.ts +228 -0
- package/dist/pricing/schema-departure-overrides.d.ts.map +1 -0
- package/dist/pricing/schema-departure-overrides.js +36 -0
- package/dist/pricing/schema-option-rules.d.ts +1770 -0
- package/dist/pricing/schema-option-rules.d.ts.map +1 -0
- package/dist/pricing/schema-option-rules.js +181 -0
- package/dist/pricing/schema-policies.d.ts +395 -0
- package/dist/pricing/schema-policies.d.ts.map +1 -0
- package/dist/pricing/schema-policies.js +41 -0
- package/dist/pricing/schema-relations.d.ts +59 -0
- package/dist/pricing/schema-relations.d.ts.map +1 -0
- package/dist/pricing/schema-relations.js +111 -0
- package/dist/pricing/schema-shared.d.ts +11 -0
- package/dist/pricing/schema-shared.d.ts.map +1 -0
- package/dist/pricing/schema-shared.js +67 -0
- package/dist/pricing/schema.d.ts +8 -0
- package/dist/pricing/schema.d.ts.map +1 -0
- package/dist/pricing/schema.js +7 -0
- package/dist/pricing/service-catalog-plane-pricing.d.ts +95 -0
- package/dist/pricing/service-catalog-plane-pricing.d.ts.map +1 -0
- package/dist/pricing/service-catalog-plane-pricing.js +382 -0
- package/dist/pricing/service-catalogs.d.ts +139 -0
- package/dist/pricing/service-catalogs.d.ts.map +1 -0
- package/dist/pricing/service-catalogs.js +89 -0
- package/dist/pricing/service-categories.d.ts +147 -0
- package/dist/pricing/service-categories.d.ts.map +1 -0
- package/dist/pricing/service-categories.js +105 -0
- package/dist/pricing/service-departure-overrides.d.ts +67 -0
- package/dist/pricing/service-departure-overrides.d.ts.map +1 -0
- package/dist/pricing/service-departure-overrides.js +54 -0
- package/dist/pricing/service-option-rules.d.ts +321 -0
- package/dist/pricing/service-option-rules.d.ts.map +1 -0
- package/dist/pricing/service-option-rules.js +340 -0
- package/dist/pricing/service-policies.d.ts +123 -0
- package/dist/pricing/service-policies.d.ts.map +1 -0
- package/dist/pricing/service-policies.js +95 -0
- package/dist/pricing/service-public.d.ts +89 -0
- package/dist/pricing/service-public.d.ts.map +1 -0
- package/dist/pricing/service-public.js +473 -0
- package/dist/pricing/service-rule-resolver.d.ts +67 -0
- package/dist/pricing/service-rule-resolver.d.ts.map +1 -0
- package/dist/pricing/service-rule-resolver.js +204 -0
- package/dist/pricing/service-shared.d.ts +53 -0
- package/dist/pricing/service-shared.d.ts.map +1 -0
- package/dist/pricing/service-shared.js +4 -0
- package/dist/pricing/service-transfer-rules.d.ts +211 -0
- package/dist/pricing/service-transfer-rules.d.ts.map +1 -0
- package/dist/pricing/service-transfer-rules.js +139 -0
- package/dist/pricing/service.d.ts +79 -0
- package/dist/pricing/service.d.ts.map +1 -0
- package/dist/pricing/service.js +78 -0
- package/dist/pricing/validation-public.d.ts +412 -0
- package/dist/pricing/validation-public.d.ts.map +1 -0
- package/dist/pricing/validation-public.js +111 -0
- package/dist/pricing/validation-shared.d.ts +71 -0
- package/dist/pricing/validation-shared.d.ts.map +1 -0
- package/dist/pricing/validation-shared.js +63 -0
- package/dist/pricing/validation.d.ts +987 -0
- package/dist/pricing/validation.d.ts.map +1 -0
- package/dist/pricing/validation.js +307 -0
- package/dist/promotions/events.d.ts +38 -0
- package/dist/promotions/events.d.ts.map +1 -0
- package/dist/promotions/events.js +25 -0
- package/dist/promotions/index.d.ts +12 -0
- package/dist/promotions/index.d.ts.map +1 -0
- package/dist/promotions/index.js +17 -0
- package/dist/promotions/routes-shared.d.ts +14 -0
- package/dist/promotions/routes-shared.d.ts.map +1 -0
- package/dist/promotions/routes-shared.js +3 -0
- package/dist/promotions/routes.d.ts +395 -0
- package/dist/promotions/routes.d.ts.map +1 -0
- package/dist/promotions/routes.js +55 -0
- package/dist/promotions/schema.d.ts +675 -0
- package/dist/promotions/schema.d.ts.map +1 -0
- package/dist/promotions/schema.js +126 -0
- package/dist/promotions/service-booking-confirmed.d.ts +77 -0
- package/dist/promotions/service-booking-confirmed.d.ts.map +1 -0
- package/dist/promotions/service-booking-confirmed.js +134 -0
- package/dist/promotions/service-boundary-scheduler.d.ts +85 -0
- package/dist/promotions/service-boundary-scheduler.d.ts.map +1 -0
- package/dist/promotions/service-boundary-scheduler.js +141 -0
- package/dist/promotions/service-catalog-evaluator.d.ts +22 -0
- package/dist/promotions/service-catalog-evaluator.d.ts.map +1 -0
- package/dist/promotions/service-catalog-evaluator.js +33 -0
- package/dist/promotions/service-catalog-plane-promotions.d.ts +73 -0
- package/dist/promotions/service-catalog-plane-promotions.d.ts.map +1 -0
- package/dist/promotions/service-catalog-plane-promotions.js +118 -0
- package/dist/promotions/service-evaluator.d.ts +134 -0
- package/dist/promotions/service-evaluator.d.ts.map +1 -0
- package/dist/promotions/service-evaluator.js +302 -0
- package/dist/promotions/service-storefront.d.ts +147 -0
- package/dist/promotions/service-storefront.d.ts.map +1 -0
- package/dist/promotions/service-storefront.js +326 -0
- package/dist/promotions/service.d.ts +143 -0
- package/dist/promotions/service.d.ts.map +1 -0
- package/dist/promotions/service.js +359 -0
- package/dist/promotions/validation.d.ts +195 -0
- package/dist/promotions/validation.d.ts.map +1 -0
- package/dist/promotions/validation.js +167 -0
- package/dist/promotions/workflow-bulk-reindex.d.ts +36 -0
- package/dist/promotions/workflow-bulk-reindex.d.ts.map +1 -0
- package/dist/promotions/workflow-bulk-reindex.js +53 -0
- package/dist/promotions/workflow-runtime.d.ts +17 -0
- package/dist/promotions/workflow-runtime.d.ts.map +1 -0
- package/dist/promotions/workflow-runtime.js +9 -0
- package/dist/runtime.d.ts +18 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +27 -0
- package/dist/runtime.test.d.ts +2 -0
- package/dist/runtime.test.d.ts.map +1 -0
- package/dist/runtime.test.js +25 -0
- package/dist/schema.d.ts +5 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +4 -0
- package/dist/sellability/index.d.ts +13 -0
- package/dist/sellability/index.d.ts.map +1 -0
- package/dist/sellability/index.js +17 -0
- package/dist/sellability/routes.d.ts +2332 -0
- package/dist/sellability/routes.d.ts.map +1 -0
- package/dist/sellability/routes.js +166 -0
- package/dist/sellability/schema.d.ts +1716 -0
- package/dist/sellability/schema.d.ts.map +1 -0
- package/dist/sellability/schema.js +278 -0
- package/dist/sellability/service-records.d.ts +316 -0
- package/dist/sellability/service-records.d.ts.map +1 -0
- package/dist/sellability/service-records.js +253 -0
- package/dist/sellability/service-resolve.d.ts +72 -0
- package/dist/sellability/service-resolve.d.ts.map +1 -0
- package/dist/sellability/service-resolve.js +580 -0
- package/dist/sellability/service-shared.d.ts +124 -0
- package/dist/sellability/service-shared.d.ts.map +1 -0
- package/dist/sellability/service-shared.js +96 -0
- package/dist/sellability/service-snapshots.d.ts +191 -0
- package/dist/sellability/service-snapshots.d.ts.map +1 -0
- package/dist/sellability/service-snapshots.js +153 -0
- package/dist/sellability/service.d.ts +1038 -0
- package/dist/sellability/service.d.ts.map +1 -0
- package/dist/sellability/service.js +17 -0
- package/dist/sellability/validation.d.ts +477 -0
- package/dist/sellability/validation.d.ts.map +1 -0
- package/dist/sellability/validation.js +192 -0
- package/dist/types.d.ts +239 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export declare const pricingCategoriesRelations: import("drizzle-orm").Relations<"pricing_categories", {
|
|
2
|
+
childDependencies: import("drizzle-orm").Many<"pricing_category_dependencies">;
|
|
3
|
+
masterDependencies: import("drizzle-orm").Many<"pricing_category_dependencies">;
|
|
4
|
+
unitPriceRules: import("drizzle-orm").Many<"option_unit_price_rules">;
|
|
5
|
+
}>;
|
|
6
|
+
export declare const pricingCategoryDependenciesRelations: import("drizzle-orm").Relations<"pricing_category_dependencies", {
|
|
7
|
+
pricingCategory: import("drizzle-orm").One<"pricing_categories", true>;
|
|
8
|
+
masterPricingCategory: import("drizzle-orm").One<"pricing_categories", true>;
|
|
9
|
+
}>;
|
|
10
|
+
export declare const cancellationPoliciesRelations: import("drizzle-orm").Relations<"cancellation_policies", {
|
|
11
|
+
rules: import("drizzle-orm").Many<"cancellation_policy_rules">;
|
|
12
|
+
optionPriceRules: import("drizzle-orm").Many<"option_price_rules">;
|
|
13
|
+
}>;
|
|
14
|
+
export declare const cancellationPolicyRulesRelations: import("drizzle-orm").Relations<"cancellation_policy_rules", {
|
|
15
|
+
cancellationPolicy: import("drizzle-orm").One<"cancellation_policies", true>;
|
|
16
|
+
}>;
|
|
17
|
+
export declare const priceCatalogsRelations: import("drizzle-orm").Relations<"price_catalogs", {
|
|
18
|
+
schedules: import("drizzle-orm").Many<"price_schedules">;
|
|
19
|
+
optionPriceRules: import("drizzle-orm").Many<"option_price_rules">;
|
|
20
|
+
departureOverrides: import("drizzle-orm").Many<"departure_price_overrides">;
|
|
21
|
+
}>;
|
|
22
|
+
export declare const departurePriceOverridesRelations: import("drizzle-orm").Relations<"departure_price_overrides", {
|
|
23
|
+
priceCatalog: import("drizzle-orm").One<"price_catalogs", true>;
|
|
24
|
+
}>;
|
|
25
|
+
export declare const priceSchedulesRelations: import("drizzle-orm").Relations<"price_schedules", {
|
|
26
|
+
priceCatalog: import("drizzle-orm").One<"price_catalogs", true>;
|
|
27
|
+
optionPriceRules: import("drizzle-orm").Many<"option_price_rules">;
|
|
28
|
+
}>;
|
|
29
|
+
export declare const optionPriceRulesRelations: import("drizzle-orm").Relations<"option_price_rules", {
|
|
30
|
+
priceCatalog: import("drizzle-orm").One<"price_catalogs", true>;
|
|
31
|
+
priceSchedule: import("drizzle-orm").One<"price_schedules", false>;
|
|
32
|
+
cancellationPolicy: import("drizzle-orm").One<"cancellation_policies", false>;
|
|
33
|
+
unitRules: import("drizzle-orm").Many<"option_unit_price_rules">;
|
|
34
|
+
startTimeRules: import("drizzle-orm").Many<"option_start_time_rules">;
|
|
35
|
+
pickupRules: import("drizzle-orm").Many<"pickup_price_rules">;
|
|
36
|
+
dropoffRules: import("drizzle-orm").Many<"dropoff_price_rules">;
|
|
37
|
+
extraRules: import("drizzle-orm").Many<"extra_price_rules">;
|
|
38
|
+
}>;
|
|
39
|
+
export declare const optionUnitPriceRulesRelations: import("drizzle-orm").Relations<"option_unit_price_rules", {
|
|
40
|
+
optionPriceRule: import("drizzle-orm").One<"option_price_rules", true>;
|
|
41
|
+
pricingCategory: import("drizzle-orm").One<"pricing_categories", false>;
|
|
42
|
+
tiers: import("drizzle-orm").Many<"option_unit_tiers">;
|
|
43
|
+
}>;
|
|
44
|
+
export declare const optionStartTimeRulesRelations: import("drizzle-orm").Relations<"option_start_time_rules", {
|
|
45
|
+
optionPriceRule: import("drizzle-orm").One<"option_price_rules", true>;
|
|
46
|
+
}>;
|
|
47
|
+
export declare const optionUnitTiersRelations: import("drizzle-orm").Relations<"option_unit_tiers", {
|
|
48
|
+
optionUnitPriceRule: import("drizzle-orm").One<"option_unit_price_rules", true>;
|
|
49
|
+
}>;
|
|
50
|
+
export declare const pickupPriceRulesRelations: import("drizzle-orm").Relations<"pickup_price_rules", {
|
|
51
|
+
optionPriceRule: import("drizzle-orm").One<"option_price_rules", true>;
|
|
52
|
+
}>;
|
|
53
|
+
export declare const dropoffPriceRulesRelations: import("drizzle-orm").Relations<"dropoff_price_rules", {
|
|
54
|
+
optionPriceRule: import("drizzle-orm").One<"option_price_rules", true>;
|
|
55
|
+
}>;
|
|
56
|
+
export declare const extraPriceRulesRelations: import("drizzle-orm").Relations<"extra_price_rules", {
|
|
57
|
+
optionPriceRule: import("drizzle-orm").One<"option_price_rules", true>;
|
|
58
|
+
}>;
|
|
59
|
+
//# sourceMappingURL=schema-relations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-relations.d.ts","sourceRoot":"","sources":["../../src/pricing/schema-relations.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,0BAA0B;;;;EAIpC,CAAA;AAEH,eAAO,MAAM,oCAAoC;;;EAchD,CAAA;AAED,eAAO,MAAM,6BAA6B;;;EAGvC,CAAA;AAEH,eAAO,MAAM,gCAAgC;;EAK1C,CAAA;AAEH,eAAO,MAAM,sBAAsB;;;;EAIhC,CAAA;AAEH,eAAO,MAAM,gCAAgC;;EAK1C,CAAA;AAEH,eAAO,MAAM,uBAAuB;;;EAMjC,CAAA;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;EAkBnC,CAAA;AAEH,eAAO,MAAM,6BAA6B;;;;EAUvC,CAAA;AAEH,eAAO,MAAM,6BAA6B;;EAKvC,CAAA;AAEH,eAAO,MAAM,wBAAwB;;EAKlC,CAAA;AAEH,eAAO,MAAM,yBAAyB;;EAKnC,CAAA;AAEH,eAAO,MAAM,0BAA0B;;EAKpC,CAAA;AAEH,eAAO,MAAM,wBAAwB;;EAKlC,CAAA"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { relations } from "drizzle-orm";
|
|
2
|
+
import { priceCatalogs, priceSchedules } from "./schema-catalogs.js";
|
|
3
|
+
import { pricingCategories, pricingCategoryDependencies } from "./schema-categories.js";
|
|
4
|
+
import { departurePriceOverrides } from "./schema-departure-overrides.js";
|
|
5
|
+
import { dropoffPriceRules, extraPriceRules, optionPriceRules, optionStartTimeRules, optionUnitPriceRules, optionUnitTiers, pickupPriceRules, } from "./schema-option-rules.js";
|
|
6
|
+
import { cancellationPolicies, cancellationPolicyRules } from "./schema-policies.js";
|
|
7
|
+
export const pricingCategoriesRelations = relations(pricingCategories, ({ many }) => ({
|
|
8
|
+
childDependencies: many(pricingCategoryDependencies, { relationName: "pricingCategoryChild" }),
|
|
9
|
+
masterDependencies: many(pricingCategoryDependencies, { relationName: "pricingCategoryMaster" }),
|
|
10
|
+
unitPriceRules: many(optionUnitPriceRules),
|
|
11
|
+
}));
|
|
12
|
+
export const pricingCategoryDependenciesRelations = relations(pricingCategoryDependencies, ({ one }) => ({
|
|
13
|
+
pricingCategory: one(pricingCategories, {
|
|
14
|
+
relationName: "pricingCategoryChild",
|
|
15
|
+
fields: [pricingCategoryDependencies.pricingCategoryId],
|
|
16
|
+
references: [pricingCategories.id],
|
|
17
|
+
}),
|
|
18
|
+
masterPricingCategory: one(pricingCategories, {
|
|
19
|
+
relationName: "pricingCategoryMaster",
|
|
20
|
+
fields: [pricingCategoryDependencies.masterPricingCategoryId],
|
|
21
|
+
references: [pricingCategories.id],
|
|
22
|
+
}),
|
|
23
|
+
}));
|
|
24
|
+
export const cancellationPoliciesRelations = relations(cancellationPolicies, ({ many }) => ({
|
|
25
|
+
rules: many(cancellationPolicyRules),
|
|
26
|
+
optionPriceRules: many(optionPriceRules),
|
|
27
|
+
}));
|
|
28
|
+
export const cancellationPolicyRulesRelations = relations(cancellationPolicyRules, ({ one }) => ({
|
|
29
|
+
cancellationPolicy: one(cancellationPolicies, {
|
|
30
|
+
fields: [cancellationPolicyRules.cancellationPolicyId],
|
|
31
|
+
references: [cancellationPolicies.id],
|
|
32
|
+
}),
|
|
33
|
+
}));
|
|
34
|
+
export const priceCatalogsRelations = relations(priceCatalogs, ({ many }) => ({
|
|
35
|
+
schedules: many(priceSchedules),
|
|
36
|
+
optionPriceRules: many(optionPriceRules),
|
|
37
|
+
departureOverrides: many(departurePriceOverrides),
|
|
38
|
+
}));
|
|
39
|
+
export const departurePriceOverridesRelations = relations(departurePriceOverrides, ({ one }) => ({
|
|
40
|
+
priceCatalog: one(priceCatalogs, {
|
|
41
|
+
fields: [departurePriceOverrides.priceCatalogId],
|
|
42
|
+
references: [priceCatalogs.id],
|
|
43
|
+
}),
|
|
44
|
+
}));
|
|
45
|
+
export const priceSchedulesRelations = relations(priceSchedules, ({ one, many }) => ({
|
|
46
|
+
priceCatalog: one(priceCatalogs, {
|
|
47
|
+
fields: [priceSchedules.priceCatalogId],
|
|
48
|
+
references: [priceCatalogs.id],
|
|
49
|
+
}),
|
|
50
|
+
optionPriceRules: many(optionPriceRules),
|
|
51
|
+
}));
|
|
52
|
+
export const optionPriceRulesRelations = relations(optionPriceRules, ({ one, many }) => ({
|
|
53
|
+
priceCatalog: one(priceCatalogs, {
|
|
54
|
+
fields: [optionPriceRules.priceCatalogId],
|
|
55
|
+
references: [priceCatalogs.id],
|
|
56
|
+
}),
|
|
57
|
+
priceSchedule: one(priceSchedules, {
|
|
58
|
+
fields: [optionPriceRules.priceScheduleId],
|
|
59
|
+
references: [priceSchedules.id],
|
|
60
|
+
}),
|
|
61
|
+
cancellationPolicy: one(cancellationPolicies, {
|
|
62
|
+
fields: [optionPriceRules.cancellationPolicyId],
|
|
63
|
+
references: [cancellationPolicies.id],
|
|
64
|
+
}),
|
|
65
|
+
unitRules: many(optionUnitPriceRules),
|
|
66
|
+
startTimeRules: many(optionStartTimeRules),
|
|
67
|
+
pickupRules: many(pickupPriceRules),
|
|
68
|
+
dropoffRules: many(dropoffPriceRules),
|
|
69
|
+
extraRules: many(extraPriceRules),
|
|
70
|
+
}));
|
|
71
|
+
export const optionUnitPriceRulesRelations = relations(optionUnitPriceRules, ({ one, many }) => ({
|
|
72
|
+
optionPriceRule: one(optionPriceRules, {
|
|
73
|
+
fields: [optionUnitPriceRules.optionPriceRuleId],
|
|
74
|
+
references: [optionPriceRules.id],
|
|
75
|
+
}),
|
|
76
|
+
pricingCategory: one(pricingCategories, {
|
|
77
|
+
fields: [optionUnitPriceRules.pricingCategoryId],
|
|
78
|
+
references: [pricingCategories.id],
|
|
79
|
+
}),
|
|
80
|
+
tiers: many(optionUnitTiers),
|
|
81
|
+
}));
|
|
82
|
+
export const optionStartTimeRulesRelations = relations(optionStartTimeRules, ({ one }) => ({
|
|
83
|
+
optionPriceRule: one(optionPriceRules, {
|
|
84
|
+
fields: [optionStartTimeRules.optionPriceRuleId],
|
|
85
|
+
references: [optionPriceRules.id],
|
|
86
|
+
}),
|
|
87
|
+
}));
|
|
88
|
+
export const optionUnitTiersRelations = relations(optionUnitTiers, ({ one }) => ({
|
|
89
|
+
optionUnitPriceRule: one(optionUnitPriceRules, {
|
|
90
|
+
fields: [optionUnitTiers.optionUnitPriceRuleId],
|
|
91
|
+
references: [optionUnitPriceRules.id],
|
|
92
|
+
}),
|
|
93
|
+
}));
|
|
94
|
+
export const pickupPriceRulesRelations = relations(pickupPriceRules, ({ one }) => ({
|
|
95
|
+
optionPriceRule: one(optionPriceRules, {
|
|
96
|
+
fields: [pickupPriceRules.optionPriceRuleId],
|
|
97
|
+
references: [optionPriceRules.id],
|
|
98
|
+
}),
|
|
99
|
+
}));
|
|
100
|
+
export const dropoffPriceRulesRelations = relations(dropoffPriceRules, ({ one }) => ({
|
|
101
|
+
optionPriceRule: one(optionPriceRules, {
|
|
102
|
+
fields: [dropoffPriceRules.optionPriceRuleId],
|
|
103
|
+
references: [optionPriceRules.id],
|
|
104
|
+
}),
|
|
105
|
+
}));
|
|
106
|
+
export const extraPriceRulesRelations = relations(extraPriceRules, ({ one }) => ({
|
|
107
|
+
optionPriceRule: one(optionPriceRules, {
|
|
108
|
+
fields: [extraPriceRules.optionPriceRuleId],
|
|
109
|
+
references: [optionPriceRules.id],
|
|
110
|
+
}),
|
|
111
|
+
}));
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const pricingCategoryTypeEnum: import("drizzle-orm/pg-core").PgEnum<["adult", "child", "infant", "senior", "group", "room", "vehicle", "service", "other"]>;
|
|
2
|
+
export declare const pricingDependencyTypeEnum: import("drizzle-orm/pg-core").PgEnum<["requires", "limits_per_master", "limits_sum", "excludes"]>;
|
|
3
|
+
export declare const cancellationPolicyTypeEnum: import("drizzle-orm/pg-core").PgEnum<["simple", "advanced", "non_refundable", "custom"]>;
|
|
4
|
+
export declare const cancellationChargeTypeEnum: import("drizzle-orm/pg-core").PgEnum<["none", "amount", "percentage"]>;
|
|
5
|
+
export declare const priceCatalogTypeEnum: import("drizzle-orm/pg-core").PgEnum<["public", "contract", "net", "gross", "promo", "internal", "other"]>;
|
|
6
|
+
export declare const optionPricingModeEnum: import("drizzle-orm/pg-core").PgEnum<["per_person", "per_booking", "starting_from", "free", "on_request"]>;
|
|
7
|
+
export declare const optionUnitPricingModeEnum: import("drizzle-orm/pg-core").PgEnum<["per_unit", "per_person", "per_booking", "included", "free", "on_request"]>;
|
|
8
|
+
export declare const optionStartTimeRuleModeEnum: import("drizzle-orm/pg-core").PgEnum<["included", "excluded", "override", "adjustment"]>;
|
|
9
|
+
export declare const priceAdjustmentTypeEnum: import("drizzle-orm/pg-core").PgEnum<["fixed", "percentage"]>;
|
|
10
|
+
export declare const addonPricingModeEnum: import("drizzle-orm/pg-core").PgEnum<["included", "per_person", "per_booking", "on_request", "unavailable"]>;
|
|
11
|
+
//# sourceMappingURL=schema-shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-shared.d.ts","sourceRoot":"","sources":["../../src/pricing/schema-shared.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,uBAAuB,8HAUlC,CAAA;AAEF,eAAO,MAAM,yBAAyB,mGAKpC,CAAA;AAEF,eAAO,MAAM,0BAA0B,0FAKrC,CAAA;AAEF,eAAO,MAAM,0BAA0B,wEAIrC,CAAA;AAEF,eAAO,MAAM,oBAAoB,4GAQ/B,CAAA;AAEF,eAAO,MAAM,qBAAqB,4GAMhC,CAAA;AAEF,eAAO,MAAM,yBAAyB,mHAOpC,CAAA;AAEF,eAAO,MAAM,2BAA2B,0FAKtC,CAAA;AAEF,eAAO,MAAM,uBAAuB,+DAA2D,CAAA;AAE/F,eAAO,MAAM,oBAAoB,8GAM/B,CAAA"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { pgEnum } from "drizzle-orm/pg-core";
|
|
2
|
+
export const pricingCategoryTypeEnum = pgEnum("pricing_category_type", [
|
|
3
|
+
"adult",
|
|
4
|
+
"child",
|
|
5
|
+
"infant",
|
|
6
|
+
"senior",
|
|
7
|
+
"group",
|
|
8
|
+
"room",
|
|
9
|
+
"vehicle",
|
|
10
|
+
"service",
|
|
11
|
+
"other",
|
|
12
|
+
]);
|
|
13
|
+
export const pricingDependencyTypeEnum = pgEnum("pricing_dependency_type", [
|
|
14
|
+
"requires",
|
|
15
|
+
"limits_per_master",
|
|
16
|
+
"limits_sum",
|
|
17
|
+
"excludes",
|
|
18
|
+
]);
|
|
19
|
+
export const cancellationPolicyTypeEnum = pgEnum("cancellation_policy_type", [
|
|
20
|
+
"simple",
|
|
21
|
+
"advanced",
|
|
22
|
+
"non_refundable",
|
|
23
|
+
"custom",
|
|
24
|
+
]);
|
|
25
|
+
export const cancellationChargeTypeEnum = pgEnum("cancellation_charge_type", [
|
|
26
|
+
"none",
|
|
27
|
+
"amount",
|
|
28
|
+
"percentage",
|
|
29
|
+
]);
|
|
30
|
+
export const priceCatalogTypeEnum = pgEnum("price_catalog_type", [
|
|
31
|
+
"public",
|
|
32
|
+
"contract",
|
|
33
|
+
"net",
|
|
34
|
+
"gross",
|
|
35
|
+
"promo",
|
|
36
|
+
"internal",
|
|
37
|
+
"other",
|
|
38
|
+
]);
|
|
39
|
+
export const optionPricingModeEnum = pgEnum("option_pricing_mode", [
|
|
40
|
+
"per_person",
|
|
41
|
+
"per_booking",
|
|
42
|
+
"starting_from",
|
|
43
|
+
"free",
|
|
44
|
+
"on_request",
|
|
45
|
+
]);
|
|
46
|
+
export const optionUnitPricingModeEnum = pgEnum("option_unit_pricing_mode", [
|
|
47
|
+
"per_unit",
|
|
48
|
+
"per_person",
|
|
49
|
+
"per_booking",
|
|
50
|
+
"included",
|
|
51
|
+
"free",
|
|
52
|
+
"on_request",
|
|
53
|
+
]);
|
|
54
|
+
export const optionStartTimeRuleModeEnum = pgEnum("option_start_time_rule_mode", [
|
|
55
|
+
"included",
|
|
56
|
+
"excluded",
|
|
57
|
+
"override",
|
|
58
|
+
"adjustment",
|
|
59
|
+
]);
|
|
60
|
+
export const priceAdjustmentTypeEnum = pgEnum("price_adjustment_type", ["fixed", "percentage"]);
|
|
61
|
+
export const addonPricingModeEnum = pgEnum("addon_pricing_mode", [
|
|
62
|
+
"included",
|
|
63
|
+
"per_person",
|
|
64
|
+
"per_booking",
|
|
65
|
+
"on_request",
|
|
66
|
+
"unavailable",
|
|
67
|
+
]);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from "./schema-catalogs.js";
|
|
2
|
+
export * from "./schema-categories.js";
|
|
3
|
+
export * from "./schema-departure-overrides.js";
|
|
4
|
+
export * from "./schema-option-rules.js";
|
|
5
|
+
export * from "./schema-policies.js";
|
|
6
|
+
export * from "./schema-relations.js";
|
|
7
|
+
export * from "./schema-shared.js";
|
|
8
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/pricing/schema.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from "./schema-catalogs.js";
|
|
2
|
+
export * from "./schema-categories.js";
|
|
3
|
+
export * from "./schema-departure-overrides.js";
|
|
4
|
+
export * from "./schema-option-rules.js";
|
|
5
|
+
export * from "./schema-policies.js";
|
|
6
|
+
export * from "./schema-relations.js";
|
|
7
|
+
export * from "./schema-shared.js";
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Projection extension that aggregates a "price from" amount across the
|
|
3
|
+
* product's future bookable rate-plan prices and contributes
|
|
4
|
+
* `priceFromAmountCents`, `priceFromCurrency`, and `hasPricing` to the
|
|
5
|
+
* product search document.
|
|
6
|
+
*
|
|
7
|
+
* Lives in `@voyant-travel/commerce` because:
|
|
8
|
+
* - The data lives here (`option_price_rules`, `option_unit_price_rules`,
|
|
9
|
+
* `price_catalogs`).
|
|
10
|
+
* - Product owns the document-builder implementation, while this package
|
|
11
|
+
* exposes a structural extension that satisfies that builder contract.
|
|
12
|
+
*
|
|
13
|
+
* Wire via `createProductDocumentBuilder({ extensions: [pricingExtension] })`
|
|
14
|
+
* after composing `productPricingCatalogPolicy` into the registry.
|
|
15
|
+
*
|
|
16
|
+
* Scope intentionally narrow:
|
|
17
|
+
* - **No schedule-aware rule resolution.** Only `is_default = true`
|
|
18
|
+
* rules contribute. Seasonal / promo rules with schedules don't
|
|
19
|
+
* surface here; they require per-slice rule evaluation beyond the
|
|
20
|
+
* future-departure presence check below.
|
|
21
|
+
* - **No per-departure overrides.** Same reason.
|
|
22
|
+
* - **Currency consistency.** Only rules whose catalog currency matches
|
|
23
|
+
* the product's `sellCurrency` (or whose catalog currency is null
|
|
24
|
+
* and therefore inherits the product's) are MIN'd together.
|
|
25
|
+
*
|
|
26
|
+
* Document churn: this projection is `now()`-dependent because it only
|
|
27
|
+
* considers future bookable departures. A product can move to "unpriced"
|
|
28
|
+
* once its final departure starts unless a row-level fallback remains.
|
|
29
|
+
*/
|
|
30
|
+
import type { IndexerSlice } from "@voyant-travel/catalog";
|
|
31
|
+
import type { AnyDrizzleDb } from "@voyant-travel/db";
|
|
32
|
+
interface PricingProjectionOptions {
|
|
33
|
+
/**
|
|
34
|
+
* Resolve the product's row-level `sellAmountCents` + `sellCurrency`.
|
|
35
|
+
* Templates use the default raw-SQL loader; tests can stub it without
|
|
36
|
+
* standing up the products schema.
|
|
37
|
+
*
|
|
38
|
+
* Returns `null` for both fields when the product doesn't exist.
|
|
39
|
+
*/
|
|
40
|
+
loadProductPricing?: (db: AnyDrizzleDb, productId: string) => Promise<{
|
|
41
|
+
sellAmountCents: number | null;
|
|
42
|
+
sellCurrency: string | null;
|
|
43
|
+
}>;
|
|
44
|
+
/**
|
|
45
|
+
* Resolve future bookable rate-plan prices for the product. Tests can
|
|
46
|
+
* stub this without standing up availability/product option tables.
|
|
47
|
+
*/
|
|
48
|
+
loadRatePlanPricing?: (db: AnyDrizzleDb, productId: string, productCurrency: string) => Promise<RatePlanPricing>;
|
|
49
|
+
}
|
|
50
|
+
interface PricingAggregate {
|
|
51
|
+
priceFromAmountCents: number | null;
|
|
52
|
+
priceFromCurrency: string | null;
|
|
53
|
+
hasPricing: boolean;
|
|
54
|
+
}
|
|
55
|
+
interface RatePlanPricing {
|
|
56
|
+
roomPrices: number[];
|
|
57
|
+
basePrices: number[];
|
|
58
|
+
}
|
|
59
|
+
export interface ProductProjectionExtension {
|
|
60
|
+
readonly name: string;
|
|
61
|
+
project(db: AnyDrizzleDb, productId: string, slice: IndexerSlice): Promise<ReadonlyMap<string, unknown>>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Pure aggregation kernel. Room prices take precedence over base/unit
|
|
65
|
+
* prices, which take precedence over the product-row fallback. Non-
|
|
66
|
+
* positive values are treated as absent so stale `0` caches don't block
|
|
67
|
+
* nullish fallbacks in catalog consumers.
|
|
68
|
+
*/
|
|
69
|
+
declare function aggregatePricing(productPrice: number | null, currency: string | null, roomPrices: ReadonlyArray<number>, basePrices: ReadonlyArray<number>): PricingAggregate;
|
|
70
|
+
/**
|
|
71
|
+
* Construct the pricing projection extension.
|
|
72
|
+
*
|
|
73
|
+
* Pass loaders in tests to stub DB reads; production uses raw SQL against
|
|
74
|
+
* the deployed schema.
|
|
75
|
+
*/
|
|
76
|
+
export declare function createProductPricingProjectionExtension(options?: PricingProjectionOptions): ProductProjectionExtension;
|
|
77
|
+
/**
|
|
78
|
+
* Resolve the same "from price" value emitted by the pricing projection.
|
|
79
|
+
* Promotion projection wiring uses this so strikethrough base prices
|
|
80
|
+
* follow the same rate-plan-first fallback chain.
|
|
81
|
+
*/
|
|
82
|
+
export declare function loadProductPriceFrom(db: AnyDrizzleDb, productId: string): Promise<{
|
|
83
|
+
amountCents: number | null;
|
|
84
|
+
currency: string | null;
|
|
85
|
+
}>;
|
|
86
|
+
declare function firstPositiveMin(values: ReadonlyArray<number>): number | null;
|
|
87
|
+
declare function isMissingCatalogPricingDependencyError(error: unknown): boolean;
|
|
88
|
+
export declare const __test__: {
|
|
89
|
+
aggregatePricing: typeof aggregatePricing;
|
|
90
|
+
EMPTY_AGGREGATE: PricingAggregate;
|
|
91
|
+
firstPositiveMin: typeof firstPositiveMin;
|
|
92
|
+
isMissingCatalogPricingDependencyError: typeof isMissingCatalogPricingDependencyError;
|
|
93
|
+
};
|
|
94
|
+
export {};
|
|
95
|
+
//# sourceMappingURL=service-catalog-plane-pricing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-catalog-plane-pricing.d.ts","sourceRoot":"","sources":["../../src/pricing/service-catalog-plane-pricing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGrD,UAAU,wBAAwB;IAChC;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,CACnB,EAAE,EAAE,YAAY,EAChB,SAAS,EAAE,MAAM,KACd,OAAO,CAAC;QAAE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAA;IAE7E;;;OAGG;IACH,mBAAmB,CAAC,EAAE,CACpB,EAAE,EAAE,YAAY,EAChB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,KACpB,OAAO,CAAC,eAAe,CAAC,CAAA;CAC9B;AAED,UAAU,gBAAgB;IACxB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,UAAU,EAAE,OAAO,CAAA;CACpB;AAED,UAAU,eAAe;IACvB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,UAAU,EAAE,MAAM,EAAE,CAAA;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,OAAO,CACL,EAAE,EAAE,YAAY,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CACzC;AAQD;;;;;GAKG;AACH,iBAAS,gBAAgB,CACvB,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,EACjC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,GAChC,gBAAgB,CAYlB;AAED;;;;;GAKG;AACH,wBAAgB,uCAAuC,CACrD,OAAO,GAAE,wBAA6B,GACrC,0BAA0B,CA2B5B;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,YAAY,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAclE;AAoRD,iBAAS,gBAAgB,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAOtE;AAYD,iBAAS,sCAAsC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAWvE;AAWD,eAAO,MAAM,QAAQ;;;;;CAKpB,CAAA"}
|