@agnostack/next-shopify 1.7.1-alpha.5 → 1.7.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/dist/handlers/api/auth.js +2 -12
- package/dist/handlers/api/auth.js.map +1 -1
- package/dist/handlers/api/callback.js +6 -15
- package/dist/handlers/api/callback.js.map +1 -1
- package/dist/handlers/api/proxy.js +9 -0
- package/dist/handlers/api/proxy.js.map +1 -1
- package/dist/handlers/api/uninstall.js +23 -44
- package/dist/handlers/api/uninstall.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.handleAuth = void 0;
|
|
4
|
-
const runtime_1 = require("@shopify/shopify-api/runtime");
|
|
5
4
|
const utils_1 = require("../../utils");
|
|
6
5
|
// NOTE: typically handling: "/api/auth"
|
|
7
6
|
const handleAuth = (serverRuntimeConfig) => async (req, res) => {
|
|
8
7
|
var _a;
|
|
9
|
-
const {
|
|
8
|
+
const { API_URLS, API_PATHS, PAGE_PATHS } = serverRuntimeConfig;
|
|
10
9
|
const query = (_a = req.query) !== null && _a !== void 0 ? _a : {};
|
|
11
10
|
const { embedded, host, shop: _shop } = query !== null && query !== void 0 ? query : {};
|
|
12
|
-
console.log(`>>> ~ handleAuth query`, query);
|
|
13
11
|
const shopify = await utils_1.getInitializedShopify(serverRuntimeConfig);
|
|
14
12
|
const shop = shopify.utils.sanitizeShop(_shop);
|
|
15
13
|
if (utils_1.stringEmpty(shop)) {
|
|
@@ -22,16 +20,8 @@ const handleAuth = (serverRuntimeConfig) => async (req, res) => {
|
|
|
22
20
|
host,
|
|
23
21
|
}).toString();
|
|
24
22
|
const queryParams = new URLSearchParams(Object.assign(Object.assign({}, query), { shop, redirectUri: `${API_URLS[utils_1.API_ROUTE_NAMES.AUTH_CALLBACK]}?${redirectUriParams}` })).toString();
|
|
25
|
-
|
|
26
|
-
console.log(`>>> ~ handleAuth embedded url`, url);
|
|
27
|
-
return res.redirect(url);
|
|
23
|
+
return res.redirect(`${PAGE_PATHS[utils_1.PAGE_ROUTE_NAMES.EXIT]}?${queryParams}`);
|
|
28
24
|
}
|
|
29
|
-
const cookies = new runtime_1.Cookies(req, res, {
|
|
30
|
-
keys: [APP_CONFIG.apiSecretKey],
|
|
31
|
-
secure: true,
|
|
32
|
-
});
|
|
33
|
-
const stateFromCookie = await cookies.getAndVerify('shopify_app_state');
|
|
34
|
-
console.log(`>>> ~ handleAuth stateFromCookie`, stateFromCookie);
|
|
35
25
|
return shopify.auth.begin({
|
|
36
26
|
shop,
|
|
37
27
|
isOnline: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/handlers/api/auth.js"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/handlers/api/auth.js"],"names":[],"mappings":";;;AAAA,uCAKoB;AAEpB,wCAAwC;AACjC,MAAM,UAAU,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;;IACpE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAA;IAC/D,MAAM,KAAK,GAAG,MAAA,GAAG,CAAC,KAAK,mCAAI,EAAE,CAAA;IAC7B,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,CAAA;IAEnD,MAAM,OAAO,GAAG,MAAM,6BAAqB,CAAC,mBAAmB,CAAC,CAAA;IAEhE,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IAC9C,IAAI,mBAAW,CAAC,IAAI,CAAC,EAAE;QACrB,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,wBAAgB,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAA;KACnG;IAED,IAAI,QAAQ,KAAK,GAAG,EAAE;QACpB,oCAAoC;QACpC,MAAM,iBAAiB,GAAG,IAAI,eAAe,CAAC;YAC5C,IAAI;YACJ,IAAI;SACL,CAAC,CAAC,QAAQ,EAAE,CAAA;QACb,MAAM,WAAW,GAAG,IAAI,eAAe,iCAClC,KAAK,KACR,IAAI,EACJ,WAAW,EAAE,GAAG,QAAQ,CAAC,uBAAe,CAAC,aAAa,CAAC,IAAI,iBAAiB,EAAE,IAC9E,CAAC,QAAQ,EAAE,CAAA;QAEb,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,wBAAgB,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,CAAA;KAC3E;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI;QACJ,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,GAAG;QACf,WAAW,EAAE,GAAG;QAChB,YAAY,EAAE,SAAS,CAAC,uBAAe,CAAC,aAAa,CAAC;KACvD,CAAC,CAAA;AACJ,CAAC,CAAA;AAlCY,QAAA,UAAU,cAkCtB"}
|
|
@@ -2,12 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.handleCallback = void 0;
|
|
4
4
|
const shopify_api_1 = require("@shopify/shopify-api");
|
|
5
|
-
const runtime_1 = require("@shopify/shopify-api/runtime");
|
|
6
5
|
const utils_1 = require("../../utils");
|
|
7
6
|
// NOTE: typically handling: "/api/auth/callback"
|
|
8
7
|
const handleCallback = (serverRuntimeConfig) => async (req, res) => {
|
|
9
8
|
var _a;
|
|
10
|
-
const {
|
|
9
|
+
const { PAGE_PATHS, PAYMENT_CONFIG, API_PATHS } = serverRuntimeConfig;
|
|
11
10
|
const { shop, host } = req.query;
|
|
12
11
|
if (utils_1.stringEmpty(shop) || utils_1.stringEmpty(host)) {
|
|
13
12
|
// HMMM: why is this a 303 (rather than a 302 or or anything)??
|
|
@@ -15,23 +14,15 @@ const handleCallback = (serverRuntimeConfig) => async (req, res) => {
|
|
|
15
14
|
}
|
|
16
15
|
let redirectUrl = `${PAGE_PATHS[utils_1.PAGE_ROUTE_NAMES.ERROR]}?invalid_callback_response`;
|
|
17
16
|
try {
|
|
18
|
-
const authPayload = { rawRequest: req, rawResponse: res };
|
|
19
17
|
const { shopify, storeSession } = await utils_1.getShopifyHelpers(serverRuntimeConfig, { shop });
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
});
|
|
24
|
-
const stateFromCookie = await cookies.getAndVerify('shopify_app_state');
|
|
25
|
-
console.log(`>>> ~ handleCallback stateFromCookie`, stateFromCookie);
|
|
26
|
-
const foo = await shopify.auth.callback(authPayload);
|
|
27
|
-
console.log(`>>> ~ handleCallback shopify.auth.callback`, foo);
|
|
28
|
-
const { session } = foo;
|
|
18
|
+
const authPayload = { rawRequest: req, rawResponse: res };
|
|
19
|
+
// TODO investigate Error handling callback route. Cookie Error CookieNotFound [Error]: Cannot complete OAuth process. Could not find an OAuth cookie for shop url:
|
|
20
|
+
const { session } = await shopify.auth.callback(authPayload);
|
|
29
21
|
await storeSession(session.toObject());
|
|
30
22
|
await shopify.webhooks.register({ session });
|
|
31
23
|
// TODO: explore objectToQuerystring
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
// redirectUrl = `${embeddedURL}?${new URLSearchParams(req.query).toString()}`
|
|
24
|
+
const embeddedURL = await shopify.auth.getEmbeddedAppUrl(authPayload);
|
|
25
|
+
redirectUrl = `${embeddedURL}?${new URLSearchParams(req.query).toString()}`;
|
|
35
26
|
if (PAYMENT_CONFIG === null || PAYMENT_CONFIG === void 0 ? void 0 : PAYMENT_CONFIG.required) {
|
|
36
27
|
const confirmationUrl = await utils_1.ensureBilling({
|
|
37
28
|
shopify,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callback.js","sourceRoot":"","sources":["../../../src/handlers/api/callback.js"],"names":[],"mappings":";;;AAAA,sDAK6B;
|
|
1
|
+
{"version":3,"file":"callback.js","sourceRoot":"","sources":["../../../src/handlers/api/callback.js"],"names":[],"mappings":"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"}
|
|
@@ -10,9 +10,13 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
10
10
|
}
|
|
11
11
|
return t;
|
|
12
12
|
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
13
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
17
|
exports.handleProxy = void 0;
|
|
15
18
|
// NOTE: api routes do NOT work in `next export`
|
|
19
|
+
const nextjs_cors_1 = __importDefault(require("nextjs-cors"));
|
|
16
20
|
const shopify_api_1 = require("@shopify/shopify-api");
|
|
17
21
|
// import {
|
|
18
22
|
// isType,
|
|
@@ -26,6 +30,11 @@ const shopify_api_1 = require("@shopify/shopify-api");
|
|
|
26
30
|
// } from '../../utils'
|
|
27
31
|
const handleProxy = () => async (req, res, _params) => {
|
|
28
32
|
console.log(`>>> ~ _params`, _params);
|
|
33
|
+
await nextjs_cors_1.default(req, res, {
|
|
34
|
+
methods: ['PUT', 'PATCH', 'POST', 'DELETE'],
|
|
35
|
+
origin: '*',
|
|
36
|
+
optionsSuccessStatus: 200, // some legacy browsers (IE11, various SmartTVs) choke on 204
|
|
37
|
+
});
|
|
29
38
|
const { query: _query, method: _method, body: _body } = req;
|
|
30
39
|
console.log(`>>> ~ req`, { _query, _method, _body });
|
|
31
40
|
// const { shop } = _query ?? {}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../src/handlers/api/proxy.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../src/handlers/api/proxy.js"],"names":[],"mappings":"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"}
|
|
@@ -5,10 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.handleAppUninstalled = exports.rawBodyConfig = void 0;
|
|
7
7
|
const raw_body_1 = __importDefault(require("raw-body"));
|
|
8
|
-
|
|
9
|
-
// setAbstractConvertResponseFunc,
|
|
10
|
-
// setAbstractConvertIncomingResponseFunc,
|
|
11
|
-
// } from '@shopify/shopify-api/runtime'
|
|
8
|
+
const runtime_1 = require("@shopify/shopify-api/runtime");
|
|
12
9
|
const utils_1 = require("../../utils");
|
|
13
10
|
// NOTE raw request body is required for Shopify webhook validation
|
|
14
11
|
exports.rawBodyConfig = {
|
|
@@ -30,50 +27,32 @@ const handleAppUninstalled = (serverRuntimeConfig) => async (req, res) => {
|
|
|
30
27
|
return res.status(400).send('Invalid shop');
|
|
31
28
|
}
|
|
32
29
|
const { shopify, findSession, deleteSessions } = await utils_1.getShopifyHelpers(serverRuntimeConfig, { shop });
|
|
33
|
-
|
|
30
|
+
// NOTE these methods will intercept the response from shopify.webhooks.process
|
|
31
|
+
// NOTE setAbstractConvertIncomingResponseFunc is required if using setAbstractConvertResponseFunc
|
|
32
|
+
runtime_1.setAbstractConvertIncomingResponseFunc(async (args) => args);
|
|
33
|
+
runtime_1.setAbstractConvertResponseFunc(async (response, adapterArgs) => {
|
|
34
|
+
const { statusCode, statusText } = utils_1.ensureObject(response);
|
|
35
|
+
const { type, rawResponse } = utils_1.ensureObject(adapterArgs);
|
|
36
|
+
// NOTE additional check (before removing sessions) to ensure this is the uninstall response scenario (although this nay not be needed)
|
|
37
|
+
if (type === utils_1.API_WEBHOOK_TOPICS.APP_UNINSTALLED && statusCode === 200) {
|
|
38
|
+
try {
|
|
39
|
+
const sessionsIds = await findSession(shop);
|
|
40
|
+
if (utils_1.arrayNotEmpty(sessionsIds)) {
|
|
41
|
+
await deleteSessions(sessionsIds.map(({ id }) => id));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
return rawResponse.status(500).send(error === null || error === void 0 ? void 0 : error.message);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return rawResponse.status(statusCode).send(statusText);
|
|
49
|
+
});
|
|
50
|
+
return shopify.webhooks.process({
|
|
34
51
|
rawBody: rawBody.toString(),
|
|
35
52
|
rawRequest: req,
|
|
36
53
|
rawResponse: res,
|
|
54
|
+
type: utils_1.API_WEBHOOK_TOPICS.APP_UNINSTALLED,
|
|
37
55
|
});
|
|
38
|
-
console.log(`>>> ~ handleAppUninstalled shopify.webhooks.validate`, foo);
|
|
39
|
-
const { valid } = foo;
|
|
40
|
-
if (valid) {
|
|
41
|
-
try {
|
|
42
|
-
const sessionsIds = await findSession(shop);
|
|
43
|
-
if (utils_1.arrayNotEmpty(sessionsIds)) {
|
|
44
|
-
await deleteSessions(sessionsIds.map(({ id }) => id));
|
|
45
|
-
}
|
|
46
|
-
return res.status(200).send('success');
|
|
47
|
-
}
|
|
48
|
-
catch (error) {
|
|
49
|
-
return res.status(500).send(error === null || error === void 0 ? void 0 : error.message);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
// // NOTE these methods will intercept the response from shopify.webhooks.process
|
|
53
|
-
// // NOTE setAbstractConvertIncomingResponseFunc is required if using setAbstractConvertResponseFunc
|
|
54
|
-
// setAbstractConvertIncomingResponseFunc(async (args) => args)
|
|
55
|
-
// setAbstractConvertResponseFunc(async (response, adapterArgs) => {
|
|
56
|
-
// const { statusCode, statusText } = ensureObject(response)
|
|
57
|
-
// const { type, rawResponse } = ensureObject(adapterArgs)
|
|
58
|
-
// // NOTE additional check (before removing sessions) to ensure this is the uninstall response scenario (although this nay not be needed)
|
|
59
|
-
// if (type === API_WEBHOOK_TOPICS.APP_UNINSTALLED && statusCode === 200) {
|
|
60
|
-
// try {
|
|
61
|
-
// const sessionsIds = await findSession(shop)
|
|
62
|
-
// if (arrayNotEmpty(sessionsIds)) {
|
|
63
|
-
// await deleteSessions(sessionsIds.map(({ id }) => id))
|
|
64
|
-
// }
|
|
65
|
-
// } catch (error) {
|
|
66
|
-
// return rawResponse.status(500).send(error?.message)
|
|
67
|
-
// }
|
|
68
|
-
// }
|
|
69
|
-
// return rawResponse.status(statusCode).send(statusText)
|
|
70
|
-
// })
|
|
71
|
-
// return shopify.webhooks.process({
|
|
72
|
-
// rawBody: rawBody.toString(),
|
|
73
|
-
// rawRequest: req,
|
|
74
|
-
// rawResponse: res,
|
|
75
|
-
// type: API_WEBHOOK_TOPICS.APP_UNINSTALLED,
|
|
76
|
-
// })
|
|
77
56
|
}
|
|
78
57
|
catch (error) {
|
|
79
58
|
console.error('Error handling uninstall', error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../src/handlers/api/uninstall.js"],"names":[],"mappings":";;;;;;AAAA,wDAAiC;AACjC,
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../src/handlers/api/uninstall.js"],"names":[],"mappings":";;;;;;AAAA,wDAAiC;AACjC,0DAGqC;AAErC,uCAMoB;AAEpB,mEAAmE;AACtD,QAAA,aAAa,GAAG;IAC3B,GAAG,EAAE;QACH,UAAU,EAAE,KAAK;KAClB;CACF,CAAA;AAED,4DAA4D;AACrD,MAAM,oBAAoB,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IAC9E,mEAAmE;IACnE,MAAM,OAAO,GAAG,MAAM,kBAAU,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACpD,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAA;QAEnE,2EAA2E;QAC3E,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;IAEF,IAAI;QACF,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAA;QAEjD,IAAI,mBAAW,CAAC,IAAI,CAAC,EAAE;YACrB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;SAC5C;QAED,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,MAAM,yBAAiB,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;QAEvG,+EAA+E;QAC/E,kGAAkG;QAClG,gDAAsC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;QAC5D,wCAA8B,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE;YAC7D,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,oBAAY,CAAC,QAAQ,CAAC,CAAA;YACzD,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,oBAAY,CAAC,WAAW,CAAC,CAAA;YAEvD,uIAAuI;YACvI,IAAI,IAAI,KAAK,0BAAkB,CAAC,eAAe,IAAI,UAAU,KAAK,GAAG,EAAE;gBACrE,IAAI;oBACF,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAA;oBAC3C,IAAI,qBAAa,CAAC,WAAW,CAAC,EAAE;wBAC9B,MAAM,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;qBACtD;iBACF;gBAAC,OAAO,KAAK,EAAE;oBACd,OAAO,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,CAAA;iBACpD;aACF;YAED,OAAO,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;QAEF,OAAO,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC9B,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;YAC3B,UAAU,EAAE,GAAG;YACf,WAAW,EAAE,GAAG;YAChB,IAAI,EAAE,0BAAkB,CAAC,eAAe;SACzC,CAAC,CAAA;KACH;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAA;QAChD,sFAAsF;QACtF,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;KACxD;AACH,CAAC,CAAA;AAnDY,QAAA,oBAAoB,wBAmDhC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agnostack/next-shopify",
|
|
3
|
-
"version": "1.7.1-
|
|
3
|
+
"version": "1.7.1-beta.2",
|
|
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",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"@agnostack/next-plugins": "latest",
|
|
51
|
-
"@shopify/shopify-api": "7.
|
|
51
|
+
"@shopify/shopify-api": "7.1.0",
|
|
52
52
|
"browser-monads": "1.0.0",
|
|
53
53
|
"cookies": "0.8.0",
|
|
54
54
|
"luxon": "3.2.1",
|