@agnostack/next-shopify 1.8.19 → 1.9.0-beta.10

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.
Files changed (184) hide show
  1. package/dist/{handlers → lib/handlers}/api/appInstallation.d.ts +1 -0
  2. package/dist/lib/handlers/api/appInstallation.d.ts.map +1 -0
  3. package/dist/{handlers → lib/handlers}/api/appInstallation.js +7 -5
  4. package/dist/lib/handlers/api/appInstallation.js.map +1 -0
  5. package/dist/{handlers → lib/handlers}/api/auth.d.ts +1 -0
  6. package/dist/lib/handlers/api/auth.d.ts.map +1 -0
  7. package/dist/lib/handlers/api/auth.js +39 -0
  8. package/dist/lib/handlers/api/auth.js.map +1 -0
  9. package/dist/{handlers → lib/handlers}/api/billing.d.ts +1 -0
  10. package/dist/lib/handlers/api/billing.d.ts.map +1 -0
  11. package/dist/{handlers → lib/handlers}/api/billing.js +15 -27
  12. package/dist/lib/handlers/api/billing.js.map +1 -0
  13. package/dist/{handlers → lib/handlers}/api/callback.d.ts +1 -0
  14. package/dist/lib/handlers/api/callback.d.ts.map +1 -0
  15. package/dist/{handlers → lib/handlers}/api/callback.js +38 -47
  16. package/dist/lib/handlers/api/callback.js.map +1 -0
  17. package/dist/{handlers → lib/handlers}/api/graph.d.ts +1 -0
  18. package/dist/lib/handlers/api/graph.d.ts.map +1 -0
  19. package/dist/{handlers → lib/handlers}/api/graph.js +20 -29
  20. package/dist/lib/handlers/api/graph.js.map +1 -0
  21. package/dist/{handlers → lib/handlers}/api/index.d.ts +1 -0
  22. package/dist/lib/handlers/api/index.d.ts.map +1 -0
  23. package/dist/lib/handlers/api/index.js +19 -0
  24. package/dist/lib/handlers/api/index.js.map +1 -0
  25. package/dist/{handlers → lib/handlers}/api/proxy.d.ts +1 -0
  26. package/dist/lib/handlers/api/proxy.d.ts.map +1 -0
  27. package/dist/{handlers → lib/handlers}/api/proxy.js +22 -34
  28. package/dist/lib/handlers/api/proxy.js.map +1 -0
  29. package/dist/{handlers → lib/handlers}/api/rest.d.ts +1 -0
  30. package/dist/lib/handlers/api/rest.d.ts.map +1 -0
  31. package/dist/{handlers → lib/handlers}/api/rest.js +15 -24
  32. package/dist/lib/handlers/api/rest.js.map +1 -0
  33. package/dist/lib/handlers/api/types.d.ts +1 -0
  34. package/dist/lib/handlers/api/types.d.ts.map +1 -0
  35. package/dist/lib/handlers/api/types.js +1 -0
  36. package/dist/lib/handlers/api/types.js.map +1 -0
  37. package/dist/{handlers → lib/handlers}/api/uninstall.d.ts +1 -0
  38. package/dist/lib/handlers/api/uninstall.d.ts.map +1 -0
  39. package/dist/{handlers → lib/handlers}/api/uninstall.js +13 -25
  40. package/dist/lib/handlers/api/uninstall.js.map +1 -0
  41. package/dist/{handlers → lib/handlers}/api/webhook.d.ts +1 -0
  42. package/dist/lib/handlers/api/webhook.d.ts.map +1 -0
  43. package/dist/{handlers → lib/handlers}/api/webhook.js +13 -25
  44. package/dist/lib/handlers/api/webhook.js.map +1 -0
  45. package/dist/{handlers → lib/handlers}/index.d.ts +1 -0
  46. package/dist/lib/handlers/index.d.ts.map +1 -0
  47. package/dist/lib/handlers/index.js +6 -0
  48. package/dist/lib/handlers/index.js.map +1 -0
  49. package/dist/{handlers → lib/handlers}/ssr/index.d.ts +1 -0
  50. package/dist/lib/handlers/ssr/index.d.ts.map +1 -0
  51. package/dist/lib/handlers/ssr/index.js +6 -0
  52. package/dist/lib/handlers/ssr/index.js.map +1 -0
  53. package/dist/{handlers → lib/handlers}/ssr/protect.d.ts +2 -1
  54. package/dist/lib/handlers/ssr/protect.d.ts.map +1 -0
  55. package/dist/{handlers → lib/handlers}/ssr/protect.js +19 -17
  56. package/dist/lib/handlers/ssr/protect.js.map +1 -0
  57. package/dist/lib/handlers/ssr/types.d.ts +1 -0
  58. package/dist/lib/handlers/ssr/types.d.ts.map +1 -0
  59. package/dist/lib/handlers/ssr/types.js +1 -0
  60. package/dist/lib/handlers/ssr/types.js.map +1 -0
  61. package/dist/{handlers → lib/handlers}/ssr/wrap.d.ts +2 -1
  62. package/dist/lib/handlers/ssr/wrap.d.ts.map +1 -0
  63. package/dist/lib/handlers/ssr/wrap.js +17 -0
  64. package/dist/lib/handlers/ssr/wrap.js.map +1 -0
  65. package/dist/lib/handlers/types.d.ts +1 -0
  66. package/dist/lib/handlers/types.d.ts.map +1 -0
  67. package/dist/lib/handlers/types.js +1 -0
  68. package/dist/lib/handlers/types.js.map +1 -0
  69. package/dist/lib/index.d.ts +6 -0
  70. package/dist/lib/index.d.ts.map +1 -0
  71. package/dist/lib/index.js +13 -0
  72. package/dist/lib/index.js.map +1 -0
  73. package/dist/lib/types.d.ts +1 -0
  74. package/dist/lib/types.d.ts.map +1 -0
  75. package/dist/lib/types.js +1 -0
  76. package/dist/lib/types.js.map +1 -0
  77. package/dist/{utils → lib/utils}/billing.d.ts +3 -2
  78. package/dist/lib/utils/billing.d.ts.map +1 -0
  79. package/dist/{utils → lib/utils}/billing.js +16 -16
  80. package/dist/lib/utils/billing.js.map +1 -0
  81. package/dist/{utils → lib/utils}/crypto.d.ts +3 -2
  82. package/dist/lib/utils/crypto.d.ts.map +1 -0
  83. package/dist/{utils → lib/utils}/crypto.js +5 -7
  84. package/dist/lib/utils/crypto.js.map +1 -0
  85. package/dist/{utils → lib/utils}/firebase.d.ts +3 -2
  86. package/dist/lib/utils/firebase.d.ts.map +1 -0
  87. package/dist/{utils → lib/utils}/firebase.js +30 -44
  88. package/dist/lib/utils/firebase.js.map +1 -0
  89. package/dist/lib/utils/graph.d.ts +13 -0
  90. package/dist/lib/utils/graph.d.ts.map +1 -0
  91. package/dist/{utils → lib/utils}/graph.js +12 -41
  92. package/dist/lib/utils/graph.js.map +1 -0
  93. package/dist/{utils → lib/utils}/index.d.ts +1 -3
  94. package/dist/lib/utils/index.d.ts.map +1 -0
  95. package/dist/lib/utils/index.js +11 -0
  96. package/dist/lib/utils/index.js.map +1 -0
  97. package/dist/lib/utils/session.d.ts +24 -0
  98. package/dist/lib/utils/session.d.ts.map +1 -0
  99. package/dist/lib/utils/session.js +126 -0
  100. package/dist/lib/utils/session.js.map +1 -0
  101. package/dist/{utils → lib/utils}/shopify-api-js/oauth.d.ts +1 -0
  102. package/dist/lib/utils/shopify-api-js/oauth.d.ts.map +1 -0
  103. package/dist/{utils → lib/utils}/shopify-api-js/oauth.js +13 -26
  104. package/dist/lib/utils/shopify-api-js/oauth.js.map +1 -0
  105. package/dist/{utils → lib/utils}/shopify.d.ts +13 -1
  106. package/dist/lib/utils/shopify.d.ts.map +1 -0
  107. package/dist/{utils → lib/utils}/shopify.js +43 -39
  108. package/dist/lib/utils/shopify.js.map +1 -0
  109. package/dist/lib/utils/types.d.ts +1 -0
  110. package/dist/lib/utils/types.d.ts.map +1 -0
  111. package/dist/lib/utils/types.js +1 -0
  112. package/dist/lib/utils/types.js.map +1 -0
  113. package/dist/{withShopify.d.ts → lib/withShopify.d.ts} +1 -0
  114. package/dist/lib/withShopify.d.ts.map +1 -0
  115. package/dist/lib/withShopify.js +211 -0
  116. package/dist/lib/withShopify.js.map +1 -0
  117. package/dist/runtime/index.d.ts +2 -0
  118. package/dist/runtime/index.d.ts.map +1 -0
  119. package/dist/runtime/index.js +5 -0
  120. package/dist/runtime/index.js.map +1 -0
  121. package/dist/runtime/types.d.ts +1 -0
  122. package/dist/runtime/types.d.ts.map +1 -0
  123. package/dist/runtime/types.js +1 -0
  124. package/dist/runtime/types.js.map +1 -0
  125. package/dist/{utils → shared}/constants.d.ts +1 -0
  126. package/dist/shared/constants.d.ts.map +1 -0
  127. package/dist/{utils → shared}/constants.js +0 -1
  128. package/dist/shared/constants.js.map +1 -0
  129. package/dist/{utils → shared}/display.d.ts +1 -0
  130. package/dist/shared/display.d.ts.map +1 -0
  131. package/dist/{utils → shared}/display.js +35 -37
  132. package/dist/shared/display.js.map +1 -0
  133. package/dist/{utils → shared}/errors.d.ts +1 -11
  134. package/dist/shared/errors.d.ts.map +1 -0
  135. package/dist/{utils → shared}/errors.js +1 -20
  136. package/dist/shared/errors.js.map +1 -0
  137. package/dist/shared/index.d.ts +4 -0
  138. package/dist/shared/index.d.ts.map +1 -0
  139. package/dist/shared/index.js +7 -0
  140. package/dist/shared/index.js.map +1 -0
  141. package/dist/shared/types.d.ts +1 -0
  142. package/dist/shared/types.d.ts.map +1 -0
  143. package/dist/shared/types.js +1 -0
  144. package/dist/shared/types.js.map +1 -0
  145. package/package.json +22 -6
  146. package/dist/handlers/api/appInstallation.js.map +0 -1
  147. package/dist/handlers/api/auth.js +0 -48
  148. package/dist/handlers/api/auth.js.map +0 -1
  149. package/dist/handlers/api/billing.js.map +0 -1
  150. package/dist/handlers/api/callback.js.map +0 -1
  151. package/dist/handlers/api/graph.js.map +0 -1
  152. package/dist/handlers/api/index.js +0 -28
  153. package/dist/handlers/api/index.js.map +0 -1
  154. package/dist/handlers/api/proxy.js.map +0 -1
  155. package/dist/handlers/api/rest.js.map +0 -1
  156. package/dist/handlers/api/uninstall.js.map +0 -1
  157. package/dist/handlers/api/webhook.js.map +0 -1
  158. package/dist/handlers/index.js +0 -15
  159. package/dist/handlers/index.js.map +0 -1
  160. package/dist/handlers/ssr/index.js +0 -15
  161. package/dist/handlers/ssr/index.js.map +0 -1
  162. package/dist/handlers/ssr/protect.js.map +0 -1
  163. package/dist/handlers/ssr/wrap.js +0 -15
  164. package/dist/handlers/ssr/wrap.js.map +0 -1
  165. package/dist/index.d.ts +0 -7
  166. package/dist/index.js +0 -30
  167. package/dist/index.js.map +0 -1
  168. package/dist/utils/billing.js.map +0 -1
  169. package/dist/utils/constants.js.map +0 -1
  170. package/dist/utils/crypto.js.map +0 -1
  171. package/dist/utils/display.js.map +0 -1
  172. package/dist/utils/errors.js.map +0 -1
  173. package/dist/utils/firebase.js.map +0 -1
  174. package/dist/utils/graph.d.ts +0 -25
  175. package/dist/utils/graph.js.map +0 -1
  176. package/dist/utils/index.js +0 -23
  177. package/dist/utils/index.js.map +0 -1
  178. package/dist/utils/session.d.ts +0 -23
  179. package/dist/utils/session.js +0 -133
  180. package/dist/utils/session.js.map +0 -1
  181. package/dist/utils/shopify-api-js/oauth.js.map +0 -1
  182. package/dist/utils/shopify.js.map +0 -1
  183. package/dist/withShopify.js +0 -221
  184. package/dist/withShopify.js.map +0 -1
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getShopifyHelpers = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const js_base64_1 = require("js-base64");
6
+ const shopify_api_1 = require("@shopify/shopify-api");
7
+ const luxon_1 = require("luxon");
8
+ const shared_1 = require("../../shared");
9
+ const billing_1 = require("./billing");
10
+ const shopify_1 = require("./shopify");
11
+ const firebase_1 = require("./firebase");
12
+ const crypto_1 = require("./crypto");
13
+ const getShopifyHelpers = (serverRuntimeConfig, { shop }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
14
+ var _a, _b;
15
+ const shopify = (0, shopify_1.getInitializedShopify)(serverRuntimeConfig);
16
+ const { FB_CONFIG, FB_ROOT_COLLECTION, SESSION_CONFIG, APP_ID, PAYMENT_CONFIG } = serverRuntimeConfig;
17
+ 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);
18
+ const cryptoHandler = crypto_1.CryptoHandler.getInstance(SESSION_CONFIG);
19
+ const sessionHandler = firebase_1.FirebaseSessionHandler.getInstance(FB_CONFIG, {
20
+ collection: FB_ROOT_COLLECTION,
21
+ configurationId: APP_ID,
22
+ });
23
+ //#region internal shopifyHelper implementations
24
+ const decryptVerifySession = ({ req, res } = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
25
+ var _c, _d, _e;
26
+ try {
27
+ const isOnline = ((req != undefined) && (res != undefined));
28
+ const sessionId = (isOnline)
29
+ ? (yield shopify.session.getCurrentId({
30
+ isOnline,
31
+ rawRequest: req,
32
+ rawResponse: res,
33
+ })) : (yield shopify.session.getOfflineId(shop) // NOTE: not sure if this is working yet?
34
+ );
35
+ const _f = (_c = (yield (0, firebase_1.loadCallback)(sessionHandler, shopId, sessionId))) !== null && _c !== void 0 ? _c : {}, { accessToken: encryptedAccessToken } = _f, session = tslib_1.__rest(_f, ["accessToken"]);
36
+ if ((0, shared_1.stringEmpty)(encryptedAccessToken)) {
37
+ throw new shared_1.ShopifySessionMissingError('Missing session');
38
+ }
39
+ if ((0, shared_1.stringNotEmpty)(session === null || session === void 0 ? void 0 : session.shop) && (session.shop !== shop)) {
40
+ throw new Error('Invalid shop');
41
+ }
42
+ // NOTE only online sessions have expirations
43
+ const sessionExpired = isOnline && (!(session === null || session === void 0 ? void 0 : session.expires) || (luxon_1.DateTime.fromISO(session.expires) < luxon_1.DateTime.now()));
44
+ 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)));
45
+ if (!sessionActive) {
46
+ throw new shared_1.ShopifySessionAuthenticationError('Inactive session');
47
+ }
48
+ return Object.assign(Object.assign({}, session), { accessToken: cryptoHandler.decrypt(encryptedAccessToken) });
49
+ }
50
+ catch (error) {
51
+ if (error instanceof shared_1.ShopifySessionAuthenticationError) {
52
+ throw error;
53
+ }
54
+ throw new shared_1.ShopifyAuthenticationError(error === null || error === void 0 ? void 0 : error.message);
55
+ }
56
+ });
57
+ // TODO: handle encrypting other keys
58
+ const ensureEncryptedSession = (_session) => {
59
+ const { accessToken } = _session, session = tslib_1.__rest(_session, ["accessToken"]);
60
+ return Object.assign(Object.assign({}, session), accessToken && {
61
+ accessToken: cryptoHandler.encrypt(accessToken),
62
+ });
63
+ };
64
+ const encryptStoreSession = (session) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
65
+ return ((0, firebase_1.storeCallback)(sessionHandler, shopId, ensureEncryptedSession(session)));
66
+ });
67
+ // TODO: handle encrypting other keys
68
+ const encryptUpdateSession = (session) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
69
+ return ((0, firebase_1.updateCallback)(sessionHandler, shopId, ensureEncryptedSession(session)));
70
+ });
71
+ const buildEmbeddedAppUrl = (_appPath) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
72
+ if ((0, shared_1.stringEmpty)(shop)) {
73
+ return undefined;
74
+ }
75
+ const embeddedAppBaseUrl = yield shopify.auth.buildEmbeddedAppUrl((0, js_base64_1.encode)(`${shop}/admin`));
76
+ const appPath = (0, shared_1.removeLeadingSlash)(_appPath);
77
+ return `${embeddedAppBaseUrl}${(0, shared_1.stringNotEmpty)(appPath) ? `/${appPath}` : ''}`;
78
+ });
79
+ const getVerifiedClients = ({ req, res, apiVersion } = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
80
+ var _g;
81
+ if ((0, shared_1.stringEmpty)(shop)) {
82
+ return undefined;
83
+ }
84
+ try {
85
+ const session = yield decryptVerifySession({ req, res });
86
+ const Graphql = new shopify.clients.Graphql(Object.assign({ session }, apiVersion && { apiVersion }));
87
+ const isOnline = (req != undefined) && (res != undefined);
88
+ if (isOnline && (0, shared_1.isTrue)((_g = serverRuntimeConfig.PAYMENT_CONFIG) === null || _g === void 0 ? void 0 : _g.required)) {
89
+ const confirmationUrl = yield (0, billing_1.ensureBilling)(session);
90
+ if ((0, shared_1.stringNotEmpty)(confirmationUrl)) {
91
+ throw new shared_1.ShopifyAuthenticationError('Invalid payment status', { redirectUrl: confirmationUrl });
92
+ }
93
+ }
94
+ else {
95
+ // NOTE making a test call to ensure a valid session for free apps
96
+ yield Graphql.query({ data: shopify_1.SHOP_QUERY });
97
+ }
98
+ return {
99
+ Graphql,
100
+ Rest: new shopify.clients.Rest(Object.assign({ session }, apiVersion && { apiVersion })),
101
+ // TODO: add support for Storefront client (takes different params)
102
+ // Storefront: shopify.clients.Storefront({ ...apiVersion && { apiVersion } }),
103
+ };
104
+ }
105
+ catch (error) {
106
+ if (error instanceof shopify_api_1.HttpResponseError &&
107
+ error.response.code === 401) {
108
+ throw new shared_1.ShopifyAuthenticationError('Not authenticated');
109
+ }
110
+ throw error;
111
+ }
112
+ });
113
+ //#endregion internal shopifyHelper implementations
114
+ return Object.assign({ shopify, getAppUrl: () => undefined, getVerifiedClients: () => undefined, loadSession: () => ({}), storeSession: () => ({}), updateSession: () => ({}), deleteSessions: () => undefined, findSessionIds: () => ([]), ensureBilling: () => undefined }, shopify && {
115
+ getVerifiedClients,
116
+ getAppUrl: buildEmbeddedAppUrl,
117
+ loadSession: decryptVerifySession,
118
+ storeSession: encryptStoreSession,
119
+ updateSession: (sessionId, data) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return encryptUpdateSession(Object.assign(Object.assign({}, data), { id: sessionId })); }),
120
+ deleteSessions: (sessionIds) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return (0, firebase_1.deleteSessionsCallback)(sessionHandler, shopId, sessionIds); }),
121
+ findSessionIds: (_shop) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { var _h, _j; return (0, firebase_1.findSessionIdsByShop)(sessionHandler, (_j = (_h = shopify === null || shopify === void 0 ? void 0 : shopify.utils) === null || _h === void 0 ? void 0 : _h.sanitizeShop) === null || _j === void 0 ? void 0 : _j.call(_h, _shop)); }),
122
+ ensureBilling: (session, skipBillingCheck) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return (0, billing_1.ensureBilling)(PAYMENT_CONFIG, { session, shopify, skipBillingCheck }); }),
123
+ });
124
+ });
125
+ exports.getShopifyHelpers = getShopifyHelpers;
126
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/lib/utils/session.js"],"names":[],"mappings":";;;;AAAA,yCAAkC;AAClC,sDAAwD;AACxD,iCAAgC;AAEhC,yCAUqB;AACrB,uCAAyC;AACzC,uCAA6D;AAC7D,yCAOmB;AACnB,qCAAwC;AAEjC,MAAM,iBAAiB,GAAG,CAAO,mBAAmB,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;;IACvE,MAAM,OAAO,GAAG,IAAA,+BAAqB,EAAC,mBAAmB,CAAC,CAAA;IAC1D,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,mBAAmB,CAAA;IAErG,MAAM,MAAM,GAAG,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,0CAAE,YAAY,mDAAG,IAAI,CAAC,CAAA;IACnD,MAAM,aAAa,GAAG,sBAAa,CAAC,WAAW,CAAC,cAAc,CAAC,CAAA;IAC/D,MAAM,cAAc,GAAG,iCAAsB,CAAC,WAAW,CACvD,SAAS,EACT;QACE,UAAU,EAAE,kBAAkB;QAC9B,eAAe,EAAE,MAAM;KACxB,CACF,CAAA;IAED,gDAAgD;IAChD,MAAM,oBAAoB,GAAG,CAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE;;QACvD,IAAI;YACF,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC,CAAA;YAC3D,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAC;gBAC1B,CAAC,CAAC,CACA,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;oBACjC,QAAQ;oBACR,UAAU,EAAE,GAAG;oBACf,WAAW,EAAE,GAAG;iBACjB,CAAC,CACH,CAAC,CAAC,CAAC,CACF,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,yCAAyC;aACnF,CAAA;YAEH,MAAM,KAAoD,MAAA,CAAC,MAAM,IAAA,uBAAY,EAAC,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,mCAAI,EAAE,EAAjH,EAAE,WAAW,EAAE,oBAAoB,OAA8E,EAAzE,OAAO,sBAA/C,eAAiD,CAAgE,CAAA;YAEvH,IAAI,IAAA,oBAAW,EAAC,oBAAoB,CAAC,EAAE;gBACrC,MAAM,IAAI,mCAA0B,CAAC,iBAAiB,CAAC,CAAA;aACxD;YAED,IAAI,IAAA,uBAAc,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE;gBAC5D,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;aAChC;YAED,6CAA6C;YAC7C,MAAM,cAAc,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAA,IAAI,CAAC,gBAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,gBAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YAC9G,MAAM,aAAa,GAAG,CAAC,CAAC,cAAc,IAAI,IAAA,oBAAW,EACnD,IAAA,oBAAW,EAAC,MAAA,MAAA,OAAO,CAAC,MAAM,0CAAE,MAAM,0CAAE,QAAQ,EAAE,CAAC,EAC/C,IAAA,oBAAW,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC,CAC5B,CAAC,CAAA;YAEF,IAAI,CAAC,aAAa,EAAE;gBAClB,MAAM,IAAI,0CAAiC,CAAC,kBAAkB,CAAC,CAAA;aAChE;YAED,uCACK,OAAO,KACV,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC,oBAAoB,CAAC,IACzD;SACF;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,KAAK,YAAY,0CAAiC,EAAE;gBACtD,MAAM,KAAK,CAAA;aACZ;YAED,MAAM,IAAI,mCAA0B,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,CAAA;SACrD;IACH,CAAC,CAAA,CAAA;IAED,qCAAqC;IACrC,MAAM,sBAAsB,GAAG,CAAC,QAAQ,EAAE,EAAE;QAC1C,MAAM,EAAE,WAAW,KAAiB,QAAQ,EAApB,OAAO,kBAAK,QAAQ,EAAtC,eAA2B,CAAW,CAAA;QAC5C,uCACK,OAAO,GACP,WAAW,IAAI;YAChB,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC;SAChD,EACF;IACH,CAAC,CAAA;IAED,MAAM,mBAAmB,GAAG,CAAO,OAAO,EAAE,EAAE;QAAC,OAAA,CAC7C,IAAA,wBAAa,EAAC,cAAc,EAAE,MAAM,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC,CACvE,CAAA;MAAA,CAAA;IAED,qCAAqC;IACrC,MAAM,oBAAoB,GAAG,CAAO,OAAO,EAAE,EAAE;QAAC,OAAA,CAC9C,IAAA,yBAAc,EAAC,cAAc,EAAE,MAAM,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC,CACxE,CAAA;MAAA,CAAA;IAED,MAAM,mBAAmB,GAAG,CAAO,QAAQ,EAAE,EAAE;QAC7C,IAAI,IAAA,oBAAW,EAAC,IAAI,CAAC,EAAE;YACrB,OAAO,SAAS,CAAA;SACjB;QAED,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAA,kBAAM,EAAC,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAA;QAC1F,MAAM,OAAO,GAAG,IAAA,2BAAkB,EAAC,QAAQ,CAAC,CAAA;QAC5C,OAAO,GAAG,kBAAkB,GAAG,IAAA,uBAAc,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;IAC/E,CAAC,CAAA,CAAA;IAED,MAAM,kBAAkB,GAAG,CAAO,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE;;QACjE,IAAI,IAAA,oBAAW,EAAC,IAAI,CAAC,EAAE;YACrB,OAAO,SAAS,CAAA;SACjB;QAED,IAAI;YACF,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;YAExD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,iBAAG,OAAO,IAAK,UAAU,IAAI,EAAE,UAAU,EAAE,EAAG,CAAA;YAEzF,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,CAAA;YACzD,IAAI,QAAQ,IAAI,IAAA,eAAM,EAAC,MAAA,mBAAmB,CAAC,cAAc,0CAAE,QAAQ,CAAC,EAAE;gBACpE,MAAM,eAAe,GAAG,MAAM,IAAA,uBAAa,EAAC,OAAO,CAAC,CAAA;gBAEpD,IAAI,IAAA,uBAAc,EAAC,eAAe,CAAC,EAAE;oBACnC,MAAM,IAAI,mCAA0B,CAClC,wBAAwB,EACxB,EAAE,WAAW,EAAE,eAAe,EAAE,CACjC,CAAA;iBACF;aACF;iBAAM;gBACL,kEAAkE;gBAClE,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,oBAAU,EAAE,CAAC,CAAA;aAC1C;YAED,OAAO;gBACL,OAAO;gBACP,IAAI,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,iBAAG,OAAO,IAAK,UAAU,IAAI,EAAE,UAAU,EAAE,EAAG;gBAC5E,mEAAmE;gBACnE,+EAA+E;aAChF,CAAA;SACF;QAAC,OAAO,KAAK,EAAE;YACd,IACE,KAAK,YAAY,+BAAiB;gBAClC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,GAAG,EAC3B;gBACA,MAAM,IAAI,mCAA0B,CAAC,mBAAmB,CAAC,CAAA;aAC1D;YAED,MAAM,KAAK,CAAA;SACZ;IACH,CAAC,CAAA,CAAA;IACD,mDAAmD;IAEnD,uBACE,OAAO,EACP,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,EAC1B,kBAAkB,EAAE,GAAG,EAAE,CAAC,SAAS,EACnC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EACvB,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EACxB,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EACzB,cAAc,EAAE,GAAG,EAAE,CAAC,SAAS,EAC/B,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAC1B,aAAa,EAAE,GAAG,EAAE,CAAC,SAAS,IAC3B,OAAO,IAAI;QACZ,kBAAkB;QAClB,SAAS,EAAE,mBAAmB;QAC9B,WAAW,EAAE,oBAAoB;QACjC,YAAY,EAAE,mBAAmB;QACjC,aAAa,EAAE,CAAO,SAAS,EAAE,IAAI,EAAE,EAAE,0DAAC,OAAA,oBAAoB,iCAAM,IAAI,KAAE,EAAE,EAAE,SAAS,IAAG,CAAA,GAAA;QAC1F,cAAc,EAAE,CAAO,UAAU,EAAE,EAAE,0DAAC,OAAA,IAAA,iCAAsB,EAAC,cAAc,EAAE,MAAM,EAAE,UAAU,CAAC,CAAA,GAAA;QAChG,cAAc,EAAE,CAAO,KAAK,EAAE,EAAE,sEAAC,OAAA,IAAA,+BAAoB,EAAC,cAAc,EAAE,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,0CAAE,YAAY,mDAAG,KAAK,CAAC,CAAC,CAAA,GAAA;QAC5G,aAAa,EAAE,CAAO,OAAO,EAAE,gBAAgB,EAAE,EAAE,0DAAC,OAAA,IAAA,uBAAa,EAAC,cAAc,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAA,GAAA;KAC1H,EACF;AACH,CAAC,CAAA,CAAA;AA9JY,QAAA,iBAAiB,qBA8J7B"}
@@ -6,3 +6,4 @@ export function beginAuth({ config, isOnline, callbackPath, shop: shopProp, stat
6
6
  shop: any;
7
7
  state: any;
8
8
  }): Promise<any>;
