@shopify/shopify-api 4.1.0 → 4.2.0

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 (35) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/dist/auth/session/session_storage.d.ts +12 -0
  3. package/dist/auth/session/session_storage.d.ts.map +1 -1
  4. package/dist/auth/session/storage/__tests__/battery-of-tests.d.ts.map +1 -1
  5. package/dist/auth/session/storage/__tests__/battery-of-tests.js +124 -0
  6. package/dist/auth/session/storage/__tests__/session-test-utils.d.ts +3 -0
  7. package/dist/auth/session/storage/__tests__/session-test-utils.d.ts.map +1 -0
  8. package/dist/auth/session/storage/__tests__/session-test-utils.js +46 -0
  9. package/dist/auth/session/storage/custom.d.ts +5 -1
  10. package/dist/auth/session/storage/custom.d.ts.map +1 -1
  11. package/dist/auth/session/storage/custom.js +56 -1
  12. package/dist/auth/session/storage/memory.d.ts +2 -0
  13. package/dist/auth/session/storage/memory.d.ts.map +1 -1
  14. package/dist/auth/session/storage/memory.js +18 -0
  15. package/dist/auth/session/storage/mongodb.d.ts +2 -0
  16. package/dist/auth/session/storage/mongodb.d.ts.map +1 -1
  17. package/dist/auth/session/storage/mongodb.js +39 -6
  18. package/dist/auth/session/storage/mysql.d.ts +2 -0
  19. package/dist/auth/session/storage/mysql.d.ts.map +1 -1
  20. package/dist/auth/session/storage/mysql.js +39 -0
  21. package/dist/auth/session/storage/postgresql.d.ts +2 -0
  22. package/dist/auth/session/storage/postgresql.d.ts.map +1 -1
  23. package/dist/auth/session/storage/postgresql.js +39 -0
  24. package/dist/auth/session/storage/redis.d.ts +2 -0
  25. package/dist/auth/session/storage/redis.d.ts.map +1 -1
  26. package/dist/auth/session/storage/redis.js +65 -0
  27. package/dist/auth/session/storage/sqlite.d.ts +2 -0
  28. package/dist/auth/session/storage/sqlite.d.ts.map +1 -1
  29. package/dist/auth/session/storage/sqlite.js +39 -0
  30. package/dist/clients/http_client/http_client.d.ts.map +1 -1
  31. package/dist/clients/http_client/http_client.js +4 -0
  32. package/dist/version.d.ts +1 -1
  33. package/dist/version.js +1 -1
  34. package/dist/webhooks/registry.js +2 -2
  35. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,12 @@ and adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
7
7
 
8
8
  ## Unreleased
9
9
 
