@agnostack/next-shopify 1.9.4-beta.4 → 1.9.4-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## [1.9.4-beta.6](https://github.com/agnostack/next-shopify/compare/v1.9.4-beta.5...v1.9.4-beta.6) (2023-07-06)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* allow local proxy ([78f2607](https://github.com/agnostack/next-shopify/commit/78f2607f597b5e377d774276c49f61c353af6e8a))
|
|
7
|
+
|
|
8
|
+
## [1.9.4-beta.5](https://github.com/agnostack/next-shopify/compare/v1.9.4-beta.4...v1.9.4-beta.5) (2023-07-06)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* allow local proxy ([3db305f](https://github.com/agnostack/next-shopify/commit/3db305f30326966d41307ca2d15da06329c0c671))
|
|
14
|
+
|
|
1
15
|
## [1.9.4-beta.4](https://github.com/agnostack/next-shopify/compare/v1.9.4-beta.3...v1.9.4-beta.4) (2023-07-06)
|
|
2
16
|
|
|
3
17
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../../src/lib/handlers/api/proxy.js"],"names":[],"mappings":"AAiCO,
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../../src/lib/handlers/api/proxy.js"],"names":[],"mappings":"AAiCO,0GAuIN"}
|
|
@@ -14,10 +14,16 @@ const verifyAppProxySignature = (signature, verifiable, sharedSecret) => {
|
|
|
14
14
|
return (0, utils_1.compareHashes)(signature, hmac);
|
|
15
15
|
};
|
|
16
16
|
const handleProxy = (serverRuntimeConfig) => (req, res, _params) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
17
|
+
var _a, _b;
|
|
17
18
|
const { APP_CONFIG, APP_BASE_URL, TARGET_SAFELIST, ORIGIN_SAFELIST } = serverRuntimeConfig;
|
|
19
|
+
// TODO!!!!!!: update this to not send as querystring/get via app itself somehow on backend?
|
|
20
|
+
const _c = (_a = req.query) !== null && _a !== void 0 ? _a : {}, { signature, proxyEncoded } = _c, verifiable = tslib_1.__rest(_c, ["signature", "proxyEncoded"]);
|
|
21
|
+
const { shop } = verifiable;
|
|
18
22
|
const appHostName = new URL(APP_BASE_URL).hostname;
|
|
19
23
|
console.log(`>>> > handleProxy > appHost:`, appHostName);
|
|
20
|
-
const targetSafelist = Object.assign({
|
|
24
|
+
const targetSafelist = Object.assign({ [appHostName]: {
|
|
25
|
+
params: { shop },
|
|
26
|
+
} }, TARGET_SAFELIST);
|
|
21
27
|
console.log(`>>> > handleProxy > targetSafelist:`, targetSafelist);
|
|
22
28
|
const targetHostsSafelist = Object.keys(targetSafelist);
|
|
23
29
|
console.log(`>>> > handleProxy > targetHostsSafelist:`, targetHostsSafelist);
|
|
@@ -60,40 +66,38 @@ const handleProxy = (serverRuntimeConfig) => (req, res, _params) => tslib_1.__aw
|
|
|
60
66
|
if (!targetPath || (0, shared_1.arrayEmpty)(targetHostsSafelist) || !targetHostsSafelist.includes(hostname)) {
|
|
61
67
|
return res.status(407).json({ message: 'Unproxyable target.' });
|
|
62
68
|
}
|
|
63
|
-
const { query: _query, headers: _headers } = req;
|
|
64
|
-
const query = (0, shared_1.ensureObject)(_query);
|
|
65
|
-
// TODO!!!!!!: update this to not send as querystring/get via app itself somehow on backend?
|
|
66
|
-
const { signature, proxyEncoded } = query, verifiable = tslib_1.__rest(query, ["signature", "proxyEncoded"]);
|
|
67
69
|
const { shop: _shop, host: _host, timestamp, path_prefix } = verifiable;
|
|
68
70
|
const isShopifyOriginOrRelative = (0, shared_1.stringNotEmpty)((0, shared_1.ensureString)(path_prefix).startsWith('http')
|
|
69
71
|
? (0, shared_1.sanitizeShop)(new URL(path_prefix).hostname)
|
|
70
72
|
: path_prefix);
|
|
73
|
+
console.log(`>>> > handleProxy > isShopifyOriginOrRelative:`, isShopifyOriginOrRelative);
|
|
71
74
|
// TODO: explore moving this to sessionToken middleware??
|
|
72
|
-
const
|
|
75
|
+
const _d = (_b = req.headers) !== null && _b !== void 0 ? _b : {}, { 'x-extension-session': sessionToken, 'x-extension-point': extensionPoint } = _d, _headers = tslib_1.__rest(_d, ['x-extension-session', 'x-extension-point']);
|
|
73
76
|
if (!_shop || !_host || !extensionPoint || !signature || !proxyEncoded) {
|
|
74
77
|
return res.status(400).json({ message: 'Invalid or missing headers.', extensionPoint });
|
|
75
78
|
}
|
|
76
79
|
if (!verifyAppProxySignature(signature, verifiable, isShopifyOriginOrRelative ? APP_CONFIG.apiSecretKey : timestamp)) {
|
|
77
80
|
return res.status(403).json({ message: 'Invalid signature.' });
|
|
78
81
|
}
|
|
82
|
+
console.log(`>>> > handleProxy > sessionToken:`, sessionToken);
|
|
79
83
|
if (sessionToken) {
|
|
80
84
|
// NOTE: this does not contain sid for some reason (presuming permission approval)
|
|
81
|
-
const { shop, host } = (0, shared_1.decodeShopData)(sessionToken);
|
|
82
|
-
if ((
|
|
85
|
+
const { shop: sessionShop, host: sessionHost } = (0, shared_1.decodeShopData)(sessionToken);
|
|
86
|
+
if ((sessionShop !== _shop) || (sessionHost !== _host)) {
|
|
83
87
|
return res.status(403).json({ message: 'Unauthorized shop or host.' });
|
|
84
88
|
}
|
|
85
89
|
}
|
|
90
|
+
console.log(`>>> > handleProxy > hostname:`, hostname);
|
|
91
|
+
console.log(`>>> > handleProxy > appHostName:`, appHostName);
|
|
86
92
|
// TODO: explore adding hmac check/middleware?
|
|
87
93
|
// TODO: handle targetSafelist w/ pattern match regex/globpattern/etc
|
|
88
|
-
const { headers: targetHeaders, params: targetParams } = (0, shared_1.ensureObject)(
|
|
89
|
-
? { params: { shop: _shop } }
|
|
90
|
-
: targetSafelist[hostname]);
|
|
94
|
+
const { headers: targetHeaders, params: targetParams } = (0, shared_1.ensureObject)(targetSafelist[hostname]);
|
|
91
95
|
console.log(`>>> > handleProxy > { headers: targetHeaders, params: targetParams }:`, { headers: targetHeaders, params: targetParams });
|
|
92
96
|
if ((0, shared_1.objectNotEmpty)(targetParams)) {
|
|
93
97
|
targetPath = (0, shared_1.appendQuery)(targetPath, new URLSearchParams(targetParams).toString());
|
|
94
98
|
console.log(`>>> > handleProxy > targetPath 2:`, targetPath);
|
|
95
99
|
}
|
|
96
|
-
const headers = Object.entries((0, shared_1.ensureObject)(targetHeaders)).reduce((_replacedHeaders, [header, headerValue]) => (Object.assign(Object.assign({}, _replacedHeaders), { [header]: (0, shared_1.templateReplace)(headerValue, { setting: replacements }) })),
|
|
100
|
+
const headers = Object.entries((0, shared_1.ensureObject)(targetHeaders)).reduce((_replacedHeaders, [header, headerValue]) => (Object.assign(Object.assign({}, _replacedHeaders), { [header]: (0, shared_1.templateReplace)(headerValue, { setting: replacements }) })), _headers);
|
|
97
101
|
return new Promise((_resolve, reject) => {
|
|
98
102
|
req.url = targetPath;
|
|
99
103
|
req.headers = headers;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../../src/lib/handlers/api/proxy.js"],"names":[],"mappings":";;;;AAAA,sDAAsD;AACtD,gDAAgD;AAChD,oEAAkC;AAClC,sEAAkC;AAElC,uCAGoB;AACpB,4CAcwB;AAExB,MAAM,aAAa,GAAG,IAAI,CAAA,CAAC,kBAAkB;AAE7C,MAAM,uBAAuB,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE;IACtE,MAAM,IAAI,GAAG,IAAA,oBAAY,EAAC,IAAA,6BAAoB,EAAC,UAAU,CAAC,EAAE,YAAY,CAAC,CAAA;IAEzE,OAAO,IAAA,qBAAa,EAAC,SAAS,EAAE,IAAI,CAAC,CAAA;AACvC,CAAC,CAAA;AAEM,MAAM,WAAW,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAO,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../../src/lib/handlers/api/proxy.js"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agnostack/next-shopify",
|
|
3
|
-
"version": "1.9.4-beta.
|
|
3
|
+
"version": "1.9.4-beta.6",
|
|
4
4
|
"author": "agnoStack Dev <developers@agnostack.com> (https://agnostack.com)",
|
|
5
5
|
"owner": "agnoStack",
|
|
6
6
|
"description": "Please contact agnoStack via info@agnostack.com for any questions",
|