@shopify/shopify-api 3.0.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 +26 -1
- package/dist/__tests__/fake-resource-with-custom-prefix.d.ts.map +1 -1
- package/dist/__tests__/fake-resource-with-custom-prefix.js +7 -5
- package/dist/__tests__/fake-resource.d.ts +1 -0
- package/dist/__tests__/fake-resource.d.ts.map +1 -1
- package/dist/__tests__/fake-resource.js +16 -13
- package/dist/auth/oauth/oauth.d.ts.map +1 -1
- package/dist/auth/oauth/oauth.js +12 -15
- package/dist/auth/scopes/index.js +5 -5
- package/dist/auth/session/index.d.ts +11 -1
- package/dist/auth/session/index.d.ts.map +1 -1
- package/dist/auth/session/index.js +16 -1
- package/dist/auth/session/session-utils.d.ts +8 -0
- package/dist/auth/session/session-utils.d.ts.map +1 -0
- package/dist/auth/session/session-utils.js +104 -0
- package/dist/auth/session/storage/__tests__/battery-of-tests.d.ts +3 -0
- package/dist/auth/session/storage/__tests__/battery-of-tests.d.ts.map +1 -0
- package/dist/auth/session/storage/__tests__/battery-of-tests.js +180 -0
- package/dist/auth/session/storage/__tests__/utils.d.ts +10 -0
- package/dist/auth/session/storage/__tests__/utils.d.ts.map +1 -0
- package/dist/auth/session/storage/__tests__/utils.js +87 -0
- package/dist/auth/session/storage/custom.js +4 -4
- package/dist/auth/session/storage/mongodb.d.ts +23 -0
- package/dist/auth/session/storage/mongodb.d.ts.map +1 -0
- package/dist/auth/session/storage/mongodb.js +150 -0
- package/dist/auth/session/storage/mysql.d.ts +22 -0
- package/dist/auth/session/storage/mysql.d.ts.map +1 -0
- package/dist/auth/session/storage/mysql.js +154 -0
- package/dist/auth/session/storage/postgresql.d.ts +24 -0
- package/dist/auth/session/storage/postgresql.d.ts.map +1 -0
- package/dist/auth/session/storage/postgresql.js +172 -0
- package/dist/auth/session/storage/redis.d.ts +20 -0
- package/dist/auth/session/storage/redis.d.ts.map +1 -0
- package/dist/auth/session/storage/redis.js +105 -0
- package/dist/auth/session/storage/sqlite.d.ts +19 -0
- package/dist/auth/session/storage/sqlite.d.ts.map +1 -0
- package/dist/auth/session/storage/sqlite.js +128 -0
- package/dist/base-rest-resource.d.ts +3 -1
- package/dist/base-rest-resource.d.ts.map +1 -1
- package/dist/base-rest-resource.js +31 -19
- package/dist/base-types.d.ts +1 -0
- package/dist/base-types.d.ts.map +1 -1
- package/dist/clients/graphql/graphql_client.js +1 -1
- 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 +100 -103
- package/dist/clients/rest/rest_client.js +5 -3
- package/dist/context.d.ts +1 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +13 -5
- package/dist/error.js +4 -3
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/rest-resources/2021-07/abandoned_checkout.d.ts +2 -2
- package/dist/rest-resources/2021-07/abandoned_checkout.d.ts.map +1 -1
- package/dist/rest-resources/2021-07/abandoned_checkout.js +2 -3
- package/dist/rest-resources/2021-07/article.d.ts +4 -1
- package/dist/rest-resources/2021-07/article.d.ts.map +1 -1
- package/dist/rest-resources/2021-07/article.js +7 -6
- package/dist/rest-resources/2021-07/gift_card_adjustment.js +1 -1
- package/dist/rest-resources/2021-07/index.js +2 -0
- package/dist/rest-resources/2021-07/variant.d.ts +1 -0
- package/dist/rest-resources/2021-07/variant.d.ts.map +1 -1
- package/dist/rest-resources/2021-07/variant.js +4 -0
- package/dist/rest-resources/2021-10/abandoned_checkout.d.ts +2 -2
- package/dist/rest-resources/2021-10/abandoned_checkout.d.ts.map +1 -1
- package/dist/rest-resources/2021-10/abandoned_checkout.js +2 -3
- package/dist/rest-resources/2021-10/article.d.ts +4 -1
- package/dist/rest-resources/2021-10/article.d.ts.map +1 -1
- package/dist/rest-resources/2021-10/article.js +7 -6
- package/dist/rest-resources/2021-10/gift_card_adjustment.js +1 -1
- package/dist/rest-resources/2021-10/index.js +2 -0
- package/dist/rest-resources/2021-10/variant.d.ts +1 -0
- package/dist/rest-resources/2021-10/variant.d.ts.map +1 -1
- package/dist/rest-resources/2021-10/variant.js +4 -0
- package/dist/rest-resources/2022-01/abandoned_checkout.d.ts +2 -2
- package/dist/rest-resources/2022-01/abandoned_checkout.d.ts.map +1 -1
- package/dist/rest-resources/2022-01/abandoned_checkout.js +2 -3
- package/dist/rest-resources/2022-01/article.d.ts +4 -1
- package/dist/rest-resources/2022-01/article.d.ts.map +1 -1
- package/dist/rest-resources/2022-01/article.js +7 -6
- package/dist/rest-resources/2022-01/gift_card_adjustment.js +1 -1
- package/dist/rest-resources/2022-01/index.js +2 -0
- package/dist/rest-resources/2022-01/variant.d.ts +1 -0
- package/dist/rest-resources/2022-01/variant.d.ts.map +1 -1
- package/dist/rest-resources/2022-01/variant.js +4 -0
- package/dist/rest-resources/2022-04/abandoned_checkout.d.ts +2 -2
- package/dist/rest-resources/2022-04/abandoned_checkout.d.ts.map +1 -1
- package/dist/rest-resources/2022-04/abandoned_checkout.js +2 -3
- package/dist/rest-resources/2022-04/article.d.ts +4 -1
- package/dist/rest-resources/2022-04/article.d.ts.map +1 -1
- package/dist/rest-resources/2022-04/article.js +7 -6
- package/dist/rest-resources/2022-04/gift_card_adjustment.js +1 -1
- package/dist/rest-resources/2022-04/index.js +2 -0
- package/dist/rest-resources/2022-04/variant.d.ts +1 -0
- package/dist/rest-resources/2022-04/variant.d.ts.map +1 -1
- package/dist/rest-resources/2022-04/variant.js +4 -0
- package/dist/utils/decode-session-token.d.ts.map +1 -1
- package/dist/utils/decode-session-token.js +1 -5
- package/dist/utils/graphql_proxy.js +1 -1
- package/dist/utils/hmac-validator.js +2 -5
- package/dist/utils/processed-query.js +3 -3
- package/dist/utils/safe-compare.d.ts.map +1 -1
- package/dist/utils/safe-compare.js +17 -15
- package/dist/utils/setup-jest.d.ts.map +1 -1
- package/dist/utils/setup-jest.js +4 -3
- package/dist/utils/shop-validator.d.ts.map +1 -1
- package/dist/utils/shop-validator.js +1 -0
- package/dist/utils/with-session.js +3 -3
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/webhooks/registry.d.ts +2 -1
- package/dist/webhooks/registry.d.ts.map +1 -1
- package/dist/webhooks/registry.js +39 -13
- package/package.json +12 -4
package/CHANGELOG.md
CHANGED
|
@@ -5,7 +5,32 @@ 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
|
+
|
|
17
|
+
|
|
18
|
+
## [3.1.0] - 2022-05-16
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
- Support for specifying the URI scheme of the host [#385](https://github.com/Shopify/shopify-node-api/pull/385)
|
|
22
|
+
- 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.
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
- Fixes [#363](https://github.com/Shopify/shopify-node-api/issues/363)
|
|
26
|
+
- 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
|
|
27
|
+
- For topics that don't exist, `register` checks the response from the initial API call for an `errors` field and returns accordingly
|
|
28
|
+
|
|
29
|
+
## [3.0.1] - 2022-04-11
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
|
|
33
|
+
- Allow REST resources to configure a deny list of attributes to be excluded when saving [#355](https://github.com/Shopify/shopify-node-api/pull/355)
|
|
9
34
|
|
|
10
35
|
## [3.0.0] - 2022-04-04
|
|
11
36
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fake-resource-with-custom-prefix.d.ts","sourceRoot":"","sources":["../../src/__tests__/fake-resource-with-custom-prefix.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,EAAE,EAAC,YAAY,EAAC,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAEzC,UAAU,oCAAoC;IAC5C,OAAO,EAAE,gBAAgB,CAAC;IAC1B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;CACrB;AAED,MAAM,CAAC,OAAO,OAAO,4BAA6B,SAAQ,IAAI;IAC5D,OAAc,WAAW,aAAuB;IAChD,SAAS,CAAC,MAAM,CAAC,IAAI,SAAsC;IAC3D,SAAS,CAAC,MAAM,CAAC,WAAW,SAAwC;IACpE,SAAS,CAAC,MAAM,CAAC,aAAa,SAA0B;IAExD,SAAS,CAAC,MAAM,CAAC,OAAO,KAAM;IAC9B,SAAS,CAAC,MAAM,CAAC,QAAQ,KAAM;IAE/B,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,CAOpC;IAEF,OAAc,IAAI,qBAGf,oCAAoC,KAAG,
|
|
1
|
+
{"version":3,"file":"fake-resource-with-custom-prefix.d.ts","sourceRoot":"","sources":["../../src/__tests__/fake-resource-with-custom-prefix.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,EAAE,EAAC,YAAY,EAAC,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAEzC,UAAU,oCAAoC;IAC5C,OAAO,EAAE,gBAAgB,CAAC;IAC1B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;CACrB;AAED,MAAM,CAAC,OAAO,OAAO,4BAA6B,SAAQ,IAAI;IAC5D,OAAc,WAAW,aAAuB;IAChD,SAAS,CAAC,MAAM,CAAC,IAAI,SAAsC;IAC3D,SAAS,CAAC,MAAM,CAAC,WAAW,SAAwC;IACpE,SAAS,CAAC,MAAM,CAAC,aAAa,SAA0B;IAExD,SAAS,CAAC,MAAM,CAAC,OAAO,KAAM;IAC9B,SAAS,CAAC,MAAM,CAAC,QAAQ,KAAM;IAE/B,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,CAOpC;IAEF,OAAc,IAAI,qBAGf,oCAAoC,KAAG,QAAQ,4BAA4B,GAAG,IAAI,CAAC,CAMpF;IAEF,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B"}
|
|
@@ -8,6 +8,8 @@ var FakeResourceWithCustomPrefix = /** @class */ (function (_super) {
|
|
|
8
8
|
function FakeResourceWithCustomPrefix() {
|
|
9
9
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
10
10
|
}
|
|
11
|
+
var _a;
|
|
12
|
+
_a = FakeResourceWithCustomPrefix;
|
|
11
13
|
FakeResourceWithCustomPrefix.API_VERSION = base_types_1.ApiVersion.Unstable;
|
|
12
14
|
FakeResourceWithCustomPrefix.NAME = 'fake_resource_with_custom_prefix';
|
|
13
15
|
FakeResourceWithCustomPrefix.PLURAL_NAME = 'fake_resource_with_custom_prefixes';
|
|
@@ -22,18 +24,18 @@ var FakeResourceWithCustomPrefix = /** @class */ (function (_super) {
|
|
|
22
24
|
path: 'fake_resource_with_custom_prefix/<id>.json',
|
|
23
25
|
},
|
|
24
26
|
];
|
|
25
|
-
FakeResourceWithCustomPrefix.find = function (
|
|
26
|
-
var session =
|
|
27
|
+
FakeResourceWithCustomPrefix.find = function (_b) {
|
|
28
|
+
var session = _b.session, id = _b.id;
|
|
27
29
|
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
28
30
|
var result;
|
|
29
|
-
return tslib_1.__generator(
|
|
30
|
-
switch (
|
|
31
|
+
return tslib_1.__generator(_a, function (_c) {
|
|
32
|
+
switch (_c.label) {
|
|
31
33
|
case 0: return [4 /*yield*/, FakeResourceWithCustomPrefix.baseFind({
|
|
32
34
|
session: session,
|
|
33
35
|
urlIds: { id: id },
|
|
34
36
|
})];
|
|
35
37
|
case 1:
|
|
36
|
-
result =
|
|
38
|
+
result = _c.sent();
|
|
37
39
|
return [2 /*return*/, result ? result[0] : null];
|
|
38
40
|
}
|
|
39
41
|
});
|
|
@@ -20,6 +20,7 @@ export default class FakeResource extends Base {
|
|
|
20
20
|
static API_VERSION: ApiVersion;
|
|
21
21
|
protected static NAME: string;
|
|
22
22
|
protected static PLURAL_NAME: string;
|
|
23
|
+
protected static READ_ONLY_ATTRIBUTES: string[];
|
|
23
24
|
protected static HAS_ONE: {
|
|
24
25
|
has_one_attribute: typeof FakeResource;
|
|
25
26
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fake-resource.d.ts","sourceRoot":"","sources":["../../src/__tests__/fake-resource.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,EAAE,EAAC,QAAQ,EAAE,YAAY,EAAC,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAEzC,UAAU,oBAAoB;IAC5B,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,UAAU,mBAAmB;IAC3B,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED,UAAU,sBAAsB;IAC9B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,IAAI;IAC5C,OAAc,WAAW,aAAuB;IAChD,SAAS,CAAC,MAAM,CAAC,IAAI,SAAmB;IACxC,SAAS,CAAC,MAAM,CAAC,WAAW,SAAoB;IAEhD,SAAS,CAAC,MAAM,CAAC,OAAO;;MAEtB;IAEF,SAAS,CAAC,MAAM,CAAC,QAAQ;;MAEvB;IAEF,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,CAiDpC;IAEF,OAAc,IAAI,6DAMf,oBAAoB,KAAG,
|
|
1
|
+
{"version":3,"file":"fake-resource.d.ts","sourceRoot":"","sources":["../../src/__tests__/fake-resource.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,EAAE,EAAC,QAAQ,EAAE,YAAY,EAAC,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAEzC,UAAU,oBAAoB;IAC5B,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,UAAU,mBAAmB;IAC3B,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED,UAAU,sBAAsB;IAC9B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,IAAI;IAC5C,OAAc,WAAW,aAAuB;IAChD,SAAS,CAAC,MAAM,CAAC,IAAI,SAAmB;IACxC,SAAS,CAAC,MAAM,CAAC,WAAW,SAAoB;IAEhD,SAAS,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,EAAE,CAA4B;IAE3E,SAAS,CAAC,MAAM,CAAC,OAAO;;MAEtB;IAEF,SAAS,CAAC,MAAM,CAAC,QAAQ;;MAEvB;IAEF,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,CAiDpC;IAEF,OAAc,IAAI,6DAMf,oBAAoB,KAAG,QAAQ,YAAY,GAAG,IAAI,CAAC,CAOpD;IAEF,OAAc,GAAG,yBAGd,mBAAmB,KAAG,QAAQ,YAAY,EAAE,CAAC,CAM9C;IAEF,OAAc,MAAM,wCAIjB,sBAAsB,KAAG,QAAQ,IAAI,CAAC,CASvC;IAEF,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iBAAiB,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACxC,kBAAkB,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAC3C,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC"}
|
|
@@ -8,9 +8,12 @@ var FakeResource = /** @class */ (function (_super) {
|
|
|
8
8
|
function FakeResource() {
|
|
9
9
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
10
10
|
}
|
|
11
|
+
var _a;
|
|
12
|
+
_a = FakeResource;
|
|
11
13
|
FakeResource.API_VERSION = base_types_1.ApiVersion.Unstable;
|
|
12
14
|
FakeResource.NAME = 'fake_resource';
|
|
13
15
|
FakeResource.PLURAL_NAME = 'fake_resources';
|
|
16
|
+
FakeResource.READ_ONLY_ATTRIBUTES = ['unsaveable_attribute'];
|
|
14
17
|
FakeResource.HAS_ONE = {
|
|
15
18
|
has_one_attribute: FakeResource,
|
|
16
19
|
};
|
|
@@ -67,26 +70,26 @@ var FakeResource = /** @class */ (function (_super) {
|
|
|
67
70
|
path: 'other_resources/<other_resource_id>/fake_resources/<id>.json',
|
|
68
71
|
},
|
|
69
72
|
];
|
|
70
|
-
FakeResource.find = function (
|
|
73
|
+
FakeResource.find = function (_b) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
71
74
|
var result;
|
|
72
|
-
var session =
|
|
73
|
-
return tslib_1.__generator(
|
|
74
|
-
switch (
|
|
75
|
+
var session = _b.session, params = _b.params, id = _b.id, _c = _b.other_resource_id, other_resource_id = _c === void 0 ? null : _c, otherArgs = tslib_1.__rest(_b, ["session", "params", "id", "other_resource_id"]);
|
|
76
|
+
return tslib_1.__generator(_a, function (_d) {
|
|
77
|
+
switch (_d.label) {
|
|
75
78
|
case 0: return [4 /*yield*/, FakeResource.baseFind({
|
|
76
79
|
session: session,
|
|
77
80
|
urlIds: { id: id, other_resource_id: other_resource_id },
|
|
78
81
|
params: tslib_1.__assign(tslib_1.__assign({}, params), otherArgs),
|
|
79
82
|
})];
|
|
80
83
|
case 1:
|
|
81
|
-
result =
|
|
84
|
+
result = _d.sent();
|
|
82
85
|
return [2 /*return*/, result ? result[0] : null];
|
|
83
86
|
}
|
|
84
87
|
});
|
|
85
88
|
}); };
|
|
86
|
-
FakeResource.all = function (
|
|
87
|
-
var session =
|
|
89
|
+
FakeResource.all = function (_b) {
|
|
90
|
+
var session = _b.session, params = _b.params;
|
|
88
91
|
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
89
|
-
return tslib_1.__generator(
|
|
92
|
+
return tslib_1.__generator(_a, function (_c) {
|
|
90
93
|
return [2 /*return*/, FakeResource.baseFind({
|
|
91
94
|
session: session,
|
|
92
95
|
params: params,
|
|
@@ -95,12 +98,12 @@ var FakeResource = /** @class */ (function (_super) {
|
|
|
95
98
|
});
|
|
96
99
|
});
|
|
97
100
|
};
|
|
98
|
-
FakeResource.custom = function (
|
|
99
|
-
var session =
|
|
101
|
+
FakeResource.custom = function (_b) {
|
|
102
|
+
var session = _b.session, id = _b.id, other_resource_id = _b.other_resource_id;
|
|
100
103
|
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
101
104
|
var response;
|
|
102
|
-
return tslib_1.__generator(
|
|
103
|
-
switch (
|
|
105
|
+
return tslib_1.__generator(_a, function (_c) {
|
|
106
|
+
switch (_c.label) {
|
|
104
107
|
case 0: return [4 /*yield*/, FakeResource.request({
|
|
105
108
|
http_method: 'get',
|
|
106
109
|
operation: 'custom',
|
|
@@ -108,7 +111,7 @@ var FakeResource = /** @class */ (function (_super) {
|
|
|
108
111
|
urlIds: { id: id, other_resource_id: other_resource_id },
|
|
109
112
|
})];
|
|
110
113
|
case 1:
|
|
111
|
-
response =
|
|
114
|
+
response = _c.sent();
|
|
112
115
|
return [2 /*return*/, response.body];
|
|
113
116
|
}
|
|
114
117
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../src/auth/oauth/oauth.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../src/auth/oauth/oauth.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAexB,OAAO,EAAC,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAElD,OAAO,EACL,SAAS,EAIV,MAAM,SAAS,CAAC;AAEjB,QAAA,MAAM,YAAY;;IAGhB;;;;;;;;;;OAUG;uBAEQ,KAAK,eAAe,YACnB,KAAK,cAAc,QACvB,MAAM,gBACE,MAAM,uBAEnB,QAAQ,MAAM,CAAC;IAgDlB;;;;;;;;;;OAUG;kCAEQ,KAAK,eAAe,YACnB,KAAK,cAAc,SACtB,SAAS,GACf,QAAQ,gBAAgB,CAAC;IAuG5B;;;;;OAKG;gCAEQ,KAAK,eAAe,YACnB,KAAK,cAAc,GAC5B,MAAM,GAAG,SAAS;IAQrB;;;;;OAKG;0BACmB,MAAM,UAAU,MAAM,GAAG,MAAM;IAIrD;;;;OAIG;8BACuB,MAAM,GAAG,MAAM;IAIzC;;;;;;OAMG;iCAEQ,KAAK,eAAe,YACnB,KAAK,cAAc,uBAE5B,MAAM,GAAG,SAAS;CAiCtB,CAAC;AAcF,OAAO,EAAC,YAAY,EAAC,CAAC"}
|
package/dist/auth/oauth/oauth.js
CHANGED
|
@@ -8,7 +8,6 @@ var cookies_1 = tslib_1.__importDefault(require("cookies"));
|
|
|
8
8
|
var context_1 = require("../../context");
|
|
9
9
|
var nonce_1 = tslib_1.__importDefault(require("../../utils/nonce"));
|
|
10
10
|
var hmac_validator_1 = tslib_1.__importDefault(require("../../utils/hmac-validator"));
|
|
11
|
-
var shop_validator_1 = tslib_1.__importDefault(require("../../utils/shop-validator"));
|
|
12
11
|
var safe_compare_1 = tslib_1.__importDefault(require("../../utils/safe-compare"));
|
|
13
12
|
var decode_session_token_1 = tslib_1.__importDefault(require("../../utils/decode-session-token"));
|
|
14
13
|
var session_1 = require("../session");
|
|
@@ -41,8 +40,8 @@ var ShopifyOAuth = {
|
|
|
41
40
|
keys: [context_1.Context.API_SECRET_KEY],
|
|
42
41
|
secure: true,
|
|
43
42
|
});
|
|
44
|
-
state = nonce_1.default();
|
|
45
|
-
session = new session_1.Session(isOnline ? uuid_1.v4() : this.getOfflineSessionId(shop), shop, state, isOnline);
|
|
43
|
+
state = (0, nonce_1.default)();
|
|
44
|
+
session = new session_1.Session(isOnline ? (0, uuid_1.v4)() : this.getOfflineSessionId(shop), shop, state, isOnline);
|
|
46
45
|
return [4 /*yield*/, context_1.Context.SESSION_STORAGE.storeSession(session)];
|
|
47
46
|
case 1:
|
|
48
47
|
sessionStored = _a.sent();
|
|
@@ -58,12 +57,12 @@ var ShopifyOAuth = {
|
|
|
58
57
|
query = {
|
|
59
58
|
client_id: context_1.Context.API_KEY,
|
|
60
59
|
scope: context_1.Context.SCOPES.toString(),
|
|
61
|
-
redirect_uri: "
|
|
60
|
+
redirect_uri: "".concat(context_1.Context.HOST_SCHEME, "://").concat(context_1.Context.HOST_NAME).concat(redirectPath),
|
|
62
61
|
state: state,
|
|
63
62
|
'grant_options[]': isOnline ? 'per-user' : '',
|
|
64
63
|
};
|
|
65
64
|
queryString = querystring_1.default.stringify(query);
|
|
66
|
-
return [2 /*return*/, "https://"
|
|
65
|
+
return [2 /*return*/, "https://".concat(shop, "/admin/oauth/authorize?").concat(queryString)];
|
|
67
66
|
}
|
|
68
67
|
});
|
|
69
68
|
});
|
|
@@ -93,13 +92,13 @@ var ShopifyOAuth = {
|
|
|
93
92
|
});
|
|
94
93
|
sessionCookie = this.getCookieSessionId(request, response);
|
|
95
94
|
if (!sessionCookie) {
|
|
96
|
-
throw new ShopifyErrors.CookieNotFound("Cannot complete OAuth process. Could not find an OAuth cookie for shop url: "
|
|
95
|
+
throw new ShopifyErrors.CookieNotFound("Cannot complete OAuth process. Could not find an OAuth cookie for shop url: ".concat(query.shop));
|
|
97
96
|
}
|
|
98
97
|
return [4 /*yield*/, context_1.Context.SESSION_STORAGE.loadSession(sessionCookie)];
|
|
99
98
|
case 1:
|
|
100
99
|
currentSession = _a.sent();
|
|
101
100
|
if (!currentSession) {
|
|
102
|
-
throw new ShopifyErrors.SessionNotFound("Cannot complete OAuth process. No session found for the specified shop url: "
|
|
101
|
+
throw new ShopifyErrors.SessionNotFound("Cannot complete OAuth process. No session found for the specified shop url: ".concat(query.shop));
|
|
103
102
|
}
|
|
104
103
|
if (!validQuery(query, currentSession)) {
|
|
105
104
|
throw new ShopifyErrors.InvalidOAuthError('Invalid OAuth callback.');
|
|
@@ -128,7 +127,7 @@ var ShopifyOAuth = {
|
|
|
128
127
|
currentSession.onlineAccessInfo = rest;
|
|
129
128
|
if (!context_1.Context.IS_EMBEDDED_APP) return [3 /*break*/, 4];
|
|
130
129
|
onlineInfo = currentSession.onlineAccessInfo;
|
|
131
|
-
jwtSessionId = this.getJwtSessionId(currentSession.shop, ""
|
|
130
|
+
jwtSessionId = this.getJwtSessionId(currentSession.shop, "".concat(onlineInfo.associated_user.id));
|
|
132
131
|
jwtSession = session_1.Session.cloneSession(currentSession, jwtSessionId);
|
|
133
132
|
return [4 /*yield*/, context_1.Context.SESSION_STORAGE.deleteSession(currentSession.id)];
|
|
134
133
|
case 3:
|
|
@@ -182,7 +181,7 @@ var ShopifyOAuth = {
|
|
|
182
181
|
* @param userId Current actor id
|
|
183
182
|
*/
|
|
184
183
|
getJwtSessionId: function (shop, userId) {
|
|
185
|
-
return shop
|
|
184
|
+
return "".concat(shop, "_").concat(userId);
|
|
186
185
|
},
|
|
187
186
|
/**
|
|
188
187
|
* Builds an offline session id for the given shop.
|
|
@@ -190,7 +189,7 @@ var ShopifyOAuth = {
|
|
|
190
189
|
* @param shop Shopify shop domain
|
|
191
190
|
*/
|
|
192
191
|
getOfflineSessionId: function (shop) {
|
|
193
|
-
return "offline_"
|
|
192
|
+
return "offline_".concat(shop);
|
|
194
193
|
},
|
|
195
194
|
/**
|
|
196
195
|
* Extracts the current session id from the request / response pair.
|
|
@@ -209,7 +208,7 @@ var ShopifyOAuth = {
|
|
|
209
208
|
if (!matches) {
|
|
210
209
|
throw new ShopifyErrors.MissingJwtTokenError('Missing Bearer token in authorization header');
|
|
211
210
|
}
|
|
212
|
-
var jwtPayload = decode_session_token_1.default(matches[1]);
|
|
211
|
+
var jwtPayload = (0, decode_session_token_1.default)(matches[1]);
|
|
213
212
|
var shop = jwtPayload.dest.replace(/^https:\/\//, '');
|
|
214
213
|
if (isOnline) {
|
|
215
214
|
currentSessionId = this.getJwtSessionId(shop, jwtPayload.sub);
|
|
@@ -231,13 +230,11 @@ var ShopifyOAuth = {
|
|
|
231
230
|
};
|
|
232
231
|
exports.ShopifyOAuth = ShopifyOAuth;
|
|
233
232
|
/**
|
|
234
|
-
* Uses the validation utils validateHmac,
|
|
233
|
+
* Uses the validation utils validateHmac, and safeCompare to assess whether the callback is valid.
|
|
235
234
|
*
|
|
236
235
|
* @param query Current HTTP Request Query
|
|
237
236
|
* @param session Current session
|
|
238
237
|
*/
|
|
239
238
|
function validQuery(query, session) {
|
|
240
|
-
return (hmac_validator_1.default(query) &&
|
|
241
|
-
shop_validator_1.default(query.shop) &&
|
|
242
|
-
safe_compare_1.default(query.state, session.state));
|
|
239
|
+
return ((0, hmac_validator_1.default)(query) && (0, safe_compare_1.default)(query.state, session.state));
|
|
243
240
|
}
|
|
@@ -6,7 +6,7 @@ var AuthScopes = /** @class */ (function () {
|
|
|
6
6
|
function AuthScopes(scopes) {
|
|
7
7
|
var scopesArray = [];
|
|
8
8
|
if (typeof scopes === 'string') {
|
|
9
|
-
scopesArray = scopes.split(new RegExp(AuthScopes.SCOPE_DELIMITER
|
|
9
|
+
scopesArray = scopes.split(new RegExp("".concat(AuthScopes.SCOPE_DELIMITER, "\\s*")));
|
|
10
10
|
}
|
|
11
11
|
else if (scopes) {
|
|
12
12
|
scopesArray = scopes;
|
|
@@ -17,8 +17,8 @@ var AuthScopes = /** @class */ (function () {
|
|
|
17
17
|
var impliedScopes = this.getImpliedScopes(scopesArray);
|
|
18
18
|
var scopeSet = new Set(scopesArray);
|
|
19
19
|
var impliedSet = new Set(impliedScopes);
|
|
20
|
-
this.compressedScopes = new Set(tslib_1.
|
|
21
|
-
this.expandedScopes = new Set(tslib_1.
|
|
20
|
+
this.compressedScopes = new Set(tslib_1.__spreadArray([], tslib_1.__read(scopeSet), false).filter(function (x) { return !impliedSet.has(x); }));
|
|
21
|
+
this.expandedScopes = new Set(tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(scopeSet), false), tslib_1.__read(impliedSet), false));
|
|
22
22
|
}
|
|
23
23
|
AuthScopes.prototype.has = function (scope) {
|
|
24
24
|
var _this = this;
|
|
@@ -46,13 +46,13 @@ var AuthScopes = /** @class */ (function () {
|
|
|
46
46
|
return this.toArray().join(AuthScopes.SCOPE_DELIMITER);
|
|
47
47
|
};
|
|
48
48
|
AuthScopes.prototype.toArray = function () {
|
|
49
|
-
return tslib_1.
|
|
49
|
+
return tslib_1.__spreadArray([], tslib_1.__read(this.compressedScopes), false);
|
|
50
50
|
};
|
|
51
51
|
AuthScopes.prototype.getImpliedScopes = function (scopesArray) {
|
|
52
52
|
return scopesArray.reduce(function (array, current) {
|
|
53
53
|
var matches = current.match(/^(unauthenticated_)?write_(.*)$/);
|
|
54
54
|
if (matches) {
|
|
55
|
-
array.push((matches[1] ? matches[1] : ''
|
|
55
|
+
array.push("".concat(matches[1] ? matches[1] : '', "read_").concat(matches[2]));
|
|
56
56
|
}
|
|
57
57
|
return array;
|
|
58
58
|
}, []);
|
|
@@ -2,11 +2,21 @@ import { Session } from './session';
|
|
|
2
2
|
import { SessionStorage } from './session_storage';
|
|
3
3
|
import { MemorySessionStorage } from './storage/memory';
|
|
4
4
|
import { CustomSessionStorage } from './storage/custom';
|
|
5
|
+
import { MySQLSessionStorage } from './storage/mysql';
|
|
6
|
+
import { MongoDBSessionStorage } from './storage/mongodb';
|
|
7
|
+
import { PostgreSQLSessionStorage } from './storage/postgresql';
|
|
8
|
+
import { RedisSessionStorage } from './storage/redis';
|
|
9
|
+
import { SQLiteSessionStorage } from './storage/sqlite';
|
|
5
10
|
declare const ShopifySession: {
|
|
6
11
|
Session: typeof Session;
|
|
7
12
|
MemorySessionStorage: typeof MemorySessionStorage;
|
|
8
13
|
CustomSessionStorage: typeof CustomSessionStorage;
|
|
14
|
+
MySQLSessionStorage: typeof MySQLSessionStorage;
|
|
15
|
+
MongoDBSessionStorage: typeof MongoDBSessionStorage;
|
|
16
|
+
PostgreSQLSessionStorage: typeof PostgreSQLSessionStorage;
|
|
17
|
+
RedisSessionStorage: typeof RedisSessionStorage;
|
|
18
|
+
SQLiteSessionStorage: typeof SQLiteSessionStorage;
|
|
9
19
|
};
|
|
10
20
|
export default ShopifySession;
|
|
11
|
-
export { Session, SessionStorage, MemorySessionStorage, CustomSessionStorage };
|
|
21
|
+
export { Session, SessionStorage, MemorySessionStorage, CustomSessionStorage, MySQLSessionStorage, MongoDBSessionStorage, PostgreSQLSessionStorage, RedisSessionStorage, SQLiteSessionStorage, };
|
|
12
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/auth/session/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAC,oBAAoB,EAAC,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAC,oBAAoB,EAAC,MAAM,kBAAkB,CAAC;AAEtD,QAAA,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/auth/session/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAC,oBAAoB,EAAC,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAC,oBAAoB,EAAC,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAC,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAC,qBAAqB,EAAC,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAC,wBAAwB,EAAC,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAC,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAC,oBAAoB,EAAC,MAAM,kBAAkB,CAAC;AAEtD,QAAA,MAAM,cAAc;;;;;;;;;CASnB,CAAC;AAEF,eAAe,cAAc,CAAC;AAC9B,OAAO,EACL,OAAO,EACP,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,GACrB,CAAC"}
|
|
@@ -1,15 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CustomSessionStorage = exports.MemorySessionStorage = exports.Session = void 0;
|
|
3
|
+
exports.SQLiteSessionStorage = exports.RedisSessionStorage = exports.PostgreSQLSessionStorage = exports.MongoDBSessionStorage = exports.MySQLSessionStorage = exports.CustomSessionStorage = exports.MemorySessionStorage = exports.Session = void 0;
|
|
4
4
|
var session_1 = require("./session");
|
|
5
5
|
Object.defineProperty(exports, "Session", { enumerable: true, get: function () { return session_1.Session; } });
|
|
6
6
|
var memory_1 = require("./storage/memory");
|
|
7
7
|
Object.defineProperty(exports, "MemorySessionStorage", { enumerable: true, get: function () { return memory_1.MemorySessionStorage; } });
|
|
8
8
|
var custom_1 = require("./storage/custom");
|
|
9
9
|
Object.defineProperty(exports, "CustomSessionStorage", { enumerable: true, get: function () { return custom_1.CustomSessionStorage; } });
|
|
10
|
+
var mysql_1 = require("./storage/mysql");
|
|
11
|
+
Object.defineProperty(exports, "MySQLSessionStorage", { enumerable: true, get: function () { return mysql_1.MySQLSessionStorage; } });
|
|
12
|
+
var mongodb_1 = require("./storage/mongodb");
|
|
13
|
+
Object.defineProperty(exports, "MongoDBSessionStorage", { enumerable: true, get: function () { return mongodb_1.MongoDBSessionStorage; } });
|
|
14
|
+
var postgresql_1 = require("./storage/postgresql");
|
|
15
|
+
Object.defineProperty(exports, "PostgreSQLSessionStorage", { enumerable: true, get: function () { return postgresql_1.PostgreSQLSessionStorage; } });
|
|
16
|
+
var redis_1 = require("./storage/redis");
|
|
17
|
+
Object.defineProperty(exports, "RedisSessionStorage", { enumerable: true, get: function () { return redis_1.RedisSessionStorage; } });
|
|
18
|
+
var sqlite_1 = require("./storage/sqlite");
|
|
19
|
+
Object.defineProperty(exports, "SQLiteSessionStorage", { enumerable: true, get: function () { return sqlite_1.SQLiteSessionStorage; } });
|
|
10
20
|
var ShopifySession = {
|
|
11
21
|
Session: session_1.Session,
|
|
12
22
|
MemorySessionStorage: memory_1.MemorySessionStorage,
|
|
13
23
|
CustomSessionStorage: custom_1.CustomSessionStorage,
|
|
24
|
+
MySQLSessionStorage: mysql_1.MySQLSessionStorage,
|
|
25
|
+
MongoDBSessionStorage: mongodb_1.MongoDBSessionStorage,
|
|
26
|
+
PostgreSQLSessionStorage: postgresql_1.PostgreSQLSessionStorage,
|
|
27
|
+
RedisSessionStorage: redis_1.RedisSessionStorage,
|
|
28
|
+
SQLiteSessionStorage: sqlite_1.SQLiteSessionStorage,
|
|
14
29
|
};
|
|
15
30
|
exports.default = ShopifySession;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SessionInterface } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Like Object.fromEntries(), but normalizes the keys and filters out null values.
|
|
4
|
+
*/
|
|
5
|
+
export declare function sessionFromEntries(entries: [string, string | number][]): SessionInterface;
|
|
6
|
+
export declare function sessionEntries(session: SessionInterface): [string, string | number][];
|
|
7
|
+
export declare function sessionEqual(sessionA: SessionInterface | undefined, sessionB: SessionInterface | undefined): boolean;
|
|
8
|
+
//# sourceMappingURL=session-utils.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sessionEqual = exports.sessionEntries = exports.sessionFromEntries = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
/**
|
|
6
|
+
* Like Object.fromEntries(), but normalizes the keys and filters out null values.
|
|
7
|
+
*/
|
|
8
|
+
function sessionFromEntries(entries) {
|
|
9
|
+
var obj = Object.fromEntries(entries
|
|
10
|
+
.filter(function (_a) {
|
|
11
|
+
var _b = tslib_1.__read(_a, 2), _key = _b[0], value = _b[1];
|
|
12
|
+
return value !== null;
|
|
13
|
+
})
|
|
14
|
+
// Sanitize keys
|
|
15
|
+
.map(function (_a) {
|
|
16
|
+
var _b = tslib_1.__read(_a, 2), key = _b[0], value = _b[1];
|
|
17
|
+
switch (key.toLowerCase()) {
|
|
18
|
+
case 'isonline':
|
|
19
|
+
return ['isOnline', value];
|
|
20
|
+
case 'accesstoken':
|
|
21
|
+
return ['accessToken', value];
|
|
22
|
+
case 'onlineaccessinfo':
|
|
23
|
+
return ['onlineAccessInfo', value];
|
|
24
|
+
default:
|
|
25
|
+
return [key.toLowerCase(), value];
|
|
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
|
+
}
|
|
57
|
+
}));
|
|
58
|
+
return obj;
|
|
59
|
+
}
|
|
60
|
+
exports.sessionFromEntries = sessionFromEntries;
|
|
61
|
+
var includedKeys = [
|
|
62
|
+
'id',
|
|
63
|
+
'shop',
|
|
64
|
+
'state',
|
|
65
|
+
'isOnline',
|
|
66
|
+
'scope',
|
|
67
|
+
'accessToken',
|
|
68
|
+
'expires',
|
|
69
|
+
'onlineAccessInfo',
|
|
70
|
+
];
|
|
71
|
+
function sessionEntries(session) {
|
|
72
|
+
return (Object.entries(session)
|
|
73
|
+
.filter(function (_a) {
|
|
74
|
+
var _b = tslib_1.__read(_a, 1), key = _b[0];
|
|
75
|
+
return includedKeys.includes(key);
|
|
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
|
+
}));
|
|
93
|
+
}
|
|
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;
|
|
@@ -0,0 +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"}
|