10
+ ## [4.2.0] - 2022-07-20
11
+
12
+ - Return a 401 instead of 403 when webhooks fail validation [#425](https://github.com/Shopify/shopify-api-node/pull/425)
13
+ - Add optional new methods `deleteSession` and `findSessionsByShop` to `SessionStorage`, with the corresponding implementations for the various session storage adapters [#418](https://github.com/Shopify/shopify-api-node/pull/418)
14
+ - Include subset of query body in API deprecation logs [#426](https://github.com/Shopify/shopify-api-node/pull/426)
15
+
10
16
  ## [4.1.0] - 2022-07-14
11
17
 
12
18
  - Add new method to construct the host app URL [#419](https://github.com/Shopify/shopify-api-node/pull/419)
@@ -23,25 +29,29 @@ and adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
23
29
  ## [3.1.3] - 2022-06-08
24
30
 
25
31
  ### Fixes
32
+
26
33
  - Return instances of `Session` from session storages, not POJOs.
27
34
 
28
35
  ## [3.1.2] - 2022-06-07
29
36
 
30
37
  ### Added
38
+
31
39
  - Store user id and expiration date of online tokens
32
40
 
33
41
  ### Fixes
42
+
34
43
  - Properly parse a non-json HTTP response [#257](https://github.com/Shopify/shopify-api-node/issues/257)
35
44
  - Don’t create a SQLite DB file if the SQLite storage is not used.
36
45
 
37
-
38
46
  ## [3.1.0] - 2022-05-16
39
47
 
40
48
  ### Added
49
+
41
50
  - Support for specifying the URI scheme of the host [#385](https://github.com/Shopify/shopify-api-node/pull/385)
42
51
  - Add optional `saving` parameter to `serialize` of `Base` class - default is `false` and will include read-only attributes in returned object; `true` used for `save` when committing via API to Shopify.
43
52
 
44
53
  ### Fixed
54
+
45
55
  - Fixes [#363](https://github.com/Shopify/shopify-api-node/issues/363)
46
56
  - Webhooks `register` now checks for any attempt to register a GDPR topic (not done via API but by Partner Dashboard), provides an error message in response
47
57
  - For topics that don't exist, `register` checks the response from the initial API call for an `errors` field and returns accordingly
@@ -21,6 +21,18 @@ interface SessionStorage {
21
21
  * @param id Id of the session to delete
22
22
  */
23
23
  deleteSession(id: string): Promise<boolean>;
24
+ /**
25
+ * Deletes an array of sessions from storage.
26
+ *
27
+ * @param ids Array of session id's to delete
28
+ */
29
+ deleteSessions?(ids: string[]): Promise<boolean>;
30
+ /**
31
+ * Return an array of sessions for a given shop (or [] if none found).
32
+ *
33
+ * @param shop shop of the session(s) to return
34
+ */
35
+ findSessionsByShop?(shop: string): Promise<SessionInterface[]>;
24
36
  }
25
37
  export { SessionStorage };
26
38
  //# sourceMappingURL=session_storage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session_storage.d.ts","sourceRoot":"","sources":["../../../src/auth/session/session_storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,SAAS,CAAC;AAEzC;;GAEG;AACH,UAAU,cAAc;IACtB;;;;OAIG;IACH,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1D;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;IAE/D;;;;OAIG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7C;AAED,OAAO,EAAC,cAAc,EAAC,CAAC"}
1
+ {"version":3,"file":"session_storage.d.ts","sourceRoot":"","sources":["../../../src/auth/session/session_storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,SAAS,CAAC;AAEzC;;GAEG;AACH,UAAU,cAAc;IACtB;;;;OAIG;IACH,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1D;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;IAE/D;;;;OAIG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5C;;;;OAIG;IACH,cAAc,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjD;;;;OAIG;IACH,kBAAkB,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;CAChE;AAED,OAAO,EAAC,cAAc,EAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"battery-of-tests.d.ts","sourceRoot":"","sources":["../../../../../src/auth/session/storage/__tests__/battery-of-tests.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAC;AAErD,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,QA+F3E"}
1
+ {"version":3,"file":"battery-of-tests.d.ts","sourceRoot":"","sources":["../../../../../src/auth/session/storage/__tests__/battery-of-tests.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAC;AAKrD,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,QA6J3E"}
@@ -5,6 +5,7 @@ var tslib_1 = require("tslib");
5
5
  var context_1 = require("../../../../context");
6
6
  var session_1 = require("../../session");
7
7
  var session_utils_1 = require("../../session-utils");
8
+ var session_test_utils_1 = require("./session-test-utils");
8
9
  function batteryOfTests(storageFactory) {
9
10
  var _this = this;
10
11
  it('can store and delete all kinds of sessions', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
@@ -187,5 +188,128 @@ function batteryOfTests(storageFactory) {
187
188
  }
188
189
  });
189
190
  }); });
191
+ it('can find all the sessions for a given shop', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
192
+ var storage, prefix, sessions, sessions_1, sessions_1_1, session, e_2_1, shop1Sessions;
193
+ var e_2, _a;
194
+ return tslib_1.__generator(this, function (_b) {
195
+ switch (_b.label) {
196
+ case 0: return [4 /*yield*/, storageFactory()];
197
+ case 1:
198
+ storage = _b.sent();
199
+ prefix = 'find_sessions';
200
+ sessions = [
201
+ new session_1.Session("".concat(prefix, "_1"), 'find-shop1-sessions', 'state', true),
202
+ new session_1.Session("".concat(prefix, "_2"), 'do-not-find-shop2-sessions', 'state', true),
203
+ new session_1.Session("".concat(prefix, "_3"), 'find-shop1-sessions', 'state', true),
204
+ new session_1.Session("".concat(prefix, "_4"), 'do-not-find-shop3-sessions', 'state', true),
205
+ ];
206
+ _b.label = 2;
207
+ case 2:
208
+ _b.trys.push([2, 7, 8, 9]);
209
+ sessions_1 = tslib_1.__values(sessions), sessions_1_1 = sessions_1.next();
210
+ _b.label = 3;
211
+ case 3:
212
+ if (!!sessions_1_1.done) return [3 /*break*/, 6];
213
+ session = sessions_1_1.value;
214
+ return [4 /*yield*/, expect(storage.storeSession(session)).resolves.toBe(true)];
215
+ case 4:
216
+ _b.sent();
217
+ _b.label = 5;
218
+ case 5:
219
+ sessions_1_1 = sessions_1.next();
220
+ return [3 /*break*/, 3];
221
+ case 6: return [3 /*break*/, 9];
222
+ case 7:
223
+ e_2_1 = _b.sent();
224
+ e_2 = { error: e_2_1 };
225
+ return [3 /*break*/, 9];
226
+ case 8:
227
+ try {
228
+ if (sessions_1_1 && !sessions_1_1.done && (_a = sessions_1.return)) _a.call(sessions_1);
229
+ }
230
+ finally { if (e_2) throw e_2.error; }
231
+ return [7 /*endfinally*/];
232
+ case 9:
233
+ expect(storage.findSessionsByShop).toBeDefined();
234
+ if (!storage.findSessionsByShop) return [3 /*break*/, 11];
235
+ return [4 /*yield*/, storage.findSessionsByShop('find-shop1-sessions')];
236
+ case 10:
237
+ shop1Sessions = _b.sent();
238
+ expect(shop1Sessions).toBeDefined();
239
+ if (shop1Sessions) {
240
+ expect(shop1Sessions.length).toBe(2);
241
+ expect((0, session_test_utils_1.sessionArraysEqual)(shop1Sessions, [
242
+ sessions[0],
243
+ sessions[2],
244
+ ])).toBe(true);
245
+ }
246
+ _b.label = 11;
247
+ case 11: return [2 /*return*/];
248
+ }
249
+ });
250
+ }); });
251
+ it('can delete the sessions for a given array of ids', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
252
+ var storage, prefix, sessions, sessions_2, sessions_2_1, session, e_3_1, shop1Sessions, idsToDelete;
253
+ var e_3, _a;
254
+ return tslib_1.__generator(this, function (_b) {
255
+ switch (_b.label) {
256
+ case 0: return [4 /*yield*/, storageFactory()];
257
+ case 1:
258
+ storage = _b.sent();
259
+ prefix = 'delete_sessions';
260
+ sessions = [
261
+ new session_1.Session("".concat(prefix, "_1"), 'delete-shop1-sessions', 'state', true),
262
+ new session_1.Session("".concat(prefix, "_2"), 'do-not-delete-shop2-sessions', 'state', true),
263
+ new session_1.Session("".concat(prefix, "_3"), 'delete-shop1-sessions', 'state', true),
264
+ new session_1.Session("".concat(prefix, "_4"), 'do-not-delete-shop3-sessions', 'state', true),
265
+ ];
266
+ _b.label = 2;
267
+ case 2:
268
+ _b.trys.push([2, 7, 8, 9]);
269
+ sessions_2 = tslib_1.__values(sessions), sessions_2_1 = sessions_2.next();
270
+ _b.label = 3;
271
+ case 3:
272
+ if (!!sessions_2_1.done) return [3 /*break*/, 6];
273
+ session = sessions_2_1.value;
274
+ return [4 /*yield*/, expect(storage.storeSession(session)).resolves.toBe(true)];
275
+ case 4:
276
+ _b.sent();
277
+ _b.label = 5;
278
+ case 5:
279
+ sessions_2_1 = sessions_2.next();
280
+ return [3 /*break*/, 3];
281
+ case 6: return [3 /*break*/, 9];
282
+ case 7:
283
+ e_3_1 = _b.sent();
284
+ e_3 = { error: e_3_1 };
285
+ return [3 /*break*/, 9];
286
+ case 8:
287
+ try {
288
+ if (sessions_2_1 && !sessions_2_1.done && (_a = sessions_2.return)) _a.call(sessions_2);
289
+ }
290
+ finally { if (e_3) throw e_3.error; }
291
+ return [7 /*endfinally*/];
292
+ case 9:
293
+ expect(storage.deleteSessions).toBeDefined();
294
+ if (!(storage.deleteSessions && storage.findSessionsByShop)) return [3 /*break*/, 13];
295
+ return [4 /*yield*/, storage.findSessionsByShop('delete-shop1-sessions')];
296
+ case 10:
297
+ shop1Sessions = _b.sent();
298
+ expect(shop1Sessions).toBeDefined();
299
+ if (!shop1Sessions) return [3 /*break*/, 13];
300
+ expect(shop1Sessions.length).toBe(2);
301
+ idsToDelete = shop1Sessions.map(function (session) { return session.id; });
302
+ return [4 /*yield*/, expect(storage.deleteSessions(idsToDelete)).resolves.toBe(true)];
303
+ case 11:
304
+ _b.sent();
305
+ return [4 /*yield*/, storage.findSessionsByShop('delete-shop1-sessions')];
306
+ case 12:
307
+ shop1Sessions = _b.sent();
308
+ expect(shop1Sessions).toEqual([]);
309
+ _b.label = 13;
310
+ case 13: return [2 /*return*/];
311
+ }
312
+ });
313
+ }); });
190
314
  }
