@final-commerce/command-frame 0.0.1 → 0.0.4

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.
Files changed (140) hide show
  1. package/README.md +62 -7
  2. package/dist/CommonTypes.d.ts +469 -0
  3. package/dist/CommonTypes.js +21 -0
  4. package/dist/actions/add-cart-discount/mock.d.ts +2 -0
  5. package/dist/actions/add-cart-discount/mock.js +27 -0
  6. package/dist/actions/add-cart-fee/mock.d.ts +2 -0
  7. package/dist/actions/add-cart-fee/mock.js +31 -0
  8. package/dist/actions/add-custom-sale/mock.d.ts +2 -0
  9. package/dist/actions/add-custom-sale/mock.js +12 -0
  10. package/dist/actions/add-customer/mock.d.ts +2 -0
  11. package/dist/actions/add-customer/mock.js +23 -0
  12. package/dist/actions/add-customer/types.d.ts +3 -2
  13. package/dist/actions/add-customer-note/mock.d.ts +2 -0
  14. package/dist/actions/add-customer-note/mock.js +9 -0
  15. package/dist/actions/add-order-note/mock.d.ts +2 -0
  16. package/dist/actions/add-order-note/mock.js +8 -0
  17. package/dist/actions/add-product-discount/mock.d.ts +2 -0
  18. package/dist/actions/add-product-discount/mock.js +10 -0
  19. package/dist/actions/add-product-fee/mock.d.ts +2 -0
  20. package/dist/actions/add-product-fee/mock.js +11 -0
  21. package/dist/actions/add-product-note/mock.d.ts +2 -0
  22. package/dist/actions/add-product-note/mock.js +8 -0
  23. package/dist/actions/add-product-to-cart/mock.d.ts +2 -0
  24. package/dist/actions/add-product-to-cart/mock.js +56 -0
  25. package/dist/actions/add-product-to-cart/types.d.ts +2 -0
  26. package/dist/actions/adjust-inventory/mock.d.ts +2 -0
  27. package/dist/actions/adjust-inventory/mock.js +18 -0
  28. package/dist/actions/assign-customer/mock.d.ts +2 -0
  29. package/dist/actions/assign-customer/mock.js +14 -0
  30. package/dist/actions/assign-customer/types.d.ts +2 -1
  31. package/dist/actions/authenticate-user/mock.d.ts +2 -0
  32. package/dist/actions/authenticate-user/mock.js +8 -0
  33. package/dist/actions/calculate-refund-total/mock.d.ts +2 -0
  34. package/dist/actions/calculate-refund-total/mock.js +14 -0
  35. package/dist/actions/calculate-refund-total/types.d.ts +3 -2
  36. package/dist/actions/cash-payment/mock.d.ts +2 -0
  37. package/dist/actions/cash-payment/mock.js +14 -0
  38. package/dist/actions/cash-payment/types.d.ts +2 -1
  39. package/dist/actions/clear-cart/mock.d.ts +2 -0
  40. package/dist/actions/clear-cart/mock.js +9 -0
  41. package/dist/actions/delete-parked-order/mock.d.ts +2 -0
  42. package/dist/actions/delete-parked-order/mock.js +8 -0
  43. package/dist/actions/example-function/mock.d.ts +2 -0
  44. package/dist/actions/example-function/mock.js +13 -0
  45. package/dist/actions/get-categories/mock.d.ts +2 -0
  46. package/dist/actions/get-categories/mock.js +20 -0
  47. package/dist/actions/get-categories/types.d.ts +2 -1
  48. package/dist/actions/get-context/mock.d.ts +2 -0
  49. package/dist/actions/get-context/mock.js +24 -0
  50. package/dist/actions/get-context/types.d.ts +2 -16
  51. package/dist/actions/get-current-cart/mock.d.ts +2 -0
  52. package/dist/actions/get-current-cart/mock.js +9 -0
  53. package/dist/actions/get-current-cart/types.d.ts +2 -1
  54. package/dist/actions/get-customers/mock.d.ts +2 -0
  55. package/dist/actions/get-customers/mock.js +17 -0
  56. package/dist/actions/get-customers/types.d.ts +2 -1
  57. package/dist/actions/get-final-context/action.d.ts +6 -0
  58. package/dist/actions/get-final-context/action.js +8 -0
  59. package/dist/actions/get-final-context/types.d.ts +4 -0
  60. package/dist/actions/get-final-context/types.js +1 -0
  61. package/dist/actions/get-line-items-by-order/mock.d.ts +2 -0
  62. package/dist/actions/get-line-items-by-order/mock.js +12 -0
  63. package/dist/actions/get-line-items-by-order/types.d.ts +3 -2
  64. package/dist/actions/get-orders/mock.d.ts +2 -0
  65. package/dist/actions/get-orders/mock.js +104 -0
  66. package/dist/actions/get-orders/types.d.ts +2 -1
  67. package/dist/actions/get-product-variants/mock.d.ts +2 -0
  68. package/dist/actions/get-product-variants/mock.js +14 -0
  69. package/dist/actions/get-product-variants/types.d.ts +2 -1
  70. package/dist/actions/get-products/mock.d.ts +2 -0
  71. package/dist/actions/get-products/mock.js +31 -0
  72. package/dist/actions/get-products/types.d.ts +2 -1
  73. package/dist/actions/get-refunds/mock.d.ts +2 -0
  74. package/dist/actions/get-refunds/mock.js +9 -0
  75. package/dist/actions/get-refunds/types.d.ts +2 -1
  76. package/dist/actions/get-remaining-refundable-quantities/mock.d.ts +2 -0
  77. package/dist/actions/get-remaining-refundable-quantities/mock.js +9 -0
  78. package/dist/actions/go-to-page/mock.d.ts +2 -0
  79. package/dist/actions/go-to-page/mock.js +8 -0
  80. package/dist/actions/go-to-station-home/mock.d.ts +2 -0
  81. package/dist/actions/go-to-station-home/mock.js +7 -0
  82. package/dist/actions/initiate-refund/mock.d.ts +2 -0
  83. package/dist/actions/initiate-refund/mock.js +8 -0
  84. package/dist/actions/open-cash-drawer/mock.d.ts +2 -0
  85. package/dist/actions/open-cash-drawer/mock.js +7 -0
  86. package/dist/actions/open-popup/mock.d.ts +2 -0
  87. package/dist/actions/open-popup/mock.js +8 -0
  88. package/dist/actions/park-order/mock.d.ts +2 -0
  89. package/dist/actions/park-order/mock.js +9 -0
  90. package/dist/actions/park-order/types.d.ts +2 -1
  91. package/dist/actions/partial-payment/mock.d.ts +2 -0
  92. package/dist/actions/partial-payment/mock.js +12 -0
  93. package/dist/actions/partial-payment/types.d.ts +2 -1
  94. package/dist/actions/process-partial-refund/mock.d.ts +2 -0
  95. package/dist/actions/process-partial-refund/mock.js +8 -0
  96. package/dist/actions/remove-customer-from-cart/mock.d.ts +2 -0
  97. package/dist/actions/remove-customer-from-cart/mock.js +9 -0
  98. package/dist/actions/reset-refund-details/mock.d.ts +2 -0
  99. package/dist/actions/reset-refund-details/mock.js +7 -0
  100. package/dist/actions/resume-parked-order/mock.d.ts +2 -0
  101. package/dist/actions/resume-parked-order/mock.js +9 -0
  102. package/dist/actions/resume-parked-order/types.d.ts +2 -1
  103. package/dist/actions/select-all-refund-items/mock.d.ts +2 -0
  104. package/dist/actions/select-all-refund-items/mock.js +8 -0
  105. package/dist/actions/set-product-active/mock.d.ts +2 -0
  106. package/dist/actions/set-product-active/mock.js +8 -0
  107. package/dist/actions/set-refund-stock-action/mock.d.ts +2 -0
  108. package/dist/actions/set-refund-stock-action/mock.js +9 -0
  109. package/dist/actions/show-confirmation/mock.d.ts +2 -0
  110. package/dist/actions/show-confirmation/mock.js +9 -0
  111. package/dist/actions/show-notification/mock.d.ts +2 -0
  112. package/dist/actions/show-notification/mock.js +8 -0
  113. package/dist/actions/switch-user/mock.d.ts +2 -0
  114. package/dist/actions/switch-user/mock.js +10 -0
  115. package/dist/actions/tap-to-pay-payment/mock.d.ts +2 -0
  116. package/dist/actions/tap-to-pay-payment/mock.js +11 -0
  117. package/dist/actions/tap-to-pay-payment/types.d.ts +2 -1
  118. package/dist/actions/terminal-payment/mock.d.ts +2 -0
  119. package/dist/actions/terminal-payment/mock.js +14 -0
  120. package/dist/actions/terminal-payment/types.d.ts +2 -1
  121. package/dist/actions/toggle-slide-out/mock.d.ts +2 -0
  122. package/dist/actions/toggle-slide-out/mock.js +8 -0
  123. package/dist/actions/trigger-webhook/mock.d.ts +2 -0
  124. package/dist/actions/trigger-webhook/mock.js +8 -0
  125. package/dist/actions/trigger-zapier-webhook/mock.d.ts +2 -0
  126. package/dist/actions/trigger-zapier-webhook/mock.js +8 -0
  127. package/dist/actions/update-customer-facing-display/mock.d.ts +2 -0
  128. package/dist/actions/update-customer-facing-display/mock.js +8 -0
  129. package/dist/actions/vendara-payment/mock.d.ts +2 -0
  130. package/dist/actions/vendara-payment/mock.js +11 -0
  131. package/dist/actions/vendara-payment/types.d.ts +2 -1
  132. package/dist/client.d.ts +4 -1
  133. package/dist/client.js +63 -2
  134. package/dist/demo/database.d.ts +45 -0
  135. package/dist/demo/database.js +515 -0
  136. package/dist/demo/registry.d.ts +5 -0
  137. package/dist/demo/registry.js +106 -0
  138. package/dist/index.d.ts +1 -0
  139. package/dist/types.d.ts +6 -5
  140. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ import { UpdateCustomerFacingDisplay } from "./types";
