@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.
- package/lib/Application.d.ts +10 -1
- package/lib/Application.js +32 -2
- package/lib/ApplicationEvents.d.ts +8 -0
- package/lib/ApplicationEvents.js +3 -0
- package/lib/Events/AudioReady.d.ts +6 -0
- package/lib/Events/AudioReady.js +13 -0
- package/package-lock.json +2590 -0
- package/package.json +1 -1
package/lib/Application.d.ts
CHANGED
|
@@ -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
|
}
|
package/lib/Application.js
CHANGED
|
@@ -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
|
-
|
|
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";
|
package/lib/ApplicationEvents.js
CHANGED
|
@@ -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;
|