191
315
  exports.batteryOfTests = batteryOfTests;
@@ -0,0 +1,3 @@
1
+ import { SessionInterface } from '../../types';
2
+ export declare function sessionArraysEqual(sessionArray1: SessionInterface[], sessionArray2: SessionInterface[]): boolean;
3
+ //# sourceMappingURL=session-test-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-test-utils.d.ts","sourceRoot":"","sources":["../../../../../src/auth/session/storage/__tests__/session-test-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAI7C,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,gBAAgB,EAAE,EACjC,aAAa,EAAE,gBAAgB,EAAE,GAChC,OAAO,CAgBT"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sessionArraysEqual = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var session_utils_1 = require("../../session-utils");
6
+ // compare two arrays of sessions that should contain
7
+ // the same sessions but may be in a different order
8
+ function sessionArraysEqual(sessionArray1, sessionArray2) {
9
+ var e_1, _a, e_2, _b;
10
+ if (sessionArray1.length !== sessionArray2.length) {
11
+ return false;
12
+ }
13
+ try {
14
+ for (var sessionArray1_1 = tslib_1.__values(sessionArray1), sessionArray1_1_1 = sessionArray1_1.next(); !sessionArray1_1_1.done; sessionArray1_1_1 = sessionArray1_1.next()) {
15
+ var session1 = sessionArray1_1_1.value;
16
+ var found = false;
17
+ try {
18
+ for (var sessionArray2_1 = (e_2 = void 0, tslib_1.__values(sessionArray2)), sessionArray2_1_1 = sessionArray2_1.next(); !sessionArray2_1_1.done; sessionArray2_1_1 = sessionArray2_1.next()) {
19
+ var session2 = sessionArray2_1_1.value;
20
+ if ((0, session_utils_1.sessionEqual)(session1, session2)) {
21
+ found = true;
22
+ continue;
23
+ }
24
+ }
25
+ }
26
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
27
+ finally {
28
+ try {
29
+ if (sessionArray2_1_1 && !sessionArray2_1_1.done && (_b = sessionArray2_1.return)) _b.call(sessionArray2_1);
30
+ }
31
+ finally { if (e_2) throw e_2.error; }
32
+ }
33
+ if (!found)
34
+ return false;
35
+ }
36
+ }
37
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
38
+ finally {
39
+ try {
40
+ if (sessionArray1_1_1 && !sessionArray1_1_1.done && (_a = sessionArray1_1.return)) _a.call(sessionArray1_1);
41
+ }
42
+ finally { if (e_1) throw e_1.error; }
43
+ }
44
+ return true;
45
+ }
46
+ exports.sessionArraysEqual = sessionArraysEqual;
@@ -6,11 +6,15 @@ export declare class CustomSessionStorage implements SessionStorage {
6
6
  [key: string]: unknown;
7
7
  } | undefined>;
8
8
  readonly deleteCallback: (id: string) => Promise<boolean>;
9
+ readonly deleteSessionsCallback?: ((ids: string[]) => Promise<boolean>) | undefined;
10
+ readonly findSessionsByShopCallback?: ((shop: string) => Promise<SessionInterface[]>) | undefined;
9
11
  constructor(storeCallback: (session: SessionInterface) => Promise<boolean>, loadCallback: (id: string) => Promise<SessionInterface | {
10
12
  [key: string]: unknown;
11
- } | undefined>, deleteCallback: (id: string) => Promise<boolean>);
13
+ } | undefined>, deleteCallback: (id: string) => Promise<boolean>, deleteSessionsCallback?: ((ids: string[]) => Promise<boolean>) | undefined, findSessionsByShopCallback?: ((shop: string) => Promise<SessionInterface[]>) | undefined);
12
14
  storeSession(session: SessionInterface): Promise<boolean>;
13
15
  loadSession(id: string): Promise<SessionInterface | undefined>;
14
16
  deleteSession(id: string): Promise<boolean>;
17
+ deleteSessions(ids: string[]): Promise<boolean>;
18
+ findSessionsByShop(shop: string): Promise<SessionInterface[]>;
15
19
  }
16
20
  //# sourceMappingURL=custom.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"custom.d.ts","sourceRoot":"","sources":["../../../../src/auth/session/storage/custom.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAGlD,qBAAa,oBAAqB,YAAW,cAAc;IAEvD,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,OAAO,CAAC;IACvE,QAAQ,CAAC,YAAY,EAAE,CACrB,EAAE,EAAE,MAAM,KACP,OAAO,CAAC,gBAAgB,GAAG;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,GAAG,SAAS,CAAC;IACrE,QAAQ,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC;gBAJhD,aAAa,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,OAAO,CAAC,EAC9D,YAAY,EAAE,CACrB,EAAE,EAAE,MAAM,KACP,OAAO,CAAC,gBAAgB,GAAG;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,GAAG,SAAS,CAAC,EAC5D,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC;IAO9C,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAUzD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IA0C9D,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CASzD"}