2
+ export declare const mockUpdateCustomerFacingDisplay: UpdateCustomerFacingDisplay;
@@ -0,0 +1,8 @@
1
+ export const mockUpdateCustomerFacingDisplay = async (params) => {
2
+ console.log("[Mock] updateCustomerFacingDisplay called", params);
3
+ return {
4
+ success: true,
5
+ pageId: params?.pageId || "",
6
+ timestamp: new Date().toISOString()
7
+ };
8
+ };
@@ -0,0 +1,2 @@
1
+ import { VendaraPayment } from "./types";
2
+ export declare const mockVendaraPayment: VendaraPayment;
@@ -0,0 +1,11 @@
1
+ import { MOCK_ORDERS } from "../../demo/database";
2
+ export const mockVendaraPayment = async (params) => {
3
+ console.log("[Mock] vendaraPayment called", params);
4
+ return {
5
+ success: true,
6
+ amount: params?.amount || null,
7
+ paymentType: "vendara",
8
+ order: MOCK_ORDERS[0],
9
+ timestamp: new Date().toISOString()
10
+ };
11
+ };
@@ -1,3 +1,4 @@
1
+ import { CFOrder } from "../../CommonTypes";
1
2
  export interface VendaraPaymentParams {
2
3
  amount?: number;
3
4
  }
