@agnostack/next-shopify 2.1.1-alpha.9 → 2.1.1-beta.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 +12 -39
- package/dist/lib/handlers/api/auth.d.ts +1 -1
- package/dist/lib/handlers/api/auth.d.ts.map +1 -1
- package/dist/lib/handlers/api/auth.js +10 -3
- package/dist/lib/handlers/api/auth.js.map +1 -1
- package/dist/lib/handlers/api/billing.d.ts +1 -1
- package/dist/lib/handlers/api/billing.d.ts.map +1 -1
- package/dist/lib/handlers/api/billing.js +52 -43
- package/dist/lib/handlers/api/billing.js.map +1 -1
- package/dist/lib/handlers/api/callback.d.ts +1 -1
- package/dist/lib/handlers/api/callback.d.ts.map +1 -1
- package/dist/lib/handlers/api/callback.js +11 -4
- package/dist/lib/handlers/api/callback.js.map +1 -1
- package/dist/lib/handlers/api/uninstall.d.ts +1 -1
- package/dist/lib/handlers/api/uninstall.d.ts.map +1 -1
- package/dist/lib/handlers/api/uninstall.js +42 -32
- package/dist/lib/handlers/api/uninstall.js.map +1 -1
- package/dist/lib/handlers/api/verifiable/appInstallation.d.ts +1 -1
- package/dist/lib/handlers/api/verifiable/appInstallation.d.ts.map +1 -1
- package/dist/lib/handlers/api/verifiable/appInstallation.js +10 -3
- package/dist/lib/handlers/api/verifiable/appInstallation.js.map +1 -1
- package/dist/lib/handlers/api/verifiable/graph.d.ts +1 -1
- package/dist/lib/handlers/api/verifiable/graph.d.ts.map +1 -1
- package/dist/lib/handlers/api/verifiable/graph.js +15 -8
- package/dist/lib/handlers/api/verifiable/graph.js.map +1 -1
- package/dist/lib/handlers/api/verifiable/proxy.d.ts +1 -1
- package/dist/lib/handlers/api/verifiable/proxy.d.ts.map +1 -1
- package/dist/lib/handlers/api/verifiable/proxy.js +16 -10
- package/dist/lib/handlers/api/verifiable/proxy.js.map +1 -1
- package/dist/lib/handlers/api/verifiable/token.d.ts +1 -3
- package/dist/lib/handlers/api/verifiable/token.d.ts.map +1 -1
- package/dist/lib/handlers/api/verifiable/token.js +13 -7
- package/dist/lib/handlers/api/verifiable/token.js.map +1 -1
- package/dist/lib/handlers/api/webhook.d.ts +1 -1
- package/dist/lib/handlers/api/webhook.d.ts.map +1 -1
- package/dist/lib/handlers/api/webhook.js +19 -12
- package/dist/lib/handlers/api/webhook.js.map +1 -1
- package/dist/lib/handlers/ssr/protect.d.ts.map +1 -1
- package/dist/lib/handlers/ssr/protect.js +4 -24
- package/dist/lib/handlers/ssr/protect.js.map +1 -1
- package/dist/lib/utils/session.d.ts.map +1 -1
- package/dist/lib/utils/session.js +68 -60
- package/dist/lib/utils/session.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,57 +1,30 @@
|
|
|
1
|
-
## [2.1.1-
|
|
1
|
+
## [2.1.1-beta.2](https://github.com/agnostack/next-shopify/compare/v2.1.1-beta.1...v2.1.1-beta.2) (2024-11-06)
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
### Bug Fixes
|
|
5
5
|
|
|
6
|
-
*
|
|
6
|
+
* add returnResponse logic ([66e252f](https://github.com/agnostack/next-shopify/commit/66e252f919768039988b8fc56e1651bf60aa201d))
|
|
7
|
+
* add returnResponse logic ([2be1629](https://github.com/agnostack/next-shopify/commit/2be16294823eacf5441a99930f0154f29a2e6d22))
|
|
8
|
+
* add returnResponse logic ([bb543b5](https://github.com/agnostack/next-shopify/commit/bb543b557730475c1fada5677c4f2d5ca857a9af))
|
|
9
|
+
* add returnResponse logic ([678fa85](https://github.com/agnostack/next-shopify/commit/678fa858a65da3d3a1e4c21ef827601b266d5f1a))
|
|
7
10
|
|
|
8
|
-
## [2.1.1-
|
|
11
|
+
## [2.1.1-beta.1](https://github.com/agnostack/next-shopify/compare/v2.1.0...v2.1.1-beta.1) (2024-11-04)
|
|
9
12
|
|
|
10
13
|
|
|
11
14
|
### Bug Fixes
|
|
12
15
|
|
|
16
|
+
* added TODO ([2959ef9](https://github.com/agnostack/next-shopify/commit/2959ef9ddf7f1903462686a9574dfc031e91b2ca))
|
|
17
|
+
* cleanup ([58a14a0](https://github.com/agnostack/next-shopify/commit/58a14a0a57839f10554b090854305a92da6ae1d1))
|
|
18
|
+
* removed early return if idToken ([5de2514](https://github.com/agnostack/next-shopify/commit/5de25146a91729f494f5472c925d16363bb2e43c))
|
|
19
|
+
* reordered decryptVerifyData, added TODOs ([4e4e59d](https://github.com/agnostack/next-shopify/commit/4e4e59d0825ce9a84131bd47ab83cb14e73d28b3))
|
|
20
|
+
* wip ensure online session ([48d7bed](https://github.com/agnostack/next-shopify/commit/48d7bed9b0149a32849bd0843e5fa724537f985b))
|
|
21
|
+
* wip ensure online session ([e3dbd45](https://github.com/agnostack/next-shopify/commit/e3dbd45d406002d939680a3cb164f3683c4fbdd1))
|
|
13
22
|
* wip ensure online session ([e0af5d9](https://github.com/agnostack/next-shopify/commit/e0af5d96fafa0da945892c42239d82dd02922725))
|
|
14
|
-
|
|
15
|
-
## [2.1.1-alpha.7](https://github.com/agnostack/next-shopify/compare/v2.1.1-alpha.6...v2.1.1-alpha.7) (2024-11-01)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
### Bug Fixes
|
|
19
|
-
|
|
20
23
|
* wip ensure online session ([fd0027e](https://github.com/agnostack/next-shopify/commit/fd0027efa22349db8b1e6ea74154e30ac6a1e768))
|
|
21
|
-
|
|
22
|
-
## [2.1.1-alpha.6](https://github.com/agnostack/next-shopify/compare/v2.1.1-alpha.5...v2.1.1-alpha.6) (2024-11-01)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
### Bug Fixes
|
|
26
|
-
|
|
27
24
|
* wip ensure online session ([8bab4d4](https://github.com/agnostack/next-shopify/commit/8bab4d4492617d8dde6ce021f87e36fe1f14c530))
|
|
28
|
-
|
|
29
|
-
## [2.1.1-alpha.5](https://github.com/agnostack/next-shopify/compare/v2.1.1-alpha.4...v2.1.1-alpha.5) (2024-11-01)
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
### Bug Fixes
|
|
33
|
-
|
|
34
25
|
* wip ensure online session ([25d66a5](https://github.com/agnostack/next-shopify/commit/25d66a5b473c1e3dc6cb2becbc2329ef412213d9))
|
|
35
|
-
|
|
36
|
-
## [2.1.1-alpha.4](https://github.com/agnostack/next-shopify/compare/v2.1.1-alpha.3...v2.1.1-alpha.4) (2024-11-01)
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
### Bug Fixes
|
|
40
|
-
|
|
41
26
|
* wip ensure online session ([2cb27f1](https://github.com/agnostack/next-shopify/commit/2cb27f15cf2f594f1504679eccccbc8ed866f6a1))
|
|
42
|
-
|
|
43
|
-
## [2.1.1-alpha.3](https://github.com/agnostack/next-shopify/compare/v2.1.1-alpha.2...v2.1.1-alpha.3) (2024-11-01)
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
### Bug Fixes
|
|
47
|
-
|
|
48
27
|
* wip ensure online session ([205b049](https://github.com/agnostack/next-shopify/commit/205b0495fa7bf53686465fda3e79d632e822b274))
|
|
49
|
-
|
|
50
|
-
## [2.1.1-alpha.2](https://github.com/agnostack/next-shopify/compare/v2.1.1-alpha.1...v2.1.1-alpha.2) (2024-11-01)
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
### Bug Fixes
|
|
54
|
-
|
|
55
28
|
* wip ensure online session ([9d05c9d](https://github.com/agnostack/next-shopify/commit/9d05c9d41c56608fdfbba47c95adc6a65a776855))
|
|
56
29
|
|
|
57
30
|
## [2.1.1-alpha.1](https://github.com/agnostack/next-shopify/compare/v2.1.0...v2.1.1-alpha.1) (2024-10-28)
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export function handleAuth(serverRuntimeConfig: any): (req: any, res: any, params: any) => Promise<any>;
|
|
1
|
+
export function handleAuth(serverRuntimeConfig: any, data: any): (req: any, res: any, params: any) => Promise<any>;
|
|
2
2
|
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/lib/handlers/api/auth.js"],"names":[],"mappings":"AAYO,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/lib/handlers/api/auth.js"],"names":[],"mappings":"AAYO,mHAyDN"}
|
|
@@ -24,8 +24,9 @@ exports.handleAuth = void 0;
|
|
|
24
24
|
const utils_1 = require("../../utils");
|
|
25
25
|
const shared_1 = require("../../../shared");
|
|
26
26
|
// NOTE: typically handling: "/api/auth/online" and "/api/auth/offline"
|
|
27
|
-
const handleAuth = (serverRuntimeConfig) => {
|
|
27
|
+
const handleAuth = (serverRuntimeConfig, data) => {
|
|
28
28
|
const { PAGE_PATHS, API_PATHS, API_URLS, APP_CONFIG, } = serverRuntimeConfig;
|
|
29
|
+
const { returnResponse = true } = data !== null && data !== void 0 ? data : {};
|
|
29
30
|
return (req, res, params) => __awaiter(void 0, void 0, void 0, function* () {
|
|
30
31
|
var _a;
|
|
31
32
|
const { isOnline } = params !== null && params !== void 0 ? params : {};
|
|
@@ -34,8 +35,14 @@ const handleAuth = (serverRuntimeConfig) => {
|
|
|
34
35
|
const reAuth = (0, shared_1.isTrue)(_reAuth, 'undefined');
|
|
35
36
|
const shopify = (0, utils_1.getInitializedShopify)(serverRuntimeConfig);
|
|
36
37
|
const shop = shopify.utils.sanitizeShop(_shop);
|
|
38
|
+
const handleResponse = (body, statusCode = 302) => {
|
|
39
|
+
if (returnResponse) {
|
|
40
|
+
return res.redirect(statusCode, body);
|
|
41
|
+
}
|
|
42
|
+
return { statusCode, body };
|
|
43
|
+
};
|
|
37
44
|
if ((0, shared_1.stringEmpty)(shop)) {
|
|
38
|
-
return
|
|
45
|
+
return handleResponse(`${PAGE_PATHS[shared_1.PAGE_ROUTE_NAMES.ERROR]}?code=no_shop_provided&type=handleAuth`);
|
|
39
46
|
}
|
|
40
47
|
if (embedded === '1') {
|
|
41
48
|
const callbackUrl = (0, utils_1.getCallback)(API_URLS, { reAuth, isOnline });
|
|
@@ -43,7 +50,7 @@ const handleAuth = (serverRuntimeConfig) => {
|
|
|
43
50
|
const redirectUriParams = new URLSearchParams(Object.assign({ shop,
|
|
44
51
|
host }, state && { state })).toString();
|
|
45
52
|
const queryParams = new URLSearchParams(Object.assign(Object.assign({}, query), { shop, redirectUri: `${callbackUrl}?${redirectUriParams}` })).toString();
|
|
46
|
-
return
|
|
53
|
+
return handleResponse(`${PAGE_PATHS[shared_1.PAGE_ROUTE_NAMES.EXIT]}?${queryParams}`);
|
|
47
54
|
}
|
|
48
55
|
return (0, utils_1.beginAuth)({
|
|
49
56
|
shop,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../src/lib/handlers/api/auth.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAIoB;AACpB,4CAIwB;AAExB,wEAAwE;AACjE,MAAM,UAAU,GAAG,CAAC,mBAAmB,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../src/lib/handlers/api/auth.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAIoB;AACpB,4CAIwB;AAExB,wEAAwE;AACjE,MAAM,UAAU,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,EAAE;IACtD,MAAM,EACJ,UAAU,EACV,SAAS,EACT,QAAQ,EACR,UAAU,GACX,GAAG,mBAAmB,CAAA;IACvB,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,CAAA;IAE5C,OAAO,CAAO,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;;QAChC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAA;QACjC,MAAM,KAAgC,MAAA,GAAG,CAAC,KAAK,mCAAI,EAAE,EAA/C,EAAE,MAAM,EAAE,OAAO,OAA8B,EAAzB,KAAK,cAA3B,UAA6B,CAAkB,CAAA;QACrD,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;QACpD,MAAM,MAAM,GAAG,IAAA,eAAM,EAAC,OAAO,EAAE,WAAW,CAAC,CAAA;QAE3C,MAAM,OAAO,GAAG,IAAA,6BAAqB,EAAC,mBAAmB,CAAC,CAAA;QAC1D,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QAE9C,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,UAAU,GAAG,GAAG,EAAE,EAAE;YAChD,IAAI,cAAc,EAAE;gBAClB,OAAO,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;aACtC;YAED,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;QAC7B,CAAC,CAAA;QAED,IAAI,IAAA,oBAAW,EAAC,IAAI,CAAC,EAAE;YACrB,OAAO,cAAc,CAAC,GAAG,UAAU,CAAC,yBAAgB,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAA;SACrG;QAED,IAAI,QAAQ,KAAK,GAAG,EAAE;YACpB,MAAM,WAAW,GAAG,IAAA,mBAAW,EAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;YAC/D,oCAAoC;YACpC,MAAM,iBAAiB,GAAG,IAAI,eAAe,iBAC3C,IAAI;gBACJ,IAAI,IACD,KAAK,IAAI,EAAE,KAAK,EAAE,EACrB,CAAC,QAAQ,EAAE,CAAA;YACb,MAAM,WAAW,GAAG,IAAI,eAAe,iCAClC,KAAK,KACR,IAAI,EACJ,WAAW,EAAE,GAAG,WAAW,IAAI,iBAAiB,EAAE,IAClD,CAAC,QAAQ,EAAE,CAAA;YAEb,OAAO,cAAc,CAAC,GAAG,UAAU,CAAC,yBAAgB,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,CAAA;SAC7E;QAED,OAAO,IAAA,iBAAS,EAAC;YACf,IAAI;YACJ,KAAK;YACL,QAAQ;YACR,YAAY,EAAE,IAAA,mBAAW,EAAC,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YAC1D,UAAU,EAAE,GAAG;YACf,WAAW,EAAE,GAAG;YAChB,MAAM,EAAE,UAAU;SACnB,CAAC,CAAA;IACJ,CAAC,CAAA,CAAA;AACH,CAAC,CAAA;AAzDY,QAAA,UAAU,cAyDtB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export function handleAppBilling(serverRuntimeConfig: any): (req: any, res: any) => Promise<any>;
|
|
1
|
+
export function handleAppBilling(serverRuntimeConfig: any, data: any): (req: any, res: any) => Promise<any>;
|
|
2
2
|
//# sourceMappingURL=billing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../../../src/lib/handlers/api/billing.js"],"names":[],"mappings":"AAgBO,
|
|
1
|
+
{"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../../../src/lib/handlers/api/billing.js"],"names":[],"mappings":"AAgBO,4GAqEN"}
|
|
@@ -30,52 +30,61 @@ const TERMINAL_STATUSES = [
|
|
|
30
30
|
'CANCELLED'
|
|
31
31
|
];
|
|
32
32
|
// NOTE: typically handling: "/api/webhooks/app/billing"
|
|
33
|
-
const handleAppBilling = (serverRuntimeConfig
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
33
|
+
const handleAppBilling = (serverRuntimeConfig, data) => {
|
|
34
|
+
const { returnResponse = true } = data !== null && data !== void 0 ? data : {};
|
|
35
|
+
return (req, res) => __awaiter(void 0, void 0, void 0, function* () {
|
|
36
|
+
var _a, _b;
|
|
37
|
+
const handleResponse = (body, statusCode = 200) => {
|
|
38
|
+
if (returnResponse) {
|
|
39
|
+
return res.status(statusCode).json(body);
|
|
40
|
+
}
|
|
41
|
+
return { statusCode, body };
|
|
42
|
+
};
|
|
43
|
+
try {
|
|
44
|
+
const { 'x-shop-domain': shopDomain, 'x-shopify-shop-domain': shopifyShopDomain, 'x-shopify-shop': shop = shopifyShopDomain !== null && shopifyShopDomain !== void 0 ? shopifyShopDomain : shopDomain, } = (_a = req.headers) !== null && _a !== void 0 ? _a : {};
|
|
45
|
+
if ((0, shared_1.stringEmpty)(shop)) {
|
|
46
|
+
return handleResponse({ handler: 'billing', error: 'Missing shop' });
|
|
47
|
+
}
|
|
48
|
+
const { shopify, loadSession, updateSession, getVerifiedClients } = yield (0, utils_1.getShopifyHelpers)(serverRuntimeConfig, { shop });
|
|
49
|
+
// TODO: explore getVerificationHelpers?
|
|
50
|
+
const rawBody = yield (0, verifyd_1.ensureRawBody)(req);
|
|
51
|
+
const _c = yield shopify.webhooks.validate({
|
|
52
|
+
rawBody,
|
|
53
|
+
rawRequest: req,
|
|
54
|
+
rawResponse: res,
|
|
55
|
+
}), { valid } = _c, webhookCheck = __rest(_c, ["valid"]);
|
|
56
|
+
if (valid) {
|
|
57
|
+
try {
|
|
58
|
+
let message = 'ignored';
|
|
59
|
+
const [eventType, { status } = {}] = Object.entries((0, shared_1.safeParse)(rawBody || '{}'))[0];
|
|
60
|
+
if ((eventType === shared_1.BILLING_EVENT_TYPES.SUBSCRIPTION) && TERMINAL_STATUSES.includes(status)) {
|
|
61
|
+
const { Rest } = (_b = yield getVerifiedClients()) !== null && _b !== void 0 ? _b : {};
|
|
62
|
+
// NOTE: this deletes the app in the case of subscription apps in a "terminal" state to cover the info in ShopifyApi docs for billing:
|
|
63
|
+
// "Note: the merchant may refuse payment when prompted or cancel subscriptions later on, but the app will already be installed at that point. We recommend using billing webhooks to revoke access for merchants when they cancel / decline payment."
|
|
64
|
+
yield Rest.delete({
|
|
65
|
+
path: '/admin/api_permissions/current.json',
|
|
66
|
+
});
|
|
67
|
+
message = 'deleted';
|
|
68
|
+
}
|
|
69
|
+
if ((serverRuntimeConfig.SHOPIFY_RUN_MODE === 'review') && !TERMINAL_STATUSES.includes(status)) {
|
|
70
|
+
const { id: sessionId } = yield loadSession();
|
|
71
|
+
// NOTE: billingStatus is a custom field we add when we're in review mode to handle reauth billing correctly
|
|
72
|
+
yield updateSession(sessionId, { billingStatus: status });
|
|
73
|
+
}
|
|
74
|
+
return handleResponse({ handler: 'billing', message });
|
|
60
75
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
// NOTE: billingStatus is a custom field we add when we're in review mode to handle reauth billing correctly
|
|
64
|
-
yield updateSession(sessionId, { billingStatus: status });
|
|
76
|
+
catch (error) {
|
|
77
|
+
return handleResponse({ handler: 'billing', error: error === null || error === void 0 ? void 0 : error.message });
|
|
65
78
|
}
|
|
66
|
-
return res.status(200).json({ handler: 'billing', message });
|
|
67
|
-
}
|
|
68
|
-
catch (error) {
|
|
69
|
-
return res.status(200).json({ handler: 'billing', error: error === null || error === void 0 ? void 0 : error.message });
|
|
70
79
|
}
|
|
80
|
+
console.warn('Unable to validate billing webhook', webhookCheck);
|
|
81
|
+
return handleResponse({ handler: 'billing', error: 'Unable to validate billing webhook' });
|
|
71
82
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
});
|
|
83
|
+
catch (error) {
|
|
84
|
+
console.error('Error handling billing', error);
|
|
85
|
+
return handleResponse({ handler: 'billing', error: 'Error handling billing' });
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
};
|
|
80
89
|
exports.handleAppBilling = handleAppBilling;
|
|
81
90
|
//# sourceMappingURL=billing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.js","sourceRoot":"","sources":["../../../../src/lib/handlers/api/billing.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAkD;AAElD,uCAA+C;AAC/C,4CAIwB;AAExB,MAAM,iBAAiB,GAAG;IACxB,SAAS;IACT,UAAU;IACV,WAAW;CACZ,CAAA;AAED,wDAAwD;AACjD,MAAM,gBAAgB,GAAG,CAAC,mBAAmB,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"billing.js","sourceRoot":"","sources":["../../../../src/lib/handlers/api/billing.js"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export function handleCallback(serverRuntimeConfig: any): (req: any, res: any, params: any) => Promise<any>;
|
|
1
|
+
export function handleCallback(serverRuntimeConfig: any, data: any): (req: any, res: any, params: any) => Promise<any>;
|
|
2
2
|
//# sourceMappingURL=callback.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../../../../src/lib/handlers/api/callback.js"],"names":[],"mappings":"AAgCO,
|
|
1
|
+
{"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../../../../src/lib/handlers/api/callback.js"],"names":[],"mappings":"AAgCO,uHAuKN"}
|
|
@@ -19,8 +19,9 @@ const shared_1 = require("../../../shared");
|
|
|
19
19
|
* "/api/auth/online/callback/reauth"
|
|
20
20
|
* "/api/auth/offline/callback/reauth"
|
|
21
21
|
*/
|
|
22
|
-
const handleCallback = (serverRuntimeConfig) => {
|
|
22
|
+
const handleCallback = (serverRuntimeConfig, data) => {
|
|
23
23
|
const { API_PATHS, PAGE_PATHS, PAYMENT_CONFIG, } = serverRuntimeConfig;
|
|
24
|
+
const { returnResponse = true } = data !== null && data !== void 0 ? data : {};
|
|
24
25
|
const prepareWebhookHandlers = (0, utils_1.getPrepareWebhookHandlers)(serverRuntimeConfig);
|
|
25
26
|
return (req, res, params) => __awaiter(void 0, void 0, void 0, function* () {
|
|
26
27
|
var _a, _b;
|
|
@@ -28,9 +29,15 @@ const handleCallback = (serverRuntimeConfig) => {
|
|
|
28
29
|
const { isOnline, reAuth } = params !== null && params !== void 0 ? params : {};
|
|
29
30
|
const { shop, host, state } = (_a = req.query) !== null && _a !== void 0 ? _a : {};
|
|
30
31
|
const authPayload = { rawRequest: req, rawResponse: res };
|
|
32
|
+
const handleResponse = (body, statusCode = 302) => {
|
|
33
|
+
if (returnResponse) {
|
|
34
|
+
return res.redirect(statusCode, body);
|
|
35
|
+
}
|
|
36
|
+
return { statusCode, body };
|
|
37
|
+
};
|
|
31
38
|
if ((0, shared_1.stringEmpty)(shop) || (0, shared_1.stringEmpty)(host)) {
|
|
32
39
|
// HMMM: why is this a 303 (rather than a 302 or or anything)??
|
|
33
|
-
return
|
|
40
|
+
return handleResponse(`${errorPath}?code=${shared_1.ERROR_CODES.INVALID_CALLBACK}`, 303);
|
|
34
41
|
}
|
|
35
42
|
let redirectUrl = `${errorPath}?code=invalid_callback_response`;
|
|
36
43
|
let shopify;
|
|
@@ -50,7 +57,7 @@ const handleCallback = (serverRuntimeConfig) => {
|
|
|
50
57
|
if (shouldProcessOfflineAuth) {
|
|
51
58
|
// TODO: explore objectToQuerystring
|
|
52
59
|
const queryParams = new URLSearchParams({ host, shop, state, reAuth, isOnline: false }).toString();
|
|
53
|
-
return
|
|
60
|
+
return handleResponse(`${API_PATHS[shared_1.API_ROUTE_NAMES.AUTH_OFFLINE]}?${queryParams}`);
|
|
54
61
|
}
|
|
55
62
|
if (shouldRegisterWebhooks) {
|
|
56
63
|
let appId;
|
|
@@ -143,7 +150,7 @@ const handleCallback = (serverRuntimeConfig) => {
|
|
|
143
150
|
}
|
|
144
151
|
}
|
|
145
152
|
}
|
|
146
|
-
return
|
|
153
|
+
return handleResponse(redirectUrl);
|
|
147
154
|
});
|
|
148
155
|
};
|
|
149
156
|
exports.handleCallback = handleCallback;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callback.js","sourceRoot":"","sources":["../../../../src/lib/handlers/api/callback.js"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sDAM6B;AAE7B,uCAGoB;AACpB,4CAYwB;AAExB;;;;;EAKE;AACK,MAAM,cAAc,GAAG,CAAC,mBAAmB,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"callback.js","sourceRoot":"","sources":["../../../../src/lib/handlers/api/callback.js"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export function handleAppUninstalled(serverRuntimeConfig: any): (req: any, res: any) => Promise<any>;
|
|
1
|
+
export function handleAppUninstalled(serverRuntimeConfig: any, data: any): (req: any, res: any) => Promise<any>;
|
|
2
2
|
//# sourceMappingURL=uninstall.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../../src/lib/handlers/api/uninstall.js"],"names":[],"mappings":"AASO,
|
|
1
|
+
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../../src/lib/handlers/api/uninstall.js"],"names":[],"mappings":"AASO,gHAqDN"}
|
|
@@ -25,40 +25,50 @@ const verifyd_1 = require("@agnostack/verifyd");
|
|
|
25
25
|
const utils_1 = require("../../utils");
|
|
26
26
|
const shared_1 = require("../../../shared");
|
|
27
27
|
// NOTE: typically handling: "/api/webhooks/app/uninstalled"
|
|
28
|
-
const handleAppUninstalled = (serverRuntimeConfig
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const { shopify, findSessionIds, deleteSessions } = yield (0, utils_1.getShopifyHelpers)(serverRuntimeConfig, { shop });
|
|
36
|
-
// TODO: explore getVerificationHelpers?
|
|
37
|
-
const rawBody = yield (0, verifyd_1.ensureRawBody)(req);
|
|
38
|
-
const _b = yield shopify.webhooks.validate({
|
|
39
|
-
rawBody,
|
|
40
|
-
rawRequest: req,
|
|
41
|
-
rawResponse: res,
|
|
42
|
-
}), { valid } = _b, webhookCheck = __rest(_b, ["valid"]);
|
|
43
|
-
if (valid) {
|
|
44
|
-
try {
|
|
45
|
-
const sessionsIds = yield findSessionIds(shop);
|
|
46
|
-
if ((0, shared_1.arrayNotEmpty)(sessionsIds)) {
|
|
47
|
-
yield deleteSessions(sessionsIds);
|
|
48
|
-
}
|
|
49
|
-
return res.status(200).json({ handler: 'uninstall', message: 'success' });
|
|
28
|
+
const handleAppUninstalled = (serverRuntimeConfig, data) => {
|
|
29
|
+
const { returnResponse = true } = data !== null && data !== void 0 ? data : {};
|
|
30
|
+
return (req, res) => __awaiter(void 0, void 0, void 0, function* () {
|
|
31
|
+
var _a;
|
|
32
|
+
const handleResponse = (body, statusCode = 200) => {
|
|
33
|
+
if (returnResponse) {
|
|
34
|
+
return res.status(statusCode).json(body);
|
|
50
35
|
}
|
|
51
|
-
|
|
52
|
-
|
|
36
|
+
return { statusCode, body };
|
|
37
|
+
};
|
|
38
|
+
try {
|
|
39
|
+
const { 'x-shop-domain': shopDomain, 'x-shopify-shop-domain': shopifyShopDomain, 'x-shopify-shop': shop = shopifyShopDomain !== null && shopifyShopDomain !== void 0 ? shopifyShopDomain : shopDomain, } = (_a = req.headers) !== null && _a !== void 0 ? _a : {};
|
|
40
|
+
if ((0, shared_1.stringEmpty)(shop)) {
|
|
41
|
+
return handleResponse({ handler: 'uninstall', error: 'Missing shop' });
|
|
42
|
+
}
|
|
43
|
+
const { shopify, findSessionIds, deleteSessions } = yield (0, utils_1.getShopifyHelpers)(serverRuntimeConfig, { shop });
|
|
44
|
+
// TODO: explore getVerificationHelpers?
|
|
45
|
+
const rawBody = yield (0, verifyd_1.ensureRawBody)(req);
|
|
46
|
+
const _b = yield shopify.webhooks.validate({
|
|
47
|
+
rawBody,
|
|
48
|
+
rawRequest: req,
|
|
49
|
+
rawResponse: res,
|
|
50
|
+
}), { valid } = _b, webhookCheck = __rest(_b, ["valid"]);
|
|
51
|
+
if (valid) {
|
|
52
|
+
try {
|
|
53
|
+
const sessionsIds = yield findSessionIds(shop);
|
|
54
|
+
if ((0, shared_1.arrayNotEmpty)(sessionsIds)) {
|
|
55
|
+
yield deleteSessions(sessionsIds);
|
|
56
|
+
}
|
|
57
|
+
return handleResponse({ handler: 'uninstall', message: 'success' });
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
console.error('Error handling uninstall', error);
|
|
61
|
+
return handleResponse({ handler: 'uninstall', error: (error === null || error === void 0 ? void 0 : error.message) || 'Error handling uninstall' });
|
|
62
|
+
}
|
|
53
63
|
}
|
|
64
|
+
console.warn('Unable to validate uninstall webhook', webhookCheck);
|
|
65
|
+
return handleResponse({ handler: 'uninstall', error: 'Unable to validate uninstall webhook' });
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
console.error('Error handling uninstall', error);
|
|
69
|
+
return handleResponse({ handler: 'uninstall', error: 'Error handling uninstall' });
|
|
54
70
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
catch (error) {
|
|
59
|
-
console.error('Error handling uninstall', error);
|
|
60
|
-
return res.status(200).json({ handler: 'uninstall', error: 'Error handling uninstall' });
|
|
61
|
-
}
|
|
62
|
-
});
|
|
71
|
+
});
|
|
72
|
+
};
|
|
63
73
|
exports.handleAppUninstalled = handleAppUninstalled;
|
|
64
74
|
//# sourceMappingURL=uninstall.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../../src/lib/handlers/api/uninstall.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAkD;AAElD,uCAA+C;AAC/C,4CAGwB;AAExB,4DAA4D;AACrD,MAAM,oBAAoB,GAAG,CAAC,mBAAmB,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../../src/lib/handlers/api/uninstall.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAkD;AAElD,uCAA+C;AAC/C,4CAGwB;AAExB,4DAA4D;AACrD,MAAM,oBAAoB,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,EAAE;IAChE,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,CAAA;IAE5C,OAAO,CAAO,GAAG,EAAE,GAAG,EAAE,EAAE;;QACxB,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,UAAU,GAAG,GAAG,EAAE,EAAE;YAChD,IAAI,cAAc,EAAE;gBAClB,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;aACzC;YAED,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;QAC7B,CAAC,CAAA;QAED,IAAI;YACF,MAAM,EACJ,eAAe,EAAE,UAAU,EAC3B,uBAAuB,EAAE,iBAAiB,EAC1C,gBAAgB,EAAE,IAAI,GAAG,iBAAiB,aAAjB,iBAAiB,cAAjB,iBAAiB,GAAI,UAAU,GACzD,GAAG,MAAA,GAAG,CAAC,OAAO,mCAAI,EAAE,CAAA;YAErB,IAAI,IAAA,oBAAW,EAAC,IAAI,CAAC,EAAE;gBACrB,OAAO,cAAc,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAA;aACvE;YAED,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,MAAM,IAAA,yBAAiB,EAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;YAE1G,wCAAwC;YACxC,MAAM,OAAO,GAAG,MAAM,IAAA,uBAAa,EAAC,GAAG,CAAC,CAAA;YACxC,MAAM,KAA6B,MAAM,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACjE,OAAO;gBACP,UAAU,EAAE,GAAG;gBACf,WAAW,EAAE,GAAG;aACjB,CAAC,EAJI,EAAE,KAAK,OAIX,EAJgB,YAAY,cAAxB,SAA0B,CAI9B,CAAA;YAEF,IAAI,KAAK,EAAE;gBACT,IAAI;oBACF,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAA;oBAC9C,IAAI,IAAA,sBAAa,EAAC,WAAW,CAAC,EAAE;wBAC9B,MAAM,cAAc,CAAC,WAAW,CAAC,CAAA;qBAClC;oBACD,OAAO,cAAc,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAA;iBACpE;gBAAC,OAAO,KAAK,EAAE;oBACd,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAA;oBAChD,OAAO,cAAc,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,KAAI,0BAA0B,EAAE,CAAC,CAAA;iBACrG;aACF;YAED,OAAO,CAAC,IAAI,CAAC,sCAAsC,EAAE,YAAY,CAAC,CAAA;YAClE,OAAO,cAAc,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,sCAAsC,EAAE,CAAC,CAAA;SAC/F;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAA;YAChD,OAAO,cAAc,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAA;SACnF;IACH,CAAC,CAAA,CAAA;AACH,CAAC,CAAA;AArDY,QAAA,oBAAoB,wBAqDhC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export function handleLoadAppInstallation(serverRuntimeConfig: any): (req: any, res: any, params: any) => Promise<any>;
|
|
1
|
+
export function handleLoadAppInstallation(serverRuntimeConfig: any, data: any): (req: any, res: any, params: any) => Promise<any>;
|
|
2
2
|
//# sourceMappingURL=appInstallation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appInstallation.d.ts","sourceRoot":"","sources":["../../../../../src/lib/handlers/api/verifiable/appInstallation.js"],"names":[],"mappings":"AAIO,
|
|
1
|
+
{"version":3,"file":"appInstallation.d.ts","sourceRoot":"","sources":["../../../../../src/lib/handlers/api/verifiable/appInstallation.js"],"names":[],"mappings":"AAIO,kIAyBN"}
|
|
@@ -13,12 +13,19 @@ exports.handleLoadAppInstallation = void 0;
|
|
|
13
13
|
const shared_1 = require("../../../../shared");
|
|
14
14
|
const graph_1 = require("./graph");
|
|
15
15
|
// NOTE: typically handling: "/api/admin/installation/[appId]" (called by getUseAppInstallation)
|
|
16
|
-
const handleLoadAppInstallation = (serverRuntimeConfig) => {
|
|
17
|
-
const _handleGraph = (0, graph_1.handleGraph)(serverRuntimeConfig);
|
|
16
|
+
const handleLoadAppInstallation = (serverRuntimeConfig, data) => {
|
|
17
|
+
const _handleGraph = (0, graph_1.handleGraph)(serverRuntimeConfig, data);
|
|
18
|
+
const { returnResponse = true } = data !== null && data !== void 0 ? data : {};
|
|
18
19
|
return (req, res, params) => __awaiter(void 0, void 0, void 0, function* () {
|
|
19
20
|
const { appId } = params !== null && params !== void 0 ? params : {};
|
|
21
|
+
const handleResponse = (body, statusCode = 200) => {
|
|
22
|
+
if (returnResponse) {
|
|
23
|
+
return res.status(statusCode).json(body);
|
|
24
|
+
}
|
|
25
|
+
return { statusCode, body };
|
|
26
|
+
};
|
|
20
27
|
if ((0, shared_1.stringEmpty)(appId)) {
|
|
21
|
-
return
|
|
28
|
+
return handleResponse({ message: 'Missing required param' }, 412);
|
|
22
29
|
}
|
|
23
30
|
return _handleGraph(req, res, {
|
|
24
31
|
query: shared_1.APP_QUERY.INSTALLATION,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appInstallation.js","sourceRoot":"","sources":["../../../../../src/lib/handlers/api/verifiable/appInstallation.js"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAAsE;AACtE,mCAAqC;AAErC,gGAAgG;AACzF,MAAM,yBAAyB,GAAG,CAAC,mBAAmB,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"appInstallation.js","sourceRoot":"","sources":["../../../../../src/lib/handlers/api/verifiable/appInstallation.js"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAAsE;AACtE,mCAAqC;AAErC,gGAAgG;AACzF,MAAM,yBAAyB,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,EAAE;IACrE,MAAM,YAAY,GAAG,IAAA,mBAAW,EAAC,mBAAmB,EAAE,IAAI,CAAC,CAAA;IAC3D,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,CAAA;IAE5C,OAAO,CAAO,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;QAChC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAA;QAE9B,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,UAAU,GAAG,GAAG,EAAE,EAAE;YAChD,IAAI,cAAc,EAAE;gBAClB,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;aACzC;YAED,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;QAC7B,CAAC,CAAA;QAED,IAAI,IAAA,oBAAW,EAAC,KAAK,CAAC,EAAE;YACtB,OAAO,cAAc,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,EAAE,GAAG,CAAC,CAAA;SAClE;QAED,OAAO,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE;YAC5B,KAAK,EAAE,kBAAS,CAAC,YAAY;YAC7B,SAAS,EAAE,EAAE,SAAS,EAAE,GAAG,KAAK,aAAa,EAAE;YAC/C,SAAS,EAAE,kBAAS,CAAC,SAAS;SAC/B,CAAC,CAAA;IACJ,CAAC,CAAA,CAAA;AACH,CAAC,CAAA;AAzBY,QAAA,yBAAyB,6BAyBrC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export function handleGraph(serverRuntimeConfig: any): (req: any, res: any, params: any) => Promise<any>;
|
|
1
|
+
export function handleGraph(serverRuntimeConfig: any, data: any): (req: any, res: any, params: any) => Promise<any>;
|
|
2
2
|
//# sourceMappingURL=graph.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../../../src/lib/handlers/api/verifiable/graph.js"],"names":[],"mappings":"AAmBO,
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../../../src/lib/handlers/api/verifiable/graph.js"],"names":[],"mappings":"AAmBO,oHAiJN"}
|
|
@@ -25,10 +25,17 @@ const shopify_api_1 = require("@shopify/shopify-api");
|
|
|
25
25
|
const verifyd_1 = require("@agnostack/verifyd");
|
|
26
26
|
const utils_1 = require("../../../utils");
|
|
27
27
|
const shared_1 = require("../../../../shared");
|
|
28
|
-
const handleGraph = (serverRuntimeConfig) => {
|
|
28
|
+
const handleGraph = (serverRuntimeConfig, data) => {
|
|
29
29
|
const _getVerificationHelpers = (0, verifyd_1.getVerificationHelpers)(serverRuntimeConfig);
|
|
30
|
+
const { returnResponse = true } = data !== null && data !== void 0 ? data : {};
|
|
30
31
|
return (req, res, params) => __awaiter(void 0, void 0, void 0, function* () {
|
|
31
32
|
var _a, _b;
|
|
33
|
+
const handleResponse = (body, statusCode = 200) => {
|
|
34
|
+
if (returnResponse) {
|
|
35
|
+
return res.status(statusCode).json(body);
|
|
36
|
+
}
|
|
37
|
+
return { statusCode, body };
|
|
38
|
+
};
|
|
32
39
|
let requestBody;
|
|
33
40
|
let processResponse;
|
|
34
41
|
try {
|
|
@@ -36,9 +43,9 @@ const handleGraph = (serverRuntimeConfig) => {
|
|
|
36
43
|
}
|
|
37
44
|
catch (error) {
|
|
38
45
|
if (error instanceof verifyd_1.VerificationError) {
|
|
39
|
-
return
|
|
46
|
+
return handleResponse(Object.assign({ message: error.message }, error.data), error.code);
|
|
40
47
|
}
|
|
41
|
-
return
|
|
48
|
+
return handleResponse({ message: 'Verification error' }, 403);
|
|
42
49
|
}
|
|
43
50
|
const _c = (_a = req.query) !== null && _a !== void 0 ? _a : {}, { shop, apiVersion } = _c, _query = __rest(_c, ["shop", "apiVersion"]);
|
|
44
51
|
const _d = params !== null && params !== void 0 ? params : (0, shared_1.safeParse)(requestBody || '{}'), { isOnline, query: graphQuery, variables: graphVariables, transform = (_data) => _data } = _d, graphParams = __rest(_d, ["isOnline", "query", "variables", "transform"]);
|
|
@@ -47,7 +54,7 @@ const handleGraph = (serverRuntimeConfig) => {
|
|
|
47
54
|
query = (0, shared_1.querystringToObject)(query);
|
|
48
55
|
}
|
|
49
56
|
if ((0, shared_1.stringEmpty)(shop) || (0, shared_1.stringEmpty)(graphQuery)) {
|
|
50
|
-
return
|
|
57
|
+
return handleResponse({ message: 'Invalid arguments' }, 400);
|
|
51
58
|
}
|
|
52
59
|
let statusCode;
|
|
53
60
|
let response;
|
|
@@ -114,21 +121,21 @@ const handleGraph = (serverRuntimeConfig) => {
|
|
|
114
121
|
res.setHeader(key, value);
|
|
115
122
|
});
|
|
116
123
|
if (!(response === null || response === void 0 ? void 0 : response.data)) {
|
|
117
|
-
return
|
|
124
|
+
return handleResponse({ message }, statusCode);
|
|
118
125
|
}
|
|
119
126
|
const responseBody = (0, shared_1.ensureObject)(response.data);
|
|
120
127
|
const [_responseData] = Object.values(responseBody);
|
|
121
128
|
const _e = (0, shared_1.ensureObject)(_responseData), { userErrors } = _e, responseData = __rest(_e, ["userErrors"]);
|
|
122
129
|
if ((0, shared_1.arrayNotEmpty)(userErrors)) {
|
|
123
130
|
const errorMessages = (0, shared_1.ensureArray)(userErrors).map(({ message }) => (0, shared_1.ensureString)(message));
|
|
124
|
-
return
|
|
131
|
+
return handleResponse({ message: `${message}. ${errorMessages.join('. ')}.` }, 500);
|
|
125
132
|
}
|
|
126
133
|
// NOTE: sending in both to transform in case someone needs the userErrors
|
|
127
|
-
return
|
|
134
|
+
return handleResponse(yield processResponse(transform(responseData, responseBody)), statusCode);
|
|
128
135
|
}
|
|
129
136
|
catch (error) {
|
|
130
137
|
console.error(`${message}. Transformation Error.`, error);
|
|
131
|
-
return
|
|
138
|
+
return handleResponse({ message }, 500);
|
|
132
139
|
}
|
|
133
140
|
});
|
|
134
141
|
};
|