1
+ {"version":3,"file":"custom.d.ts","sourceRoot":"","sources":["../../../../src/auth/session/storage/custom.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAGlD,qBAAa,oBAAqB,YAAW,cAAc;IAEvD,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,OAAO,CAAC;IACvE,QAAQ,CAAC,YAAY,EAAE,CACrB,EAAE,EAAE,MAAM,KACP,OAAO,CAAC,gBAAgB,GAAG;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,GAAG,SAAS,CAAC;IACrE,QAAQ,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC;IACzD,QAAQ,CAAC,sBAAsB,CAAC,SAAQ,MAAM,EAAE,KAAK,QAAQ,OAAO,CAAC;IACrE,QAAQ,CAAC,0BAA0B,CAAC,UAC5B,MAAM,KACT,QAAQ,gBAAgB,EAAE,CAAC;gBARvB,aAAa,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,OAAO,CAAC,EAC9D,YAAY,EAAE,CACrB,EAAE,EAAE,MAAM,KACP,OAAO,CAAC,gBAAgB,GAAG;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,GAAG,SAAS,CAAC,EAC5D,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAChD,sBAAsB,CAAC,SAAQ,MAAM,EAAE,KAAK,QAAQ,OAAO,CAAC,aAAA,EAC5D,0BAA0B,CAAC,UAC5B,MAAM,KACT,QAAQ,gBAAgB,EAAE,CAAC,aAAA;IASrB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAUzD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IA0C9D,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAU3C,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB/C,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;CAkB3E"}
@@ -5,13 +5,17 @@ var tslib_1 = require("tslib");
5
5
  var session_1 = require("../session");
6
6
  var ShopifyErrors = tslib_1.__importStar(require("../../../error"));
7
7
  var CustomSessionStorage = /** @class */ (function () {
8
- function CustomSessionStorage(storeCallback, loadCallback, deleteCallback) {
8
+ function CustomSessionStorage(storeCallback, loadCallback, deleteCallback, deleteSessionsCallback, findSessionsByShopCallback) {
9
9
  this.storeCallback = storeCallback;
10
10
  this.loadCallback = loadCallback;
11
11
  this.deleteCallback = deleteCallback;
12
+ this.deleteSessionsCallback = deleteSessionsCallback;
13
+ this.findSessionsByShopCallback = findSessionsByShopCallback;
12
14
  this.storeCallback = storeCallback;
13
15
  this.loadCallback = loadCallback;
14
16
  this.deleteCallback = deleteCallback;
17
+ this.deleteSessionsCallback = deleteSessionsCallback;
18
+ this.findSessionsByShopCallback = findSessionsByShopCallback;
15
19
  }
16
20
  CustomSessionStorage.prototype.storeSession = function (session) {
17
21
  return tslib_1.__awaiter(this, void 0, void 0, function () {
@@ -89,6 +93,57 @@ var CustomSessionStorage = /** @class */ (function () {
89
93
  });
90
94
  });
91
95
  };
96
+ CustomSessionStorage.prototype.deleteSessions = function (ids) {
97
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
98
+ var error_4;
99
+ return tslib_1.__generator(this, function (_a) {
100
+ switch (_a.label) {
101
+ case 0:
102
+ if (!this.deleteSessionsCallback) return [3 /*break*/, 5];
103
+ _a.label = 1;
104
+ case 1:
105
+ _a.trys.push([1, 3, , 4]);
106
+ return [4 /*yield*/, this.deleteSessionsCallback(ids)];
107
+ case 2: return [2 /*return*/, _a.sent()];
108
+ case 3:
109
+ error_4 = _a.sent();
110
+ throw new ShopifyErrors.SessionStorageError("CustomSessionStorage failed to delete array of sessions. Error Details: ".concat(error_4));
111
+ case 4: return [3 /*break*/, 6];
112
+ case 5:
113
+ console.warn("CustomSessionStorage failed to delete array of sessions. Error Details: deleteSessionsCallback not defined.");
114
+ _a.label = 6;
115
+ case 6: return [2 /*return*/, false];
116
+ }
117
+ });
118
+ });
119
+ };
120
+ CustomSessionStorage.prototype.findSessionsByShop = function (shop) {
121
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
122
+ var sessions, error_5;
123
+ return tslib_1.__generator(this, function (_a) {
124
+ switch (_a.label) {
125
+ case 0:
126
+ sessions = [];
127
+ if (!this.findSessionsByShopCallback) return [3 /*break*/, 5];
128
+ _a.label = 1;
129
+ case 1:
130
+ _a.trys.push([1, 3, , 4]);
131
+ return [4 /*yield*/, this.findSessionsByShopCallback(shop)];
132
+ case 2:
133
+ sessions = _a.sent();
134
+ return [3 /*break*/, 4];
135
+ case 3:
136
+ error_5 = _a.sent();
137
+ throw new ShopifyErrors.SessionStorageError("CustomSessionStorage failed to find sessions by shop. Error Details: ".concat(error_5));
138
+ case 4: return [3 /*break*/, 6];
139
+ case 5:
140
+ console.warn("CustomSessionStorage failed to find sessions by shop. Error Details: findSessionsByShopCallback not defined.");
141
+ _a.label = 6;
142
+ case 6: return [2 /*return*/, sessions];
143
+ }
144
+ });
145
+ });
146
+ };
92
147
  return CustomSessionStorage;
93
148
  }());
94
149
  exports.CustomSessionStorage = CustomSessionStorage;
@@ -5,5 +5,7 @@ export declare class MemorySessionStorage implements SessionStorage {
5
5
  storeSession(session: SessionInterface): Promise<boolean>;
6
6
  loadSession(id: string): Promise<SessionInterface | undefined>;
7
7
  deleteSession(id: string): Promise<boolean>;
8
+ deleteSessions(ids: string[]): Promise<boolean>;
9
+ findSessionsByShop(shop: string): Promise<SessionInterface[]>;
8
10
  }
9
11
  //# sourceMappingURL=memory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/auth/session/storage/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAElD,qBAAa,oBAAqB,YAAW,cAAc;IACzD,OAAO,CAAC,QAAQ,CAAwC;IAE3C,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAKzD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAI9D,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAMzD"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/auth/session/storage/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAElD,qBAAa,oBAAqB,YAAW,cAAc;IACzD,OAAO,CAAC,QAAQ,CAAwC;IAE3C,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAKzD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAI9D,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAO3C,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAK/C,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;CAM3E"}
@@ -31,6 +31,24 @@ var MemorySessionStorage = /** @class */ (function () {
31
31
  });
32
32
  });
33
33
  };
34
+ MemorySessionStorage.prototype.deleteSessions = function (ids) {
35
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
36
+ var _this = this;
37
+ return tslib_1.__generator(this, function (_a) {
38
+ ids.forEach(function (id) { return delete _this.sessions[id]; });
39
+ return [2 /*return*/, true];
40
+ });
41
+ });
42
+ };
43
+ MemorySessionStorage.prototype.findSessionsByShop = function (shop) {
44
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
45
+ var results;
46
+ return tslib_1.__generator(this, function (_a) {
47
+ results = Object.values(this.sessions).filter(function (session) { return session.shop === shop; });
48
+ return [2 /*return*/, results];
49
+ });
50
+ });
51
+ };
34
52
  return MemorySessionStorage;
35
53
  }());
36
54
  exports.MemorySessionStorage = MemorySessionStorage;
