@agnostack/next-shopify 1.15.0-beta.2 → 1.15.0-beta.21
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 +136 -0
- package/dist/lib/handlers/api/auth.js +15 -11
- package/dist/lib/handlers/api/auth.js.map +1 -1
- package/dist/lib/handlers/api/billing.js +13 -9
- package/dist/lib/handlers/api/billing.js.map +1 -1
- package/dist/lib/handlers/api/callback.js +37 -33
- package/dist/lib/handlers/api/callback.js.map +1 -1
- package/dist/lib/handlers/api/index.js +25 -7
- package/dist/lib/handlers/api/index.js.map +1 -1
- package/dist/lib/handlers/api/uninstall.js +12 -8
- package/dist/lib/handlers/api/uninstall.js.map +1 -1
- package/dist/lib/handlers/api/verifiable/appInstallation.js +11 -7
- package/dist/lib/handlers/api/verifiable/appInstallation.js.map +1 -1
- package/dist/lib/handlers/api/verifiable/graph.js +26 -22
- package/dist/lib/handlers/api/verifiable/graph.js.map +1 -1
- package/dist/lib/handlers/api/verifiable/index.js +21 -5
- package/dist/lib/handlers/api/verifiable/index.js.map +1 -1
- package/dist/lib/handlers/api/verifiable/proxy.js +39 -32
- package/dist/lib/handlers/api/verifiable/proxy.js.map +1 -1
- package/dist/lib/handlers/api/verifiable/rest.js +23 -19
- package/dist/lib/handlers/api/verifiable/rest.js.map +1 -1
- package/dist/lib/handlers/api/verifiable/token.js +27 -23
- package/dist/lib/handlers/api/verifiable/token.js.map +1 -1
- package/dist/lib/handlers/api/webhook.js +13 -9
- package/dist/lib/handlers/api/webhook.js.map +1 -1
- package/dist/lib/handlers/index.js +18 -2
- package/dist/lib/handlers/index.js.map +1 -1
- package/dist/lib/handlers/ssr/index.js +18 -2
- package/dist/lib/handlers/ssr/index.js.map +1 -1
- package/dist/lib/handlers/ssr/protect.js +24 -17
- package/dist/lib/handlers/ssr/protect.js.map +1 -1
- package/dist/lib/handlers/ssr/wrap.js +10 -6
- package/dist/lib/handlers/ssr/wrap.js.map +1 -1
- package/dist/lib/index.d.ts +1 -1
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +24 -5
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/utils/billing.js +23 -18
- package/dist/lib/utils/billing.js.map +1 -1
- package/dist/lib/utils/crypto.d.ts +1 -1
- package/dist/lib/utils/crypto.d.ts.map +1 -1
- package/dist/lib/utils/crypto.js +25 -15
- package/dist/lib/utils/crypto.js.map +1 -1
- package/dist/lib/utils/firebase.js +29 -17
- package/dist/lib/utils/firebase.js.map +1 -1
- package/dist/lib/utils/headers.js +13 -6
- package/dist/lib/utils/headers.js.map +1 -1
- package/dist/lib/utils/index.js +24 -8
- package/dist/lib/utils/index.js.map +1 -1
- package/dist/lib/utils/session.js +64 -59
- package/dist/lib/utils/session.js.map +1 -1
- package/dist/lib/utils/shopify-api-js/oauth.js +23 -16
- package/dist/lib/utils/shopify-api-js/oauth.js.map +1 -1
- package/dist/lib/utils/shopify.js +37 -25
- package/dist/lib/utils/shopify.js.map +1 -1
- package/dist/lib/utils/token.js +15 -11
- package/dist/lib/utils/token.js.map +1 -1
- package/dist/plugins/index.d.ts +3 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +19 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/types.d.ts +1 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +1 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/plugins/withShopify.d.ts.map +1 -0
- package/dist/{lib → plugins}/withShopify.js +83 -77
- package/dist/plugins/withShopify.js.map +1 -0
- package/dist/react/hooks/index.js +17 -1
- package/dist/react/hooks/index.js.map +1 -1
- package/dist/react/hooks/useVerification.d.ts +1 -1
- package/dist/react/hooks/useVerification.js +23 -7
- package/dist/react/hooks/useVerification.js.map +1 -1
- package/dist/react/index.d.ts +1 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +18 -1
- package/dist/react/index.js.map +1 -1
- package/dist/runtime/index.js +17 -1
- package/dist/runtime/index.js.map +1 -1
- package/dist/shared/WebCrypto.d.ts +55 -0
- package/dist/shared/WebCrypto.d.ts.map +1 -0
- package/dist/shared/WebCrypto.js +345 -0
- package/dist/shared/WebCrypto.js.map +1 -0
- package/dist/shared/constants.js +15 -11
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/datetime.js +110 -83
- package/dist/shared/datetime.js.map +1 -1
- package/dist/shared/display.d.ts +0 -2
- package/dist/shared/display.d.ts.map +1 -1
- package/dist/shared/display.js +231 -155
- package/dist/shared/display.js.map +1 -1
- package/dist/shared/errors.js +12 -5
- package/dist/shared/errors.js.map +1 -1
- package/dist/shared/graph.js +14 -11
- package/dist/shared/graph.js.map +1 -1
- package/dist/shared/index.d.ts +2 -1
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +32 -10
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/match.js +25 -17
- package/dist/shared/match.js.map +1 -1
- package/dist/shared/request.d.ts.map +1 -1
- package/dist/shared/request.js +19 -13
- package/dist/shared/request.js.map +1 -1
- package/dist/shared/shopify.js +31 -21
- package/dist/shared/shopify.js.map +1 -1
- package/dist/shared/uuid.d.ts +3 -0
- package/dist/shared/uuid.d.ts.map +1 -0
- package/dist/shared/uuid.js +10 -0
- package/dist/shared/uuid.js.map +1 -0
- package/dist/shared/verification.d.ts +12 -5
- package/dist/shared/verification.d.ts.map +1 -1
- package/dist/shared/verification.js +34 -23
- package/dist/shared/verification.js.map +1 -1
- package/dist/umd/lib/index.d.ts +1 -1
- package/dist/umd/lib/index.d.ts.map +1 -1
- package/dist/umd/lib/utils/crypto.d.ts +1 -1
- package/dist/umd/lib/utils/crypto.d.ts.map +1 -1
- package/dist/umd/plugins/index.d.ts +3 -0
- package/dist/umd/plugins/index.d.ts.map +1 -0
- package/dist/umd/plugins/types.d.ts +1 -0
- package/dist/umd/plugins/types.d.ts.map +1 -0
- package/dist/umd/plugins/withShopify.d.ts.map +1 -0
- package/dist/umd/react/hooks/useVerification.d.ts +1 -1
- package/dist/umd/react/index.d.ts +1 -0
- package/dist/umd/react/index.d.ts.map +1 -1
- package/dist/umd/shared/WebCrypto.d.ts +55 -0
- package/dist/umd/shared/WebCrypto.d.ts.map +1 -0
- package/dist/umd/shared/display.d.ts +0 -2
- package/dist/umd/shared/display.d.ts.map +1 -1
- package/dist/umd/shared/index.d.ts +2 -1
- package/dist/umd/shared/index.d.ts.map +1 -1
- package/dist/umd/shared/request.d.ts.map +1 -1
- package/dist/umd/shared/uuid.d.ts +3 -0
- package/dist/umd/shared/uuid.d.ts.map +1 -0
- package/dist/umd/shared/verification.d.ts +12 -5
- package/dist/umd/shared/verification.d.ts.map +1 -1
- package/dist/umd/verification/index.d.ts +2 -0
- package/dist/umd/verification/index.d.ts.map +1 -1
- package/dist/umd/verification/utils/errors.d.ts.map +1 -0
- package/dist/umd/verification/utils/index.d.ts +3 -0
- package/dist/umd/verification/utils/index.d.ts.map +1 -0
- package/dist/umd/verification/utils/rawbody.d.ts.map +1 -0
- package/dist/umd/verification/verification.d.ts +3 -1
- package/dist/umd/verification/verification.d.ts.map +1 -1
- package/dist/umd/verification.js +901 -0
- package/dist/umd/verification.js.map +1 -0
- package/dist/verification/index.d.ts +2 -0
- package/dist/verification/index.d.ts.map +1 -1
- package/dist/verification/index.js +19 -1
- package/dist/verification/index.js.map +1 -1
- package/dist/verification/utils/errors.d.ts.map +1 -0
- package/dist/verification/{errors.js → utils/errors.js} +5 -1
- package/dist/verification/utils/errors.js.map +1 -0
- package/dist/verification/utils/index.d.ts +3 -0
- package/dist/verification/utils/index.d.ts.map +1 -0
- package/dist/verification/utils/index.js +19 -0
- package/dist/verification/utils/index.js.map +1 -0
- package/dist/verification/utils/rawbody.d.ts.map +1 -0
- package/dist/verification/utils/rawbody.js +57 -0
- package/dist/verification/utils/rawbody.js.map +1 -0
- package/dist/verification/verification.d.ts +3 -1
- package/dist/verification/verification.d.ts.map +1 -1
- package/dist/verification/verification.js +71 -62
- package/dist/verification/verification.js.map +1 -1
- package/package.json +12 -12
- package/dist/lib/withShopify.d.ts.map +0 -1
- package/dist/lib/withShopify.js.map +0 -1
- package/dist/shared/subtlecrypto.d.ts +0 -41
- package/dist/shared/subtlecrypto.d.ts.map +0 -1
- package/dist/shared/subtlecrypto.js +0 -256
- package/dist/shared/subtlecrypto.js.map +0 -1
- package/dist/umd/lib/withShopify.d.ts.map +0 -1
- package/dist/umd/shared/subtlecrypto.d.ts +0 -41
- package/dist/umd/shared/subtlecrypto.d.ts.map +0 -1
- package/dist/umd/umd-verification.js +0 -968
- package/dist/umd/umd-verification.js.map +0 -1
- package/dist/umd/verification/errors.d.ts.map +0 -1
- package/dist/umd/verification/rawbody.d.ts.map +0 -1
- package/dist/verification/errors.d.ts.map +0 -1
- package/dist/verification/errors.js.map +0 -1
- package/dist/verification/rawbody.d.ts.map +0 -1
- package/dist/verification/rawbody.js +0 -31
- package/dist/verification/rawbody.js.map +0 -1
- package/node_modules/bytes/History.md +0 -97
- package/node_modules/bytes/LICENSE +0 -23
- package/node_modules/bytes/Readme.md +0 -152
- package/node_modules/bytes/index.js +0 -170
- package/node_modules/bytes/package.json +0 -42
- package/node_modules/depd/History.md +0 -103
- package/node_modules/depd/LICENSE +0 -22
- package/node_modules/depd/Readme.md +0 -280
- package/node_modules/depd/index.js +0 -538
- package/node_modules/depd/lib/browser/index.js +0 -77
- package/node_modules/depd/package.json +0 -45
- package/node_modules/http-errors/HISTORY.md +0 -180
- package/node_modules/http-errors/LICENSE +0 -23
- package/node_modules/http-errors/README.md +0 -169
- package/node_modules/http-errors/index.js +0 -289
- package/node_modules/http-errors/package.json +0 -50
- package/node_modules/iconv-lite/Changelog.md +0 -162
- package/node_modules/iconv-lite/LICENSE +0 -21
- package/node_modules/iconv-lite/README.md +0 -156
- package/node_modules/iconv-lite/encodings/dbcs-codec.js +0 -555
- package/node_modules/iconv-lite/encodings/dbcs-data.js +0 -176
- package/node_modules/iconv-lite/encodings/index.js +0 -22
- package/node_modules/iconv-lite/encodings/internal.js +0 -188
- package/node_modules/iconv-lite/encodings/sbcs-codec.js +0 -72
- package/node_modules/iconv-lite/encodings/sbcs-data-generated.js +0 -451
- package/node_modules/iconv-lite/encodings/sbcs-data.js +0 -174
- package/node_modules/iconv-lite/encodings/tables/big5-added.json +0 -122
- package/node_modules/iconv-lite/encodings/tables/cp936.json +0 -264
- package/node_modules/iconv-lite/encodings/tables/cp949.json +0 -273
- package/node_modules/iconv-lite/encodings/tables/cp950.json +0 -177
- package/node_modules/iconv-lite/encodings/tables/eucjp.json +0 -182
- package/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +0 -1
- package/node_modules/iconv-lite/encodings/tables/gbk-added.json +0 -55
- package/node_modules/iconv-lite/encodings/tables/shiftjis.json +0 -125
- package/node_modules/iconv-lite/encodings/utf16.js +0 -177
- package/node_modules/iconv-lite/encodings/utf7.js +0 -290
- package/node_modules/iconv-lite/lib/bom-handling.js +0 -52
- package/node_modules/iconv-lite/lib/extend-node.js +0 -217
- package/node_modules/iconv-lite/lib/index.d.ts +0 -24
- package/node_modules/iconv-lite/lib/index.js +0 -153
- package/node_modules/iconv-lite/lib/streams.js +0 -121
- package/node_modules/iconv-lite/package.json +0 -46
- package/node_modules/inherits/LICENSE +0 -16
- package/node_modules/inherits/README.md +0 -42
- package/node_modules/inherits/inherits.js +0 -9
- package/node_modules/inherits/inherits_browser.js +0 -27
- package/node_modules/inherits/package.json +0 -29
- package/node_modules/raw-body/HISTORY.md +0 -308
- package/node_modules/raw-body/LICENSE +0 -22
- package/node_modules/raw-body/README.md +0 -223
- package/node_modules/raw-body/SECURITY.md +0 -24
- package/node_modules/raw-body/index.d.ts +0 -87
- package/node_modules/raw-body/index.js +0 -336
- package/node_modules/raw-body/package.json +0 -49
- package/node_modules/safer-buffer/LICENSE +0 -21
- package/node_modules/safer-buffer/Porting-Buffer.md +0 -268
- package/node_modules/safer-buffer/Readme.md +0 -156
- package/node_modules/safer-buffer/dangerous.js +0 -58
- package/node_modules/safer-buffer/package.json +0 -34
- package/node_modules/safer-buffer/safer.js +0 -77
- package/node_modules/safer-buffer/tests.js +0 -406
- package/node_modules/setprototypeof/LICENSE +0 -13
- package/node_modules/setprototypeof/README.md +0 -31
- package/node_modules/setprototypeof/index.d.ts +0 -2
- package/node_modules/setprototypeof/index.js +0 -17
- package/node_modules/setprototypeof/package.json +0 -38
- package/node_modules/setprototypeof/test/index.js +0 -24
- package/node_modules/statuses/HISTORY.md +0 -82
- package/node_modules/statuses/LICENSE +0 -23
- package/node_modules/statuses/README.md +0 -136
- package/node_modules/statuses/codes.json +0 -65
- package/node_modules/statuses/index.js +0 -146
- package/node_modules/statuses/package.json +0 -49
- package/node_modules/toidentifier/HISTORY.md +0 -9
- package/node_modules/toidentifier/LICENSE +0 -21
- package/node_modules/toidentifier/README.md +0 -61
- package/node_modules/toidentifier/index.js +0 -32
- package/node_modules/toidentifier/package.json +0 -38
- package/node_modules/unpipe/HISTORY.md +0 -4
- package/node_modules/unpipe/LICENSE +0 -22
- package/node_modules/unpipe/README.md +0 -43
- package/node_modules/unpipe/index.js +0 -69
- package/node_modules/unpipe/package.json +0 -27
- /package/dist/{lib → plugins}/withShopify.d.ts +0 -0
- /package/dist/umd/{lib → plugins}/withShopify.d.ts +0 -0
- /package/dist/umd/verification/{errors.d.ts → utils/errors.d.ts} +0 -0
- /package/dist/umd/verification/{rawbody.d.ts → utils/rawbody.d.ts} +0 -0
- /package/dist/verification/{errors.d.ts → utils/errors.d.ts} +0 -0
- /package/dist/verification/{rawbody.d.ts → utils/rawbody.d.ts} +0 -0
package/dist/lib/utils/crypto.js
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getNonce = exports.CryptoHandler = exports.compareHashes = exports.generateHMAC = void 0;
|
|
7
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
8
|
+
const shared_1 = require("../../shared");
|
|
9
|
+
const wrapKeyData = (keyData, keyType = 'RSA PRIVATE') => (`-----BEGIN ${keyType} KEY-----${(0, shared_1.ensureString)(keyData).replace(/"/g, '')}-----END ${keyType} KEY-----\n`.replace(/\\n/g, '\n'));
|
|
4
10
|
const getRecrypted = (encrypted) => {
|
|
5
11
|
const [beginning, hiddenInitialVector, end = ''] = encrypted.split(/_(.*==)=/g);
|
|
6
12
|
return { initialVector: hiddenInitialVector, encrypted: `${beginning}${end}` };
|
|
@@ -8,7 +14,7 @@ const getRecrypted = (encrypted) => {
|
|
|
8
14
|
const decryptAES = (toDecrypt, sharedSecret, initialVector) => {
|
|
9
15
|
if (!toDecrypt || !sharedSecret || !initialVector)
|
|
10
16
|
return '';
|
|
11
|
-
const decipher =
|
|
17
|
+
const decipher = crypto_1.default.createDecipheriv('aes-256-cbc', Buffer.from(sharedSecret, 'base64'), Buffer.from(initialVector, 'base64'));
|
|
12
18
|
const decrypted = Buffer.concat([
|
|
13
19
|
decipher.update(Buffer.from(toDecrypt, 'base64')),
|
|
14
20
|
decipher.final()
|
|
@@ -17,18 +23,19 @@ const decryptAES = (toDecrypt, sharedSecret, initialVector) => {
|
|
|
17
23
|
};
|
|
18
24
|
const decryptRSAPublic = (toDecrypt, publicKey, encoding = 'utf8') => (!toDecrypt || !publicKey
|
|
19
25
|
? ''
|
|
20
|
-
:
|
|
26
|
+
: crypto_1.default
|
|
21
27
|
.publicDecrypt(publicKey, Buffer.from(toDecrypt, 'base64'))
|
|
22
28
|
.toString(encoding));
|
|
23
29
|
const encryptRSAPrivate = (toEncrypt, privateKey, encoding = 'utf8') => (!toEncrypt || !privateKey
|
|
24
30
|
? ''
|
|
25
|
-
:
|
|
31
|
+
: crypto_1.default
|
|
26
32
|
.privateEncrypt(privateKey, Buffer.from(JSON.stringify(toEncrypt), encoding))
|
|
27
33
|
.toString('base64'));
|
|
28
|
-
|
|
34
|
+
const generateHMAC = (message, apiSecret, digest = 'hex') => (crypto_1.default.createHmac('sha256', apiSecret)
|
|
29
35
|
.update(message)
|
|
30
36
|
.digest(digest));
|
|
31
|
-
|
|
37
|
+
exports.generateHMAC = generateHMAC;
|
|
38
|
+
const compareHashes = (digestable, checkSumable, encoding = 'utf8') => {
|
|
32
39
|
const digest = (digestable instanceof ArrayBuffer)
|
|
33
40
|
? digestable
|
|
34
41
|
: Buffer.from(digestable, encoding);
|
|
@@ -36,15 +43,16 @@ export const compareHashes = (digestable, checkSumable, encoding = 'utf8') => {
|
|
|
36
43
|
? checkSumable
|
|
37
44
|
: Buffer.from(checkSumable, encoding);
|
|
38
45
|
return ((digest.length === checkSum.length) &&
|
|
39
|
-
|
|
46
|
+
crypto_1.default.timingSafeEqual(digest, checkSum));
|
|
40
47
|
};
|
|
48
|
+
exports.compareHashes = compareHashes;
|
|
41
49
|
const singleton = Symbol('singleton');
|
|
42
50
|
const singletonEnforcer = Symbol('singletonEnforcer');
|
|
43
51
|
const decryptKey = (encryptedKey, sharedSecret) => {
|
|
44
52
|
const { initialVector: hiddenIv, encrypted: recryptedKey, } = getRecrypted(encryptedKey);
|
|
45
53
|
return decryptAES(recryptedKey, sharedSecret, hiddenIv);
|
|
46
54
|
};
|
|
47
|
-
|
|
55
|
+
class CryptoHandler {
|
|
48
56
|
constructor(enforcer, config) {
|
|
49
57
|
if (enforcer !== singletonEnforcer) {
|
|
50
58
|
throw new Error('Cannot instantiate CryptoHandler directly, please use getInstance()');
|
|
@@ -56,7 +64,7 @@ export class CryptoHandler {
|
|
|
56
64
|
return (this.cryptoConfig != undefined);
|
|
57
65
|
}
|
|
58
66
|
initialize() {
|
|
59
|
-
if (objectNotEmpty(this.config)) {
|
|
67
|
+
if ((0, shared_1.objectNotEmpty)(this.config)) {
|
|
60
68
|
const { encryptedPrivateKey, encryptedPublicKey, sharedSecret } = this.config;
|
|
61
69
|
this.cryptoConfig = {
|
|
62
70
|
publicKey: wrapKeyData(decryptKey(encryptedPublicKey, sharedSecret), 'RSA PUBLIC'),
|
|
@@ -89,12 +97,14 @@ export class CryptoHandler {
|
|
|
89
97
|
return (publicKey === this.cryptoConfig.publicKey);
|
|
90
98
|
}
|
|
91
99
|
}
|
|
100
|
+
exports.CryptoHandler = CryptoHandler;
|
|
92
101
|
// NOTE replicated from @shopify/shopify-api-js
|
|
93
|
-
|
|
102
|
+
const getNonce = (length = 15) => {
|
|
94
103
|
// TODO Remove the randomBytes call when dropping Node 14 support
|
|
95
|
-
const bytes =
|
|
96
|
-
?
|
|
97
|
-
:
|
|
104
|
+
const bytes = crypto_1.default.getRandomValues
|
|
105
|
+
? crypto_1.default.getRandomValues(new Uint8Array(length))
|
|
106
|
+
: crypto_1.default.randomBytes(length);
|
|
98
107
|
return bytes.map((byte) => byte % 10).join('');
|
|
99
108
|
};
|
|
109
|
+
exports.getNonce = getNonce;
|
|
100
110
|
//# sourceMappingURL=crypto.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../../src/lib/utils/crypto.js"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../../src/lib/utils/crypto.js"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
3
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
4
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -18,12 +19,17 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
18
19
|
}
|
|
19
20
|
return t;
|
|
20
21
|
};
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
23
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.findSessionIdsByShop = exports.deleteSessionsCallback = exports.loadCallback = exports.updateCallback = exports.storeCallback = exports.FirebaseSessionHandler = void 0;
|
|
27
|
+
const firebase_admin_1 = __importDefault(require("firebase-admin"));
|
|
28
|
+
const shared_1 = require("../../shared");
|
|
23
29
|
const singleton = Symbol('singleton');
|
|
24
30
|
const singletonEnforcer = Symbol('singletonEnforcer');
|
|
25
|
-
|
|
26
|
-
constructor(enforcer, { configurationId, collection = COLLECTION_ROOT }) {
|
|
31
|
+
class FirebaseSessionHandler {
|
|
32
|
+
constructor(enforcer, { configurationId, collection = shared_1.COLLECTION_ROOT }) {
|
|
27
33
|
if (enforcer !== singletonEnforcer) {
|
|
28
34
|
throw new Error('Cannot instantiate FirebaseSessionHandler directly, please use getInstance()');
|
|
29
35
|
}
|
|
@@ -35,12 +41,12 @@ export class FirebaseSessionHandler {
|
|
|
35
41
|
return (this.firestore != undefined);
|
|
36
42
|
}
|
|
37
43
|
initializeFireStore(firebaseConfig) {
|
|
38
|
-
if (objectNotEmpty(firebaseConfig)) {
|
|
39
|
-
const project = !
|
|
40
|
-
?
|
|
41
|
-
credential:
|
|
44
|
+
if ((0, shared_1.objectNotEmpty)(firebaseConfig)) {
|
|
45
|
+
const project = !firebase_admin_1.default.apps.length
|
|
46
|
+
? firebase_admin_1.default.initializeApp({
|
|
47
|
+
credential: firebase_admin_1.default.credential.cert(firebaseConfig),
|
|
42
48
|
databaseURL: `https://${firebaseConfig.project_id}.firebaseio.com`,
|
|
43
|
-
}) :
|
|
49
|
+
}) : firebase_admin_1.default.app();
|
|
44
50
|
this.firestore = project.firestore();
|
|
45
51
|
}
|
|
46
52
|
}
|
|
@@ -54,7 +60,8 @@ export class FirebaseSessionHandler {
|
|
|
54
60
|
return this[singleton];
|
|
55
61
|
}
|
|
56
62
|
}
|
|
57
|
-
|
|
63
|
+
exports.FirebaseSessionHandler = FirebaseSessionHandler;
|
|
64
|
+
const storeCallback = (instance, shopId, session) => __awaiter(void 0, void 0, void 0, function* () {
|
|
58
65
|
try {
|
|
59
66
|
const docRef = instance.firestore
|
|
60
67
|
.collection(instance.collection)
|
|
@@ -76,7 +83,8 @@ export const storeCallback = (instance, shopId, session) => __awaiter(void 0, vo
|
|
|
76
83
|
throw error;
|
|
77
84
|
}
|
|
78
85
|
});
|
|
79
|
-
|
|
86
|
+
exports.storeCallback = storeCallback;
|
|
87
|
+
const updateCallback = (instance, shopId, session) => __awaiter(void 0, void 0, void 0, function* () {
|
|
80
88
|
try {
|
|
81
89
|
const docRef = instance.firestore
|
|
82
90
|
.collection(instance.collection)
|
|
@@ -98,8 +106,9 @@ export const updateCallback = (instance, shopId, session) => __awaiter(void 0, v
|
|
|
98
106
|
throw error;
|
|
99
107
|
}
|
|
100
108
|
});
|
|
101
|
-
|
|
102
|
-
|
|
109
|
+
exports.updateCallback = updateCallback;
|
|
110
|
+
const loadCallback = (instance, shopId, sessionId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
111
|
+
if ((0, shared_1.stringEmpty)(sessionId)) {
|
|
103
112
|
return undefined;
|
|
104
113
|
}
|
|
105
114
|
try {
|
|
@@ -119,7 +128,8 @@ export const loadCallback = (instance, shopId, sessionId) => __awaiter(void 0, v
|
|
|
119
128
|
throw error;
|
|
120
129
|
}
|
|
121
130
|
});
|
|
122
|
-
|
|
131
|
+
exports.loadCallback = loadCallback;
|
|
132
|
+
const deleteSessionsCallback = (instance, shopId, sessionIds) => __awaiter(void 0, void 0, void 0, function* () {
|
|
123
133
|
const deleteSessionCallback = (_collectionRef, _sessionId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
124
134
|
try {
|
|
125
135
|
return _collectionRef.doc(_sessionId).delete();
|
|
@@ -134,15 +144,16 @@ export const deleteSessionsCallback = (instance, shopId, sessionIds) => __awaite
|
|
|
134
144
|
.collection(instance.collection)
|
|
135
145
|
.doc(shopId)
|
|
136
146
|
.collection(instance.configurationId);
|
|
137
|
-
return Promise.all(ensureArray(sessionIds).map((sessionId) => deleteSessionCallback(collectionRef, sessionId)));
|
|
147
|
+
return Promise.all((0, shared_1.ensureArray)(sessionIds).map((sessionId) => deleteSessionCallback(collectionRef, sessionId)));
|
|
138
148
|
}
|
|
139
149
|
catch (error) {
|
|
140
150
|
console.error('FirebaseSessionHandler.deleteSessionsCallback error', error);
|
|
141
151
|
throw error;
|
|
142
152
|
}
|
|
143
153
|
});
|
|
144
|
-
|
|
145
|
-
|
|
154
|
+
exports.deleteSessionsCallback = deleteSessionsCallback;
|
|
155
|
+
const findSessionIdsByShop = (instance, shopId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
156
|
+
if ((0, shared_1.stringEmpty)(shopId)) {
|
|
146
157
|
// NOTE: this happens on initial install
|
|
147
158
|
return [];
|
|
148
159
|
}
|
|
@@ -163,4 +174,5 @@ export const findSessionIdsByShop = (instance, shopId) => __awaiter(void 0, void
|
|
|
163
174
|
throw error;
|
|
164
175
|
}
|
|
165
176
|
});
|
|
177
|
+
exports.findSessionIdsByShop = findSessionIdsByShop;
|
|
166
178
|
//# sourceMappingURL=firebase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase.js","sourceRoot":"","sources":["../../../src/lib/utils/firebase.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"firebase.js","sourceRoot":"","sources":["../../../src/lib/utils/firebase.js"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.replaceHeaders = void 0;
|
|
7
|
+
const mustache_1 = __importDefault(require("mustache"));
|
|
8
|
+
const shared_1 = require("../../shared");
|
|
3
9
|
const templateReplace = (template, replacements, partials, tokens) => {
|
|
4
10
|
// NOTE: fixes issues where by default standard characters are HTML encoded (https://stackoverflow.com/questions/22910428/mustache-globally-disable-html-escaping)
|
|
5
|
-
|
|
6
|
-
return
|
|
11
|
+
mustache_1.default.escape = (value) => (value);
|
|
12
|
+
return mustache_1.default.render((0, shared_1.ensureString)(template), (0, shared_1.ensureObject)(replacements), partials, tokens);
|
|
7
13
|
};
|
|
8
|
-
|
|
9
|
-
if (objectEmpty(replacements)) {
|
|
14
|
+
const replaceHeaders = ({ headers, replacements } = {}) => {
|
|
15
|
+
if ((0, shared_1.objectEmpty)(replacements)) {
|
|
10
16
|
return headers;
|
|
11
17
|
}
|
|
12
18
|
return Object.entries(headers).reduce((_replacedHeaders, [header, headerValue]) => (Object.assign(Object.assign({}, _replacedHeaders), { [header]: (headerValue === null || headerValue === void 0 ? void 0 : headerValue.includes('{{')) ? templateReplace(headerValue, replacements) : headerValue })), {});
|
|
13
19
|
};
|
|
20
|
+
exports.replaceHeaders = replaceHeaders;
|
|
14
21
|
//# sourceMappingURL=headers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headers.js","sourceRoot":"","sources":["../../../src/lib/utils/headers.js"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"headers.js","sourceRoot":"","sources":["../../../src/lib/utils/headers.js"],"names":[],"mappings":";;;;;;AAAA,wDAA+B;AAE/B,yCAIqB;AAErB,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE;IACnE,kKAAkK;IAClK,kBAAQ,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA;IAEpC,OAAO,kBAAQ,CAAC,MAAM,CAAC,IAAA,qBAAY,EAAC,QAAQ,CAAC,EAAE,IAAA,qBAAY,EAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;AAC9F,CAAC,CAAA;AAEM,MAAM,cAAc,GAAG,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,EAAE,EAAE;IAC/D,IAAI,IAAA,oBAAW,EAAC,YAAY,CAAC,EAAE;QAC7B,OAAO,OAAO,CAAA;KACf;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CACpC,gBAAgB,EAChB,CAAC,MAAM,EAAE,WAAW,CAAC,EACrB,EAAE,CAAC,iCACA,gBAAgB,KACnB,CAAC,MAAM,CAAC,EAAE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,eAAe,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,IAChG,EAAE,EAAE,CAAC,CAAA;AACT,CAAC,CAAA;AAZY,QAAA,cAAc,kBAY1B"}
|
package/dist/lib/utils/index.js
CHANGED
|
@@ -1,9 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./billing"), exports);
|
|
18
|
+
__exportStar(require("./crypto"), exports);
|
|
19
|
+
__exportStar(require("./firebase"), exports);
|
|
20
|
+
__exportStar(require("./headers"), exports);
|
|
21
|
+
__exportStar(require("./session"), exports);
|
|
22
|
+
__exportStar(require("./shopify"), exports);
|
|
23
|
+
__exportStar(require("./shopify-api-js/oauth"), exports);
|
|
24
|
+
__exportStar(require("./token"), exports);
|
|
9
25
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/utils/index.js"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/utils/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,2CAAwB;AACxB,6CAA0B;AAC1B,4CAAyB;AACzB,4CAAyB;AACzB,4CAAyB;AACzB,yDAAsC;AACtC,0CAAuB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
3
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
4
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -18,27 +19,29 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
18
19
|
}
|
|
19
20
|
return t;
|
|
20
21
|
};
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.prepareHeaders = exports.getShopifyHelpers = void 0;
|
|
24
|
+
const js_base64_1 = require("js-base64");
|
|
25
|
+
const shopify_api_1 = require("@shopify/shopify-api");
|
|
26
|
+
const shared_1 = require("../../shared");
|
|
27
|
+
const headers_1 = require("./headers");
|
|
28
|
+
const billing_1 = require("./billing");
|
|
29
|
+
const shopify_1 = require("./shopify");
|
|
30
|
+
const firebase_1 = require("./firebase");
|
|
31
|
+
const crypto_1 = require("./crypto");
|
|
29
32
|
// TODO: move to curry??
|
|
30
|
-
|
|
33
|
+
const getShopifyHelpers = (serverRuntimeConfig, config) => __awaiter(void 0, void 0, void 0, function* () {
|
|
31
34
|
var _a, _b;
|
|
32
|
-
const shopify = getInitializedShopify(serverRuntimeConfig);
|
|
35
|
+
const shopify = (0, shopify_1.getInitializedShopify)(serverRuntimeConfig);
|
|
33
36
|
const { APP_ID, API_PATHS, FB_CONFIG, FB_ROOT_COLLECTION, SESSION_CONFIG, SHOPIFY_RUN_MODE, PAYMENT_CONFIG, } = serverRuntimeConfig;
|
|
34
37
|
const { shop } = config !== null && config !== void 0 ? config : {};
|
|
35
38
|
const isReviewMode = ((SHOPIFY_RUN_MODE === 'review') &&
|
|
36
39
|
(PAYMENT_CONFIG === null || PAYMENT_CONFIG === void 0 ? void 0 : PAYMENT_CONFIG.required) &&
|
|
37
|
-
API_PATHS[API_ROUTE_NAMES.AUTH_OFFLINE]);
|
|
40
|
+
API_PATHS[shared_1.API_ROUTE_NAMES.AUTH_OFFLINE]);
|
|
38
41
|
// TODO: should this use our helper instead (and/or as a fallback)??
|
|
39
42
|
const shopId = (_b = (_a = shopify === null || shopify === void 0 ? void 0 : shopify.utils) === null || _a === void 0 ? void 0 : _a.sanitizeShop) === null || _b === void 0 ? void 0 : _b.call(_a, shop);
|
|
40
|
-
const cryptoHandler = CryptoHandler.getInstance(SESSION_CONFIG);
|
|
41
|
-
const sessionHandler = FirebaseSessionHandler.getInstance(FB_CONFIG, {
|
|
43
|
+
const cryptoHandler = crypto_1.CryptoHandler.getInstance(SESSION_CONFIG);
|
|
44
|
+
const sessionHandler = firebase_1.FirebaseSessionHandler.getInstance(FB_CONFIG, {
|
|
42
45
|
collection: FB_ROOT_COLLECTION,
|
|
43
46
|
configurationId: APP_ID,
|
|
44
47
|
});
|
|
@@ -49,7 +52,7 @@ export const getShopifyHelpers = (serverRuntimeConfig, config) => __awaiter(void
|
|
|
49
52
|
return cryptoHandler.decrypt(encrypted);
|
|
50
53
|
};
|
|
51
54
|
const encryptData = (value) => (cryptoHandler.encrypt(value));
|
|
52
|
-
const ensureEncryptedObject = (encryptable) => (Object.entries(ensureObject(encryptable)).reduce((_encrypted, [key, value]) => (Object.assign(Object.assign({}, _encrypted), (value != undefined) && {
|
|
55
|
+
const ensureEncryptedObject = (encryptable) => (Object.entries((0, shared_1.ensureObject)(encryptable)).reduce((_encrypted, [key, value]) => (Object.assign(Object.assign({}, _encrypted), (value != undefined) && {
|
|
53
56
|
[key]: encryptData(value),
|
|
54
57
|
})), {}));
|
|
55
58
|
//#region internal shopifyHelper implementations
|
|
@@ -64,27 +67,27 @@ export const getShopifyHelpers = (serverRuntimeConfig, config) => __awaiter(void
|
|
|
64
67
|
rawResponse: res,
|
|
65
68
|
})) : (yield shopify.session.getOfflineId(shop) // NOTE: not sure if this is working yet?
|
|
66
69
|
);
|
|
67
|
-
const _f = (_c = (yield loadCallback(sessionHandler, shopId, sessionId))) !== null && _c !== void 0 ? _c : {}, { accessToken: encryptedAccessToken } = _f, session = __rest(_f, ["accessToken"]);
|
|
68
|
-
if (stringEmpty(encryptedAccessToken)) {
|
|
69
|
-
throw new ShopifySessionMissingError('Missing session');
|
|
70
|
+
const _f = (_c = (yield (0, firebase_1.loadCallback)(sessionHandler, shopId, sessionId))) !== null && _c !== void 0 ? _c : {}, { accessToken: encryptedAccessToken } = _f, session = __rest(_f, ["accessToken"]);
|
|
71
|
+
if ((0, shared_1.stringEmpty)(encryptedAccessToken)) {
|
|
72
|
+
throw new shared_1.ShopifySessionMissingError('Missing session');
|
|
70
73
|
}
|
|
71
|
-
if (stringNotEmpty(session === null || session === void 0 ? void 0 : session.shop) && (session.shop !== shop)) {
|
|
74
|
+
if ((0, shared_1.stringNotEmpty)(session === null || session === void 0 ? void 0 : session.shop) && (session.shop !== shop)) {
|
|
72
75
|
throw new Error('Invalid shop');
|
|
73
76
|
}
|
|
74
77
|
// NOTE only online sessions have expirations
|
|
75
78
|
const sessionExpired = (isOnline && (!(session === null || session === void 0 ? void 0 : session.expires) ||
|
|
76
|
-
(ensureDateTime(session.expires) < getCurrentDateTime())));
|
|
77
|
-
const sessionActive = (!sessionExpired && arraysMatch(splitCommas((_e = (_d = shopify.config) === null || _d === void 0 ? void 0 : _d.scopes) === null || _e === void 0 ? void 0 : _e.toString()), splitCommas(session === null || session === void 0 ? void 0 : session.scope)));
|
|
79
|
+
((0, shared_1.ensureDateTime)(session.expires) < (0, shared_1.getCurrentDateTime)())));
|
|
80
|
+
const sessionActive = (!sessionExpired && (0, shared_1.arraysMatch)((0, shared_1.splitCommas)((_e = (_d = shopify.config) === null || _d === void 0 ? void 0 : _d.scopes) === null || _e === void 0 ? void 0 : _e.toString()), (0, shared_1.splitCommas)(session === null || session === void 0 ? void 0 : session.scope)));
|
|
78
81
|
if (!sessionActive) {
|
|
79
|
-
throw new ShopifySessionAuthenticationError('Inactive session');
|
|
82
|
+
throw new shared_1.ShopifySessionAuthenticationError('Inactive session');
|
|
80
83
|
}
|
|
81
84
|
return Object.assign(Object.assign({}, session), { accessToken: encryptedAccessToken });
|
|
82
85
|
}
|
|
83
86
|
catch (error) {
|
|
84
|
-
if (error instanceof ShopifySessionAuthenticationError) {
|
|
87
|
+
if (error instanceof shared_1.ShopifySessionAuthenticationError) {
|
|
85
88
|
throw error;
|
|
86
89
|
}
|
|
87
|
-
throw new ShopifyAuthenticationError(error === null || error === void 0 ? void 0 : error.message);
|
|
90
|
+
throw new shared_1.ShopifyAuthenticationError(error === null || error === void 0 ? void 0 : error.message);
|
|
88
91
|
}
|
|
89
92
|
});
|
|
90
93
|
const decryptVerifySession = (params) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -110,29 +113,29 @@ export const getShopifyHelpers = (serverRuntimeConfig, config) => __awaiter(void
|
|
|
110
113
|
};
|
|
111
114
|
// TODO: handle encrypting other keys
|
|
112
115
|
const encryptUpdateSession = (session) => __awaiter(void 0, void 0, void 0, function* () {
|
|
113
|
-
if (stringNotEmpty(session === null || session === void 0 ? void 0 : session.id)) {
|
|
114
|
-
return updateCallback(sessionHandler, shopId, ensureEncryptedSession(session));
|
|
116
|
+
if ((0, shared_1.stringNotEmpty)(session === null || session === void 0 ? void 0 : session.id)) {
|
|
117
|
+
return (0, firebase_1.updateCallback)(sessionHandler, shopId, ensureEncryptedSession(session));
|
|
115
118
|
}
|
|
116
|
-
throw new ShopifySessionInvalidError('Invalid session');
|
|
119
|
+
throw new shared_1.ShopifySessionInvalidError('Invalid session');
|
|
117
120
|
});
|
|
118
121
|
const encryptStoreSession = (session) => __awaiter(void 0, void 0, void 0, function* () {
|
|
119
122
|
return (encryptUpdateSession(session));
|
|
120
123
|
});
|
|
121
124
|
const buildEmbeddedAppUrl = (_appPath) => __awaiter(void 0, void 0, void 0, function* () {
|
|
122
|
-
if (stringEmpty(shop)) {
|
|
125
|
+
if ((0, shared_1.stringEmpty)(shop)) {
|
|
123
126
|
return undefined;
|
|
124
127
|
}
|
|
125
|
-
const embeddedAppBaseUrl = yield shopify.auth.buildEmbeddedAppUrl(encode(`${shop}/admin`));
|
|
126
|
-
const appPath = removeLeadingSlash(_appPath);
|
|
127
|
-
return `${embeddedAppBaseUrl}${stringNotEmpty(appPath) ? `/${appPath}` : ''}`;
|
|
128
|
+
const embeddedAppBaseUrl = yield shopify.auth.buildEmbeddedAppUrl((0, js_base64_1.encode)(`${shop}/admin`));
|
|
129
|
+
const appPath = (0, shared_1.removeLeadingSlash)(_appPath);
|
|
130
|
+
return `${embeddedAppBaseUrl}${(0, shared_1.stringNotEmpty)(appPath) ? `/${appPath}` : ''}`;
|
|
128
131
|
});
|
|
129
132
|
const _getLatestOfflineSession = (session) => __awaiter(void 0, void 0, void 0, function* () {
|
|
130
|
-
if (stringNotEmpty(session === null || session === void 0 ? void 0 : session.billingStatus)) {
|
|
133
|
+
if ((0, shared_1.stringNotEmpty)(session === null || session === void 0 ? void 0 : session.billingStatus)) {
|
|
131
134
|
return session;
|
|
132
135
|
}
|
|
133
136
|
return yield decryptVerifySession().catch((_error) => {
|
|
134
137
|
// NOTE: first time install, this is expected
|
|
135
|
-
if ((_error instanceof ShopifySessionMissingError)) {
|
|
138
|
+
if ((_error instanceof shared_1.ShopifySessionMissingError)) {
|
|
136
139
|
return !(session === null || session === void 0 ? void 0 : session.isOnline) ? session : undefined;
|
|
137
140
|
}
|
|
138
141
|
throw _error;
|
|
@@ -142,39 +145,39 @@ export const getShopifyHelpers = (serverRuntimeConfig, config) => __awaiter(void
|
|
|
142
145
|
var _h;
|
|
143
146
|
if (!isReviewMode && !session.isOnline) {
|
|
144
147
|
yield encryptStoreSession(session);
|
|
145
|
-
return ensureBilling(PAYMENT_CONFIG, { session, shopify });
|
|
148
|
+
return (0, billing_1.ensureBilling)(PAYMENT_CONFIG, { session, shopify });
|
|
146
149
|
}
|
|
147
150
|
let forceBilling = false;
|
|
148
151
|
if (isReviewMode) {
|
|
149
152
|
const offlineSession = yield _getLatestOfflineSession(session);
|
|
150
153
|
// NOTE: billingStatus is a custom field we add when we're in review mode to handle reauth billing correctly
|
|
151
154
|
const billingStatus = (_h = offlineSession === null || offlineSession === void 0 ? void 0 : offlineSession.billingStatus) !== null && _h !== void 0 ? _h : 'PENDING';
|
|
152
|
-
if (objectNotEmpty(offlineSession) && stringEmpty(offlineSession.billingStatus)) {
|
|
155
|
+
if ((0, shared_1.objectNotEmpty)(offlineSession) && (0, shared_1.stringEmpty)(offlineSession.billingStatus)) {
|
|
153
156
|
// NOTE: offlineSession should be latest from FB or Shopify session
|
|
154
157
|
yield encryptStoreSession(Object.assign(Object.assign({}, offlineSession), { billingStatus }));
|
|
155
158
|
}
|
|
156
|
-
forceBilling = (!isTrue(reAuth) && (billingStatus !== 'ACTIVE'));
|
|
159
|
+
forceBilling = (!(0, shared_1.isTrue)(reAuth) && (billingStatus !== 'ACTIVE'));
|
|
157
160
|
}
|
|
158
|
-
return ensureBilling(PAYMENT_CONFIG, { session, shopify, forceBilling });
|
|
161
|
+
return (0, billing_1.ensureBilling)(PAYMENT_CONFIG, { session, shopify, forceBilling });
|
|
159
162
|
});
|
|
160
163
|
const getVerifiedClients = ({ req, res, apiVersion, isOnline: _isOnline } = {}) => __awaiter(void 0, void 0, void 0, function* () {
|
|
161
164
|
var _j;
|
|
162
|
-
if (stringEmpty(shop)) {
|
|
165
|
+
if ((0, shared_1.stringEmpty)(shop)) {
|
|
163
166
|
return undefined;
|
|
164
167
|
}
|
|
165
168
|
try {
|
|
166
169
|
const session = yield decryptVerifySession({ req, res, isOnline: _isOnline });
|
|
167
170
|
const Graphql = new shopify.clients.Graphql(Object.assign({ session }, apiVersion && { apiVersion }));
|
|
168
171
|
const isOnline = _isOnline !== null && _isOnline !== void 0 ? _isOnline : ((req != undefined) && (res != undefined));
|
|
169
|
-
if (isOnline && isTrue((_j = serverRuntimeConfig.PAYMENT_CONFIG) === null || _j === void 0 ? void 0 : _j.required)) {
|
|
172
|
+
if (isOnline && (0, shared_1.isTrue)((_j = serverRuntimeConfig.PAYMENT_CONFIG) === null || _j === void 0 ? void 0 : _j.required)) {
|
|
170
173
|
const confirmationUrl = yield handleEnsureBilling(session);
|
|
171
|
-
if (stringNotEmpty(confirmationUrl)) {
|
|
172
|
-
throw new ShopifyAuthenticationError('Invalid payment status', { redirectUrl: confirmationUrl });
|
|
174
|
+
if ((0, shared_1.stringNotEmpty)(confirmationUrl)) {
|
|
175
|
+
throw new shared_1.ShopifyAuthenticationError('Invalid payment status', { redirectUrl: confirmationUrl });
|
|
173
176
|
}
|
|
174
177
|
}
|
|
175
178
|
else {
|
|
176
179
|
// NOTE making a test call to ensure a valid session for free apps
|
|
177
|
-
yield Graphql.query({ data: SHOP_QUERY });
|
|
180
|
+
yield Graphql.query({ data: shopify_1.SHOP_QUERY });
|
|
178
181
|
}
|
|
179
182
|
return {
|
|
180
183
|
Graphql,
|
|
@@ -184,9 +187,9 @@ export const getShopifyHelpers = (serverRuntimeConfig, config) => __awaiter(void
|
|
|
184
187
|
};
|
|
185
188
|
}
|
|
186
189
|
catch (error) {
|
|
187
|
-
if (error instanceof HttpResponseError &&
|
|
190
|
+
if (error instanceof shopify_api_1.HttpResponseError &&
|
|
188
191
|
error.response.code === 401) {
|
|
189
|
-
throw new ShopifyAuthenticationError('Not authenticated');
|
|
192
|
+
throw new shared_1.ShopifyAuthenticationError('Not authenticated');
|
|
190
193
|
}
|
|
191
194
|
throw error;
|
|
192
195
|
}
|
|
@@ -194,25 +197,25 @@ export const getShopifyHelpers = (serverRuntimeConfig, config) => __awaiter(void
|
|
|
194
197
|
const loadAppData = ({ appId: _appId } = {}) => __awaiter(void 0, void 0, void 0, function* () {
|
|
195
198
|
var _k, _l, _m, _o, _p, _q;
|
|
196
199
|
// TODO!!!!!: ensure this is all cached
|
|
197
|
-
let { id: appId } = normalizeShopifyId(_appId);
|
|
200
|
+
let { id: appId } = (0, shared_1.normalizeShopifyId)(_appId);
|
|
198
201
|
const { Graphql } = (_k = yield getVerifiedClients()) !== null && _k !== void 0 ? _k : {};
|
|
199
|
-
if (stringEmpty(appId)) {
|
|
202
|
+
if ((0, shared_1.stringEmpty)(appId)) {
|
|
200
203
|
const appResponse = yield Graphql.query({
|
|
201
204
|
data: {
|
|
202
|
-
query: APP_QUERY.INSTALLATION_BASIC,
|
|
205
|
+
query: shared_1.APP_QUERY.INSTALLATION_BASIC,
|
|
203
206
|
},
|
|
204
207
|
});
|
|
205
|
-
const { id: currentAppId } = normalizeShopifyId((_o = (_m = (_l = appResponse === null || appResponse === void 0 ? void 0 : appResponse.body) === null || _l === void 0 ? void 0 : _l.data) === null || _m === void 0 ? void 0 : _m.currentAppInstallation) === null || _o === void 0 ? void 0 : _o.app);
|
|
208
|
+
const { id: currentAppId } = (0, shared_1.normalizeShopifyId)((_o = (_m = (_l = appResponse === null || appResponse === void 0 ? void 0 : appResponse.body) === null || _l === void 0 ? void 0 : _l.data) === null || _m === void 0 ? void 0 : _m.currentAppInstallation) === null || _o === void 0 ? void 0 : _o.app);
|
|
206
209
|
appId = currentAppId;
|
|
207
210
|
}
|
|
208
211
|
// TODO: throw/return early if still no appId??
|
|
209
212
|
const appInstallation = yield Graphql.query({
|
|
210
213
|
data: {
|
|
211
|
-
query: APP_QUERY.INSTALLATION,
|
|
214
|
+
query: shared_1.APP_QUERY.INSTALLATION,
|
|
212
215
|
variables: { namespace: `${appId}-metafields` },
|
|
213
216
|
},
|
|
214
217
|
});
|
|
215
|
-
return TRANSFORM.APP_QUERY((_q = (_p = appInstallation === null || appInstallation === void 0 ? void 0 : appInstallation.body) === null || _p === void 0 ? void 0 : _p.data) === null || _q === void 0 ? void 0 : _q.currentAppInstallation);
|
|
218
|
+
return shared_1.TRANSFORM.APP_QUERY((_q = (_p = appInstallation === null || appInstallation === void 0 ? void 0 : appInstallation.body) === null || _p === void 0 ? void 0 : _p.data) === null || _q === void 0 ? void 0 : _q.currentAppInstallation);
|
|
216
219
|
});
|
|
217
220
|
//#endregion internal shopifyHelper implementations
|
|
218
221
|
return Object.assign({ shopify, getAppUrl: () => undefined, getVerifiedClients: () => undefined, loadAppData: () => undefined, loadData: () => ({}), loadSecureData: () => ({}), loadSession: () => ({}), storeSession: () => ({}), updateSession: () => ({}), deleteSessions: () => undefined, findSessionIds: () => ([]), ensureBilling: () => undefined }, shopify && {
|
|
@@ -227,37 +230,39 @@ export const getShopifyHelpers = (serverRuntimeConfig, config) => __awaiter(void
|
|
|
227
230
|
storeSession: encryptStoreSession,
|
|
228
231
|
ensureBilling: handleEnsureBilling,
|
|
229
232
|
updateSession: (sessionId, data) => __awaiter(void 0, void 0, void 0, function* () { return encryptUpdateSession(Object.assign(Object.assign({}, data), { id: sessionId })); }),
|
|
230
|
-
deleteSessions: (sessionIds) => __awaiter(void 0, void 0, void 0, function* () { return deleteSessionsCallback(sessionHandler, shopId, sessionIds); }),
|
|
231
|
-
findSessionIds: (_shop) => __awaiter(void 0, void 0, void 0, function* () { var _r, _s; return findSessionIdsByShop(sessionHandler, (_s = (_r = shopify === null || shopify === void 0 ? void 0 : shopify.utils) === null || _r === void 0 ? void 0 : _r.sanitizeShop) === null || _s === void 0 ? void 0 : _s.call(_r, _shop)); }),
|
|
233
|
+
deleteSessions: (sessionIds) => __awaiter(void 0, void 0, void 0, function* () { return (0, firebase_1.deleteSessionsCallback)(sessionHandler, shopId, sessionIds); }),
|
|
234
|
+
findSessionIds: (_shop) => __awaiter(void 0, void 0, void 0, function* () { var _r, _s; return (0, firebase_1.findSessionIdsByShop)(sessionHandler, (_s = (_r = shopify === null || shopify === void 0 ? void 0 : shopify.utils) === null || _r === void 0 ? void 0 : _r.sanitizeShop) === null || _s === void 0 ? void 0 : _s.call(_r, _shop)); }),
|
|
232
235
|
});
|
|
233
236
|
});
|
|
237
|
+
exports.getShopifyHelpers = getShopifyHelpers;
|
|
234
238
|
const extendAppHeaders = (headers, appData) => {
|
|
235
239
|
var _a, _b;
|
|
236
240
|
const { ['x-app-id']: appIdHeader, ['x-shopify-app-id']: shopifyAppIdHeader, ['x-app-installation-id']: appInstallationIdHeader, ['x-shopify-app-installation-id']: shopifyAppInstallationIdHeader, } = headers !== null && headers !== void 0 ? headers : {};
|
|
237
|
-
if (stringEmpty(appIdHeader) && stringEmpty(shopifyAppIdHeader) && stringNotEmpty((_a = appData === null || appData === void 0 ? void 0 : appData.appInfo) === null || _a === void 0 ? void 0 : _a.id)) {
|
|
241
|
+
if ((0, shared_1.stringEmpty)(appIdHeader) && (0, shared_1.stringEmpty)(shopifyAppIdHeader) && (0, shared_1.stringNotEmpty)((_a = appData === null || appData === void 0 ? void 0 : appData.appInfo) === null || _a === void 0 ? void 0 : _a.id)) {
|
|
238
242
|
headers = Object.assign(Object.assign({}, headers), { 'x-app-id': appData.appInfo.id });
|
|
239
243
|
}
|
|
240
|
-
if (stringEmpty(appInstallationIdHeader) && stringEmpty(shopifyAppInstallationIdHeader) && stringNotEmpty((_b = appData === null || appData === void 0 ? void 0 : appData.appInstallation) === null || _b === void 0 ? void 0 : _b.id)) {
|
|
244
|
+
if ((0, shared_1.stringEmpty)(appInstallationIdHeader) && (0, shared_1.stringEmpty)(shopifyAppInstallationIdHeader) && (0, shared_1.stringNotEmpty)((_b = appData === null || appData === void 0 ? void 0 : appData.appInstallation) === null || _b === void 0 ? void 0 : _b.id)) {
|
|
241
245
|
headers = Object.assign(Object.assign({}, headers), { 'x-app-installation-id': appData.appInstallation.id });
|
|
242
246
|
}
|
|
243
247
|
// TODO: pass along providerSetId??
|
|
244
|
-
return Object.entries(ensureObject(appData === null || appData === void 0 ? void 0 : appData.appMetafields)).reduce((_headers, [metafieldKey, { value } = {}]) => (Object.assign(Object.assign({}, _headers), { [`x-shopify-app-metafield-${metafieldKey}`]: value })), headers);
|
|
248
|
+
return Object.entries((0, shared_1.ensureObject)(appData === null || appData === void 0 ? void 0 : appData.appMetafields)).reduce((_headers, [metafieldKey, { value } = {}]) => (Object.assign(Object.assign({}, _headers), { [`x-shopify-app-metafield-${metafieldKey}`]: value })), headers);
|
|
245
249
|
};
|
|
246
|
-
|
|
247
|
-
const headers = cleanObject(_headers, false, stringEmptyOnly);
|
|
248
|
-
if (objectEmpty(headers) || !generateReplacements) {
|
|
250
|
+
const prepareHeaders = (serverRuntimeConfig) => ({ generateReplacements, appData, shop, appId, headers: _headers } = {}) => __awaiter(void 0, void 0, void 0, function* () {
|
|
251
|
+
const headers = (0, shared_1.cleanObject)(_headers, false, shared_1.stringEmptyOnly);
|
|
252
|
+
if ((0, shared_1.objectEmpty)(headers) || !generateReplacements) {
|
|
249
253
|
return headers;
|
|
250
254
|
}
|
|
251
255
|
if (!appData) {
|
|
252
|
-
const { loadAppData } = yield getShopifyHelpers(serverRuntimeConfig, { shop });
|
|
256
|
+
const { loadAppData } = yield (0, exports.getShopifyHelpers)(serverRuntimeConfig, { shop });
|
|
253
257
|
appData = yield loadAppData({ appId }); // NOTE: this handles even if no appId
|
|
254
258
|
}
|
|
255
259
|
if (!appData) {
|
|
256
260
|
return headers;
|
|
257
261
|
}
|
|
258
|
-
return replaceHeaders({
|
|
262
|
+
return (0, headers_1.replaceHeaders)({
|
|
259
263
|
headers: extendAppHeaders(headers, appData),
|
|
260
264
|
replacements: yield generateReplacements(Object.assign({ shop, headers }, appData)),
|
|
261
265
|
});
|
|
262
266
|
});
|
|
267
|
+
exports.prepareHeaders = prepareHeaders;
|
|
263
268
|
//# sourceMappingURL=session.js.map
|