@shopfront/bridge 2.0.2 → 2.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 (45) hide show
  1. package/.github/workflows/npm-publish.yml +13 -2
  2. package/lib/Application.d.ts +2 -18
  3. package/lib/Application.js +1 -141
  4. package/lib/ApplicationEvents.d.ts +54 -5
  5. package/lib/BaseApplication.d.ts +11 -17
  6. package/lib/BaseApplication.js +197 -1
  7. package/lib/BaseBridge.d.ts +1 -0
  8. package/lib/BaseBridge.js +1 -3
  9. package/lib/Bridge.d.ts +0 -19
  10. package/lib/Bridge.js +2 -1
  11. package/lib/Events/DirectEvents/BaseDirectEvent.d.ts +13 -0
  12. package/lib/Events/DirectEvents/BaseDirectEvent.js +5 -0
  13. package/lib/Events/DirectEvents/SaleAddCustomer.d.ts +13 -0
  14. package/lib/Events/DirectEvents/SaleAddCustomer.js +24 -0
  15. package/lib/Events/DirectEvents/SaleAddProduct.d.ts +13 -0
  16. package/lib/Events/DirectEvents/SaleAddProduct.js +24 -0
  17. package/lib/Events/DirectEvents/SaleChangeQuantity.d.ts +13 -0
  18. package/lib/Events/DirectEvents/SaleChangeQuantity.js +24 -0
  19. package/lib/Events/DirectEvents/SaleClear.d.ts +13 -0
  20. package/lib/Events/DirectEvents/SaleClear.js +21 -0
  21. package/lib/Events/DirectEvents/SaleRemoveCustomer.d.ts +13 -0
  22. package/lib/Events/DirectEvents/SaleRemoveCustomer.js +21 -0
  23. package/lib/Events/DirectEvents/SaleRemoveProduct.d.ts +13 -0
  24. package/lib/Events/DirectEvents/SaleRemoveProduct.js +24 -0
  25. package/lib/Events/DirectEvents/SaleUpdateProducts.d.ts +13 -0
  26. package/lib/Events/DirectEvents/SaleUpdateProducts.js +24 -0
  27. package/lib/Events/DirectEvents/types/SaleEventData.d.ts +70 -0
  28. package/lib/Events/DirectEvents/types/SaleEventData.js +1 -0
  29. package/lib/Mocks/APIs/Sale/MockCurrentSale.d.ts +7 -2
  30. package/lib/Mocks/APIs/Sale/MockCurrentSale.js +94 -10
  31. package/lib/Mocks/MockApplication.d.ts +7 -20
  32. package/lib/Mocks/MockApplication.js +4 -156
  33. package/lib/Mocks/MockBridge.js +2 -0
  34. package/package.json +1 -1
  35. package/.idea/codeStyles/Project.xml +0 -10
  36. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  37. package/.idea/git_toolbox_blame.xml +0 -6
  38. package/.idea/git_toolbox_prj.xml +0 -15
  39. package/.idea/inspectionProfiles/Project_Default.xml +0 -11
  40. package/.idea/jsLinters/eslint.xml +0 -6
  41. package/.idea/misc.xml +0 -6
  42. package/.idea/modules.xml +0 -8
  43. package/.idea/php.xml +0 -33
  44. package/.idea/shopfront-embedded-bridge.iml +0 -10
  45. package/.idea/vcs.xml +0 -6
@@ -1,27 +1,5 @@
1
1
  import { isDirectShopfrontEvent, ToShopfront, } from "../ApplicationEvents.js";
2
2
  import { BaseApplication } from "../BaseApplication.js";
