@shopify/shopify-api 3.1.2 → 3.1.3

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/CHANGELOG.md CHANGED
@@ -5,7 +5,12 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
6
6
  and adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [3.1.1] - 2022-06-07
8
+ ## [3.1.3] - 2022-06-08
9
+
10
+ ### Fixes
11
+ - Return instances of `Session` from session storages, not POJOs.
12
+
13
+ ## [3.1.2] - 2022-06-07
9
14
 
10
15
  ### Added
11
16
  - Store user id and expiration date of online tokens
@@ -1 +1 @@
1
- {"version":3,"file":"session-utils.d.ts","sourceRoot":"","sources":["../../../src/auth/session/session-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,SAAS,CAAC;AAE9C;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,GACnC,gBAAgB,CAgDlB;AAYD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,gBAAgB,GACxB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,CAmB7B;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,gBAAgB,GAAG,SAAS,EACtC,QAAQ,EAAE,gBAAgB,GAAG,SAAS,GACrC,OAAO,CAMT"}
1
+ {"version":3,"file":"session-utils.d.ts","sourceRoot":"","sources":["../../../src/auth/session/session-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,SAAS,CAAC;AAE9C;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,GACnC,gBAAgB,CAkDlB;AAYD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,gBAAgB,GACxB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,CAsB7B;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,gBAAgB,GAAG,SAAS,EACtC,QAAQ,EAAE,gBAAgB,GAAG,SAAS,GACrC,OAAO,CAQT"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.sessionEqual = exports.sessionEntries = exports.sessionFromEntries = void 0;
4
4
  var tslib_1 = require("tslib");
5
+ var session_1 = require("./session");
5
6
  /**
6
7
  * Like Object.fromEntries(), but normalizes the keys and filters out null values.
7
8
  */
@@ -9,7 +10,7 @@ function sessionFromEntries(entries) {
9
10
  var obj = Object.fromEntries(entries
10
11
  .filter(function (_a) {
11
12
  var _b = tslib_1.__read(_a, 2), _key = _b[0], value = _b[1];
12
- return value !== null;
13
+ return value !== null && value !== undefined;
13
14
  })
14
15
  // Sanitize keys
15
16
  .map(function (_a) {
@@ -55,6 +56,7 @@ function sessionFromEntries(entries) {
55
56
  return [key, value];
56
57
  }
57
58
  }));
59
+ Object.setPrototypeOf(obj, session_1.Session.prototype);
58
60
  return obj;
59
61
  }
60
62
  exports.sessionFromEntries = sessionFromEntries;
@@ -71,8 +73,8 @@ var includedKeys = [
71
73
  function sessionEntries(session) {
72
74
  return (Object.entries(session)
73
75
  .filter(function (_a) {
74
- var _b = tslib_1.__read(_a, 1), key = _b[0];
75
- return includedKeys.includes(key);
76
+ var _b = tslib_1.__read(_a, 2), key = _b[0], value = _b[1];
77
+ return includedKeys.includes(key) && value !== undefined && value !== null;
76
78
  })
77
79
  // Prepare values for db storage
78
80
  .map(function (_a) {
@@ -97,8 +99,18 @@ function sessionEqual(sessionA, sessionB) {
97
99
  return false;
98
100
  if (!sessionB)
99
101
  return false;
100
- var copyA = sessionFromEntries(sessionEntries(sessionA));
101
- var copyB = sessionFromEntries(sessionEntries(sessionB));
102
+ var copyA = sessionEntries(sessionA);
103
+ copyA.sort(function (_a, _b) {
104
+ var _c = tslib_1.__read(_a, 1), k1 = _c[0];
105
+ var _d = tslib_1.__read(_b, 1), k2 = _d[0];
106
+ return (k1 < k2 ? -1 : 1);
107
+ });
108
+ var copyB = sessionEntries(sessionB);
109
+ copyB.sort(function (_a, _b) {
110
+ var _c = tslib_1.__read(_a, 1), k1 = _c[0];
111
+ var _d = tslib_1.__read(_b, 1), k2 = _d[0];
112
+ return (k1 < k2 ? -1 : 1);
113
+ });
102
114
  return JSON.stringify(copyA) === JSON.stringify(copyB);
103
115
  }
104
116
  exports.sessionEqual = sessionEqual;
@@ -1 +1 @@
1
- {"version":3,"file":"battery-of-tests.d.ts","sourceRoot":"","sources":["../../../../../src/auth/session/storage/__tests__/battery-of-tests.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAC;AAErD,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,QAqF3E"}
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"}
@@ -2,22 +2,25 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.batteryOfTests = void 0;
4
4
  var tslib_1 = require("tslib");
5
+ var context_1 = require("../../../../context");
5
6
  var session_1 = require("../../session");
6
7
  var session_utils_1 = require("../../session-utils");
7
8
  function batteryOfTests(storageFactory) {
8
9
  var _this = this;
9
10
  it('can store and delete all kinds of sessions', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
10
- var sessionFactories, sessionId, storage, sessionFactories_1, sessionFactories_1_1, factory, session, _a, _b, _c, _d, e_1_1;
11
- var e_1, _e;
11
+ var sessionFactories, sessionId, storage, sessionFactories_1, sessionFactories_1_1, factory, session, _a, _b, loadedSession, e_1_1;
12
+ var e_1, _c;
12
13
  var _this = this;
13
- return tslib_1.__generator(this, function (_f) {
14
- switch (_f.label) {
14
+ return tslib_1.__generator(this, function (_d) {
15
+ switch (_d.label) {
15
16
  case 0:
16
17
  sessionFactories = [
17
18
  function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
18
19
  var session;
19
20
  return tslib_1.__generator(this, function (_a) {
20
21
  session = new session_1.Session(sessionId, 'shop', 'state', false);
22
+ session.scope = context_1.Context.SCOPES.toString();
23
+ session.accessToken = '123';
21
24
  return [2 /*return*/, session];
22
25
  });
23
26
  }); },
@@ -28,6 +31,8 @@ function batteryOfTests(storageFactory) {
28
31
  expiryDate = new Date();
29
32
  expiryDate.setMinutes(expiryDate.getMinutes() + 60);
30
33
  session.expires = expiryDate;
34
+ session.accessToken = '123';
35
+ session.scope = context_1.Context.SCOPES.toString();
31
36
  return [2 /*return*/, session];
32
37
  });
33
38
  }); },
@@ -36,6 +41,8 @@ function batteryOfTests(storageFactory) {
36
41
  return tslib_1.__generator(this, function (_a) {
37
42
  session = new session_1.Session(sessionId, 'shop', 'state', false);
38
43
  session.expires = null;
44
+ session.scope = context_1.Context.SCOPES.toString();
45
+ session.accessToken = '123';
39
46
  return [2 /*return*/, session];
40
47
  });
41
48
  }); },
@@ -44,6 +51,8 @@ function batteryOfTests(storageFactory) {
44
51
  return tslib_1.__generator(this, function (_a) {
45
52
  session = new session_1.Session(sessionId, 'shop', 'state', false);
46
53
  session.expires = undefined;
54
+ session.scope = context_1.Context.SCOPES.toString();
55
+ session.accessToken = '123';
47
56
  return [2 /*return*/, session];
48
57
  });
49
58
  }); },
@@ -54,6 +63,8 @@ function batteryOfTests(storageFactory) {
54
63
  // eslint-disable-next-line @typescript-eslint/naming-convention
55
64
  session.onlineAccessInfo = { associated_user: {} };
56
65
  session.onlineAccessInfo.associated_user.id = 123;
66
+ session.scope = context_1.Context.SCOPES.toString();
67
+ session.accessToken = '123';
57
68
  return [2 /*return*/, session];
58
69
  });
59
70
  }); },
@@ -61,57 +72,57 @@ function batteryOfTests(storageFactory) {
61
72
  sessionId = 'test_session';
62
73
  return [4 /*yield*/, storageFactory()];
63
74
  case 1:
64
- storage = _f.sent();
65
- _f.label = 2;
75
+ storage = _d.sent();
76
+ _d.label = 2;
66
77
  case 2:
67
- _f.trys.push([2, 14, 15, 16]);
78
+ _d.trys.push([2, 14, 15, 16]);
68
79
  sessionFactories_1 = tslib_1.__values(sessionFactories), sessionFactories_1_1 = sessionFactories_1.next();
69
- _f.label = 3;
80
+ _d.label = 3;
70
81
  case 3:
71
82
  if (!!sessionFactories_1_1.done) return [3 /*break*/, 13];
72
83
  factory = sessionFactories_1_1.value;
73
84
  return [4 /*yield*/, factory()];
74
85
  case 4:
75
- session = _f.sent();
86
+ session = _d.sent();
76
87
  return [4 /*yield*/, expect(storage.storeSession(session)).resolves.toBe(true)];
77
88
  case 5:
78
- _f.sent();
89
+ _d.sent();
79
90
  _a = expect;
80
91
  _b = session_utils_1.sessionEqual;
81
92
  return [4 /*yield*/, storage.loadSession(sessionId)];
82
93
  case 6:
83
- _a.apply(void 0, [_b.apply(void 0, [_f.sent(), session])]).toBe(true);
94
+ _a.apply(void 0, [_b.apply(void 0, [_d.sent(), session])]).toBe(true);
84
95
  return [4 /*yield*/, expect(storage.storeSession(session)).resolves.toBe(true)];
85
96
  case 7:
86
- _f.sent();
87
- _c = expect;
88
- _d = session_utils_1.sessionEqual;
97
+ _d.sent();
89
98
  return [4 /*yield*/, storage.loadSession(sessionId)];
90
99
  case 8:
91
- _c.apply(void 0, [_d.apply(void 0, [_f.sent(), session])]).toBe(true);
100
+ loadedSession = _d.sent();
101
+ expect((0, session_utils_1.sessionEqual)(loadedSession, session)).toBe(true);
102
+ expect(loadedSession === null || loadedSession === void 0 ? void 0 : loadedSession.isActive()).toBe(true);
92
103
  return [4 /*yield*/, expect(storage.deleteSession(sessionId)).resolves.toBe(true)];
93
104
  case 9:
94
- _f.sent();
105
+ _d.sent();
95
106
  return [4 /*yield*/, expect(storage.loadSession(sessionId)).resolves.toBeUndefined()];
96
107
  case 10:
97
- _f.sent();
108
+ _d.sent();
98
109
  // Deleting a non-existing session should work
99
110
  return [4 /*yield*/, expect(storage.deleteSession(sessionId)).resolves.toBe(true)];
100
111
  case 11:
101
112
  // Deleting a non-existing session should work
102
- _f.sent();
103
- _f.label = 12;
113
+ _d.sent();
114
+ _d.label = 12;
104
115
  case 12:
105
116
  sessionFactories_1_1 = sessionFactories_1.next();
106
117
  return [3 /*break*/, 3];
107
118
  case 13: return [3 /*break*/, 16];
108
119
  case 14:
109
- e_1_1 = _f.sent();
120
+ e_1_1 = _d.sent();
110
121
  e_1 = { error: e_1_1 };
111
122
  return [3 /*break*/, 16];
112
123
  case 15:
113
124
  try {
114
- if (sessionFactories_1_1 && !sessionFactories_1_1.done && (_e = sessionFactories_1.return)) _e.call(sessionFactories_1);
125
+ if (sessionFactories_1_1 && !sessionFactories_1_1.done && (_c = sessionFactories_1.return)) _c.call(sessionFactories_1);
115
126
  }
116
127
  finally { if (e_1) throw e_1.error; }
117
128
  return [7 /*endfinally*/];
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const SHOPIFY_API_LIBRARY_VERSION = "3.1.1";
1
+ export declare const SHOPIFY_API_LIBRARY_VERSION = "3.1.3";
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 = '3.1.1';
4
+ exports.SHOPIFY_API_LIBRARY_VERSION = '3.1.3';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shopify/shopify-api",
3
- "version": "3.1.2",
3
+ "version": "3.1.3",
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",