9
+ //# sourceMappingURL=oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/shopify-api-js/oauth.js"],"names":[],"mappings":"AAiBO;;;;;;;iBAuDN"}
@@ -1,48 +1,35 @@
1
1
  "use strict";
2
- var __rest = (this && this.__rest) || function (s, e) {
3
- var t = {};
4
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
- t[p] = s[p];
6
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
- t[p[i]] = s[p[i]];
10
- }
11
- return t;
12
- };
13
- var __importDefault = (this && this.__importDefault) || function (mod) {
14
- return (mod && mod.__esModule) ? mod : { "default": mod };
15
- };
16
2
  Object.defineProperty(exports, "__esModule", { value: true });
17
3
  exports.beginAuth = void 0;
18
- const isbot_1 = __importDefault(require("isbot"));
4
+ const tslib_1 = require("tslib");
5
+ const isbot_1 = tslib_1.__importDefault(require("isbot"));
19
6
  const runtime_1 = require("@shopify/shopify-api/runtime");
20
7
  const shopify_api_1 = require("@shopify/shopify-api");
21
8
  const crypto_1 = require("../crypto");
22
9
  const shopify_1 = require("../shopify");
23
10
  // NOTE this is a custom implementation of shopify.auth.begin from @shopify/shopify-api
24
11
  // for leveraging a custom auth state
