@agnostack/next-shopify 1.7.5-beta.36 → 1.7.5-beta.38
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.
|
@@ -20,18 +20,14 @@ const utils_1 = require("../../utils");
|
|
|
20
20
|
// NOTE: typically handling: "/api/webhooks/app/uninstalled"
|
|
21
21
|
const handleAppUninstalled = (serverRuntimeConfig) => async (req, res) => {
|
|
22
22
|
var _a;
|
|
23
|
-
// NOTE raw request body is required for Shopify webhook validation
|
|
24
|
-
const rawBody = await raw_body_1.default(req).catch((error) => {
|
|
25
|
-
console.error('Error extracting raw body for app uninstall', error);
|
|
26
|
-
// HMMMM: dont think we can return a 500 here (vs a 200 w/ an error object)
|
|
27
|
-
return res.status(500).send('Unable to get request body');
|
|
28
|
-
});
|
|
29
23
|
try {
|
|
30
24
|
const { 'x-shopify-shop-domain': shop } = (_a = req.headers) !== null && _a !== void 0 ? _a : {};
|
|
31
25
|
if (utils_1.stringEmpty(shop)) {
|
|
32
26
|
return res.status(200).json({ handler: 'uninstall', error: 'Missing shop' });
|
|
33
27
|
}
|
|
34
28
|
const { shopify, findSessionIds, deleteSessions } = await utils_1.getShopifyHelpers(serverRuntimeConfig, { shop });
|
|
29
|
+
// NOTE raw request body is required for Shopify webhook validation
|
|
30
|
+
const rawBody = await raw_body_1.default(req);
|
|
35
31
|
const _b = await shopify.webhooks.validate({
|
|
36
32
|
rawBody: rawBody.toString(),
|
|
37
33
|
rawRequest: req,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../src/handlers/api/uninstall.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,wDAAiC;AAEjC,uCAIoB;AAEpB,4DAA4D;AACrD,MAAM,oBAAoB,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;;IAC9E,
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../src/handlers/api/uninstall.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,wDAAiC;AAEjC,uCAIoB;AAEpB,4DAA4D;AACrD,MAAM,oBAAoB,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;;IAC9E,IAAI;QACF,MAAM,EAAE,uBAAuB,EAAE,IAAI,EAAE,GAAG,MAAA,GAAG,CAAC,OAAO,mCAAI,EAAE,CAAA;QAE3D,IAAI,mBAAW,CAAC,IAAI,CAAC,EAAE;YACrB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAA;SAC7E;QAED,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,MAAM,yBAAiB,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;QAE1G,mEAAmE;QACnE,MAAM,OAAO,GAAG,MAAM,kBAAU,CAAC,GAAG,CAAC,CAAA;QACrC,MAAM,KAA6B,MAAM,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACjE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;YAC3B,UAAU,EAAE,GAAG;YACf,WAAW,EAAE,GAAG;SACjB,CAAC,EAJI,EAAE,KAAK,OAIX,EAJgB,YAAY,cAAxB,SAA0B,CAI9B,CAAA;QAEF,IAAI,KAAK,EAAE;YACT,IAAI;gBACF,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAA;gBAC9C,IAAI,qBAAa,CAAC,WAAW,CAAC,EAAE;oBAC9B,MAAM,cAAc,CAAC,WAAW,CAAC,CAAA;iBAClC;gBACD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;aACvC;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,EAAE,CAAC,CAAA;aAC7E;SACF;QAED,OAAO,CAAC,IAAI,CAAC,sCAAsC,EAAE,YAAY,CAAC,CAAA;QAClE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,sCAAsC,EAAE,CAAC,CAAA;KACrG;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAA;QAChD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAA;KACzF;AACH,CAAC,CAAA;AApCY,QAAA,oBAAoB,wBAoChC"}
|
|
@@ -20,10 +20,8 @@ const utils_1 = require("../../utils");
|
|
|
20
20
|
// NOTE: typically handling: "/api/webhooks/app/event"
|
|
21
21
|
const handlWebhookEvent = (serverRuntimeConfig, topicHandlers) => async (req, res) => {
|
|
22
22
|
var _a;
|
|
23
|
-
console.log(`>>> > handlWebhookEvents2 > topicHandlers:`, topicHandlers);
|
|
24
23
|
try {
|
|
25
24
|
const { 'x-shopify-shop-domain': shop } = (_a = req.headers) !== null && _a !== void 0 ? _a : {};
|
|
26
|
-
console.log(`>>> > handlWebhookEvent > shop:`, shop);
|
|
27
25
|
if (utils_1.stringEmpty(shop)) {
|
|
28
26
|
return res.status(200).json({ handler: 'webhook', error: 'Missing shop' });
|
|
29
27
|
}
|
|
@@ -38,43 +36,44 @@ const handlWebhookEvent = (serverRuntimeConfig, topicHandlers) => async (req, re
|
|
|
38
36
|
rawRequest: req,
|
|
39
37
|
rawResponse: res,
|
|
40
38
|
}), { valid } = _b, message = __rest(_b, ["valid"]);
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
39
|
+
if (valid) {
|
|
40
|
+
try {
|
|
41
|
+
const { topic, domain, webhookId, apiVersion, rawBody: eventRawBody } = message;
|
|
42
|
+
console.log(`>>> > handlWebhookEvent > { topic, domain, eventRawBody, webhookId, apiVersion }:`, {
|
|
43
|
+
topic, domain, eventRawBody, webhookId, apiVersion,
|
|
44
|
+
});
|
|
45
|
+
const eventBody = JSON.parse(eventRawBody);
|
|
46
|
+
console.log(`>>> > handlWebhookEvent > eventBody:`, eventBody);
|
|
47
|
+
const topicHandlePromises = utils_1.ensureArray(topicHandlers === null || topicHandlers === void 0 ? void 0 : topicHandlers[topic]).map(handler => handler({
|
|
48
|
+
apiVersion,
|
|
49
|
+
webhookId,
|
|
50
|
+
topic,
|
|
51
|
+
shop: domain,
|
|
52
|
+
body: eventBody,
|
|
53
|
+
}));
|
|
54
|
+
console.log(`>>> > handlePromises > handlePromises:`, topicHandlePromises);
|
|
55
|
+
const registrationHandlePromises = shopify.webhooks.getHandlers(topic).reduce((_registrationHandlePromises, handler) => {
|
|
56
|
+
if (!handler.callback) {
|
|
57
|
+
return _registrationHandlePromises;
|
|
58
|
+
}
|
|
59
|
+
return [
|
|
60
|
+
..._registrationHandlePromises,
|
|
61
|
+
handler.callback(topic, domain, eventRawBody, webhookId, apiVersion)
|
|
62
|
+
];
|
|
63
|
+
}, []);
|
|
64
|
+
console.log(`>>> > handlWebhookEvent > registrationHandlePromises:`, registrationHandlePromises);
|
|
65
|
+
await Promise.all([...topicHandlePromises, ...registrationHandlePromises]);
|
|
66
|
+
return res.status(200).send('success');
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
return res.status(200).json({ handler: 'webhook', error: error === null || error === void 0 ? void 0 : error.message });
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
console.log(`>>> > NOT VALID > handlWebhookEvent > req:`, req);
|
|
74
|
+
}
|
|
75
|
+
console.warn('Unable to validate webhook', message);
|
|
76
|
+
return res.status(200).json({ handler: 'webhook', error: 'Unable to validate webhook', message });
|
|
78
77
|
}
|
|
79
78
|
catch (error) {
|
|
80
79
|
console.error('Error handling webhook', error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../../src/handlers/api/webhook.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,wDAAiC;AAEjC,uCAIoB;AAEpB,sDAAsD;AAC/C,MAAM,iBAAiB,GAAG,CAAC,mBAAmB,EAAE,aAAa,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;;IAC1F,
|
|
1
|
+
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../../src/handlers/api/webhook.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,wDAAiC;AAEjC,uCAIoB;AAEpB,sDAAsD;AAC/C,MAAM,iBAAiB,GAAG,CAAC,mBAAmB,EAAE,aAAa,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;;IAC1F,IAAI;QACF,MAAM,EAAE,uBAAuB,EAAE,IAAI,EAAE,GAAG,MAAA,GAAG,CAAC,OAAO,mCAAI,EAAE,CAAA;QAE3D,IAAI,mBAAW,CAAC,IAAI,CAAC,EAAE;YACrB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAA;SAC3E;QAED,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,yBAAiB,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;QAC1E,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,OAAO,CAAC,CAAA;QAE1D,mEAAmE;QACnE,MAAM,QAAQ,GAAG,MAAM,kBAAU,CAAC,GAAG,CAAC,CAAA;QACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAA;QACnC,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,OAAO,CAAC,CAAA;QAC1D,MAAM,KAAwB,MAAM,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC5D,OAAO;YACP,UAAU,EAAE,GAAG;YACf,WAAW,EAAE,GAAG;SACjB,CAAC,EAJI,EAAE,KAAK,OAIX,EAJgB,OAAO,cAAnB,SAAqB,CAIzB,CAAA;QAEF,IAAI,KAAK,EAAE;YACT,IAAI;gBACF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAA;gBAC/E,OAAO,CAAC,GAAG,CAAC,mFAAmF,EAAE;oBAC/F,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU;iBACnD,CAAC,CAAA;gBACF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;gBAC1C,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,SAAS,CAAC,CAAA;gBAC9D,MAAM,mBAAmB,GAAG,mBAAW,CAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC;oBACrF,UAAU;oBACV,SAAS;oBACT,KAAK;oBACL,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,SAAS;iBAChB,CAAC,CAAC,CAAA;gBACH,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,mBAAmB,CAAC,CAAA;gBAE1E,MAAM,0BAA0B,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAC5E,2BAA2B,EAC3B,OAAO,EACP,EAAE;oBACF,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;wBACrB,OAAO,2BAA2B,CAAA;qBACnC;oBAED,OAAO;wBACL,GAAG,2BAA2B;wBAC9B,OAAO,CAAC,QAAQ,CACd,KAAK,EACL,MAAM,EACN,YAAY,EACZ,SAAS,EACT,UAAU,CACX;qBACF,CAAA;gBACH,CAAC,EAAE,EAAE,CAAC,CAAA;gBACN,OAAO,CAAC,GAAG,CAAC,uDAAuD,EAAE,0BAA0B,CAAC,CAAA;gBAEhG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,mBAAmB,EAAE,GAAG,0BAA0B,CAAC,CAAC,CAAA;gBAE1E,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;aACvC;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,EAAE,CAAC,CAAA;aAC3E;SACF;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,4CAA4C,EAAE,GAAG,CAAC,CAAA;SAC/D;QAED,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAA;QACnD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,4BAA4B,EAAE,OAAO,EAAE,CAAC,CAAA;KAClG;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAA;QAC9C,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAA;KACrF;AACH,CAAC,CAAA;AA3EY,QAAA,iBAAiB,qBA2E7B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agnostack/next-shopify",
|
|
3
|
-
"version": "1.7.5-beta.
|
|
3
|
+
"version": "1.7.5-beta.38",
|
|
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",
|