3
- import { AudioPermissionChange } from "../Events/AudioPermissionChange.js";
4
- import { AudioReady } from "../Events/AudioReady.js";
5
- import { FormatIntegratedProduct } from "../Events/FormatIntegratedProduct.js";
6
- import { FulfilmentCollectOrder } from "../Events/FulfilmentCollectOrder.js";
7
- import { FulfilmentCompleteOrder } from "../Events/FulfilmentCompleteOrder.js";
8
- import { FulfilmentGetOrder } from "../Events/FulfilmentGetOrder.js";
9
- import { FulfilmentOrderApproval } from "../Events/FulfilmentOrderApproval.js";
10
- import { FulfilmentProcessOrder } from "../Events/FulfilmentProcessOrder.js";
11
- import { FulfilmentVoidOrder } from "../Events/FulfilmentVoidOrder.js";
12
- import { GiftCardCodeCheck } from "../Events/GiftCardCodeCheck.js";
13
- import { InternalPageMessage } from "../Events/InternalPageMessage.js";
14
- import { PaymentMethodsEnabled } from "../Events/PaymentMethodsEnabled.js";
15
- import { Ready } from "../Events/Ready.js";
16
- import { RegisterChanged } from "../Events/RegisterChanged.js";
17
- import { RequestButtons } from "../Events/RequestButtons.js";
18
- import { RequestCustomerListOptions } from "../Events/RequestCustomerListOptions.js";
19
- import { RequestSaleKeys } from "../Events/RequestSaleKeys.js";
20
- import { RequestSellScreenOptions } from "../Events/RequestSellScreenOptions.js";
21
- import { RequestSettings } from "../Events/RequestSettings.js";
22
- import { RequestTableColumns } from "../Events/RequestTableColumns.js";
23
- import { SaleComplete } from "../Events/SaleComplete.js";
24
- import { UIPipeline } from "../Events/UIPipeline.js";
25
3
  import ActionEventRegistrar from "../Utilities/ActionEventRegistrar.js";
26
4
  import { MockCurrentSale } from "./APIs/Sale/MockCurrentSale.js";
27
5
  import { MockDatabase } from "./Database/MockDatabase.js";