@@ -5,7 +6,7 @@ export interface VendaraPaymentResponse {
5
6
  success: boolean;
6
7
  amount: number | null;
7
8
  paymentType: string;
8
- order: any | null;
9
+ order: CFOrder | null;
9
10
  timestamp: string;
10
11
  }
11
12
  export type VendaraPayment = (params?: VendaraPaymentParams) => Promise<VendaraPaymentResponse>;
package/dist/client.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Commands Frame Client for iframe communication
2
+ * Command Frame Client for iframe communication
3
3
  * Allows the iframe to call functions on the parent window via postMessage
4
4
  */
5
5
  export interface PostMessageRequest<T = any> {
@@ -19,13 +19,16 @@ export declare class CommandFrameClient {
19
19
  private origin;
20
20
  private debug;
21
21
  private useGlobalDebug;
22
+ private mockMode;
22
23
  constructor(options?: {
23
24
  timeout?: number;
24
25
  origin?: string;
25
26
  debug?: boolean;
27
+ mockMode?: boolean;
26
28
  });
27
29
  private isDebugEnabled;
28
30
  call<TParams = any, TResponse = any>(action: string, params?: TParams, timeout?: number): Promise<TResponse>;
31
+ private getFinalContext;
29
32
  private handleMessage;
30
33
  private generateRequestId;
31
34
  destroy(): void;
package/dist/client.js CHANGED
@@ -1,7 +1,8 @@
1
1
  /**
2
- * Commands Frame Client for iframe communication
2
+ * Command Frame Client for iframe communication
3
3
  * Allows the iframe to call functions on the parent window via postMessage
4
4
  */
5
+ import { MOCK_REGISTRY } from "./demo/registry";
5
6
  export class CommandFrameClient {
6
7
  constructor(options = {}) {
7
8
  this.pendingRequests = new Map();
@@ -9,13 +10,25 @@ export class CommandFrameClient {
9
10
  this.origin = options.origin || "*";
10
11
  this.debug = options.debug ?? false;
11
12
  this.useGlobalDebug = options.debug === undefined;
13
+ // Default to provided mockMode or false. Detection happens via getFinalContext.
14
+ this.mockMode = options.mockMode ?? false;
12
15
  if (typeof window !== 'undefined') {
13
16
  window.addEventListener("message", this.handleMessage.bind(this));
14
17
  }
18
+ // Auto-detect mock mode on initialization
19
+ this.getFinalContext().then((context) => {
20
+ if (!context) {
21
+ if (this.isDebugEnabled()) {
22
+ console.warn("[ActionsClient] Environment detection failed (timeout or error). Switching to Mock Mode.");
23
+ }
24
+ this.mockMode = true;
25
+ }
26
+ });
15
27
  if (this.isDebugEnabled()) {
16
28
  console.log("[ActionsClient] Initialized", {
17
29
  origin: this.origin,
18
- debug: this.isDebugEnabled()
30
+ debug: this.isDebugEnabled(),
31
+ mockMode: this.mockMode
19
32
  });
20
33
  }
21
34
  }
@@ -26,6 +39,29 @@ export class CommandFrameClient {
26
39
  return typeof window !== "undefined" && window.__POSTMESSAGE_DEBUG__ === true;
27
40
  }
28
41
  async call(action, params, timeout) {
42
+ // Mock Mode Handler
43
+ if (this.mockMode) {
44
+ if (this.isDebugEnabled()) {
45
+ console.log("[ActionsClient] Mock Call", { action, params });
46
+ }
47
+ const mockHandler = MOCK_REGISTRY[action];
48
+ if (mockHandler) {
49
+ // Simulate async delay
50
+ await new Promise(resolve => setTimeout(resolve, 100));
51
+ try {
52
+ return await mockHandler(params);
53
+ }
54
+ catch (error) {
55
+ console.error(`[ActionsClient] Mock Error for ${action}:`, error);
56
+ throw error;
57
+ }
58
+ }
59
+ else {
60
+ console.warn(`[ActionsClient] No mock handler found for action: ${action}`);
61
+ throw new Error(`Mock handler not implemented for: ${action}`);
62
+ }
63
+ }
64
+ // Standard PostMessage Handler
29
65
  return new Promise((resolve, reject) => {
30
66
  const requestId = this.generateRequestId();
31
67
  const timeoutMs = timeout || this.defaultTimeout;
@@ -74,6 +110,31 @@ export class CommandFrameClient {
74
110
  }
75
111
  });
76
112
  }
113
+ // Private check to determine environment
114
+ getFinalContext() {
115
+ return new Promise((resolve) => {
116
+ if (typeof window === 'undefined' || !window.parent || window.parent === window)
117
+ return resolve(null);
118
+ const requestId = this.generateRequestId();
119
+ const timeout = setTimeout(() => {
120
+ this.pendingRequests.delete(requestId);
121
+ resolve(null);
122
+ }, 2000);
123
+ this.pendingRequests.set(requestId, {
124
+ resolve: (val) => { clearTimeout(timeout); resolve(val); },
125
+ reject: () => { clearTimeout(timeout); resolve(null); },
126
+ timeout
127
+ });
128
+ try {
129
+ window.parent.postMessage({ action: "getFinalContext", requestId }, this.origin);
130
+ }
131
+ catch {
132
+ clearTimeout(timeout);
133
+ this.pendingRequests.delete(requestId);
134
+ resolve(null);
135
+ }
136
+ });
137
+ }
77
138
  handleMessage(event) {
78
139
  if (this.isDebugEnabled()) {
79
140
  console.log("[ActionsClient] Received message", {
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Mock Database for Standalone/Demo Mode
3
+ * Stores mock data that mimics the Render environment
4
+ */
5
+ import { CFActiveCompany, CFActiveUser, CFActiveStation, CFActiveOutlet, CFActiveOrder, CFCustomer, CFProduct, CFActiveCart, CFCategory } from "../CommonTypes";
6
+ export declare const MOCK_COMPANY: CFActiveCompany;
7
+ export declare const MOCK_OUTLET_MAIN: CFActiveOutlet;
8
+ export declare const MOCK_STATION_1: CFActiveStation;
9
+ export declare const MOCK_STATION_2: CFActiveStation;
10
+ export declare const MOCK_USER_MARIO: CFActiveUser;
11
+ export declare const MOCK_USER_LUIGI: CFActiveUser;
12
+ export declare const MOCK_CUSTOMER_1: CFCustomer;
13
+ export declare const MOCK_CUSTOMER_2: CFCustomer;
14
+ export declare const MOCK_CUSTOMER_3: CFCustomer;
15
+ export declare const MOCK_CUSTOMER_4: CFCustomer;
16
+ export declare const MOCK_CUSTOMER_5: CFCustomer;
17
+ export declare const MOCK_CATEGORY_PASTES: CFCategory;
18
+ export declare const MOCK_CATEGORY_SPECIALTY: CFCategory;
19
+ export declare const MOCK_CATEGORY_BASIC: CFCategory;
20
+ export declare const MOCK_PRODUCT_BASIL_ALMOND: CFProduct;
21
+ export declare const MOCK_PRODUCT_BEER: CFProduct;
22
+ export declare const MOCK_PRODUCT_BEET: CFProduct;
23
+ export declare const MOCK_PRODUCT_CARAMELIZED: CFProduct;
24
+ export declare const MOCK_PRODUCT_GARLIC_ONION: CFProduct;
25
+ export declare const MOCK_PRODUCT_GARLIC: CFProduct;
26
+ export declare const MOCK_PRODUCT_GINGER_LIME: CFProduct;
27
+ export declare const MOCK_PRODUCT_LEMON: CFProduct;
28
+ export declare const MOCK_PRODUCT_RED_PEPPER: CFProduct;
29
+ export declare const MOCK_PRODUCT_ROASTED_TOMATO: CFProduct;
30
+ export declare const MOCK_ORDER_1: CFActiveOrder;
31
+ export declare const MOCK_ORDER_2: CFActiveOrder;
32
+ export declare const MOCK_USERS: CFActiveUser[];
33
+ export declare const MOCK_STATIONS: CFActiveStation[];
34
+ export declare const MOCK_OUTLETS: CFActiveOutlet[];
35
+ export declare const MOCK_CUSTOMERS: CFCustomer[];
36
+ export declare const MOCK_CATEGORIES: CFCategory[];
37
+ export declare const MOCK_PRODUCTS: CFProduct[];
38
+ export declare const MOCK_ORDERS: CFActiveOrder[];
39
+ export declare const MOCK_USER: CFActiveUser;
40
+ export declare const MOCK_STATION: CFActiveStation;
41
+ export declare const MOCK_OUTLET: CFActiveOutlet;
42
+ export declare let MOCK_CART: CFActiveCart;
43
+ export declare const resetMockCart: () => void;
44
+ export declare const safeSerialize: <T>(data: T) => T;
45
+ export declare const createOrderFromCart: (paymentType: string, amount: number | string, processor?: string) => CFActiveOrder;