@shopify/shopify-api 3.1.0 → 3.1.2
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 +9 -1
- package/dist/auth/session/session-utils.d.ts +1 -0
- package/dist/auth/session/session-utils.d.ts.map +1 -1
- package/dist/auth/session/session-utils.js +65 -11
- package/dist/auth/session/storage/__tests__/battery-of-tests.d.ts.map +1 -1
- package/dist/auth/session/storage/__tests__/battery-of-tests.js +131 -29
- package/dist/auth/session/storage/mysql.d.ts.map +1 -1
- package/dist/auth/session/storage/mysql.js +1 -1
- package/dist/auth/session/storage/postgresql.d.ts.map +1 -1
- package/dist/auth/session/storage/postgresql.js +1 -1
- package/dist/auth/session/storage/sqlite.d.ts.map +1 -1
- package/dist/auth/session/storage/sqlite.js +5 -2
- package/dist/clients/http_client/http_client.d.ts +1 -2
- package/dist/clients/http_client/http_client.d.ts.map +1 -1
- package/dist/clients/http_client/http_client.js +92 -91
- package/dist/context.js +6 -4
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,7 +5,15 @@ 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
|
-
##
|
|
8
|
+
## [3.1.1] - 2022-06-07
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- Store user id and expiration date of online tokens
|
|
12
|
+
|
|
13
|
+
### Fixes
|
|
14
|
+
- Properly parse a non-json HTTP response [#257](https://github.com/Shopify/shopify-node-api/issues/257)
|
|
15
|
+
- Don’t create a SQLite DB file if the SQLite storage is not used.
|
|
16
|
+
|
|
9
17
|
|
|
10
18
|
## [3.1.0] - 2022-05-16
|
|
11
19
|
|
|
@@ -4,4 +4,5 @@ import type { SessionInterface } from './types';
|
|
|
4
4
|
*/
|
|
5
5
|
export declare function sessionFromEntries(entries: [string, string | number][]): SessionInterface;
|
|
6
6
|
export declare function sessionEntries(session: SessionInterface): [string, string | number][];
|
|
7
|
+
export declare function sessionEqual(sessionA: SessionInterface | undefined, sessionB: SessionInterface | undefined): boolean;
|
|
7
8
|
//# sourceMappingURL=session-utils.d.ts.map
|
|
@@ -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,
|
|
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,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.sessionEntries = exports.sessionFromEntries = void 0;
|
|
3
|
+
exports.sessionEqual = exports.sessionEntries = exports.sessionFromEntries = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
/**
|
|
6
6
|
* Like Object.fromEntries(), but normalizes the keys and filters out null values.
|
|
@@ -11,6 +11,7 @@ function sessionFromEntries(entries) {
|
|
|
11
11
|
var _b = tslib_1.__read(_a, 2), _key = _b[0], value = _b[1];
|
|
12
12
|
return value !== null;
|
|
13
13
|
})
|
|
14
|
+
// Sanitize keys
|
|
14
15
|
.map(function (_a) {
|
|
15
16
|
var _b = tslib_1.__read(_a, 2), key = _b[0], value = _b[1];
|
|
16
17
|
switch (key.toLowerCase()) {
|
|
@@ -18,18 +19,42 @@ function sessionFromEntries(entries) {
|
|
|
18
19
|
return ['isOnline', value];
|
|
19
20
|
case 'accesstoken':
|
|
20
21
|
return ['accessToken', value];
|
|
22
|
+
case 'onlineaccessinfo':
|
|
23
|
+
return ['onlineAccessInfo', value];
|
|
21
24
|
default:
|
|
22
25
|
return [key.toLowerCase(), value];
|
|
23
26
|
}
|
|
27
|
+
})
|
|
28
|
+
// Sanitize values
|
|
29
|
+
.map(function (_a) {
|
|
30
|
+
var _b = tslib_1.__read(_a, 2), key = _b[0], value = _b[1];
|
|
31
|
+
switch (key) {
|
|
32
|
+
case 'isOnline':
|
|
33
|
+
if (typeof value === 'string') {
|
|
34
|
+
return [key, value.toString().toLowerCase() === 'true'];
|
|
35
|
+
}
|
|
36
|
+
else if (typeof value === 'number') {
|
|
37
|
+
return [key, Boolean(value)];
|
|
38
|
+
}
|
|
39
|
+
return [key, value];
|
|
40
|
+
case 'scope':
|
|
41
|
+
return [key, value.toString()];
|
|
42
|
+
case 'expires':
|
|
43
|
+
return [key, value ? new Date(Number(value) * 1000) : undefined];
|
|
44
|
+
case 'onlineAccessInfo':
|
|
45
|
+
return [
|
|
46
|
+
key,
|
|
47
|
+
{
|
|
48
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
49
|
+
associated_user: {
|
|
50
|
+
id: Number(value),
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
default:
|
|
55
|
+
return [key, value];
|
|
56
|
+
}
|
|
24
57
|
}));
|
|
25
|
-
if (typeof obj.isOnline === 'string') {
|
|
26
|
-
obj.isOnline = obj.isOnline.toString().toLowerCase() === 'true';
|
|
27
|
-
}
|
|
28
|
-
else if (typeof obj.isOnline === 'number') {
|
|
29
|
-
obj.isOnline = Boolean(obj.isOnline);
|
|
30
|
-
}
|
|
31
|
-
if (obj.scope)
|
|
32
|
-
obj.scope = obj.scope.toString();
|
|
33
58
|
return obj;
|
|
34
59
|
}
|
|
35
60
|
exports.sessionFromEntries = sessionFromEntries;
|
|
@@ -40,11 +65,40 @@ var includedKeys = [
|
|
|
40
65
|
'isOnline',
|
|
41
66
|
'scope',
|
|
42
67
|
'accessToken',
|
|
68
|
+
'expires',
|
|
69
|
+
'onlineAccessInfo',
|
|
43
70
|
];
|
|
44
71
|
function sessionEntries(session) {
|
|
45
|
-
return Object.entries(session)
|
|
72
|
+
return (Object.entries(session)
|
|
73
|
+
.filter(function (_a) {
|
|
46
74
|
var _b = tslib_1.__read(_a, 1), key = _b[0];
|
|
47
75
|
return includedKeys.includes(key);
|
|
48
|
-
})
|
|
76
|
+
})
|
|
77
|
+
// Prepare values for db storage
|
|
78
|
+
.map(function (_a) {
|
|
79
|
+
var _b;
|
|
80
|
+
var _c = tslib_1.__read(_a, 2), key = _c[0], value = _c[1];
|
|
81
|
+
switch (key) {
|
|
82
|
+
case 'expires':
|
|
83
|
+
return [
|
|
84
|
+
key,
|
|
85
|
+
value ? Math.floor(value.getTime() / 1000) : undefined,
|
|
86
|
+
];
|
|
87
|
+
case 'onlineAccessInfo':
|
|
88
|
+
return [key, (_b = value === null || value === void 0 ? void 0 : value.associated_user) === null || _b === void 0 ? void 0 : _b.id];
|
|
89
|
+
default:
|
|
90
|
+
return [key, value];
|
|
91
|
+
}
|
|
92
|
+
}));
|
|
49
93
|
}
|
|
50
94
|
exports.sessionEntries = sessionEntries;
|
|
95
|
+
function sessionEqual(sessionA, sessionB) {
|
|
96
|
+
if (!sessionA)
|
|
97
|
+
return false;
|
|
98
|
+
if (!sessionB)
|
|
99
|
+
return false;
|
|
100
|
+
var copyA = sessionFromEntries(sessionEntries(sessionA));
|
|
101
|
+
var copyB = sessionFromEntries(sessionEntries(sessionB));
|
|
102
|
+
return JSON.stringify(copyA) === JSON.stringify(copyB);
|
|
103
|
+
}
|
|
104
|
+
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":"
|
|
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"}
|
|
@@ -3,59 +3,161 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.batteryOfTests = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var session_1 = require("../../session");
|
|
6
|
+
var session_utils_1 = require("../../session-utils");
|
|
6
7
|
function batteryOfTests(storageFactory) {
|
|
7
8
|
var _this = this;
|
|
8
|
-
it('can store and delete
|
|
9
|
-
var
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
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;
|
|
12
|
+
var _this = this;
|
|
13
|
+
return tslib_1.__generator(this, function (_f) {
|
|
14
|
+
switch (_f.label) {
|
|
15
|
+
case 0:
|
|
16
|
+
sessionFactories = [
|
|
17
|
+
function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
18
|
+
var session;
|
|
19
|
+
return tslib_1.__generator(this, function (_a) {
|
|
20
|
+
session = new session_1.Session(sessionId, 'shop', 'state', false);
|
|
21
|
+
return [2 /*return*/, session];
|
|
22
|
+
});
|
|
23
|
+
}); },
|
|
24
|
+
function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
25
|
+
var session, expiryDate;
|
|
26
|
+
return tslib_1.__generator(this, function (_a) {
|
|
27
|
+
session = new session_1.Session(sessionId, 'shop', 'state', false);
|
|
28
|
+
expiryDate = new Date();
|
|
29
|
+
expiryDate.setMinutes(expiryDate.getMinutes() + 60);
|
|
30
|
+
session.expires = expiryDate;
|
|
31
|
+
return [2 /*return*/, session];
|
|
32
|
+
});
|
|
33
|
+
}); },
|
|
34
|
+
function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
35
|
+
var session;
|
|
36
|
+
return tslib_1.__generator(this, function (_a) {
|
|
37
|
+
session = new session_1.Session(sessionId, 'shop', 'state', false);
|
|
38
|
+
session.expires = null;
|
|
39
|
+
return [2 /*return*/, session];
|
|
40
|
+
});
|
|
41
|
+
}); },
|
|
42
|
+
function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
43
|
+
var session;
|
|
44
|
+
return tslib_1.__generator(this, function (_a) {
|
|
45
|
+
session = new session_1.Session(sessionId, 'shop', 'state', false);
|
|
46
|
+
session.expires = undefined;
|
|
47
|
+
return [2 /*return*/, session];
|
|
48
|
+
});
|
|
49
|
+
}); },
|
|
50
|
+
function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
51
|
+
var session;
|
|
52
|
+
return tslib_1.__generator(this, function (_a) {
|
|
53
|
+
session = new session_1.Session(sessionId, 'shop', 'state', false);
|
|
54
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
55
|
+
session.onlineAccessInfo = { associated_user: {} };
|
|
56
|
+
session.onlineAccessInfo.associated_user.id = 123;
|
|
57
|
+
return [2 /*return*/, session];
|
|
58
|
+
});
|
|
59
|
+
}); },
|
|
60
|
+
];
|
|
15
61
|
sessionId = 'test_session';
|
|
16
|
-
|
|
17
|
-
|
|
62
|
+
return [4 /*yield*/, storageFactory()];
|
|
63
|
+
case 1:
|
|
64
|
+
storage = _f.sent();
|
|
65
|
+
_f.label = 2;
|
|
18
66
|
case 2:
|
|
19
|
-
|
|
20
|
-
|
|
67
|
+
_f.trys.push([2, 14, 15, 16]);
|
|
68
|
+
sessionFactories_1 = tslib_1.__values(sessionFactories), sessionFactories_1_1 = sessionFactories_1.next();
|
|
69
|
+
_f.label = 3;
|
|
21
70
|
case 3:
|
|
22
|
-
|
|
23
|
-
|
|
71
|
+
if (!!sessionFactories_1_1.done) return [3 /*break*/, 13];
|
|
72
|
+
factory = sessionFactories_1_1.value;
|
|
73
|
+
return [4 /*yield*/, factory()];
|
|
24
74
|
case 4:
|
|
25
|
-
|
|
26
|
-
return [4 /*yield*/, expect(storage.
|
|
75
|
+
session = _f.sent();
|
|
76
|
+
return [4 /*yield*/, expect(storage.storeSession(session)).resolves.toBe(true)];
|
|
27
77
|
case 5:
|
|
28
|
-
|
|
29
|
-
|
|
78
|
+
_f.sent();
|
|
79
|
+
_a = expect;
|
|
80
|
+
_b = session_utils_1.sessionEqual;
|
|
81
|
+
return [4 /*yield*/, storage.loadSession(sessionId)];
|
|
30
82
|
case 6:
|
|
31
|
-
_a.sent();
|
|
32
|
-
return [4 /*yield*/, expect(storage.
|
|
83
|
+
_a.apply(void 0, [_b.apply(void 0, [_f.sent(), session])]).toBe(true);
|
|
84
|
+
return [4 /*yield*/, expect(storage.storeSession(session)).resolves.toBe(true)];
|
|
33
85
|
case 7:
|
|
34
|
-
|
|
86
|
+
_f.sent();
|
|
87
|
+
_c = expect;
|
|
88
|
+
_d = session_utils_1.sessionEqual;
|
|
89
|
+
return [4 /*yield*/, storage.loadSession(sessionId)];
|
|
90
|
+
case 8:
|
|
91
|
+
_c.apply(void 0, [_d.apply(void 0, [_f.sent(), session])]).toBe(true);
|
|
92
|
+
return [4 /*yield*/, expect(storage.deleteSession(sessionId)).resolves.toBe(true)];
|
|
93
|
+
case 9:
|
|
94
|
+
_f.sent();
|
|
95
|
+
return [4 /*yield*/, expect(storage.loadSession(sessionId)).resolves.toBeUndefined()];
|
|
96
|
+
case 10:
|
|
97
|
+
_f.sent();
|
|
35
98
|
// Deleting a non-existing session should work
|
|
36
99
|
return [4 /*yield*/, expect(storage.deleteSession(sessionId)).resolves.toBe(true)];
|
|
37
|
-
case
|
|
100
|
+
case 11:
|
|
38
101
|
// Deleting a non-existing session should work
|
|
39
|
-
|
|
102
|
+
_f.sent();
|
|
103
|
+
_f.label = 12;
|
|
104
|
+
case 12:
|
|
105
|
+
sessionFactories_1_1 = sessionFactories_1.next();
|
|
106
|
+
return [3 /*break*/, 3];
|
|
107
|
+
case 13: return [3 /*break*/, 16];
|
|
108
|
+
case 14:
|
|
109
|
+
e_1_1 = _f.sent();
|
|
110
|
+
e_1 = { error: e_1_1 };
|
|
111
|
+
return [3 /*break*/, 16];
|
|
112
|
+
case 15:
|
|
113
|
+
try {
|
|
114
|
+
if (sessionFactories_1_1 && !sessionFactories_1_1.done && (_e = sessionFactories_1.return)) _e.call(sessionFactories_1);
|
|
115
|
+
}
|
|
116
|
+
finally { if (e_1) throw e_1.error; }
|
|
117
|
+
return [7 /*endfinally*/];
|
|
118
|
+
case 16: return [2 /*return*/];
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
}); });
|
|
122
|
+
it('can store sessions with unexpected fields', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
123
|
+
var storage, sessionId, session, _a, _b;
|
|
124
|
+
return tslib_1.__generator(this, function (_c) {
|
|
125
|
+
switch (_c.label) {
|
|
126
|
+
case 0: return [4 /*yield*/, storageFactory()];
|
|
127
|
+
case 1:
|
|
128
|
+
storage = _c.sent();
|
|
129
|
+
sessionId = 'test_session';
|
|
130
|
+
session = new session_1.Session(sessionId, 'shop', 'state', true);
|
|
131
|
+
session.someField = 'lol';
|
|
132
|
+
return [4 /*yield*/, expect(storage.storeSession(session)).resolves.toBe(true)];
|
|
133
|
+
case 2:
|
|
134
|
+
_c.sent();
|
|
135
|
+
_a = expect;
|
|
136
|
+
_b = session_utils_1.sessionEqual;
|
|
137
|
+
return [4 /*yield*/, storage.loadSession(sessionId)];
|
|
138
|
+
case 3:
|
|
139
|
+
_a.apply(void 0, [_b.apply(void 0, [_c.sent(), session])]).toBe(true);
|
|
40
140
|
return [2 /*return*/];
|
|
41
141
|
}
|
|
42
142
|
});
|
|
43
143
|
}); });
|
|
44
144
|
it('can store and delete sessions with online tokens', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
45
|
-
var storage, sessionId, session;
|
|
46
|
-
return tslib_1.__generator(this, function (
|
|
47
|
-
switch (
|
|
145
|
+
var storage, sessionId, session, _a, _b;
|
|
146
|
+
return tslib_1.__generator(this, function (_c) {
|
|
147
|
+
switch (_c.label) {
|
|
48
148
|
case 0: return [4 /*yield*/, storageFactory()];
|
|
49
149
|
case 1:
|
|
50
|
-
storage =
|
|
150
|
+
storage = _c.sent();
|
|
51
151
|
sessionId = 'test_session';
|
|
52
152
|
session = new session_1.Session(sessionId, 'shop', 'state', true);
|
|
53
153
|
return [4 /*yield*/, expect(storage.storeSession(session)).resolves.toBe(true)];
|
|
54
154
|
case 2:
|
|
55
|
-
|
|
56
|
-
|
|
155
|
+
_c.sent();
|
|
156
|
+
_a = expect;
|
|
157
|
+
_b = session_utils_1.sessionEqual;
|
|
158
|
+
return [4 /*yield*/, storage.loadSession(sessionId)];
|
|
57
159
|
case 3:
|
|
58
|
-
_a.sent();
|
|
160
|
+
_a.apply(void 0, [_b.apply(void 0, [_c.sent(), session])]).toBe(true);
|
|
59
161
|
return [2 /*return*/];
|
|
60
162
|
}
|
|
61
163
|
});
|
|
@@ -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;
|
|
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"}
|
|
@@ -135,7 +135,7 @@ var MySQLSessionStorage = /** @class */ (function () {
|
|
|
135
135
|
case 1:
|
|
136
136
|
hasSessionTable = _a.sent();
|
|
137
137
|
if (!!hasSessionTable) return [3 /*break*/, 3];
|
|
138
|
-
query = "\n CREATE TABLE ".concat(this.options.sessionTableName, " (\n id varchar(255) NOT NULL PRIMARY KEY,\n shop varchar(255) NOT NULL,\n state varchar(255) NOT NULL,\n isOnline tinyint NOT NULL,\n scope varchar(255),\n accessToken varchar(255)\n )\n ");
|
|
138
|
+
query = "\n CREATE TABLE ".concat(this.options.sessionTableName, " (\n id varchar(255) NOT NULL PRIMARY KEY,\n shop varchar(255) NOT NULL,\n state varchar(255) NOT NULL,\n isOnline tinyint NOT NULL,\n scope varchar(255),\n expires integer,\n onlineAccessInfo varchar(255),\n accessToken varchar(255)\n )\n ");
|
|
139
139
|
return [4 /*yield*/, this.query(query)];
|
|
140
140
|
case 2:
|
|
141
141
|
_a.sent();
|
|
@@ -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;
|
|
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"}
|
|
@@ -143,7 +143,7 @@ var PostgreSQLSessionStorage = /** @class */ (function () {
|
|
|
143
143
|
case 1:
|
|
144
144
|
hasSessionTable = _a.sent();
|
|
145
145
|
if (!!hasSessionTable) return [3 /*break*/, 3];
|
|
146
|
-
query = "\n CREATE TABLE ".concat(this.options.sessionTableName, " (\n id varchar(255) NOT NULL PRIMARY KEY,\n shop varchar(255) NOT NULL,\n state varchar(255) NOT NULL,\n isOnline boolean NOT NULL,\n scope varchar(255),\n accessToken varchar(255)\n )\n ");
|
|
146
|
+
query = "\n CREATE TABLE ".concat(this.options.sessionTableName, " (\n id varchar(255) NOT NULL PRIMARY KEY,\n shop varchar(255) NOT NULL,\n state varchar(255) NOT NULL,\n isOnline boolean NOT NULL,\n scope varchar(255),\n expires integer,\n onlineAccessInfo varchar(255),\n accessToken varchar(255)\n )\n ");
|
|
147
147
|
return [4 /*yield*/, this.query(query)];
|
|
148
148
|
case 2:
|
|
149
149
|
_a.sent();
|
|
@@ -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;
|
|
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"}
|
|
@@ -24,7 +24,10 @@ var SQLiteSessionStorage = /** @class */ (function () {
|
|
|
24
24
|
case 1:
|
|
25
25
|
_a.sent();
|
|
26
26
|
entries = (0, session_utils_1.sessionEntries)(session);
|
|
27
|
-
query = "\n INSERT OR REPLACE INTO ".concat(this.options.sessionTableName, "\n (").concat(
|
|
27
|
+
query = "\n INSERT OR REPLACE INTO ".concat(this.options.sessionTableName, "\n (").concat(entries.map(function (_a) {
|
|
28
|
+
var _b = tslib_1.__read(_a, 1), key = _b[0];
|
|
29
|
+
return key;
|
|
30
|
+
}).join(', '), ")\n VALUES (").concat(entries.map(function () { return '?'; }).join(', '), ");\n ");
|
|
28
31
|
return [4 /*yield*/, this.query(query, entries.map(function (_a) {
|
|
29
32
|
var _b = tslib_1.__read(_a, 2), _key = _b[0], value = _b[1];
|
|
30
33
|
return value;
|
|
@@ -97,7 +100,7 @@ var SQLiteSessionStorage = /** @class */ (function () {
|
|
|
97
100
|
case 1:
|
|
98
101
|
hasSessionTable = _a.sent();
|
|
99
102
|
if (!!hasSessionTable) return [3 /*break*/, 3];
|
|
100
|
-
query = "\n CREATE TABLE ".concat(this.options.sessionTableName, " (\n id varchar(255) NOT NULL PRIMARY KEY,\n shop varchar(255) NOT NULL,\n state varchar(255) NOT NULL,\n isOnline
|
|
103
|
+
query = "\n CREATE TABLE ".concat(this.options.sessionTableName, " (\n id varchar(255) NOT NULL PRIMARY KEY,\n shop varchar(255) NOT NULL,\n state varchar(255) NOT NULL,\n isOnline integer NOT NULL,\n expires integer,\n scope varchar(255),\n accessToken varchar(255),\n onlineAccessInfo varchar(255)\n )\n ");
|
|
101
104
|
return [4 /*yield*/, this.query(query)];
|
|
102
105
|
case 2:
|
|
103
106
|
_a.sent();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DeleteRequestParams, GetRequestParams, PostRequestParams, PutRequestParams, RequestParams, RequestReturn } from './types';
|
|
2
|
-
declare class HttpClient {
|
|
2
|
+
export declare class HttpClient {
|
|
3
3
|
private domain;
|
|
4
4
|
static readonly RETRY_WAIT_TIME = 1000;
|
|
5
5
|
static readonly DEPRECATION_ALERT_DELAY = 300000;
|
|
@@ -25,5 +25,4 @@ declare class HttpClient {
|
|
|
25
25
|
protected getRequestPath(path: string): string;
|
|
26
26
|
private doRequest;
|
|
27
27
|
}
|
|
28
|
-
export { HttpClient };
|
|
29
28
|
//# sourceMappingURL=http_client.d.ts.map
|
|
@@ -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,
|
|
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"}
|
|
@@ -162,105 +162,106 @@ var HttpClient = /** @class */ (function () {
|
|
|
162
162
|
};
|
|
163
163
|
HttpClient.prototype.doRequest = function (url, options) {
|
|
164
164
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
165
|
-
var
|
|
165
|
+
var response, body, deprecation, depHash, stack, log, errorMessages, errorMessage, headers, code, statusText, retryAfter, error_2;
|
|
166
166
|
return tslib_1.__generator(this, function (_a) {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
return
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
else {
|
|
199
|
-
console.warn('API Deprecation Notice:', deprecation);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
return [2 /*return*/, {
|
|
204
|
-
body: body,
|
|
205
|
-
headers: response.headers,
|
|
206
|
-
}];
|
|
167
|
+
switch (_a.label) {
|
|
168
|
+
case 0:
|
|
169
|
+
_a.trys.push([0, 3, , 4]);
|
|
170
|
+
return [4 /*yield*/, (0, node_fetch_1.default)(url, options)];
|
|
171
|
+
case 1:
|
|
172
|
+
response = _a.sent();
|
|
173
|
+
return [4 /*yield*/, response.json().catch(function () { return ({}); })];
|
|
174
|
+
case 2:
|
|
175
|
+
body = _a.sent();
|
|
176
|
+
if (response.ok) {
|
|
177
|
+
if (response.headers &&
|
|
178
|
+
response.headers.has('X-Shopify-API-Deprecated-Reason')) {
|
|
179
|
+
deprecation = {
|
|
180
|
+
message: response.headers.get('X-Shopify-API-Deprecated-Reason'),
|
|
181
|
+
path: url,
|
|
182
|
+
};
|
|
183
|
+
depHash = crypto_1.default
|
|
184
|
+
.createHash('md5')
|
|
185
|
+
.update(JSON.stringify(deprecation))
|
|
186
|
+
.digest('hex');
|
|
187
|
+
if (!Object.keys(this.LOGGED_DEPRECATIONS).includes(depHash) ||
|
|
188
|
+
Date.now() - this.LOGGED_DEPRECATIONS[depHash] >=
|
|
189
|
+
HttpClient.DEPRECATION_ALERT_DELAY) {
|
|
190
|
+
this.LOGGED_DEPRECATIONS[depHash] = Date.now();
|
|
191
|
+
if (context_1.Context.LOG_FILE) {
|
|
192
|
+
stack = new Error().stack;
|
|
193
|
+
log = "API Deprecation Notice ".concat(new Date().toLocaleString(), " : ").concat(JSON.stringify(deprecation), "\n Stack Trace: ").concat(stack, "\n");
|
|
194
|
+
fs_1.default.writeFileSync(context_1.Context.LOG_FILE, log, {
|
|
195
|
+
flag: 'a',
|
|
196
|
+
encoding: 'utf-8',
|
|
197
|
+
});
|
|
207
198
|
}
|
|
208
199
|
else {
|
|
209
|
-
|
|
210
|
-
if (body.errors) {
|
|
211
|
-
errorMessages.push(JSON.stringify(body.errors, null, 2));
|
|
212
|
-
}
|
|
213
|
-
if (response.headers && response.headers.get('x-request-id')) {
|
|
214
|
-
errorMessages.push("If you report this error, please include this id: ".concat(response.headers.get('x-request-id')));
|
|
215
|
-
}
|
|
216
|
-
errorMessage = errorMessages.length
|
|
217
|
-
? ":\n".concat(errorMessages.join('\n'))
|
|
218
|
-
: '';
|
|
219
|
-
headers = response.headers.raw();
|
|
220
|
-
code = response.status;
|
|
221
|
-
statusText = response.statusText;
|
|
222
|
-
switch (true) {
|
|
223
|
-
case response.status === network_1.StatusCode.TooManyRequests: {
|
|
224
|
-
retryAfter = response.headers.get('Retry-After');
|
|
225
|
-
throw new ShopifyErrors.HttpThrottlingError({
|
|
226
|
-
message: "Shopify is throttling requests".concat(errorMessage),
|
|
227
|
-
code: code,
|
|
228
|
-
statusText: statusText,
|
|
229
|
-
body: body,
|
|
230
|
-
headers: headers,
|
|
231
|
-
retryAfter: retryAfter ? parseFloat(retryAfter) : undefined,
|
|
232
|
-
});
|
|
233
|
-
}
|
|
234
|
-
case response.status >= network_1.StatusCode.InternalServerError:
|
|
235
|
-
throw new ShopifyErrors.HttpInternalError({
|
|
236
|
-
message: "Shopify internal error".concat(errorMessage),
|
|
237
|
-
code: code,
|
|
238
|
-
statusText: statusText,
|
|
239
|
-
body: body,
|
|
240
|
-
headers: headers,
|
|
241
|
-
});
|
|
242
|
-
default:
|
|
243
|
-
throw new ShopifyErrors.HttpResponseError({
|
|
244
|
-
message: "Received an error response (".concat(response.status, " ").concat(response.statusText, ") from Shopify").concat(errorMessage),
|
|
245
|
-
code: code,
|
|
246
|
-
statusText: statusText,
|
|
247
|
-
body: body,
|
|
248
|
-
headers: headers,
|
|
249
|
-
});
|
|
250
|
-
}
|
|
200
|
+
console.warn('API Deprecation Notice:', deprecation);
|
|
251
201
|
}
|
|
252
|
-
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return [2 /*return*/, {
|
|
205
|
+
body: body,
|
|
206
|
+
headers: response.headers,
|
|
207
|
+
}];
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
errorMessages = [];
|
|
211
|
+
if (body.errors) {
|
|
212
|
+
errorMessages.push(JSON.stringify(body.errors, null, 2));
|
|
213
|
+
}
|
|
214
|
+
if (response.headers && response.headers.get('x-request-id')) {
|
|
215
|
+
errorMessages.push("If you report this error, please include this id: ".concat(response.headers.get('x-request-id')));
|
|
216
|
+
}
|
|
217
|
+
errorMessage = errorMessages.length
|
|
218
|
+
? ":\n".concat(errorMessages.join('\n'))
|
|
219
|
+
: '';
|
|
220
|
+
headers = response.headers.raw();
|
|
221
|
+
code = response.status;
|
|
222
|
+
statusText = response.statusText;
|
|
223
|
+
switch (true) {
|
|
224
|
+
case response.status === network_1.StatusCode.TooManyRequests: {
|
|
225
|
+
retryAfter = response.headers.get('Retry-After');
|
|
226
|
+
throw new ShopifyErrors.HttpThrottlingError({
|
|
227
|
+
message: "Shopify is throttling requests".concat(errorMessage),
|
|
228
|
+
code: code,
|
|
229
|
+
statusText: statusText,
|
|
230
|
+
body: body,
|
|
231
|
+
headers: headers,
|
|
232
|
+
retryAfter: retryAfter ? parseFloat(retryAfter) : undefined,
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
case response.status >= network_1.StatusCode.InternalServerError:
|
|
236
|
+
throw new ShopifyErrors.HttpInternalError({
|
|
237
|
+
message: "Shopify internal error".concat(errorMessage),
|
|
238
|
+
code: code,
|
|
239
|
+
statusText: statusText,
|
|
240
|
+
body: body,
|
|
241
|
+
headers: headers,
|
|
242
|
+
});
|
|
243
|
+
default:
|
|
244
|
+
throw new ShopifyErrors.HttpResponseError({
|
|
245
|
+
message: "Received an error response (".concat(response.status, " ").concat(response.statusText, ") from Shopify").concat(errorMessage),
|
|
246
|
+
code: code,
|
|
247
|
+
statusText: statusText,
|
|
248
|
+
body: body,
|
|
249
|
+
headers: headers,
|
|
250
|
+
});
|
|
253
251
|
}
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
252
|
+
}
|
|
253
|
+
return [3 /*break*/, 4];
|
|
254
|
+
case 3:
|
|
255
|
+
error_2 = _a.sent();
|
|
256
|
+
if (error_2 instanceof ShopifyErrors.ShopifyError) {
|
|
257
|
+
throw error_2;
|
|
259
258
|
}
|
|
260
259
|
else {
|
|
261
|
-
throw new ShopifyErrors.HttpRequestError("Failed to make Shopify HTTP request: ".concat(
|
|
260
|
+
throw new ShopifyErrors.HttpRequestError("Failed to make Shopify HTTP request: ".concat(error_2));
|
|
262
261
|
}
|
|
263
|
-
|
|
262
|
+
return [3 /*break*/, 4];
|
|
263
|
+
case 4: return [2 /*return*/];
|
|
264
|
+
}
|
|
264
265
|
});
|
|
265
266
|
});
|
|
266
267
|
};
|
package/dist/context.js
CHANGED
|
@@ -17,8 +17,11 @@ var Context = {
|
|
|
17
17
|
API_VERSION: base_types_1.ApiVersion.Unstable,
|
|
18
18
|
IS_EMBEDDED_APP: true,
|
|
19
19
|
IS_PRIVATE_APP: false,
|
|
20
|
-
SESSION_STORAGE
|
|
20
|
+
// TS hack as SESSION_STORAGE is guaranteed to be set
|
|
21
|
+
// to a correct value in `initialize()`.
|
|
22
|
+
SESSION_STORAGE: null,
|
|
21
23
|
initialize: function (params) {
|
|
24
|
+
var _a;
|
|
22
25
|
var scopes;
|
|
23
26
|
if (params.SCOPES instanceof scopes_1.AuthScopes) {
|
|
24
27
|
scopes = params.SCOPES;
|
|
@@ -50,12 +53,11 @@ var Context = {
|
|
|
50
53
|
this.API_VERSION = params.API_VERSION;
|
|
51
54
|
this.IS_EMBEDDED_APP = params.IS_EMBEDDED_APP;
|
|
52
55
|
this.IS_PRIVATE_APP = params.IS_PRIVATE_APP;
|
|
56
|
+
this.SESSION_STORAGE =
|
|
57
|
+
(_a = params.SESSION_STORAGE) !== null && _a !== void 0 ? _a : new sqlite_1.SQLiteSessionStorage(dbFile);
|
|
53
58
|
if (params.HOST_SCHEME) {
|
|
54
59
|
this.HOST_SCHEME = params.HOST_SCHEME;
|
|
55
60
|
}
|
|
56
|
-
if (params.SESSION_STORAGE) {
|
|
57
|
-
this.SESSION_STORAGE = params.SESSION_STORAGE;
|
|
58
|
-
}
|
|
59
61
|
if (params.USER_AGENT_PREFIX) {
|
|
60
62
|
this.USER_AGENT_PREFIX = params.USER_AGENT_PREFIX;
|
|
61
63
|
}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const SHOPIFY_API_LIBRARY_VERSION = "3.1.
|
|
1
|
+
export declare const SHOPIFY_API_LIBRARY_VERSION = "3.1.1";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shopify/shopify-api",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.2",
|
|
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",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"node-fetch": "^2.6.1",
|
|
56
56
|
"pg": "^8.7.3",
|
|
57
57
|
"redis": "^4.0.6",
|
|
58
|
-
"sqlite3": "^5.0.
|
|
58
|
+
"sqlite3": "^5.0.8",
|
|
59
59
|
"tslib": "^2.0.3",
|
|
60
60
|
"uuid": "^8.3.1"
|
|
61
61
|
},
|