@@ -99,12 +77,11 @@ export class MockApplication extends BaseApplication {
99
77
  if (isDirectShopfrontEvent(event)) {
100
78
  const listeners = this.directListeners[event];
101
79
  if (typeof listeners === "undefined") {
102
- // Don't need to do anything here
103
- return;
80
+ return this.bridge.sendMessage(ToShopfront.NOT_LISTENING_TO_EVENT);
104
81
  }
105
82
  const results = [];
106
83
  for (const e of listeners.values()) {
107
- results.push(e());
84
+ results.push(e.emit(data));
108
85
  }
109
86
  await Promise.all(results);
110
87
  return;
@@ -125,135 +102,6 @@ export class MockApplication extends BaseApplication {
125
102
  await Promise.allSettled(results);
126
103
  // The responses have been removed as we don't currently need them
127
104
  }
128
- /**
129
- * @inheritDoc
130
- */
131
- addEventListener(event, callback) {
132
- if (isDirectShopfrontEvent(event)) {
133
- if (typeof this.directListeners[event] === "undefined") {
134
- this.directListeners[event] = new Set();
135
- }
136
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
137
- this.directListeners[event].add(callback);
138
- return;
139
- }
140
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
141
- let c;
142
- switch (event) {
143
- case "READY":
144
- c = new Ready(callback);
145
- this.listeners[event].set(callback, c);
146
- break;
147
- case "REQUEST_SETTINGS":
148
- c = new RequestSettings(callback);
149
- this.listeners[event].set(callback, c);
150
- break;
151
- case "REQUEST_BUTTONS":
152
- c = new RequestButtons(callback);
153
- this.listeners[event].set(callback, c);
154
- break;
155
- case "REQUEST_TABLE_COLUMNS":
156
- c = new RequestTableColumns(callback);
157
- this.listeners[event].set(callback, c);
158
- break;
159
- case "REQUEST_SELL_SCREEN_OPTIONS":
160
- c = new RequestSellScreenOptions(callback);
161
- this.listeners[event].set(callback, c);
162
- break;
163
- case "INTERNAL_PAGE_MESSAGE":
164
- c = new InternalPageMessage(callback, this);
165
- this.listeners[event].set(callback, c);
166
- break;
167
- case "REGISTER_CHANGED":
168
- c = new RegisterChanged(callback);
169
- this.listeners[event].set(callback, c);
170
- break;
171
- case "REQUEST_CUSTOMER_LIST_OPTIONS":
172
- c = new RequestCustomerListOptions(callback);
173
- this.listeners[event].set(callback, c);
174
- break;
175
- case "FORMAT_INTEGRATED_PRODUCT":
176
- c = new FormatIntegratedProduct(callback);
177
- this.listeners[event].set(callback, c);
178
- break;
179
- case "REQUEST_SALE_KEYS":
180
- c = new RequestSaleKeys(callback);
181
- this.listeners[event].set(callback, c);
182
- break;
183
- case "SALE_COMPLETE":
184
- c = new SaleComplete(callback);
185
- this.listeners[event].set(callback, c);
186
- break;
187
- case "UI_PIPELINE":
188
- c = new UIPipeline(callback);
189
- this.listeners[event].set(callback, c);
190
- break;
191
- case "PAYMENT_METHODS_ENABLED":
192
- c = new PaymentMethodsEnabled(callback);
193
- this.listeners[event].set(callback, c);
194
- break;
195
- case "AUDIO_READY":
196
- c = new AudioReady(callback);
197
- this.listeners[event].set(callback, c);
198
- break;
199
- case "AUDIO_PERMISSION_CHANGE":
200
- c = new AudioPermissionChange(callback);
201
- this.listeners[event].set(callback, c);
202
- break;
203
- case "FULFILMENT_GET_ORDER":
204
- if (this.listeners[event].size !== 0) {
205
- throw new TypeError("Application already has 'FULFILMENT_GET_ORDER' event listener registered.");
206
- }
207
- c = new FulfilmentGetOrder(callback);
208
- this.listeners[event].set(callback, c);
209
- break;
210
- case "FULFILMENT_VOID_ORDER":
211
- c = new FulfilmentVoidOrder(callback);
212
- this.listeners[event].set(callback, c);
213
- break;
214
- case "FULFILMENT_PROCESS_ORDER":
215
- c = new FulfilmentProcessOrder(callback);
216
- this.listeners[event].set(callback, c);
217
- break;
218
- case "FULFILMENT_ORDER_APPROVAL":
219
- c = new FulfilmentOrderApproval(callback);
220
- this.listeners[event].set(callback, c);
221
- break;
222
- case "FULFILMENT_ORDER_COLLECTED":
223
- c = new FulfilmentCollectOrder(callback);
224
- this.listeners[event].set(callback, c);
225
- break;
226
- case "FULFILMENT_ORDER_COMPLETED":
227
- c = new FulfilmentCompleteOrder(callback);
228
- this.listeners[event].set(callback, c);
229
- break;
230
- case "GIFT_CARD_CODE_CHECK":
231
- c = new GiftCardCodeCheck(callback);
232
- this.listeners[event].set(callback, c);
233
- break;
234
- }
235
- if (typeof c === "undefined") {
236
- throw new TypeError(`${event} has not been defined`);
237
- }
238
- if (event === "READY" && this.isReady) {
239
- c = c;
240
- c.emit({
241
- outlet: this.outlet,
242
- register: this.register,
243
- user: this.user,
244
- });
245
- }
246
- }
247
- /**
248
- * @inheritDoc
249
- */
250
- removeEventListener(event, callback) {
251
- if (isDirectShopfrontEvent(event)) {
252
- this.directListeners[event]?.delete(callback);
253
- return;
254
- }
255
- this.listeners[event].delete(callback);
256
- }
257
105
  /**
258
106
  * @inheritDoc
259
107
  */
@@ -318,7 +166,6 @@ export class MockApplication extends BaseApplication {
318
166
  const payments = sale.getPayments();
319
167
  let totalPaid = 0;
320
168
  for (const payment of payments) {
321
- // TODO: Double check this is still the case
322
169
  if (payment.getCashout()) {
323
170
  return {
324
171
  success: false,
@@ -473,7 +320,8 @@ export class MockApplication extends BaseApplication {
473
320
  else {
474
321
  params = data[0];
475
322
  }
476
- // We don't care about the Bridge parameter, as that is passed in by the `emit` method
323
+ // We don't care about the Bridge param in FromShopfront events, as that is passed in by the `emit` method
324
+ // Direct events do not pass in a second parameter
477
325
  }
478
326
  await this.emit(event, params, "");
479
327
  }
@@ -4,6 +4,8 @@ export class MockBridge extends BaseBridge {
4
4
  constructor(key, url) {
5
5
  super(key, url);
6
6
  this.isReady = false;
7
+ this.registerListeners();
8
+ this.sendMessage(ApplicationEvents.ToShopfront.READY);
7
9
  }
8
10
  /**
9
11
  * @inheritDoc
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shopfront/bridge",
3
- "version": "2.0.2",
3
+ "version": "2.0.4",
4
4
  "main": "./lib/index.js",
5
5
  "license": "ISC",
6
6
  "description": "The bridge used to embed your application within Shopfront",
@@ -1,10 +0,0 @@
1
- <component name="ProjectCodeStyleConfiguration">
2
- <code_scheme name="Project" version="173">
3
- <JSCodeStyleSettings version="0">
4
- <option name="FORCE_SEMICOLON_STYLE" value="true" />
5
- </JSCodeStyleSettings>
6
- <TypeScriptCodeStyleSettings version="0">
7
- <option name="FORCE_SEMICOLON_STYLE" value="true" />
8
- </TypeScriptCodeStyleSettings>
9
- </code_scheme>
10
- </component>
@@ -1,5 +0,0 @@
1
- <component name="ProjectCodeStyleConfiguration">
2
- <state>
3
- <option name="USE_PER_PROJECT_SETTINGS" value="true" />
4
- </state>
5
- </component>
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="GitToolBoxBlameSettings">
4
- <option name="version" value="2" />
5
- </component>
6
- </project>
@@ -1,15 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="GitToolBoxProjectSettings">
4
- <option name="commitMessageIssueKeyValidationOverride">
5
- <BoolValueOverride>
6
- <option name="enabled" value="true" />
7
- </BoolValueOverride>
8
- </option>
9
- <option name="commitMessageValidationEnabledOverride">
10
- <BoolValueOverride>
11
- <option name="enabled" value="true" />
12
- </BoolValueOverride>
13
- </option>
14
- </component>
15
- </project>
@@ -1,11 +0,0 @@
1
- <component name="InspectionProjectProfileManager">
2
- <profile version="1.0">
3
- <option name="myName" value="Project Default" />
4
- <inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
5
- <inspection_tool class="ImplicitTypeConversion" enabled="true" level="WARNING" enabled_by_default="true">
6
- <option name="BITS" value="1720" />
7
- <option name="FLAG_EXPLICIT_CONVERSION" value="true" />
8
- <option name="IGNORE_NODESET_TO_BOOLEAN_VIA_STRING" value="true" />
9
- </inspection_tool>
10
- </profile>
11
- </component>
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="EslintConfiguration">
4
- <option name="fix-on-save" value="true" />
5
- </component>
6
- </project>
package/.idea/misc.xml DELETED
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="TaskProjectConfiguration">
4
- <server type="JIRA" url="https://onshopfront.atlassian.net" />
5
- </component>
6
- </project>
package/.idea/modules.xml DELETED
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectModuleManager">
4
- <modules>
5
- <module fileurl="file://$PROJECT_DIR$/.idea/shopfront-embedded-bridge.iml" filepath="$PROJECT_DIR$/.idea/shopfront-embedded-bridge.iml" />
6
- </modules>
7
- </component>
8
- </project>
package/.idea/php.xml DELETED
@@ -1,33 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="MessDetectorOptionsConfiguration">
4
- <option name="transferred" value="true" />
5
- </component>
6
- <component name="PHPCSFixerOptionsConfiguration">
7
- <option name="transferred" value="true" />
8
- </component>
9
- <component name="PHPCodeSnifferOptionsConfiguration">
10
- <option name="transferred" value="true" />
11
- </component>
12
- <component name="PhpCodeSniffer">
13
- <phpcs_settings>
14
- <phpcs_by_interpreter asDefaultInterpreter="true" interpreter_id="bb870563-23b2-4cfc-9ac5-70a3316d78e5" timeout="30000" />
15
- </phpcs_settings>
16
- </component>
17
- <component name="PhpStan">
18
- <PhpStan_settings>
19
- <phpstan_by_interpreter asDefaultInterpreter="true" interpreter_id="bb870563-23b2-4cfc-9ac5-70a3316d78e5" timeout="60000" />
20
- </PhpStan_settings>
21
- </component>
22
- <component name="PhpStanOptionsConfiguration">
23
- <option name="transferred" value="true" />
24
- </component>
25
- <component name="Psalm">
26
- <Psalm_settings>
27
- <psalm_fixer_by_interpreter asDefaultInterpreter="true" interpreter_id="bb870563-23b2-4cfc-9ac5-70a3316d78e5" timeout="60000" />
28
- </Psalm_settings>
29
- </component>
30
- <component name="PsalmOptionsConfiguration">
31
- <option name="transferred" value="true" />
32
- </component>
33
- </project>
@@ -1,10 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <module type="WEB_MODULE" version="4">
3
- <component name="NewModuleRootManager">
4
- <content url="file://$MODULE_DIR$">
5
- <excludeFolder url="file://$MODULE_DIR$/lib" />
6
- </content>
7
- <orderEntry type="inheritedJdk" />
8
- <orderEntry type="sourceFolder" forTests="false" />
9
- </component>
10
- </module>
package/.idea/vcs.xml DELETED
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="VcsDirectoryMappings">
4
- <mapping directory="$PROJECT_DIR$" vcs="Git" />
5
- </component>
6
- </project>