@@ -14,6 +14,8 @@ export declare class MongoDBSessionStorage implements SessionStorage {
14
14
  storeSession(session: SessionInterface): Promise<boolean>;
15
15
  loadSession(id: string): Promise<SessionInterface | undefined>;
16
16
  deleteSession(id: string): Promise<boolean>;
17
+ deleteSessions(ids: string[]): Promise<boolean>;
18
+ findSessionsByShop(shop: string): Promise<SessionInterface[]>;
17
19
  disconnect(): Promise<void>;
18
20
  private get collection();
19
21
  private init;
@@ -1 +1 @@
1
- {"version":3,"file":"mongodb.d.ts","sourceRoot":"","sources":["../../../../src/auth/session/storage/mongodb.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAGlD,MAAM,WAAW,4BAA4B;IAC3C,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAKD,qBAAa,qBAAsB,YAAW,cAAc;IAyBxD,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IAzBhB,MAAM,CAAC,eAAe,CACpB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,CAAC,4BAA4B,CAAC;IAa7C,SAAgB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,OAAO,CAA+B;IAE9C,OAAO,CAAC,MAAM,CAAM;gBAGV,KAAK,EAAE,GAAG,EACV,MAAM,EAAE,MAAM,EACtB,IAAI,GAAE,OAAO,CAAC,4BAA4B,CAAM;IASrC,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAazD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAS9D,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM3C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxC,OAAO,KAAK,UAAU,GAIrB;YAEa,IAAI;YAOJ,oBAAoB;YAOpB,gBAAgB;CAM/B"}
1
+ {"version":3,"file":"mongodb.d.ts","sourceRoot":"","sources":["../../../../src/auth/session/storage/mongodb.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAGlD,MAAM,WAAW,4BAA4B;IAC3C,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAKD,qBAAa,qBAAsB,YAAW,cAAc;IAyBxD,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IAzBhB,MAAM,CAAC,eAAe,CACpB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,CAAC,4BAA4B,CAAC;IAa7C,SAAgB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,OAAO,CAA+B;IAE9C,OAAO,CAAC,MAAM,CAAM;gBAGV,KAAK,EAAE,GAAG,EACV,MAAM,EAAE,MAAM,EACtB,IAAI,GAAE,OAAO,CAAC,4BAA4B,CAAM;IASrC,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAazD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAQ9D,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM3C,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAM/C,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAW7D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxC,OAAO,KAAK,UAAU,GAIrB;YAEa,IAAI;YAOJ,oBAAoB;YAOpB,gBAAgB;CAM/B"}
@@ -28,7 +28,7 @@ var MongoDBSessionStorage = /** @class */ (function () {
28
28
  case 0: return [4 /*yield*/, this.ready];
29
29
  case 1:
30
30
  _a.sent();
31
- return [4 /*yield*/, this.collection.findOneAndReplace({ id: session.id }, { id: session.id, entries: (0, session_utils_1.sessionEntries)(session) }, {
31
+ return [4 /*yield*/, this.collection.findOneAndReplace({ id: session.id }, Object.fromEntries((0, session_utils_1.sessionEntries)(session)), {
32
32
  upsert: true,
33
33
  })];
34
34
  case 2:
@@ -40,7 +40,7 @@ var MongoDBSessionStorage = /** @class */ (function () {
40
40
  };
41
41
  MongoDBSessionStorage.prototype.loadSession = function (id) {
42
42
  return tslib_1.__awaiter(this, void 0, void 0, function () {
43
- var rawResult;
43
+ var result;
44
44
  return tslib_1.__generator(this, function (_a) {
45
45
  switch (_a.label) {
46
46
  case 0: return [4 /*yield*/, this.ready];
@@ -48,10 +48,8 @@ var MongoDBSessionStorage = /** @class */ (function () {
48
48
  _a.sent();
49
49
  return [4 /*yield*/, this.collection.findOne({ id: id })];
50
50
  case 2:
51
- rawResult = _a.sent();
52
- if (!rawResult)
53
- return [2 /*return*/, undefined];
54
- return [2 /*return*/, (0, session_utils_1.sessionFromEntries)(rawResult.entries)];
51
+ result = _a.sent();
52
+ return [2 /*return*/, result ? (0, session_utils_1.sessionFromEntries)(Object.entries(result)) : undefined];
55
53
  }
56
54
  });
57
55
  });
@@ -71,6 +69,41 @@ var MongoDBSessionStorage = /** @class */ (function () {
71
69
  });
72
70
  });
73
71
  };
72
+ MongoDBSessionStorage.prototype.deleteSessions = function (ids) {
73
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
74
+ return tslib_1.__generator(this, function (_a) {
75
+ switch (_a.label) {
76
+ case 0: return [4 /*yield*/, this.ready];
77
+ case 1:
78
+ _a.sent();
79
+ return [4 /*yield*/, this.collection.deleteMany({ id: { $in: ids } })];
80
+ case 2:
81
+ _a.sent();
82
+ return [2 /*return*/, true];
83
+ }
84
+ });
85
+ });
86
+ };
87
+ MongoDBSessionStorage.prototype.findSessionsByShop = function (shop) {
88
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
89
+ var rawResults;
90
+ return tslib_1.__generator(this, function (_a) {
91
+ switch (_a.label) {
92
+ case 0: return [4 /*yield*/, this.ready];
93
+ case 1:
94
+ _a.sent();
95
+ return [4 /*yield*/, this.collection.find({ shop: shop }).toArray()];
96
+ case 2:
97
+ rawResults = _a.sent();
98
+ if (!rawResults || (rawResults === null || rawResults === void 0 ? void 0 : rawResults.length) === 0)
99
+ return [2 /*return*/, []];
100
+ return [2 /*return*/, rawResults.map(function (rawResult) {
101
+ return (0, session_utils_1.sessionFromEntries)(Object.entries(rawResult));
102
+ })];
103
+ }
104
+ });
105
+ });
106
+ };
74
107
  MongoDBSessionStorage.prototype.disconnect = function () {
75
108
  return tslib_1.__awaiter(this, void 0, void 0, function () {
76
109
  return tslib_1.__generator(this, function (_a) {
@@ -13,6 +13,8 @@ export declare class MySQLSessionStorage implements SessionStorage {
13
13
  storeSession(session: SessionInterface): Promise<boolean>;
14
14
  loadSession(id: string): Promise<SessionInterface | undefined>;
15
15
  deleteSession(id: string): Promise<boolean>;
16
+ deleteSessions(ids: string[]): Promise<boolean>;
17
+ findSessionsByShop(shop: string): Promise<SessionInterface[]>;
16
18
  disconnect(): Promise<void>;
17
19
  private init;
18
20
  private hasSessionTable;
@@ -1 +1 @@
1
- {"version":3,"file":"mysql.d.ts","sourceRoot":"","sources":["../../../../src/auth/session/storage/mysql.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAGlD,MAAM,WAAW,0BAA0B;IACzC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAKD,qBAAa,mBAAoB,YAAW,cAAc;IAuBtD,OAAO,CAAC,KAAK;IAtBf,MAAM,CAAC,eAAe,CACpB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,CAAC,0BAA0B,CAAC;IAY3C,SAAgB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,UAAU,CAAmB;gBAG3B,KAAK,EAAE,GAAG,EAClB,IAAI,GAAE,OAAO,CAAC,0BAA0B,CAAM;IASnC,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBzD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAY9D,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAU3C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAI1B,IAAI;YAKJ,eAAe;YAQf,WAAW;IAmBzB,OAAO,CAAC,KAAK;CAGd"}
1
+ {"version":3,"file":"mysql.d.ts","sourceRoot":"","sources":["../../../../src/auth/session/storage/mysql.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAGlD,MAAM,WAAW,0BAA0B;IACzC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAKD,qBAAa,mBAAoB,YAAW,cAAc;IAuBtD,OAAO,CAAC,KAAK;IAtBf,MAAM,CAAC,eAAe,CACpB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,CAAC,0BAA0B,CAAC;IAY3C,SAAgB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,UAAU,CAAmB;gBAG3B,KAAK,EAAE,GAAG,EAClB,IAAI,GAAE,OAAO,CAAC,0BAA0B,CAAM;IASnC,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBzD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAY9D,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAU3C,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAU/C,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAe7D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAI1B,IAAI;YAKJ,eAAe;YAQf,WAAW;IAmBzB,OAAO,CAAC,KAAK;CAGd"}
@@ -81,6 +81,45 @@ var MySQLSessionStorage = /** @class */ (function () {
81
81
  });
82
82
  });
83
83
  };
84
+ MySQLSessionStorage.prototype.deleteSessions = function (ids) {
85
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
86
+ var query;
87
+ return tslib_1.__generator(this, function (_a) {
88
+ switch (_a.label) {
89
+ case 0: return [4 /*yield*/, this.ready];
90
+ case 1:
91
+ _a.sent();
92
+ query = "\n DELETE FROM ".concat(this.options.sessionTableName, "\n WHERE id IN (").concat(ids.map(function () { return '?'; }).join(','), ");\n ");
93
+ return [4 /*yield*/, this.query(query, ids)];
94
+ case 2:
95
+ _a.sent();
96
+ return [2 /*return*/, true];
97
+ }
98
+ });
99
+ });
100
+ };
101
+ MySQLSessionStorage.prototype.findSessionsByShop = function (shop) {
102
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
103
+ var query, _a, rows, results;
104
+ return tslib_1.__generator(this, function (_b) {
105
+ switch (_b.label) {
106
+ case 0: return [4 /*yield*/, this.ready];
107
+ case 1:
108
+ _b.sent();
109
+ query = "\n SELECT * FROM ".concat(this.options.sessionTableName, "\n WHERE shop = ?;\n ");
110
+ return [4 /*yield*/, this.query(query, [shop])];
111
+ case 2:
112
+ _a = tslib_1.__read.apply(void 0, [_b.sent(), 1]), rows = _a[0];
113
+ if (!Array.isArray(rows) || (rows === null || rows === void 0 ? void 0 : rows.length) === 0)
114
+ return [2 /*return*/, []];
115
+ results = rows.map(function (row) {
116
+ return (0, session_utils_1.sessionFromEntries)(Object.entries(row));
117
+ });
118
+ return [2 /*return*/, results];
119
+ }
120
+ });
121
+ });
122
+ };
84
123
  MySQLSessionStorage.prototype.disconnect = function () {
85
124
  return tslib_1.__awaiter(this, void 0, void 0, function () {
86
125
  return tslib_1.__generator(this, function (_a) {
@@ -14,6 +14,8 @@ export declare class PostgreSQLSessionStorage implements SessionStorage {
14
14
  storeSession(session: SessionInterface): Promise<boolean>;
15
15
  loadSession(id: string): Promise<SessionInterface | undefined>;
16
16
  deleteSession(id: string): Promise<boolean>;
17
+ deleteSessions(ids: string[]): Promise<boolean>;
18
+ findSessionsByShop(shop: string): Promise<SessionInterface[]>;
17
19
  disconnect(): Promise<void>;
18
20
  private init;
19
21
  private connectClient;
@@ -1 +1 @@
1
- {"version":3,"file":"postgresql.d.ts","sourceRoot":"","sources":["../../../../src/auth/session/storage/postgresql.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAGlD,MAAM,WAAW,+BAA+B;IAC9C,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CACd;AAOD,qBAAa,wBAAyB,YAAW,cAAc;IAuB3D,OAAO,CAAC,KAAK;IAtBf,MAAM,CAAC,eAAe,CACpB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,CAAC,+BAA+B,CAAC;IAYhD,SAAgB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,MAAM,CAAY;gBAGhB,KAAK,EAAE,GAAG,EAClB,IAAI,GAAE,OAAO,CAAC,+BAA+B,CAAM;IASxC,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAmBzD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAY9D,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUjD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAIpB,IAAI;YAMJ,aAAa;YAIb,eAAe;YAQf,WAAW;YAmBX,KAAK;CAIpB"}
1
+ {"version":3,"file":"postgresql.d.ts","sourceRoot":"","sources":["../../../../src/auth/session/storage/postgresql.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAGlD,MAAM,WAAW,+BAA+B;IAC9C,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CACd;AAOD,qBAAa,wBAAyB,YAAW,cAAc;IAuB3D,OAAO,CAAC,KAAK;IAtBf,MAAM,CAAC,eAAe,CACpB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,CAAC,+BAA+B,CAAC;IAYhD,SAAgB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,MAAM,CAAY;gBAGhB,KAAK,EAAE,GAAG,EAClB,IAAI,GAAE,OAAO,CAAC,+BAA+B,CAAM;IASxC,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAmBzD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAY9D,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAU3C,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAU/C,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAenE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAIpB,IAAI;YAMJ,aAAa;YAIb,eAAe;YAQf,WAAW;YAmBX,KAAK;CAIpB"}
@@ -87,6 +87,45 @@ var PostgreSQLSessionStorage = /** @class */ (function () {
87
87
  });
88
88
  });
89
89
  };
90
+ PostgreSQLSessionStorage.prototype.deleteSessions = function (ids) {
91
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
92
+ var query;
93
+ return tslib_1.__generator(this, function (_a) {
94
+ switch (_a.label) {
95
+ case 0: return [4 /*yield*/, this.ready];
96
+ case 1:
97
+ _a.sent();
98
+ query = "\n DELETE FROM ".concat(this.options.sessionTableName, "\n WHERE id IN (").concat(ids.map(function (_, i) { return "$".concat(i + 1); }).join(', '), ");\n ");
99
+ return [4 /*yield*/, this.query(query, ids)];
100
+ case 2:
101
+ _a.sent();
102
+ return [2 /*return*/, true];
103
+ }
104
+ });
105
+ });
106
+ };
107
+ PostgreSQLSessionStorage.prototype.findSessionsByShop = function (shop) {
108
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
109
+ var query, rows, results;
110
+ return tslib_1.__generator(this, function (_a) {
111
+ switch (_a.label) {
112
+ case 0: return [4 /*yield*/, this.ready];
113
+ case 1:
114
+ _a.sent();
115
+ query = "\n SELECT * FROM ".concat(this.options.sessionTableName, "\n WHERE shop = $1;\n ");
116
+ return [4 /*yield*/, this.query(query, [shop])];
117
+ case 2:
118
+ rows = _a.sent();
119
+ if (!Array.isArray(rows) || (rows === null || rows === void 0 ? void 0 : rows.length) === 0)
120
+ return [2 /*return*/, []];
121
+ results = rows.map(function (row) {
122
+ return (0, session_utils_1.sessionFromEntries)(Object.entries(row));
123
+ });
124
+ return [2 /*return*/, results];
125
+ }
126
+ });
127
+ });
128
+ };
90
129
  PostgreSQLSessionStorage.prototype.disconnect = function () {
91
130
  return this.client.end();
92
131
  };
@@ -13,6 +13,8 @@ export declare class RedisSessionStorage implements SessionStorage {
13
13
  storeSession(session: SessionInterface): Promise<boolean>;
14
14
  loadSession(id: string): Promise<SessionInterface | undefined>;
15
15
  deleteSession(id: string): Promise<boolean>;
16
+ deleteSessions(ids: string[]): Promise<boolean>;
17
+ findSessionsByShop(shop: string): Promise<SessionInterface[]>;
16
18
  disconnect(): Promise<void>;
17
19
  private fullKey;
18
20
  private init;
@@ -1 +1 @@
1
- {"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../../src/auth/session/storage/redis.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAGlD,MAAM,WAAW,0BAA0B;IACzC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAKD,qBAAa,mBAAoB,YAAW,cAAc;IAuBtD,OAAO,CAAC,KAAK;IAtBf,MAAM,CAAC,eAAe,CACpB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,CAAC,0BAA0B,CAAC;IAY3C,SAAgB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,MAAM,CAAkB;gBAGtB,KAAK,EAAE,GAAG,EAClB,IAAI,GAAE,OAAO,CAAC,0BAA0B,CAAM;IASnC,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAUzD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAW9D,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM3C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxC,OAAO,CAAC,OAAO;YAID,IAAI;CAMnB"}
1
+ {"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../../src/auth/session/storage/redis.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAGlD,MAAM,WAAW,0BAA0B;IACzC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAKD,qBAAa,mBAAoB,YAAW,cAAc;IAuBtD,OAAO,CAAC,KAAK;IAtBf,MAAM,CAAC,eAAe,CACpB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,CAAC,0BAA0B,CAAC;IAY3C,SAAgB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,MAAM,CAAkB;gBAGtB,KAAK,EAAE,GAAG,EAClB,IAAI,GAAE,OAAO,CAAC,0BAA0B,CAAM;IASnC,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAUzD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAW9D,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM3C,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAM/C,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAgB7D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxC,OAAO,CAAC,OAAO;YAID,IAAI;CAMnB"}
@@ -69,6 +69,71 @@ var RedisSessionStorage = /** @class */ (function () {
69
69
  });
70
70
  });
71
71
  };
72
+ RedisSessionStorage.prototype.deleteSessions = function (ids) {
73
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
74
+ var _this = this;
75
+ return tslib_1.__generator(this, function (_a) {
76
+ switch (_a.label) {
77
+ case 0: return [4 /*yield*/, this.ready];
78
+ case 1:
79
+ _a.sent();
80
+ return [4 /*yield*/, this.client.del(ids.map(function (id) { return _this.fullKey(id); }))];
81
+ case 2:
82
+ _a.sent();
83
+ return [2 /*return*/, true];
84
+ }
85
+ });
86
+ });
87
+ };
88
+ RedisSessionStorage.prototype.findSessionsByShop = function (shop) {
89
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
90
+ var keys, results, keys_1, keys_1_1, key, rawResult, session, e_1_1;
91
+ var e_1, _a;
92
+ return tslib_1.__generator(this, function (_b) {
93
+ switch (_b.label) {
94
+ case 0: return [4 /*yield*/, this.ready];
95
+ case 1:
96
+ _b.sent();
97
+ return [4 /*yield*/, this.client.keys('*')];
98
+ case 2:
99
+ keys = _b.sent();
100
+ results = [];
101
+ _b.label = 3;
102
+ case 3:
103
+ _b.trys.push([3, 8, 9, 10]);
104
+ keys_1 = tslib_1.__values(keys), keys_1_1 = keys_1.next();
105
+ _b.label = 4;
106
+ case 4:
107
+ if (!!keys_1_1.done) return [3 /*break*/, 7];
108
+ key = keys_1_1.value;
109
+ return [4 /*yield*/, this.client.get(key)];
110
+ case 5:
111
+ rawResult = _b.sent();
112
+ if (!rawResult)
113
+ return [3 /*break*/, 6];
114
+ session = (0, session_utils_1.sessionFromEntries)(JSON.parse(rawResult));
115
+ if (session.shop === shop)
116
+ results.push(session);
117
+ _b.label = 6;
118
+ case 6:
119
+ keys_1_1 = keys_1.next();
120
+ return [3 /*break*/, 4];
121
+ case 7: return [3 /*break*/, 10];
122
+ case 8:
123
+ e_1_1 = _b.sent();
124
+ e_1 = { error: e_1_1 };
125
+ return [3 /*break*/, 10];
126
+ case 9:
127
+ try {
128
+ if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);
129
+ }
130
+ finally { if (e_1) throw e_1.error; }
131
+ return [7 /*endfinally*/];
132
+ case 10: return [2 /*return*/, results];
133
+ }
134
+ });
135
+ });
136
+ };
72
137
  RedisSessionStorage.prototype.disconnect = function () {
73
138
  return tslib_1.__awaiter(this, void 0, void 0, function () {
74
139
  return tslib_1.__generator(this, function (_a) {
@@ -12,6 +12,8 @@ export declare class SQLiteSessionStorage implements SessionStorage {
12
12
  storeSession(session: SessionInterface): Promise<boolean>;
13
13
  loadSession(id: string): Promise<SessionInterface | undefined>;
14
14
  deleteSession(id: string): Promise<boolean>;
15
+ deleteSessions(ids: string[]): Promise<boolean>;
16
+ findSessionsByShop(shop: string): Promise<SessionInterface[]>;
15
17
  private hasSessionTable;
16
18
  private init;
17
19
  private query;
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../../src/auth/session/storage/sqlite.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAGlD,MAAM,WAAW,2BAA2B;IAC1C,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAKD,qBAAa,oBAAqB,YAAW,cAAc;IAMvD,OAAO,CAAC,QAAQ;IALlB,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,EAAE,CAAmB;IAC7B,OAAO,CAAC,KAAK,CAAgB;gBAGnB,QAAQ,EAAE,MAAM,EACxB,IAAI,GAAE,OAAO,CAAC,2BAA2B,CAAM;IAOpC,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAkBzD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAa9D,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YAU1C,eAAe;YAWf,IAAI;IAmBlB,OAAO,CAAC,KAAK;CAWd"}
1
+ {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../../src/auth/session/storage/sqlite.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAGlD,MAAM,WAAW,2BAA2B;IAC1C,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAKD,qBAAa,oBAAqB,YAAW,cAAc;IAMvD,OAAO,CAAC,QAAQ;IALlB,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,EAAE,CAAmB;IAC7B,OAAO,CAAC,KAAK,CAAgB;gBAGnB,QAAQ,EAAE,MAAM,EACxB,IAAI,GAAE,OAAO,CAAC,2BAA2B,CAAM;IAOpC,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAkBzD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAa9D,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAU3C,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAU/C,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAe5D,eAAe;YAWf,IAAI;IAmBlB,OAAO,CAAC,KAAK;CAWd"}
@@ -76,6 +76,45 @@ var SQLiteSessionStorage = /** @class */ (function () {
76
76
  });
77
77
  });
78
78
  };
79
+ SQLiteSessionStorage.prototype.deleteSessions = function (ids) {
80
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
81
+ var query;
82
+ return tslib_1.__generator(this, function (_a) {
83
+ switch (_a.label) {
84
+ case 0: return [4 /*yield*/, this.ready];
85
+ case 1:
86
+ _a.sent();
87
+ query = "\n DELETE FROM ".concat(this.options.sessionTableName, "\n WHERE id IN (").concat(ids.map(function () { return '?'; }).join(','), ");\n ");
88
+ return [4 /*yield*/, this.query(query, ids)];
89
+ case 2:
90
+ _a.sent();
91
+ return [2 /*return*/, true];
92
+ }
93
+ });
94
+ });
95
+ };
96
+ SQLiteSessionStorage.prototype.findSessionsByShop = function (shop) {
97
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
98
+ var query, rows, results;
99
+ return tslib_1.__generator(this, function (_a) {
100
+ switch (_a.label) {
101
+ case 0: return [4 /*yield*/, this.ready];
102
+ case 1:
103
+ _a.sent();
104
+ query = "\n SELECT * FROM ".concat(this.options.sessionTableName, "\n WHERE shop = ?;\n ");
105
+ return [4 /*yield*/, this.query(query, [shop])];
106
+ case 2:
107
+ rows = _a.sent();
108
+ if (!Array.isArray(rows) || (rows === null || rows === void 0 ? void 0 : rows.length) === 0)
109
+ return [2 /*return*/, []];
110
+ results = rows.map(function (row) {
111
+ return (0, session_utils_1.sessionFromEntries)(Object.entries(row));
112
+ });
113
+ return [2 /*return*/, results];
114
+ }
115
+ });
116
+ });
117
+ };
79
118
  SQLiteSessionStorage.prototype.hasSessionTable = function () {
80
119
  return tslib_1.__awaiter(this, void 0, void 0, function () {
81
120
  var query, rows;
@@ -1 +1 @@
1
- {"version":3,"file":"http_client.d.ts","sourceRoot":"","sources":["../../../src/clients/http_client/http_client.ts"],"names":[],"mappings":"AAYA,OAAO,EAEL,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACd,MAAM,SAAS,CAAC;AAEjB,qBAAa,UAAU;IAOF,OAAO,CAAC,MAAM;IALjC,MAAM,CAAC,QAAQ,CAAC,eAAe,QAAQ;IAEvC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,UAAU;IACjD,OAAO,CAAC,mBAAmB,CAA+B;gBAE/B,MAAM,EAAE,MAAM;IAIzC;;OAEG;IACU,GAAG,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IAIlE;;OAEG;IACU,IAAI,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC;IAIpE;;OAEG;IACU,GAAG,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IAIlE;;OAEG;IACU,MAAM,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;cAIxD,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IA0GtE,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;YAIhC,SAAS;CA6GxB"}
1
+ {"version":3,"file":"http_client.d.ts","sourceRoot":"","sources":["../../../src/clients/http_client/http_client.ts"],"names":[],"mappings":"AAYA,OAAO,EAEL,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACd,MAAM,SAAS,CAAC;AAQjB,qBAAa,UAAU;IAOF,OAAO,CAAC,MAAM;IALjC,MAAM,CAAC,QAAQ,CAAC,eAAe,QAAQ;IAEvC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,UAAU;IACjD,OAAO,CAAC,mBAAmB,CAA+B;gBAE/B,MAAM,EAAE,MAAM;IAIzC;;OAEG;IACU,GAAG,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IAIlE;;OAEG;IACU,IAAI,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC;IAIpE;;OAEG;IACU,GAAG,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IAIlE;;OAEG;IACU,MAAM,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;cAIxD,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IA0GtE,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;YAIhC,SAAS;CAqHxB"}
@@ -180,6 +180,10 @@ var HttpClient = /** @class */ (function () {
180
180
  message: response.headers.get('X-Shopify-API-Deprecated-Reason'),
181
181
  path: url,
182
182
  };
183
+ if (options.body) {
184
+ // This can only be a string, since we're always converting the body before calling this method
185
+ deprecation.body = "".concat(options.body.substring(0, 100), "...");
186
+ }
183
187
  depHash = crypto_1.default
184
188
  .createHash('md5')
185
189
  .update(JSON.stringify(deprecation))
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const SHOPIFY_API_LIBRARY_VERSION = "4.1.0";
1
+ export declare const SHOPIFY_API_LIBRARY_VERSION = "4.2.0";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SHOPIFY_API_LIBRARY_VERSION = void 0;
4
- exports.SHOPIFY_API_LIBRARY_VERSION = '4.1.0';
4
+ exports.SHOPIFY_API_LIBRARY_VERSION = '4.2.0';
@@ -305,12 +305,12 @@ var WebhooksRegistry = {
305
305
  return [3 /*break*/, 4];
306
306
  case 4: return [3 /*break*/, 6];
307
307
  case 5:
308
- statusCode = network_1.StatusCode.Forbidden;
308
+ statusCode = network_1.StatusCode.NotFound;
309
309
  responseError = new ShopifyErrors.InvalidWebhookError("No webhook is registered for topic ".concat(topic));
310
310
  _a.label = 6;
311
311
  case 6: return [3 /*break*/, 8];
312
312
  case 7:
313
- statusCode = network_1.StatusCode.Forbidden;
313
+ statusCode = network_1.StatusCode.Unauthorized;
314
314
  responseError = new ShopifyErrors.InvalidWebhookError("Could not validate request for topic ".concat(topic));
315
315
  _a.label = 8;
316
316
  case 8:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shopify/shopify-api",
3
- "version": "4.1.0",
3
+ "version": "4.2.0",
4
4
  "description": "Shopify API Library for Node - accelerate development with support for authentication, graphql proxy, webhooks",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",