@final-commerce/command-frame 0.6.2-staging3.1 → 0.7.0-staging.10
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/CommonTypes.d.ts +26 -14
- package/dist/actions/add-booking-to-cart/action.d.ts +6 -0
- package/dist/actions/add-booking-to-cart/action.js +8 -0
- package/dist/actions/add-booking-to-cart/mock.d.ts +2 -0
- package/dist/actions/add-booking-to-cart/mock.js +42 -0
- package/dist/actions/add-booking-to-cart/types.d.ts +23 -0
- package/dist/actions/add-product-to-cart/mock.js +1 -18
- package/dist/actions/add-product-to-cart/types.d.ts +0 -10
- package/dist/actions/cancel-booking/action.d.ts +6 -0
- package/dist/actions/cancel-booking/action.js +8 -0
- package/dist/actions/cancel-booking/mock.d.ts +2 -0
- package/dist/actions/cancel-booking/mock.js +10 -0
- package/dist/actions/cancel-booking/types.d.ts +10 -0
- package/dist/actions/get-booking-availability/action.d.ts +6 -0
- package/dist/actions/get-booking-availability/action.js +8 -0
- package/dist/actions/get-booking-availability/mock.d.ts +2 -0
- package/dist/actions/get-booking-availability/mock.js +6 -0
- package/dist/actions/get-booking-availability/types.d.ts +18 -0
- package/dist/actions/get-booking-resources/action.d.ts +6 -0
- package/dist/actions/get-booking-resources/action.js +8 -0
- package/dist/actions/get-booking-resources/mock.d.ts +2 -0
- package/dist/actions/get-booking-resources/mock.js +7 -0
- package/dist/actions/get-booking-resources/types.d.ts +12 -0
- package/dist/actions/get-booking-resources/types.js +1 -0
- package/dist/actions/get-bookings/action.d.ts +6 -0
- package/dist/actions/get-bookings/action.js +8 -0
- package/dist/actions/get-bookings/mock.d.ts +2 -0
- package/dist/actions/get-bookings/mock.js +20 -0
- package/dist/actions/get-bookings/types.d.ts +18 -0
- package/dist/actions/get-bookings/types.js +1 -0
- package/dist/actions/get-context/mock.js +4 -0
- package/dist/actions/get-refund-plan/types.d.ts +5 -2
- package/dist/actions/get-remaining-refundable-quantities/mock.js +1 -0
- package/dist/actions/get-remaining-refundable-quantities/types.d.ts +8 -0
- package/dist/actions/hold-booking/action.d.ts +6 -0
- package/dist/actions/hold-booking/action.js +8 -0
- package/dist/actions/hold-booking/mock.d.ts +2 -0
- package/dist/actions/hold-booking/mock.js +33 -0
- package/dist/actions/hold-booking/types.d.ts +24 -0
- package/dist/actions/hold-booking/types.js +1 -0
- package/dist/actions/process-partial-refund/types.d.ts +2 -2
- package/dist/actions/remove-booking-from-cart/action.d.ts +6 -0
- package/dist/actions/remove-booking-from-cart/action.js +8 -0
- package/dist/actions/remove-booking-from-cart/mock.d.ts +2 -0
- package/dist/actions/remove-booking-from-cart/mock.js +26 -0
- package/dist/actions/remove-booking-from-cart/types.d.ts +12 -0
- package/dist/actions/remove-booking-from-cart/types.js +1 -0
- package/dist/demo/database.d.ts +12 -24
- package/dist/demo/database.js +121 -62
- package/dist/index.d.ts +16 -4
- package/dist/index.js +15 -4
- package/dist/projects/render/mocks.js +14 -4
- package/dist/projects/render/types.d.ts +8 -3
- package/dist/pubsub/topics/bookings/booking-created/types.d.ts +6 -0
- package/dist/pubsub/topics/bookings/booking-created/types.js +1 -0
- package/dist/pubsub/topics/bookings/booking-setup-changed/types.d.ts +15 -0
- package/dist/pubsub/topics/bookings/booking-setup-changed/types.js +1 -0
- package/dist/pubsub/topics/bookings/booking-updated/types.d.ts +6 -0
- package/dist/pubsub/topics/bookings/booking-updated/types.js +1 -0
- package/dist/pubsub/topics/bookings/index.d.ts +3 -0
- package/dist/pubsub/topics/bookings/index.js +27 -0
- package/dist/pubsub/topics/bookings/types.d.ts +8 -0
- package/dist/pubsub/topics/bookings/types.js +3 -0
- package/dist/pubsub/topics/cart/types.d.ts +2 -4
- package/dist/pubsub/topics/cart/types.js +0 -1
- package/dist/pubsub/topics/index.d.ts +17 -16
- package/dist/pubsub/topics/index.js +17 -16
- package/dist/pubsub/topics/types.d.ts +2 -0
- package/package.json +2 -2
- package/dist/actions/get-product-modifier-selections/action.d.ts +0 -6
- package/dist/actions/get-product-modifier-selections/action.js +0 -8
- package/dist/actions/get-product-modifier-selections/mock.d.ts +0 -2
- package/dist/actions/get-product-modifier-selections/mock.js +0 -30
- package/dist/actions/get-product-modifier-selections/types.d.ts +0 -23
- package/dist/actions/set-product-modifier-selections/action.d.ts +0 -6
- package/dist/actions/set-product-modifier-selections/action.js +0 -8
- package/dist/actions/set-product-modifier-selections/mock.d.ts +0 -2
- package/dist/actions/set-product-modifier-selections/mock.js +0 -49
- package/dist/actions/set-product-modifier-selections/types.d.ts +0 -27
- package/dist/pubsub/topics/cart/product-modifiers-updated/types.d.ts +0 -16
- /package/dist/actions/{get-product-modifier-selections → add-booking-to-cart}/types.js +0 -0
- /package/dist/actions/{set-product-modifier-selections → cancel-booking}/types.js +0 -0
- /package/dist/{pubsub/topics/cart/product-modifiers-updated → actions/get-booking-availability}/types.js +0 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './booking-created/types';
|
|
2
|
+
export * from './booking-updated/types';
|
|
3
|
+
export * from './booking-setup-changed/types';
|
|
4
|
+
import type { BookingCreatedPayload } from './booking-created/types';
|
|
5
|
+
import type { BookingUpdatedPayload } from './booking-updated/types';
|
|
6
|
+
import type { BookingSetupChangedPayload } from './booking-setup-changed/types';
|
|
7
|
+
export type BookingsEventPayload = BookingCreatedPayload | BookingUpdatedPayload | BookingSetupChangedPayload;
|
|
8
|
+
export type BookingsEventType = 'booking-created' | 'booking-updated' | 'booking-setup-changed';
|
|
@@ -17,7 +17,6 @@ export * from "./product-fee-added/types";
|
|
|
17
17
|
export * from "./product-fee-removed/types";
|
|
18
18
|
export * from "./product-note-added/types";
|
|
19
19
|
export * from "./product-note-removed/types";
|
|
20
|
-
export * from "./product-modifiers-updated/types";
|
|
21
20
|
import type { CartCreatedPayload } from "./cart-created/types";
|
|
22
21
|
import type { CartCustomerAssignedPayload } from "./customer-assigned/types";
|
|
23
22
|
import type { ProductAddedPayload } from "./product-added/types";
|
|
@@ -33,6 +32,5 @@ import type { ProductFeeAddedPayload } from "./product-fee-added/types";
|
|
|
33
32
|
import type { ProductFeeRemovedPayload } from "./product-fee-removed/types";
|
|
34
33
|
import type { ProductNoteAddedPayload } from "./product-note-added/types";
|
|
35
34
|
import type { ProductNoteRemovedPayload } from "./product-note-removed/types";
|
|
36
|
-
|
|
37
|
-
export type
|
|
38
|
-
export type CartEventType = "cart-created" | "customer-assigned" | "customer-unassigned" | "product-added" | "product-deleted" | "product-updated" | "cart-discount-added" | "cart-discount-removed" | "cart-fee-added" | "cart-fee-removed" | "product-discount-added" | "product-discount-removed" | "product-fee-added" | "product-fee-removed" | "product-note-added" | "product-note-removed" | "product-modifiers-updated";
|
|
35
|
+
export type CartEventPayload = CartCreatedPayload | CartCustomerAssignedPayload | ProductAddedPayload | ProductDeletedPayload | CartProductUpdatedPayload | CartDiscountAddedPayload | CartDiscountRemovedPayload | CartFeeAddedPayload | CartFeeRemovedPayload | ProductDiscountAddedPayload | ProductDiscountRemovedPayload | ProductFeeAddedPayload | ProductFeeRemovedPayload | ProductNoteAddedPayload | ProductNoteRemovedPayload;
|
|
36
|
+
export type CartEventType = "cart-created" | "customer-assigned" | "customer-unassigned" | "product-added" | "product-deleted" | "product-updated" | "cart-discount-added" | "cart-discount-removed" | "cart-fee-added" | "cart-fee-removed" | "product-discount-added" | "product-discount-removed" | "product-fee-added" | "product-fee-removed" | "product-note-added" | "product-note-removed";
|
|
@@ -2,19 +2,20 @@
|
|
|
2
2
|
* Pub/Sub Topics
|
|
3
3
|
* Export all available topics and their types
|
|
4
4
|
*/
|
|
5
|
-
export * from
|
|
6
|
-
export * from
|
|
7
|
-
export * from
|
|
8
|
-
export * from
|
|
9
|
-
export * from
|
|
10
|
-
export * from
|
|
11
|
-
export * from
|
|
12
|
-
export * from
|
|
13
|
-
export * from
|
|
14
|
-
export * from
|
|
15
|
-
export * from
|
|
16
|
-
export * from
|
|
17
|
-
export * from
|
|
18
|
-
export * from
|
|
19
|
-
export * from
|
|
20
|
-
export * from
|
|
5
|
+
export * from './customers';
|
|
6
|
+
export * from './orders';
|
|
7
|
+
export * from './bookings';
|
|
8
|
+
export * from './refunds';
|
|
9
|
+
export * from './products';
|
|
10
|
+
export * from './cart';
|
|
11
|
+
export * from './payments';
|
|
12
|
+
export * from './custom-tables';
|
|
13
|
+
export * from './print';
|
|
14
|
+
export * from './outlet';
|
|
15
|
+
export * from './station';
|
|
16
|
+
export * from './session';
|
|
17
|
+
export * from './users';
|
|
18
|
+
export * from './variants';
|
|
19
|
+
export * from './transactions';
|
|
20
|
+
export * from './categories';
|
|
21
|
+
export * from './attributes';
|
|
@@ -2,19 +2,20 @@
|
|
|
2
2
|
* Pub/Sub Topics
|
|
3
3
|
* Export all available topics and their types
|
|
4
4
|
*/
|
|
5
|
-
export * from
|
|
6
|
-
export * from
|
|
7
|
-
export * from
|
|
8
|
-
export * from
|
|
9
|
-
export * from
|
|
10
|
-
export * from
|
|
11
|
-
export * from
|
|
12
|
-
export * from
|
|
13
|
-
export * from
|
|
14
|
-
export * from
|
|
15
|
-
export * from
|
|
16
|
-
export * from
|
|
17
|
-
export * from
|
|
18
|
-
export * from
|
|
19
|
-
export * from
|
|
20
|
-
export * from
|
|
5
|
+
export * from './customers';
|
|
6
|
+
export * from './orders';
|
|
7
|
+
export * from './bookings';
|
|
8
|
+
export * from './refunds';
|
|
9
|
+
export * from './products';
|
|
10
|
+
export * from './cart';
|
|
11
|
+
export * from './payments';
|
|
12
|
+
export * from './custom-tables';
|
|
13
|
+
export * from './print';
|
|
14
|
+
export * from './outlet';
|
|
15
|
+
export * from './station';
|
|
16
|
+
export * from './session';
|
|
17
|
+
export * from './users';
|
|
18
|
+
export * from './variants';
|
|
19
|
+
export * from './transactions';
|
|
20
|
+
export * from './categories';
|
|
21
|
+
export * from './attributes';
|
|
@@ -15,6 +15,7 @@ import { VariantsEventType, VariantsEventPayload } from "./variants/types";
|
|
|
15
15
|
import { TransactionsEventType, TransactionsEventPayload } from "./transactions/types";
|
|
16
16
|
import { CategoriesEventType, CategoriesEventPayload } from "./categories/types";
|
|
17
17
|
import { AttributesEventType, AttributesEventPayload } from "./attributes/types";
|
|
18
|
+
import { BookingsEventType, BookingsEventPayload } from "./bookings/types";
|
|
18
19
|
export interface TopicEventPayloadMap {
|
|
19
20
|
customers: Record<CustomersEventType, CustomersEventPayload>;
|
|
20
21
|
orders: Record<OrdersEventType, OrdersEventPayload>;
|
|
@@ -33,4 +34,5 @@ export interface TopicEventPayloadMap {
|
|
|
33
34
|
transactions: Record<TransactionsEventType, TransactionsEventPayload>;
|
|
34
35
|
categories: Record<CategoriesEventType, CategoriesEventPayload>;
|
|
35
36
|
attributes: Record<AttributesEventType, AttributesEventPayload>;
|
|
37
|
+
bookings: Record<BookingsEventType, BookingsEventPayload>;
|
|
36
38
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@final-commerce/command-frame",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0-staging.10",
|
|
4
4
|
"description": "Commands Frame library",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"ignoreBranchesMissingTickets": true
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
|
-
"@final-commerce/common": "2.
|
|
60
|
+
"@final-commerce/common": "2.3.0-staging.7"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
63
|
"@commitlint/cli": "^19.0.0",
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Get product modifier selections action (read-only)
|
|
3
|
-
* Calls the getProductModifierSelections action on the parent window
|
|
4
|
-
*/
|
|
5
|
-
import type { GetProductModifierSelections } from "./types";
|
|
6
|
-
export declare const getProductModifierSelections: GetProductModifierSelections;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Get product modifier selections action (read-only)
|
|
3
|
-
* Calls the getProductModifierSelections action on the parent window
|
|
4
|
-
*/
|
|
5
|
-
import { commandFrameClient } from "../../client";
|
|
6
|
-
export const getProductModifierSelections = async (params) => {
|
|
7
|
-
return await commandFrameClient.call("getProductModifierSelections", params);
|
|
8
|
-
};
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { MOCK_CART, buildModifierRows } from "../../demo/database";
|
|
2
|
-
export const mockGetProductModifierSelections = async (params) => {
|
|
3
|
-
console.log("[Mock] getProductModifierSelections called", params);
|
|
4
|
-
// Read the line's stored selections from the mock cart (last line when no internalId).
|
|
5
|
-
const line = params?.internalId
|
|
6
|
-
? MOCK_CART.products.find((p) => p.internalId === params.internalId)
|
|
7
|
-
: MOCK_CART.products[MOCK_CART.products.length - 1];
|
|
8
|
-
if (!line) {
|
|
9
|
-
return {
|
|
10
|
-
success: false,
|
|
11
|
-
reason: "No matching cart line",
|
|
12
|
-
internalId: params?.internalId,
|
|
13
|
-
selections: [],
|
|
14
|
-
rows: [],
|
|
15
|
-
modifiersTotal: 0,
|
|
16
|
-
timestamp: new Date().toISOString()
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
// The priced rows already sit on the line; extending them by the line quantity is
|
|
20
|
-
// the host's job, not the flow's.
|
|
21
|
-
const { rows, modifiersTotal } = buildModifierRows(line.modifiers, line.quantity);
|
|
22
|
-
return {
|
|
23
|
-
success: true,
|
|
24
|
-
internalId: line.internalId,
|
|
25
|
-
selections: line.modifierSelections ?? [],
|
|
26
|
-
rows,
|
|
27
|
-
modifiersTotal,
|
|
28
|
-
timestamp: new Date().toISOString()
|
|
29
|
-
};
|
|
30
|
-
};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import type { CFModifierSelection, CFModifierChoiceSelection, CFProdModifierBreakdown } from "../../CommonTypes";
|
|
2
|
-
/** Alias of common's — `quantity` is units PER LINE-ITEM UNIT. */
|
|
3
|
-
export type ModifierChoiceSelection = CFModifierChoiceSelection;
|
|
4
|
-
/** Alias of common's — the cashier's answer to one modifier. */
|
|
5
|
-
export type ModifierSelection = CFModifierSelection;
|
|
6
|
-
export interface GetProductModifierSelectionsParams {
|
|
7
|
-
/** The cart line to read. Defaults to the active product's line. */
|
|
8
|
-
internalId?: string;
|
|
9
|
-
}
|
|
10
|
-
export interface GetProductModifierSelectionsResponse {
|
|
11
|
-
success: boolean;
|
|
12
|
-
/** Set when the read failed (e.g. no such line, no active product). */
|
|
13
|
-
reason?: string;
|
|
14
|
-
internalId?: string;
|
|
15
|
-
/** Raw ids — round-trips back into the setter. No names, no money: use `rows` to display. */
|
|
16
|
-
selections: ModifierSelection[];
|
|
17
|
-
/** Display-ready: "Toppings - Avocado" x2, `amount` 1000. One row per chosen choice. */
|
|
18
|
-
rows: CFProdModifierBreakdown[];
|
|
19
|
-
/** Sum of `rows[].amount` for THIS line, in minor units. */
|
|
20
|
-
modifiersTotal: number;
|
|
21
|
-
timestamp: string;
|
|
22
|
-
}
|
|
23
|
-
export type GetProductModifierSelections = (params?: GetProductModifierSelectionsParams) => Promise<GetProductModifierSelectionsResponse>;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Set product modifier selections action
|
|
3
|
-
* Calls the setProductModifierSelections action on the parent window
|
|
4
|
-
*/
|
|
5
|
-
import { commandFrameClient } from "../../client";
|
|
6
|
-
export const setProductModifierSelections = async (params) => {
|
|
7
|
-
return await commandFrameClient.call("setProductModifierSelections", params);
|
|
8
|
-
};
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { MOCK_CART, MOCK_PRODUCTS, buildCartLineModifiers, buildModifierRows } from "../../demo/database";
|
|
2
|
-
export const mockSetProductModifierSelections = async (params) => {
|
|
3
|
-
console.log("[Mock] setProductModifierSelections called", params);
|
|
4
|
-
if (!params?.selections) {
|
|
5
|
-
return {
|
|
6
|
-
success: false,
|
|
7
|
-
reason: "selections is required (pass [] to clear)",
|
|
8
|
-
internalId: params?.internalId,
|
|
9
|
-
selections: [],
|
|
10
|
-
rows: [],
|
|
11
|
-
modifiersTotal: 0,
|
|
12
|
-
timestamp: new Date().toISOString()
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
// Write the selections onto the mock cart line (last line when no internalId).
|
|
16
|
-
// The mock does not re-run rule VALIDATION — the real host does — but it does reprice,
|
|
17
|
-
// because a replacement that left the old rows and the old money behind would make the
|
|
18
|
-
// cart disagree with itself the moment a cashier edits a line.
|
|
19
|
-
const line = params.internalId
|
|
20
|
-
? MOCK_CART.products.find((p) => p.internalId === params.internalId)
|
|
21
|
-
: MOCK_CART.products[MOCK_CART.products.length - 1];
|
|
22
|
-
if (!line) {
|
|
23
|
-
return {
|
|
24
|
-
success: false,
|
|
25
|
-
reason: "No matching cart line",
|
|
26
|
-
internalId: params.internalId,
|
|
27
|
-
selections: [],
|
|
28
|
-
rows: [],
|
|
29
|
-
modifiersTotal: 0,
|
|
30
|
-
timestamp: new Date().toISOString()
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
// Full replacement — passing [] clears the rows. The line drops the product's resolved
|
|
34
|
-
// stack when it is built, so the menu is re-read from the catalogue to price against.
|
|
35
|
-
// Cart totals are not touched, for the same reason addProductToCart does not move them
|
|
36
|
-
// for modifiers: this mock does not accumulate per-line money.
|
|
37
|
-
const source = MOCK_PRODUCTS.find((product) => product._id === line.id);
|
|
38
|
-
line.modifierSelections = params.selections;
|
|
39
|
-
line.modifiers = buildCartLineModifiers(source?.modifiers, params.selections, source?.taxTable);
|
|
40
|
-
const { rows, modifiersTotal } = buildModifierRows(line.modifiers, line.quantity);
|
|
41
|
-
return {
|
|
42
|
-
success: true,
|
|
43
|
-
internalId: line.internalId,
|
|
44
|
-
selections: params.selections,
|
|
45
|
-
rows,
|
|
46
|
-
modifiersTotal,
|
|
47
|
-
timestamp: new Date().toISOString()
|
|
48
|
-
};
|
|
49
|
-
};
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type { ModifierSelection } from "../get-product-modifier-selections/types";
|
|
2
|
-
import type { CFProdModifierBreakdown } from "../../CommonTypes";
|
|
3
|
-
export interface SetProductModifierSelectionsParams {
|
|
4
|
-
/** The cart line to edit. Defaults to the active product's line. */
|
|
5
|
-
internalId?: string;
|
|
6
|
-
/**
|
|
7
|
-
* The line's COMPLETE new answers — replaces every existing selection on the
|
|
8
|
-
* line (send [] to clear all optional modifiers). Validated against the
|
|
9
|
-
* product's category-modifier rules exactly like addProductToCart({ modifiers }):
|
|
10
|
-
* a selection that breaks a rule rejects the edit and the line is unchanged.
|
|
11
|
-
*/
|
|
12
|
-
selections: ModifierSelection[];
|
|
13
|
-
}
|
|
14
|
-
export interface SetProductModifierSelectionsResponse {
|
|
15
|
-
success: boolean;
|
|
16
|
-
/** Set when the edit was rejected (rule violation) — the line is unchanged. */
|
|
17
|
-
reason?: string;
|
|
18
|
-
internalId?: string;
|
|
19
|
-
/** The selections now on the line (the new ones on success, the old ones on rejection). */
|
|
20
|
-
selections: ModifierSelection[];
|
|
21
|
-
/** Display-ready — repaint from this instead of re-reading after an edit. */
|
|
22
|
-
rows: CFProdModifierBreakdown[];
|
|
23
|
-
/** Sum of `rows[].amount` for THIS line, in minor units. */
|
|
24
|
-
modifiersTotal: number;
|
|
25
|
-
timestamp: string;
|
|
26
|
-
}
|
|
27
|
-
export type SetProductModifierSelections = (params?: SetProductModifierSelectionsParams) => Promise<SetProductModifierSelectionsResponse>;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { CFActiveProduct, CFModifierSelection } from "../../../../CommonTypes";
|
|
2
|
-
import type { TopicEvent } from "../../../types";
|
|
3
|
-
/**
|
|
4
|
-
* Payload for product-modifiers-updated event (FT-0010) — fired when a cart
|
|
5
|
-
* line's modifier selections are replaced via setProductModifierSelections.
|
|
6
|
-
*/
|
|
7
|
-
export interface ProductModifiersUpdatedPayload {
|
|
8
|
-
product: CFActiveProduct;
|
|
9
|
-
internalId?: string;
|
|
10
|
-
/** The line's complete new answers (full replacement). */
|
|
11
|
-
selections: CFModifierSelection[];
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Typed event for product-modifiers-updated
|
|
15
|
-
*/
|
|
16
|
-
export type ProductModifiersUpdatedEvent = TopicEvent<ProductModifiersUpdatedPayload>;
|
|
File without changes
|
|
File without changes
|
|
File without changes
|