25
- const beginAuth = async (_a) => {
26
- var { config, isOnline, callbackPath, shop: shopProp, state: stateProp } = _a, adapterArgs = __rest(_a, ["config", "isOnline", "callbackPath", "shop", "state"]);
12
+ const beginAuth = (_a) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
13
+ var { config, isOnline, callbackPath, shop: shopProp, state: stateProp } = _a, adapterArgs = tslib_1.__rest(_a, ["config", "isOnline", "callbackPath", "shop", "state"]);
27
14
  if (config.isCustomStoreApp) {
28
15
  throw new shopify_api_1.PrivateAppError('Cannot perform OAuth for private apps');
29
16
  }
30
- const request = await runtime_1.abstractConvertRequest(adapterArgs);
31
- const response = await runtime_1.abstractConvertIncomingResponse(adapterArgs);
32
- if (isbot_1.default(request.headers['User-Agent'])) {
17
+ const request = yield (0, runtime_1.abstractConvertRequest)(adapterArgs);
18
+ const response = yield (0, runtime_1.abstractConvertIncomingResponse)(adapterArgs);
19
+ if ((0, isbot_1.default)(request.headers['User-Agent'])) {
33
20
  console.log(`Possible bot request to beginAuth: `, {
34
21
  userAgent: request.headers['User-Agent'],
35
22
  });
36
23
  response.statusCode = 410;
37
- return runtime_1.abstractConvertResponse(response, adapterArgs);
24
+ return (0, runtime_1.abstractConvertResponse)(response, adapterArgs);
38
25
  }
39
26
  const cookies = new runtime_1.Cookies(request, response, {
40
27
  keys: [config.apiSecretKey],
41
28
  secure: true,
42
29
  });
43
- const { shop } = shopify_1.getSanitizedShopData(shopProp);
44
- const state = stateProp !== null && stateProp !== void 0 ? stateProp : crypto_1.getNonce();
45
- await cookies.setAndSign(shopify_api_1.STATE_COOKIE_NAME, state, {
30
+ const { shop } = (0, shopify_1.getSanitizedShopData)(shopProp);
31
+ const state = stateProp !== null && stateProp !== void 0 ? stateProp : (0, crypto_1.getNonce)();
32
+ yield cookies.setAndSign(shopify_api_1.STATE_COOKIE_NAME, state, {
46
33
  expires: new Date(Date.now() + 60000),
47
34
  sameSite: 'lax',
48
35
  secure: true,
@@ -58,7 +45,7 @@ const beginAuth = async (_a) => {
58
45
  response.statusCode = 302;
59
46
  response.statusText = 'Found';
60
47
  response.headers = Object.assign(Object.assign(Object.assign({}, response.headers), cookies.response.headers), { Location: `https://${shop}/admin/oauth/authorize?${queryParams}` });
61
- return runtime_1.abstractConvertResponse(response, adapterArgs);
62
- };
48
+ return (0, runtime_1.abstractConvertResponse)(response, adapterArgs);
49
+ });
63
50
  exports.beginAuth = beginAuth;
64
51
  //# sourceMappingURL=oauth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../../src/lib/utils/shopify-api-js/oauth.js"],"names":[],"mappings":";;;;AAAA,0DAAyB;AACzB,0DAKqC;AACrC,sDAG6B;AAE7B,sCAAoC;AACpC,wCAAiD;AAEjD,uFAAuF;AACvF,qCAAqC;AAC9B,MAAM,SAAS,GAAG,CAAO,EAO/B,EAAE,EAAE;QAP2B,EAC9B,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,SAAS,OAEjB,EADI,WAAW,sBANgB,uDAO/B,CADe;IAEd,IAAI,MAAM,CAAC,gBAAgB,EAAE;QAC3B,MAAM,IAAI,6BAAe,CAAC,uCAAuC,CAAC,CAAA;KACnE;IAED,MAAM,OAAO,GAAG,MAAM,IAAA,gCAAsB,EAAC,WAAW,CAAC,CAAA;IACzD,MAAM,QAAQ,GAAG,MAAM,IAAA,yCAA+B,EAAC,WAAW,CAAC,CAAA;IAEnE,IAAI,IAAA,eAAK,EAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE;QACxC,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE;YACjD,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;SACzC,CAAC,CAAA;QACF,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAA;QACzB,OAAO,IAAA,iCAAuB,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;KACtD;IAED,MAAM,OAAO,GAAG,IAAI,iBAAO,CAAC,OAAO,EAAE,QAAQ,EAAE;QAC7C,IAAI,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;QAC3B,MAAM,EAAE,IAAI;KACb,CAAC,CAAA;IAEF,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,8BAAoB,EAAC,QAAQ,CAAC,CAAA;IAC/C,MAAM,KAAK,GAAG,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,IAAA,iBAAQ,GAAE,CAAA;IAErC,MAAM,OAAO,CAAC,UAAU,CAAC,+BAAiB,EAAE,KAAK,EAAE;QACjD,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACrC,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,YAAY;KACnB,CAAC,CAAA;IAEF,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC;QACtC,SAAS,EAAE,MAAM,CAAC,MAAM;QACxB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;QAC/B,YAAY,EAAE,GAAG,MAAM,CAAC,UAAU,MAAM,MAAM,CAAC,QAAQ,GAAG,YAAY,EAAE;QACxE,KAAK;QACL,iBAAiB,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;KAC9C,CAAC,CAAC,QAAQ,EAAE,CAAA;IAEb,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAA;IACzB,QAAQ,CAAC,UAAU,GAAG,OAAO,CAAA;IAC7B,QAAQ,CAAC,OAAO,iDACX,QAAQ,CAAC,OAAO,GAChB,OAAO,CAAC,QAAQ,CAAC,OAAO,KAC3B,QAAQ,EAAE,WAAW,IAAI,0BAA0B,WAAW,EAAE,GACjE,CAAA;IAED,OAAO,IAAA,iCAAuB,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;AACvD,CAAC,CAAA,CAAA;AAvDY,QAAA,SAAS,aAuDrB"}
@@ -24,7 +24,7 @@ export function decodeShopData(token: any): {
24
24
  host: any;
25
25
  store_name: string;
26
26
  };
27
- export function getInitializedShopify(props: any): import("@shopify/shopify-api").Shopify<import("@shopify/shopify-api").ShopifyRestResources>;
27
+ export function getInitializedShopify(props: any): import("@shopify/shopify-api").Shopify<import("@shopify/shopify-api").ShopifyRestResources> | undefined;
28
28
  export function getWebhookHandlers({ APP_WEBHOOKS }?: {
29
29
  APP_WEBHOOKS: any;
30
30
  }): {};
@@ -32,4 +32,16 @@ export function getCallback(data: any, { reAuth, isOnline }: {
32
32
  reAuth: any;
33
33
  isOnline: any;
34
34
  }): any;
35
+ export function getAuthErrorResponse(serverRuntimeConfig: any, { error, shop }: {
36
+ error: any;
37
+ shop: any;
38
+ }): {
39
+ statusCode: number;
40
+ message: any;
41
+ headers: {
42
+ 'X-Shopify-API-Request-Failure-Reauthorize': string;
43
+ 'X-Shopify-API-Request-Failure-Reauthorize-Url': any;
44
+ };
45
+ };
35
46
  export const SHOP_QUERY: "\n {\n shop {\n name\n }\n }\n";
47
+ //# sourceMappingURL=shopify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shopify.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/shopify.js"],"names":[],"mappings":"AAuBO;;WAIN;AAGM;;;YAQN;AAGM;;;EAcN;AAEM;;;;;;;;;;;;;;EA+BN;AAEM,2JAON;AAEM;;OA8DN;AAEM;;;QAYN;AAEM;;;;;;;;;;EAiBN;AAED,uEAMC"}
@@ -1,30 +1,16 @@
1
1
  "use strict";
2
- var __rest = (this && this.__rest) || function (s, e) {
3
- var t = {};
4
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
- t[p] = s[p];
6
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
- t[p[i]] = s[p[i]];
10
- }
11
- return t;
12
- };
13
- var __importDefault = (this && this.__importDefault) || function (mod) {
14
- return (mod && mod.__esModule) ? mod : { "default": mod };
15
- };
16
2
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.SHOP_QUERY = exports.getCallback = exports.getWebhookHandlers = exports.getInitializedShopify = exports.decodeShopData = exports.getSanitizedShopData = exports.allowLocalBypass = exports.getSecurityHeader = void 0;
18
- const chalk_1 = __importDefault(require("chalk"));
3
+ exports.SHOP_QUERY = exports.getAuthErrorResponse = exports.getCallback = exports.getWebhookHandlers = exports.getInitializedShopify = exports.decodeShopData = exports.getSanitizedShopData = exports.allowLocalBypass = exports.getSecurityHeader = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const chalk_1 = tslib_1.__importDefault(require("chalk"));
19
6
  require("@shopify/shopify-api/adapters/node");
20
7
  const shopify_api_1 = require("@shopify/shopify-api");
21
- const jwt_decode_1 = __importDefault(require("jwt-decode"));
8
+ const jwt_decode_1 = tslib_1.__importDefault(require("jwt-decode"));
22
9
  const js_base64_1 = require("js-base64");
23
- const display_1 = require("./display");
24
- const constants_1 = require("./constants");
25
- const VALID_WEBHOOK_TOPICS = Object.keys(constants_1.API_WEBHOOK_TOPICS);
10
+ const shared_1 = require("../../shared");
11
+ const VALID_WEBHOOK_TOPICS = Object.keys(shared_1.API_WEBHOOK_TOPICS);
26
12
  // NOTE rejection response shows accepted value is "frame-ancestors https://admin.shopify.com https://[shop].myshopify.com"
27
- const getSecurityHeader = (shop, { isEmbeddedApp } = {}) => ((display_1.stringNotEmpty(shop) && display_1.isTrue(isEmbeddedApp))
13
+ const getSecurityHeader = (shop, { isEmbeddedApp } = {}) => (((0, shared_1.stringNotEmpty)(shop) && (0, shared_1.isTrue)(isEmbeddedApp))
28
14
  ? `frame-ancestors https://${encodeURIComponent(shop)} https://admin.shopify.com;`
29
15
  : "frame-ancestors 'none';");
30
16
  exports.getSecurityHeader = getSecurityHeader;
@@ -38,7 +24,7 @@ exports.allowLocalBypass = allowLocalBypass;
38
24
  // NOTE: This is a semi-replica of shopify-api-node/src/utils/shop-validator.ts
39
25
  const getSanitizedShopData = (shop, customDomains) => {
40
26
  var _a;
41
- const domainsRegex = display_1.ensureArray(customDomains).reduce((_domainsRegex, customDomain) => {
27
+ const domainsRegex = (0, shared_1.ensureArray)(customDomains).reduce((_domainsRegex, customDomain) => {
42
28
  var _a;
43
29
  return ([
44
30
  ..._domainsRegex,
@@ -46,7 +32,7 @@ const getSanitizedShopData = (shop, customDomains) => {
46
32
  ]);
47
33
  }, ['myshopify\\.com', 'myshopify\\.io']); // HMMM: do we need to add: shopify\\.com
48
34
  const shopUrlRegex = new RegExp(`^([a-zA-Z0-9][a-zA-Z0-9-_]*)\\.(${domainsRegex.join('|')})[/]*$`);
49
- const [sanitizedShop, store_name] = (_a = display_1.ensureString(shop).match(shopUrlRegex)) !== null && _a !== void 0 ? _a : [];
35
+ const [sanitizedShop, store_name] = (_a = (0, shared_1.ensureString)(shop).match(shopUrlRegex)) !== null && _a !== void 0 ? _a : [];
50
36
  return {
51
37
  shop: sanitizedShop,
52
38
  store_name,
@@ -54,11 +40,11 @@ const getSanitizedShopData = (shop, customDomains) => {
54
40
  };
55
41
  exports.getSanitizedShopData = getSanitizedShopData;
56
42
  const decodeShopData = (token) => {
57
- if (display_1.stringEmpty(token)) {
43
+ if ((0, shared_1.stringEmpty)(token)) {
58
44
  return {};
59
45
  }
60
- const { dest, sid } = jwt_decode_1.default(token.replace('Bearer '));
61
- if (display_1.stringEmpty(dest)) {
46
+ const { dest, sid } = (0, jwt_decode_1.default)(token.replace('Bearer '));
47
+ if ((0, shared_1.stringEmpty)(dest)) {
62
48
  return {};
63
49
  }
64
50
  let _shop;
@@ -68,8 +54,8 @@ const decodeShopData = (token) => {
68
54
  catch (ignore) {
69
55
  console.log('Ignoring error decoding dest', ignore);
70
56
  }
71
- const { shop, store_name, } = exports.getSanitizedShopData(_shop !== null && _shop !== void 0 ? _shop : dest);
72
- const host = display_1.stringNotEmpty(shop) ? js_base64_1.encode(`${shop}/admin`) : undefined;
57
+ const { shop, store_name, } = (0, exports.getSanitizedShopData)(_shop !== null && _shop !== void 0 ? _shop : dest);
58
+ const host = (0, shared_1.stringNotEmpty)(shop) ? (0, js_base64_1.encode)(`${shop}/admin`) : undefined;
73
59
  return {
74
60
  token,
75
61
  dest,
@@ -82,33 +68,33 @@ const decodeShopData = (token) => {
82
68
  exports.decodeShopData = decodeShopData;
83
69
  const getInitializedShopify = (props) => {
84
70
  // NOTE: this should handle running in next to test non-shopify functionality
85
- if (exports.allowLocalBypass(props)) {
71
+ if ((0, exports.allowLocalBypass)(props)) {
86
72
  return undefined;
87
73
  }
88
- return shopify_api_1.shopifyApi(props.APP_CONFIG);
74
+ return (0, shopify_api_1.shopifyApi)(props.APP_CONFIG);
89
75
  };
90
76
  exports.getInitializedShopify = getInitializedShopify;
91
- const getWebhookHandlers = ({ APP_WEBHOOKS } = {}) => (Object.entries(display_1.ensureObject(APP_WEBHOOKS)).reduce((_webhookHandlers, [webhookTopic, webhooks]) => {
77
+ const getWebhookHandlers = ({ APP_WEBHOOKS } = {}) => (Object.entries((0, shared_1.ensureObject)(APP_WEBHOOKS)).reduce((_webhookHandlers, [webhookTopic, webhooks]) => {
92
78
  if (!VALID_WEBHOOK_TOPICS.includes(webhookTopic)) {
93
79
  console.warn(`Ignoring unsupported webhook topic: ${webhookTopic}`);
94
80
  return _webhookHandlers;
95
81
  }
96
- return Object.assign(Object.assign({}, _webhookHandlers), { [webhookTopic]: display_1.ensureArray(webhooks).reduce((_topicWebhooks, _a) => {
82
+ return Object.assign(Object.assign({}, _webhookHandlers), { [webhookTopic]: (0, shared_1.ensureArray)(webhooks).reduce((_topicWebhooks, _a) => {
97
83
  var { url, path, callback: _callback, callbackUrl: _callbackUrl, deliveryMethod = shopify_api_1.DeliveryMethod.Http } = _a,
98
84
  // NOTE: this lets us support more advanced webhook types (EventBridgeWebhookHandler or PubSubWebhookHandler)
99
- webhookConfig = __rest(_a, ["url", "path", "callback", "callbackUrl", "deliveryMethod"]);
85
+ webhookConfig = tslib_1.__rest(_a, ["url", "path", "callback", "callbackUrl", "deliveryMethod"]);
100
86
  const callbackUrl = _callbackUrl || url || path;
101
87
  console.info(`${chalk_1.default.yellowBright('next-shopify')} - [${chalk_1.default.bold(webhookTopic)}]: ${`Adding webhook handler [${deliveryMethod}]${callbackUrl ? ` using callbackUrl: ${callbackUrl}` : ''}. ${`Note, this can safely be called again in case running in serverless (shopify will not duplicate registrations for same callback).`}`}`);
102
88
  return [
103
89
  ..._topicWebhooks,
104
90
  Object.assign(Object.assign(Object.assign({ deliveryMethod }, webhookConfig), callbackUrl && { callbackUrl }), (callbackUrl || _callback) && {
105
- callback: async (topic, shop, rawBody, webhookId, apiVersion) => {
91
+ callback: (topic, shop, rawBody, webhookId, apiVersion) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
106
92
  if (_callback) {
107
93
  console.log(`Webhook callback for ${shop}:${topic}:${webhookId}`);
108
94
  return _callback(topic, shop, rawBody, webhookId, apiVersion);
109
95
  }
110
96
  return true;
111
- },
97
+ }),
112
98
  })
113
99
  ];
114
100
  }, []) });
@@ -116,17 +102,35 @@ const getWebhookHandlers = ({ APP_WEBHOOKS } = {}) => (Object.entries(display_1.
116
102
  exports.getWebhookHandlers = getWebhookHandlers;
117
103
  const getCallback = (data, { reAuth, isOnline }) => {
118
104
  const authCallbacks = reAuth ? {
119
- online: data[constants_1.API_ROUTE_NAMES.AUTH_ONLINE_CALLBACK_REAUTH],
120
- offline: data[constants_1.API_ROUTE_NAMES.AUTH_OFFLINE_CALLBACK_REAUTH],
105
+ online: data[shared_1.API_ROUTE_NAMES.AUTH_ONLINE_CALLBACK_REAUTH],
106
+ offline: data[shared_1.API_ROUTE_NAMES.AUTH_OFFLINE_CALLBACK_REAUTH],
121
107
  } : {
122
- online: data[constants_1.API_ROUTE_NAMES.AUTH_ONLINE_CALLBACK],
123
- offline: data[constants_1.API_ROUTE_NAMES.AUTH_OFFLINE_CALLBACK],
108
+ online: data[shared_1.API_ROUTE_NAMES.AUTH_ONLINE_CALLBACK],
109
+ offline: data[shared_1.API_ROUTE_NAMES.AUTH_OFFLINE_CALLBACK],
124
110
  };
125
111
  return isOnline
126
112
  ? authCallbacks.online
127
113
  : authCallbacks.offline || authCallbacks.online;
128
114
  };
129
115
  exports.getCallback = getCallback;
116
+ const getAuthErrorResponse = (serverRuntimeConfig, { error, shop }) => {
117
+ const { message, data } = error;
118
+ const { API_URLS } = serverRuntimeConfig;
119
+ const queryParams = new URLSearchParams({
120
+ shop,
121
+ reAuth: (error instanceof shared_1.ShopifySessionAuthenticationError),
122
+ }).toString();
123
+ const reauthorizationUrl = (data === null || data === void 0 ? void 0 : data.redirectUrl) || `${API_URLS[shared_1.API_ROUTE_NAMES.AUTH_ONLINE]}?${queryParams}`; // HMMMMM: do we not need host here??
124
+ return {
125
+ statusCode: 403,
126
+ message,
127
+ headers: {
128
+ 'X-Shopify-API-Request-Failure-Reauthorize': '1',
129
+ 'X-Shopify-API-Request-Failure-Reauthorize-Url': reauthorizationUrl,
130
+ },
131
+ };
132
+ };
133
+ exports.getAuthErrorResponse = getAuthErrorResponse;
130
134
  exports.SHOP_QUERY = `
131
135
  {
132
136
  shop {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shopify.js","sourceRoot":"","sources":["../../../src/lib/utils/shopify.js"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/utils/types.ts"],"names":[],"mappings":""}
@@ -2,3 +2,4 @@ export function withShopify(nextPhase: any, { nextConfig, ...config }: {
2
2
  [x: string]: any;
3
3
  nextConfig: any;
4
4
  }): Promise<any>;
5
+ //# sourceMappingURL=withShopify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withShopify.d.ts","sourceRoot":"","sources":["../../src/lib/withShopify.js"],"names":[],"mappings":"AAwBO;;;iBA6WN"}