@shopfront/bridge 1.18.2 → 1.18.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.
@@ -1,5 +1,5 @@
1
1
  import { Bridge } from "./Bridge";
2
- import { DirectShopfrontEvent, FromShopfront, FromShopfrontCallbacks, FromShopfrontInternal, RegisterChangedEvent, SoundEvents } from "./ApplicationEvents";
2
+ import { DirectShopfrontEvent, FromShopfront, FromShopfrontCallbacks, FromShopfrontInternal, RegisterChangedEvent, SellScreenActionMode, SellScreenSummaryMode, SoundEvents } from "./ApplicationEvents";
3
3
  import { Serializable } from "./Common/Serializable";
4
4
  import { BaseEmitableEvent } from "./EmitableEvents/BaseEmitableEvent";
5
5
  import { ShopfrontSaleState } from "./APIs/Sale";
@@ -18,8 +18,14 @@ export interface ShopfrontEmbeddedVerificationToken {
18
18
  loaded: string;
19
19
  };
20
20
  }
21
+ export interface ShopfrontEmbeddedTokenError {
22
+ error: boolean;
23
+ type: string;
24
+ }
21
25
  export declare class ShopfrontTokenDecodingError extends Error {
22
26
  }
27
+ export declare class ShopfrontTokenRequestError extends Error {
28
+ }
23
29
  export declare class Application {
24
30
  protected bridge: Bridge;
25
31
  protected isReady: boolean;
@@ -94,6 +100,8 @@ export declare class Application {
94
100
  user: string | null;
95
101
  }>;
96
102
  printReceipt(content: string): void;
103
+ changeSellScreenActionMode(mode: SellScreenActionMode): void;
104
+ changeSellScreenSummaryMode(mode: SellScreenSummaryMode): void;
97
105
  protected dataIsAudioResponse(data: Record<string, unknown>): data is {
98
106
  requestId: string;
99
107
  success: boolean;
@@ -139,6 +147,7 @@ export declare class Application {
139
147
  };
140
148
  protected generateSigningKey(): Promise<void>;
141
149
  protected decodeToken(signature: BufferSource, data: BufferSource, returnTokenObject?: boolean): Promise<ShopfrontEmbeddedVerificationToken | string>;
150
+ protected tokenDataContainsErrors(data: unknown): data is ShopfrontEmbeddedTokenError;
142
151
  getToken(returnTokenObject: true): Promise<ShopfrontEmbeddedVerificationToken>;
143
152
  getToken(returnTokenObject?: false): Promise<string>;
144
153
  }
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Application = exports.ShopfrontTokenDecodingError = void 0;
6
+ exports.Application = exports.ShopfrontTokenRequestError = exports.ShopfrontTokenDecodingError = void 0;
7
7
  const ApplicationEvents_1 = require("./ApplicationEvents");
8
8
  const Ready_1 = require("./Events/Ready");
9
9
  const Button_1 = require("./Actions/Button");
@@ -31,9 +31,13 @@ const FulfilmentCollectOrder_1 = require("./Events/FulfilmentCollectOrder");
31
31
  const FulfilmentCompleteOrder_1 = require("./Events/FulfilmentCompleteOrder");
32
32
  const CurrentSale_1 = require("./APIs/Sale/CurrentSale");
33
33
  const SaleCreate_1 = require("./Utilities/SaleCreate");
34
+ const AudioReady_1 = require("./Events/AudioReady");
34
35
  class ShopfrontTokenDecodingError extends Error {
35
36
  }
36
37
  exports.ShopfrontTokenDecodingError = ShopfrontTokenDecodingError;
38
+ class ShopfrontTokenRequestError extends Error {
39
+ }
40
+ exports.ShopfrontTokenRequestError = ShopfrontTokenRequestError;
37
41
  // noinspection JSUnusedGlobalSymbols
38
42
  class Application {
39
43
  constructor(bridge) {
@@ -52,6 +56,7 @@ class Application {
52
56
  UI_PIPELINE: new Map(),
53
57
  PAYMENT_METHODS_ENABLED: new Map(),
54
58
  AUDIO_PERMISSION_CHANGE: new Map(),
59
+ AUDIO_READY: new Map(),
55
60
  FULFILMENT_GET_ORDER: new Map(),
56
61
  FULFILMENT_PROCESS_ORDER: new Map(),
57
62
  FULFILMENT_VOID_ORDER: new Map(),
@@ -263,6 +268,10 @@ class Application {
263
268
  c = new PaymentMethodsEnabled_1.PaymentMethodsEnabled(callback);
264
269
  this.listeners[event].set(callback, c);
265
270
  break;
271
+ case "AUDIO_READY":
272
+ c = new AudioReady_1.AudioReady(callback);
273
+ this.listeners[event].set(callback, c);
274
+ break;
266
275
  case "AUDIO_PERMISSION_CHANGE":
267
276
  c = new AudioPermissionChange_1.AudioPermissionChange(callback);
268
277
  this.listeners[event].set(callback, c);
@@ -470,6 +479,16 @@ class Application {
470
479
  type: "text",
471
480
  });
472
481
  }
482
+ changeSellScreenActionMode(mode) {
483
+ this.bridge.sendMessage(ApplicationEvents_1.ToShopfront.CHANGE_SELL_SCREEN_ACTION_MODE, {
484
+ mode
485
+ });
486
+ }
487
+ changeSellScreenSummaryMode(mode) {
488
+ this.bridge.sendMessage(ApplicationEvents_1.ToShopfront.CHANGE_SELL_SCREEN_SUMMARY_MODE, {
489
+ mode
490
+ });
491
+ }
473
492
  dataIsAudioResponse(data) {
474
493
  return typeof data.requestId === "string" &&
475
494
  typeof data.success === "boolean" && (typeof data.message === "string" ||
@@ -595,6 +614,12 @@ class Application {
595
614
  }
596
615
  return decoded.auth;
597
616
  }
617
+ tokenDataContainsErrors(data) {
618
+ if (!data || typeof data !== "object") {
619
+ return false;
620
+ }
621
+ return "error" in data && "type" in data;
622
+ }
598
623
  async getToken(returnTokenObject) {
599
624
  await this.generateSigningKey();
600
625
  const request = `TokenRequest-${Date.now().toString()}`;
@@ -617,7 +642,12 @@ class Application {
617
642
  this.bridge.sendMessage(ApplicationEvents_1.ToShopfront.REQUEST_SECURE_KEY, {
618
643
  requestId: request,
619
644
  });
620
- return this.decodeToken(...(await promise), returnTokenObject);
645
+ const [signature, data] = await promise;
646
+ // Throw the error if there is one
647
+ if (this.tokenDataContainsErrors(data)) {
648
+ throw new ShopfrontTokenRequestError(data.type);
649
+ }
650
+ return this.decodeToken(signature, data, returnTokenObject);
621
651
  }
622
652
  }
623
653
  exports.Application = Application;
@@ -26,6 +26,7 @@ import { OrderDetails } from "./APIs/Fulfilment/FulfilmentTypes";
26
26
  import { FulfilmentCollectOrder } from "./Events/FulfilmentCollectOrder";
27
27
  import { FulfilmentCompleteOrder } from "./Events/FulfilmentCompleteOrder";
28
28
  import { Sale } from "./APIs/Sale";
29
+ import { AudioReady } from "./Events/AudioReady";
29
30
  export declare enum ToShopfront {
30
31
  READY = "READY",
31
32
  SERIALIZED = "SERIALIZED",
@@ -52,6 +53,8 @@ export declare enum ToShopfront {
52
53
  AUDIO_REQUEST_PERMISSION = "AUDIO_REQUEST_PERMISSION",
53
54
  AUDIO_PRELOAD = "AUDIO_PRELOAD",
54
55
  AUDIO_PLAY = "AUDIO_PLAY",
56
+ CHANGE_SELL_SCREEN_ACTION_MODE = "CHANGE_SELL_SCREEN_ACTION_MODE",
57
+ CHANGE_SELL_SCREEN_SUMMARY_MODE = "CHANGE_SELL_SCREEN_SUMMARY_MODE",
55
58
  SELL_SCREEN_OPTION_CHANGE = "SELL_SCREEN_OPTION_CHANGE",
56
59
  INTERNAL_PAGE_MESSAGE = "INTERNAL_PAGE_MESSAGE",
57
60
  TABLE_UPDATE = "TABLE_UPDATE",
@@ -113,6 +116,7 @@ export interface FromShopfrontReturns {
113
116
  SALE_COMPLETE: void;
114
117
  UI_PIPELINE: Array<UIPipelineResponse>;
115
118
  PAYMENT_METHODS_ENABLED: Array<SellScreenPaymentMethod>;
119
+ AUDIO_READY: void;
116
120
  AUDIO_PERMISSION_CHANGE: void;
117
121
  FULFILMENT_GET_ORDER: OrderDetails;
118
122
  FULFILMENT_VOID_ORDER: void;
@@ -193,6 +197,7 @@ export interface FromShopfrontCallbacks {
193
197
  SALE_COMPLETE: (event: SaleCompletedEvent) => MaybePromise<FromShopfrontReturns["SALE_COMPLETE"]>;
194
198
  UI_PIPELINE: (event: Array<UIPipelineResponse>, context: UIPipelineContext) => MaybePromise<FromShopfrontReturns["UI_PIPELINE"]>;
195
199
  PAYMENT_METHODS_ENABLED: (event: Array<SellScreenPaymentMethod>, context: PaymentMethodEnabledContext) => MaybePromise<FromShopfrontReturns["PAYMENT_METHODS_ENABLED"]>;
200
+ AUDIO_READY: () => MaybePromise<FromShopfrontReturns["AUDIO_READY"]>;
196
201
  AUDIO_PERMISSION_CHANGE: (event: AudioPermissionChangeEvent) => MaybePromise<FromShopfrontReturns["AUDIO_PERMISSION_CHANGE"]>;
197
202
  FULFILMENT_GET_ORDER: (id: string) => MaybePromise<FromShopfrontReturns["FULFILMENT_GET_ORDER"]>;
198
203
  FULFILMENT_VOID_ORDER: (id: string) => MaybePromise<FromShopfrontReturns["FULFILMENT_VOID_ORDER"]>;
@@ -216,6 +221,7 @@ export interface FromShopfront {
216
221
  REQUEST_SALE_KEYS: RequestSaleKeys;
217
222
  UI_PIPELINE: UIPipeline;
218
223
  PAYMENT_METHODS_ENABLED: PaymentMethodsEnabled;
224
+ AUDIO_READY: AudioReady;
219
225
  AUDIO_PERMISSION_CHANGE: AudioPermissionChange;
220
226
  FULFILMENT_GET_ORDER: FulfilmentGetOrder;
221
227
  FULFILMENT_VOID_ORDER: FulfilmentVoidOrder;
@@ -237,3 +243,5 @@ export interface FromShopfrontInternal {
237
243
  RESPONSE_SECURE_KEY: "RESPONSE_SECURE_KEY";
238
244
  RESPONSE_CREATE_SALE: "RESPONSE_CREATE_SALE";
239
245
  }
246
+ export declare type SellScreenActionMode = "search" | "keys" | "held-sales" | "payment" | "customers" | "promotions" | "show-backorders" | "fulfilment-orders";
247
+ export declare type SellScreenSummaryMode = "transaction" | "payments" | "receipts";
@@ -29,6 +29,9 @@ var ToShopfront;
29
29
  ToShopfront["AUDIO_REQUEST_PERMISSION"] = "AUDIO_REQUEST_PERMISSION";
30
30
  ToShopfront["AUDIO_PRELOAD"] = "AUDIO_PRELOAD";
31
31
  ToShopfront["AUDIO_PLAY"] = "AUDIO_PLAY";
32
+ // Sell Screen Events
33
+ ToShopfront["CHANGE_SELL_SCREEN_ACTION_MODE"] = "CHANGE_SELL_SCREEN_ACTION_MODE";
34
+ ToShopfront["CHANGE_SELL_SCREEN_SUMMARY_MODE"] = "CHANGE_SELL_SCREEN_SUMMARY_MODE";
32
35
  // Emitable Events
33
36
  ToShopfront["SELL_SCREEN_OPTION_CHANGE"] = "SELL_SCREEN_OPTION_CHANGE";
34
37
  ToShopfront["INTERNAL_PAGE_MESSAGE"] = "INTERNAL_PAGE_MESSAGE";
@@ -0,0 +1,6 @@
1
+ import { BaseEvent } from "./BaseEvent";
2
+ import { FromShopfrontCallbacks, FromShopfrontReturns } from "../ApplicationEvents";
3
+ export declare class AudioReady extends BaseEvent<undefined> {
4
+ constructor(callback: FromShopfrontCallbacks["AUDIO_READY"]);
5
+ emit(): Promise<FromShopfrontReturns["AUDIO_READY"]>;
6
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AudioReady = void 0;
4
+ const BaseEvent_1 = require("./BaseEvent");
5
+ class AudioReady extends BaseEvent_1.BaseEvent {
6
+ constructor(callback) {
7
+ super(callback);
8
+ }
9
+ async emit() {
10
+ this.callback(undefined, undefined);
11
+ }
12
+ }
13
+ exports.AudioReady = AudioReady;