@shopify/shopify-app-remix 3.1.0 → 3.3.0

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 (92) hide show
  1. package/README.md +56 -12
  2. package/dist/cjs/server/authenticate/admin/authenticate.js +2 -0
  3. package/dist/cjs/server/authenticate/admin/authenticate.js.map +1 -1
  4. package/dist/cjs/server/authenticate/admin/billing/create-usage-record.js +36 -0
  5. package/dist/cjs/server/authenticate/admin/billing/create-usage-record.js.map +1 -0
  6. package/dist/cjs/server/authenticate/admin/helpers/redirect.js +21 -5
  7. package/dist/cjs/server/authenticate/admin/helpers/redirect.js.map +1 -1
  8. package/dist/cjs/server/authenticate/admin/scope/client/fetch-scopes-details.js +26 -0
  9. package/dist/cjs/server/authenticate/admin/scope/client/fetch-scopes-details.js.map +1 -0
  10. package/dist/cjs/server/authenticate/admin/scope/client/revoke-scopes.js +1 -1
  11. package/dist/cjs/server/authenticate/admin/scope/client/revoke-scopes.js.map +1 -1
  12. package/dist/cjs/server/authenticate/admin/scope/query.js +13 -21
  13. package/dist/cjs/server/authenticate/admin/scope/query.js.map +1 -1
  14. package/dist/cjs/server/authenticate/admin/scope/request.js +4 -7
  15. package/dist/cjs/server/authenticate/admin/scope/request.js.map +1 -1
  16. package/dist/cjs/server/authenticate/admin/scope/revoke.js +4 -5
  17. package/dist/cjs/server/authenticate/admin/scope/revoke.js.map +1 -1
  18. package/dist/cjs/server/index.js +4 -0
  19. package/dist/cjs/server/index.js.map +1 -1
  20. package/dist/cjs/server/shopify-app.js +5 -1
  21. package/dist/cjs/server/shopify-app.js.map +1 -1
  22. package/dist/cjs/server/test-helpers/index.js +8 -0
  23. package/dist/cjs/server/test-helpers/index.js.map +1 -0
  24. package/dist/cjs/server/test-helpers/test-config.js +33 -0
  25. package/dist/cjs/server/test-helpers/test-config.js.map +1 -0
  26. package/dist/cjs/server/version.js +1 -1
  27. package/dist/cjs/session-storage/shopify-app-session-storage-memory/dist/esm/memory.js +29 -0
  28. package/dist/cjs/session-storage/shopify-app-session-storage-memory/dist/esm/memory.js.map +1 -0
  29. package/dist/esm/server/authenticate/admin/authenticate.mjs +2 -0
  30. package/dist/esm/server/authenticate/admin/authenticate.mjs.map +1 -1
  31. package/dist/esm/server/authenticate/admin/billing/create-usage-record.mjs +34 -0
  32. package/dist/esm/server/authenticate/admin/billing/create-usage-record.mjs.map +1 -0
  33. package/dist/esm/server/authenticate/admin/helpers/redirect.mjs +21 -5
  34. package/dist/esm/server/authenticate/admin/helpers/redirect.mjs.map +1 -1
  35. package/dist/esm/server/authenticate/admin/scope/client/fetch-scopes-details.mjs +24 -0
  36. package/dist/esm/server/authenticate/admin/scope/client/fetch-scopes-details.mjs.map +1 -0
  37. package/dist/esm/server/authenticate/admin/scope/client/revoke-scopes.mjs +1 -1
  38. package/dist/esm/server/authenticate/admin/scope/client/revoke-scopes.mjs.map +1 -1
  39. package/dist/esm/server/authenticate/admin/scope/query.mjs +13 -21
  40. package/dist/esm/server/authenticate/admin/scope/query.mjs.map +1 -1
  41. package/dist/esm/server/authenticate/admin/scope/request.mjs +4 -7
  42. package/dist/esm/server/authenticate/admin/scope/request.mjs.map +1 -1
  43. package/dist/esm/server/authenticate/admin/scope/revoke.mjs +4 -5
  44. package/dist/esm/server/authenticate/admin/scope/revoke.mjs.map +1 -1
  45. package/dist/esm/server/index.mjs +1 -1
  46. package/dist/esm/server/shopify-app.mjs +5 -1
  47. package/dist/esm/server/shopify-app.mjs.map +1 -1
  48. package/dist/esm/server/test-helpers/index.mjs +2 -0
  49. package/dist/esm/server/test-helpers/index.mjs.map +1 -0
  50. package/dist/esm/server/test-helpers/test-config.mjs +31 -0
  51. package/dist/esm/server/test-helpers/test-config.mjs.map +1 -0
  52. package/dist/esm/server/version.mjs +1 -1
  53. package/dist/esm/session-storage/shopify-app-session-storage-memory/dist/esm/memory.mjs +27 -0
  54. package/dist/esm/session-storage/shopify-app-session-storage-memory/dist/esm/memory.mjs.map +1 -0
  55. package/dist/ts/server/authenticate/admin/authenticate.d.ts.map +1 -1
  56. package/dist/ts/server/authenticate/admin/billing/create-usage-record.d.ts +5 -0
  57. package/dist/ts/server/authenticate/admin/billing/create-usage-record.d.ts.map +1 -0
  58. package/dist/ts/server/authenticate/admin/billing/index.d.ts +1 -0
  59. package/dist/ts/server/authenticate/admin/billing/index.d.ts.map +1 -1
  60. package/dist/ts/server/authenticate/admin/billing/types.d.ts +138 -2
  61. package/dist/ts/server/authenticate/admin/billing/types.d.ts.map +1 -1
  62. package/dist/ts/server/authenticate/admin/helpers/redirect.d.ts.map +1 -1
  63. package/dist/ts/server/authenticate/admin/scope/client/{fetch-scopes-information.d.ts → fetch-scopes-details.d.ts} +3 -3
  64. package/dist/ts/server/authenticate/admin/scope/client/fetch-scopes-details.d.ts.map +1 -0
  65. package/dist/ts/server/authenticate/admin/scope/query.d.ts +4 -4
  66. package/dist/ts/server/authenticate/admin/scope/query.d.ts.map +1 -1
  67. package/dist/ts/server/authenticate/admin/scope/request.d.ts.map +1 -1
  68. package/dist/ts/server/authenticate/admin/scope/revoke.d.ts +3 -1
  69. package/dist/ts/server/authenticate/admin/scope/revoke.d.ts.map +1 -1
  70. package/dist/ts/server/authenticate/admin/scope/types.d.ts +6 -9
  71. package/dist/ts/server/authenticate/admin/scope/types.d.ts.map +1 -1
  72. package/dist/ts/server/authenticate/admin/types.d.ts +1 -1
  73. package/dist/ts/server/authenticate/admin/types.d.ts.map +1 -1
  74. package/dist/ts/server/index.d.ts +2 -1
  75. package/dist/ts/server/index.d.ts.map +1 -1
  76. package/dist/ts/server/shopify-app.d.ts.map +1 -1
  77. package/dist/ts/server/test-helpers/index.d.ts +2 -0
  78. package/dist/ts/server/test-helpers/index.d.ts.map +1 -0
  79. package/dist/ts/server/test-helpers/test-config.d.ts +36 -0
  80. package/dist/ts/server/test-helpers/test-config.d.ts.map +1 -0
  81. package/dist/ts/server/types-contexts.d.ts +4 -1
  82. package/dist/ts/server/types-contexts.d.ts.map +1 -1
  83. package/dist/ts/server/types.d.ts +1 -1
  84. package/dist/ts/server/types.d.ts.map +1 -1
  85. package/dist/ts/server/version.d.ts +1 -1
  86. package/dist/tsconfig.build.tsbuildinfo +1 -1
  87. package/package.json +34 -29
  88. package/dist/cjs/server/authenticate/admin/scope/client/fetch-scopes-information.js +0 -23
  89. package/dist/cjs/server/authenticate/admin/scope/client/fetch-scopes-information.js.map +0 -1
  90. package/dist/esm/server/authenticate/admin/scope/client/fetch-scopes-information.mjs +0 -21
  91. package/dist/esm/server/authenticate/admin/scope/client/fetch-scopes-information.mjs.map +0 -1
  92. package/dist/ts/server/authenticate/admin/scope/client/fetch-scopes-information.d.ts.map +0 -1
package/README.md CHANGED
@@ -189,7 +189,7 @@ to handle automatic app installations and scope updates, while utilizing
189
189
  [token exchange](https://shopify.dev/docs/apps/auth/get-access-tokens/token-exchange) to retrieve an access token for
190
190
  authenticated API access.
191
191
 
192
- ##### Enabling this new strategy in your app
192
+ #### Enabling this new strategy in your app
193
193
 
194
194
  > [!NOTE]
195
195
  > Newly created Remix apps from the template after February 1st 2024 has this feature enabled by default.
@@ -198,25 +198,69 @@ authenticated API access.
198
198
  by configuring your scopes [through the Shopify CLI](https://shopify.dev/docs/apps/tools/cli/configuration).
199
199
  2. Enable the future flag `unstable_newEmbeddedAuthStrategy` in your app's server configuration file.
200
200
 
201
+ ```ts
202
+ // my-app/app/shopify.server.ts
203
+ const shopify = shopifyApp({
204
+ ...
205
+ isEmbeddedApp: true,
206
+ future: {
207
+ unstable_newEmbeddedAuthStrategy: true,
208
+ }
209
+ })
210
+ ```
211
+
212
+ 3. Enjoy a smoother and faster app installation process.
213
+
214
+ ##### Learn more about
215
+
216
+ - [How token exchange works](https://shopify.dev/docs/apps/auth/get-access-tokens/token-exchange)
217
+ - [Using Shopify managed installation](https://shopify.dev/docs/apps/auth/installation#shopify-managed-installation)
218
+ - [Configuring access scopes through the Shopify CLI](https://shopify.dev/docs/apps/tools/cli/configuration)
219
+
220
+ ### Testing your app
221
+
222
+ This package exports a helper method through `@shopify/shopify-app-remix/test-helpers` to simplify testing: `testConfig()`. This method can be used to pass dummy configuration properties to `shopifyApp()`.
223
+
224
+ If your testing framework supports setting environment variables, we recommend using an environment variable, for example "SHOPIFY_TESTING" to replace your default config with the config returned from `testConfig()`.
225
+
201
226
  ```ts
202
227
  // my-app/app/shopify.server.ts
203
- const shopify = shopifyApp({
228
+ import { testConfig } from "@shopify/shopify-app-remix/test-helpers";
229
+ ...
230
+ const config = {
204
231
  ...
205
- isEmbeddedApp: true,
206
- future: {
207
- unstable_newEmbeddedAuthStrategy: true,
208
- }
209
- })
232
+ };
233
+
234
+ if (process.env.SHOPIFY_TESTING) {
235
+ Object.assign(config, testConfig());
236
+ }
210
237
 
238
+ const shopify = shopifyApp(config);
239
+ ...
211
240
  ```
212
241
 
213
- 3. Enjoy a smoother and faster app installation process.
242
+ `testConfig()` accepts a config object as an optional parameter. The config values provided override the default config values returned by `testConfig()`. This is especially useful for integration testing and end-to-end testing to ensure `shopifyApp()` reads the sessions from the development database.
214
243
 
215
- ###### Learn more about:
244
+ ```ts
245
+ // my-app/app/shopify.server.ts
246
+ import { testConfig } from "@shopify/shopify-app-remix/test-helpers";
247
+ ...
248
+ const sessionStorage = new PrismaSessionStorage(prisma);
249
+ const config = {
250
+ ...
251
+ sessionStorage,
252
+ ...
253
+ };
216
254
 
217
- - [How token exchange works](https://shopify.dev/docs/apps/auth/get-access-tokens/token-exchange)
218
- - [Using Shopify managed installation](https://shopify.dev/docs/apps/auth/installation#shopify-managed-installation)
219
- - [Configuring access scopes through the Shopify CLI](https://shopify.dev/docs/apps/tools/cli/configuration)
255
+ if (process.env.SHOPIFY_TESTING) {
256
+ Object.assign(config, testConfig());
257
+ }
258
+
259
+ if (process.env.SHOPIFY_TESTING === "e2e") {
260
+ Object.assign(config, testConfig({ sessionStorage }));
261
+ }
262
+ ...
263
+ ```
220
264
 
221
265
  ## Gotchas / Troubleshooting
222
266
 
@@ -11,6 +11,7 @@ var cancel = require('./billing/cancel.js');
11
11
  var require$1 = require('./billing/require.js');
12
12
  var request = require('./billing/request.js');
13
13
  var check = require('./billing/check.js');
14
+ var createUsageRecord = require('./billing/create-usage-record.js');
14
15
  var createAdminApiContext = require('./helpers/create-admin-api-context.js');
15
16
  var ensureAppIsEmbeddedIfRequired = require('./helpers/ensure-app-is-embedded-if-required.js');
16
17
  var ensureSessionTokenSearchParamIfRequired = require('./helpers/ensure-session-token-search-param-if-required.js');
@@ -45,6 +46,7 @@ function authStrategyFactory({ strategy, ...params }) {
45
46
  check: check.checkBillingFactory(params, request$1, session),
46
47
  request: request.requestBillingFactory(params, request$1, session),
47
48
  cancel: cancel.cancelBillingFactory(params, request$1, session),
49
+ createUsageRecord: createUsageRecord.createUsageRecordFactory(params, request$1, session),
48
50
  },
49
51
  session,
50
52
  cors: ensureCorsHeaders.ensureCORSHeadersFactory(params, request$1),
@@ -1 +1 @@
1
- {"version":3,"file":"authenticate.js","sources":["../../../../../../src/server/authenticate/admin/authenticate.ts"],"sourcesContent":[null],"names":["renderAppBridge","request","createAdminApiContext","requireBillingFactory","checkBillingFactory","requestBillingFactory","cancelBillingFactory","ensureCORSHeadersFactory","redirectFactory","scopesApiFactory","respondToBotRequest","respondToOptionsRequest","getSessionTokenHeader","validateShopAndHostParams","ensureAppIsEmbeddedIfRequired","ensureSessionTokenSearchParamIfRequired","getSessionTokenFromUrlParam","validateSessionToken"],"mappings":"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"}
1
+ {"version":3,"file":"authenticate.js","sources":["../../../../../../src/server/authenticate/admin/authenticate.ts"],"sourcesContent":[null],"names":["renderAppBridge","request","createAdminApiContext","requireBillingFactory","checkBillingFactory","requestBillingFactory","cancelBillingFactory","createUsageRecordFactory","ensureCORSHeadersFactory","redirectFactory","scopesApiFactory","respondToBotRequest","respondToOptionsRequest","getSessionTokenHeader","validateShopAndHostParams","ensureAppIsEmbeddedIfRequired","ensureSessionTokenSearchParamIfRequired","getSessionTokenFromUrlParam","validateSessionToken"],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ 'use strict';
2
+
3
+ var shopifyApi = require('@shopify/shopify-api');
4
+ require('@remix-run/server-runtime');
5
+ var redirectToAuthPage = require('../helpers/redirect-to-auth-page.js');
6
+ var invalidateAccessToken = require('../../helpers/invalidate-access-token.js');
7
+ require('isbot');
8
+ require('../../../types.js');
9
+
10
+ function createUsageRecordFactory(params, request, session) {
11
+ return async function createUsageRecord(options) {
12
+ const { api, logger } = params;
13
+ logger.debug('Create usage record', { shop: session.shop, ...options });
14
+ try {
15
+ return await api.billing.createUsageRecord({
16
+ ...options,
17
+ session,
18
+ });
19
+ }
20
+ catch (error) {
21
+ if (error instanceof shopifyApi.HttpResponseError && error.response.code === 401) {
22
+ logger.debug('API token was invalid, redirecting to OAuth', {
23
+ shop: session.shop,
24
+ });
25
+ await invalidateAccessToken.invalidateAccessToken(params, session);
26
+ throw await redirectToAuthPage.redirectToAuthPage(params, request, session.shop);
27
+ }
28
+ else {
29
+ throw error;
30
+ }
31
+ }
32
+ };
33
+ }
34
+
35
+ exports.createUsageRecordFactory = createUsageRecordFactory;
36
+ //# sourceMappingURL=create-usage-record.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-usage-record.js","sources":["../../../../../../../src/server/authenticate/admin/billing/create-usage-record.ts"],"sourcesContent":[null],"names":["HttpResponseError","invalidateAccessToken","redirectToAuthPage"],"mappings":";;;;;;;;;SAQgB,wBAAwB,CACtC,MAAmB,EACnB,OAAgB,EAChB,OAAgB,EAAA;AAEhB,IAAA,OAAO,eAAe,iBAAiB,CAAC,OAAiC,EAAA;AACvE,QAAA,MAAM,EAAC,GAAG,EAAE,MAAM,EAAC,GAAG,MAAM,CAAC;AAE7B,QAAA,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO,EAAC,CAAC,CAAC;AAEtE,QAAA,IAAI;AACF,YAAA,OAAO,MAAM,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC;AACzC,gBAAA,GAAG,OAAO;gBACV,OAAO;AACR,aAAA,CAAC,CAAC;SACJ;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,KAAK,YAAYA,4BAAiB,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,GAAG,EAAE;AACrE,gBAAA,MAAM,CAAC,KAAK,CAAC,6CAA6C,EAAE;oBAC1D,IAAI,EAAE,OAAO,CAAC,IAAI;AACnB,iBAAA,CAAC,CAAC;AACH,gBAAA,MAAMC,2CAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC7C,MAAM,MAAMC,qCAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;aAC/D;iBAAM;AACL,gBAAA,MAAM,KAAK,CAAC;aACb;SACF;AACH,KAAC,CAAC;AACJ;;;;"}
@@ -9,7 +9,13 @@ function redirectFactory(params, request, shop) {
9
9
  const { config, logger } = params;
10
10
  return function redirect(url, init) {
11
11
  const { searchParams } = new URL(request.url);
12
- const parsedUrl = parseURL(url, request.url, shop);
12
+ const { url: parsedUrl, target } = parseURL({
13
+ params,
14
+ url,
15
+ base: config.appUrl,
16
+ shop,
17
+ init,
18
+ });
13
19
  logger.debug('Redirecting', { url: parsedUrl.toString() });
14
20
  const isSameOrigin = parsedUrl.origin === config.appUrl;
15
21
  if (isSameOrigin || url.startsWith('/')) {
@@ -19,7 +25,6 @@ function redirectFactory(params, request, shop) {
19
25
  }
20
26
  });
21
27
  }
22
- const target = (typeof init !== 'number' && init?.target) || '_self';
23
28
  if (target === '_self') {
24
29
  if (isBounceRequest(request)) {
25
30
  throw renderAppBridge.renderAppBridge(params, request, {
@@ -58,14 +63,25 @@ function isEmbeddedRequest(request) {
58
63
  const { searchParams } = new URL(request.url);
59
64
  return searchParams.get('embedded') === '1';
60
65
  }
61
- function parseURL(url, base, shop) {
66
+ function parseURL({ params, base, init, shop, url }) {
67
+ let target = typeof init !== 'number' && init?.target ? init.target : undefined;
62
68
  if (isAdminRemotePath(url)) {
69
+ const { config } = params;
63
70
  const adminPath = getAdminRemotePath(url);
64
71
  const cleanShopName = shop.replace('.myshopify.com', '');
65
- return new URL(`https://admin.shopify.com/store/${cleanShopName}${adminPath}`);
72
+ if (!target) {
73
+ target = config.isEmbeddedApp ? '_parent' : '_self';
74
+ }
75
+ return {
76
+ url: new URL(`https://admin.shopify.com/store/${cleanShopName}${adminPath}`),
77
+ target,
78
+ };
66
79
  }
67
80
  else {
68
- return new URL(url, base);
81
+ return {
82
+ url: new URL(url, base),
83
+ target: target ?? '_self',
84
+ };
69
85
  }
70
86
  }
71
87
  const ADMIN_REGEX = /^shopify:\/*admin\//i;
@@ -1 +1 @@
1
- {"version":3,"file":"redirect.js","sources":["../../../../../../../src/server/authenticate/admin/helpers/redirect.ts"],"sourcesContent":[null],"names":["renderAppBridge","remixRedirect","redirectWithAppBridgeHeaders","getSessionTokenHeader"],"mappings":";;;;;;;SAkBgB,eAAe,CAC7B,MAAmB,EACnB,OAAgB,EAChB,IAAY,EAAA;AAEZ,IAAA,MAAM,EAAC,MAAM,EAAE,MAAM,EAAC,GAAG,MAAM,CAAC;AAEhC,IAAA,OAAO,SAAS,QAAQ,CAAC,GAAG,EAAE,IAAkB,EAAA;QAC9C,MAAM,EAAC,YAAY,EAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5C,QAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAEnD,QAAA,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAC,CAAC,CAAC;QAEzD,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC;QACxD,IAAI,YAAY,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACvC,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,KAAI;gBAClC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;oBACpC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;iBACxC;AACH,aAAC,CAAC,CAAC;SACJ;AAED,QAAA,MAAM,MAAM,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;AACrE,QAAA,IAAI,MAAM,KAAK,OAAO,EAAE;AACtB,YAAA,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE;AAC5B,gBAAA,MAAMA,+BAAe,CAAC,MAAM,EAAE,OAAO,EAAE;AACrC,oBAAA,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE;oBACzB,MAAM;AACP,iBAAA,CAAC,CAAC;aACJ;iBAAM;gBACL,OAAOC,sBAAa,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;aAClD;SACF;AAAM,aAAA,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE;AACjC,YAAA,MAAMC,yDAA4B,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC1D;AAAM,aAAA,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE;AACrC,YAAA,MAAMF,+BAAe,CAAC,MAAM,EAAE,OAAO,EAAE;AACrC,gBAAA,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE;gBACzB,MAAM;AACP,aAAA,CAAC,CAAC;SACJ;AACD,QAAA,OAAOC,sBAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAClC,KAAC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,OAAgB,EAAA;AACvC,IAAA,QACE,OAAO,CAACE,2CAAqB,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,EACvC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,OAAgB,EAAA;AACrC,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC;IACvC,MAAM,kBAAkB,GAAG,OAAO,CAACA,2CAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;AAEnE,IAAA,QACE,kBAAkB;QAClB,CAAC,eAAe,CAAC,OAAO,CAAC;SACxB,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EACvC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAgB,EAAA;IACzC,MAAM,EAAC,YAAY,EAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAE5C,OAAO,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC;AAC9C,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW,EAAE,IAAY,EAAE,IAAY,EAAA;AACvD,IAAA,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE;AAC1B,QAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QACzD,OAAO,IAAI,GAAG,CACZ,CAAA,gCAAA,EAAmC,aAAa,CAAG,EAAA,SAAS,CAAE,CAAA,CAC/D,CAAC;KACH;SAAM;AACL,QAAA,OAAO,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KAC3B;AACH,CAAC;AAED,MAAM,WAAW,GAAG,sBAAsB,CAAC;AAE3C,SAAS,iBAAiB,CAAC,GAAW,EAAA;AACpC,IAAA,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAiB,EAAA;AAC3C,IAAA,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,OAAO,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,2BAA2B,GAAG;IAClC,MAAM;IACN,QAAQ;IACR,UAAU;IACV,SAAS;IACT,UAAU;IACV,MAAM;IACN,WAAW;IACX,MAAM;IACN,UAAU;;IAEV,WAAW;CACZ,CAAC;AAEF,SAAS,sBAAsB,CAAC,GAAiB,EAAA;AAC/C,IAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B,IAAA,2BAA2B,CAAC,OAAO,CAAC,CAAC,KAAK,KACxC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAClC,CAAC;AACF,IAAA,OAAO,MAAM,CAAC;AAChB;;;;"}
1
+ {"version":3,"file":"redirect.js","sources":["../../../../../../../src/server/authenticate/admin/helpers/redirect.ts"],"sourcesContent":[null],"names":["renderAppBridge","remixRedirect","redirectWithAppBridgeHeaders","getSessionTokenHeader"],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ 'use strict';
2
+
3
+ const FETCH_SCOPES_DETAIL_QUERY = `#graphql
4
+ query FetchAccessScopes{
5
+ app {
6
+ requestedAccessScopes {
7
+ handle
8
+ }
9
+ optionalAccessScopes {
10
+ handle
11
+ }
12
+ installation {
13
+ accessScopes {
14
+ handle
15
+ }
16
+ }
17
+ }
18
+ }`;
19
+ async function fetchScopeDetail(admin) {
20
+ const fetchScopeDetailResult = await admin.graphql(FETCH_SCOPES_DETAIL_QUERY);
21
+ const resultContent = await fetchScopeDetailResult.json();
22
+ return resultContent.data;
23
+ }
24
+
25
+ exports.fetchScopeDetail = fetchScopeDetail;
26
+ //# sourceMappingURL=fetch-scopes-details.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-scopes-details.js","sources":["../../../../../../../../src/server/authenticate/admin/scope/client/fetch-scopes-details.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAkBA,MAAM,yBAAyB,GAAG,CAAA;;;;;;;;;;;;;;;EAehC,CAAC;AAEI,eAAe,gBAAgB,CACpC,KAAsB,EAAA;IAEtB,MAAM,sBAAsB,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;AAE9E,IAAA,MAAM,aAAa,GAAG,MAAM,sBAAsB,CAAC,IAAI,EAAE,CAAC;IAC1D,OAAO,aAAa,CAAC,IAAI,CAAC;AAC5B;;;;"}
@@ -19,7 +19,7 @@ async function revokeScopes(admin, scopes) {
19
19
  },
20
20
  });
21
21
  const resultContent = await revokeScopesResult.json();
22
- return resultContent.data;
22
+ return resultContent.data.appRevokeAccessScopes;
23
23
  }
24
24
 
25
25
  exports.revokeScopes = revokeScopes;
@@ -1 +1 @@
1
- {"version":3,"file":"revoke-scopes.js","sources":["../../../../../../../../src/server/authenticate/admin/scope/client/revoke-scopes.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAYA,MAAM,qBAAqB,GAAG,CAAA;;;;;;;;;;;EAW5B,CAAC;AAEI,eAAe,YAAY,CAChC,KAAsB,EACtB,MAAgB,EAAA;IAEhB,MAAM,kBAAkB,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE;AACpE,QAAA,SAAS,EAAE;YACT,MAAM;AACP,SAAA;AACF,KAAA,CAAC,CAAC;AAEH,IAAA,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;IACtD,OAAO,aAAa,CAAC,IAAI,CAAC;AAC5B;;;;"}
1
+ {"version":3,"file":"revoke-scopes.js","sources":["../../../../../../../../src/server/authenticate/admin/scope/client/revoke-scopes.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAYA,MAAM,qBAAqB,GAAG,CAAA;;;;;;;;;;;EAW5B,CAAC;AAEI,eAAe,YAAY,CAChC,KAAsB,EACtB,MAAgB,EAAA;IAEhB,MAAM,kBAAkB,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE;AACpE,QAAA,SAAS,EAAE;YACT,MAAM;AACP,SAAA;AACF,KAAA,CAAC,CAAC;AAEH,IAAA,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;AACtD,IAAA,OAAO,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC;AAClD;;;;"}
@@ -1,38 +1,30 @@
1
1
  'use strict';
2
2
 
3
3
  var shopifyApi = require('@shopify/shopify-api');
4
- var fetchScopesInformation = require('./client/fetch-scopes-information.js');
4
+ var fetchScopesDetails = require('./client/fetch-scopes-details.js');
5
5
 
6
6
  function queryScopesFactory(params, session, admin) {
7
7
  return async function queryScopes() {
8
8
  const { logger } = params;
9
- logger.debug('Query scopes information: ', {
9
+ logger.debug('Querying scopes details: ', {
10
10
  shop: session.shop,
11
11
  });
12
- const scopesInformation = await fetchScopesInformation.fetchScopeInformation(admin);
13
- return mapFetchScopeInformation(scopesInformation);
12
+ const scopesDetail = await fetchScopesDetails.fetchScopeDetail(admin);
13
+ return mapFetchScopeDetail(scopesDetail);
14
14
  };
15
15
  }
16
- function mapFetchScopeInformation(fetchScopeInformation) {
17
- const appInformation = fetchScopeInformation.app;
18
- const declaredRequired = new shopifyApi.AuthScopes(appInformation.requestedAccessScopes.map((scope) => scope.handle));
19
- const grantedRequired = appInformation.installation.accessScopes
20
- .map((scope) => scope.handle)
21
- .filter((scope) => declaredRequired.has(scope));
22
- const grantedOptional = appInformation.installation.accessScopes
23
- .map((scope) => scope.handle)
24
- .filter((scope) => !declaredRequired.has(scope));
16
+ function mapFetchScopeDetail(scopesDetailResponse) {
17
+ const appInformation = scopesDetailResponse.app;
18
+ const granted = new shopifyApi.AuthScopes(appInformation.installation.accessScopes.map((scope) => scope.handle));
19
+ const required = new shopifyApi.AuthScopes(appInformation.requestedAccessScopes.map((scope) => scope.handle));
20
+ const optional = new shopifyApi.AuthScopes(appInformation.optionalAccessScopes.map((scope) => scope.handle));
25
21
  return {
26
- granted: {
27
- required: grantedRequired,
28
- optional: grantedOptional,
29
- },
30
- declared: {
31
- required: declaredRequired.toArray(),
32
- },
22
+ granted: granted.toArray(),
23
+ required: required.toArray(),
24
+ optional: optional.toArray(),
33
25
  };
34
26
  }
35
27
 
36
- exports.mapFetchScopeInformation = mapFetchScopeInformation;
28
+ exports.mapFetchScopeDetail = mapFetchScopeDetail;
37
29
  exports.queryScopesFactory = queryScopesFactory;
38
30
  //# sourceMappingURL=query.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sources":["../../../../../../../src/server/authenticate/admin/scope/query.ts"],"sourcesContent":[null],"names":["fetchScopeInformation","AuthScopes"],"mappings":";;;;;SAWgB,kBAAkB,CAChC,MAAmB,EACnB,OAAgB,EAChB,KAAsB,EAAA;IAEtB,OAAO,eAAe,WAAW,GAAA;AAC/B,QAAA,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,CAAC;AAExB,QAAA,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE;YACzC,IAAI,EAAE,OAAO,CAAC,IAAI;AACnB,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,iBAAiB,GAAG,MAAMA,4CAAqB,CAAC,KAAK,CAAC,CAAC;AAC7D,QAAA,OAAO,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;AACrD,KAAC,CAAC;AACJ,CAAC;AAEK,SAAU,wBAAwB,CACtC,qBAAoD,EAAA;AAEpD,IAAA,MAAM,cAAc,GAAG,qBAAqB,CAAC,GAAG,CAAC;IACjD,MAAM,gBAAgB,GAAG,IAAIC,qBAAU,CACrC,cAAc,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CAClE,CAAC;AAEF,IAAA,MAAM,eAAe,GAAG,cAAc,CAAC,YAAY,CAAC,YAAY;SAC7D,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC;AAC5B,SAAA,MAAM,CAAC,CAAC,KAAK,KAAK,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAElD,IAAA,MAAM,eAAe,GAAG,cAAc,CAAC,YAAY,CAAC,YAAY;SAC7D,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC;AAC5B,SAAA,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAEnD,OAAO;AACL,QAAA,OAAO,EAAE;AACP,YAAA,QAAQ,EAAE,eAAe;AACzB,YAAA,QAAQ,EAAE,eAAe;AAC1B,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,QAAQ,EAAE,gBAAgB,CAAC,OAAO,EAAE;AACrC,SAAA;KACF,CAAC;AACJ;;;;;"}
1
+ {"version":3,"file":"query.js","sources":["../../../../../../../src/server/authenticate/admin/scope/query.ts"],"sourcesContent":[null],"names":["fetchScopeDetail","AuthScopes"],"mappings":";;;;;SAWgB,kBAAkB,CAChC,MAAmB,EACnB,OAAgB,EAChB,KAAsB,EAAA;IAEtB,OAAO,eAAe,WAAW,GAAA;AAC/B,QAAA,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,CAAC;AAExB,QAAA,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE;YACxC,IAAI,EAAE,OAAO,CAAC,IAAI;AACnB,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,YAAY,GAAG,MAAMA,mCAAgB,CAAC,KAAK,CAAC,CAAC;AACnD,QAAA,OAAO,mBAAmB,CAAC,YAAY,CAAC,CAAC;AAC3C,KAAC,CAAC;AACJ,CAAC;AAEK,SAAU,mBAAmB,CACjC,oBAA+C,EAAA;AAE/C,IAAA,MAAM,cAAc,GAAG,oBAAoB,CAAC,GAAG,CAAC;IAEhD,MAAM,OAAO,GAAG,IAAIC,qBAAU,CAC5B,cAAc,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CACtE,CAAC;IACF,MAAM,QAAQ,GAAG,IAAIA,qBAAU,CAC7B,cAAc,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CAClE,CAAC;IACF,MAAM,QAAQ,GAAG,IAAIA,qBAAU,CAC7B,cAAc,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CACjE,CAAC;IAEF,OAAO;AACL,QAAA,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE;AAC1B,QAAA,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE;AAC5B,QAAA,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE;KAC7B,CAAC;AACJ;;;;;"}
@@ -2,15 +2,12 @@
2
2
 
3
3
  var shopifyApi = require('@shopify/shopify-api');
4
4
  var redirectToInstallPage = require('../helpers/redirect-to-install-page.js');
5
- var fetchScopesInformation = require('./client/fetch-scopes-information.js');
5
+ var fetchScopesDetails = require('./client/fetch-scopes-details.js');
6
6
 
7
7
  function requestScopesFactory(params, session, admin) {
8
8
  return async function requestScopes(scopes) {
9
9
  const { logger } = params;
10
- logger.debug('Request optional scopes: ', {
11
- shop: session.shop,
12
- ...{ scopes },
13
- });
10
+ logger.debug('Requesting optional scopes: ', { shop: session.shop, scopes });
14
11
  if (scopes.length === 0)
15
12
  return;
16
13
  if (await alreadyGranted(scopes, admin))
@@ -18,8 +15,8 @@ function requestScopesFactory(params, session, admin) {
18
15
  throw await redirectToInstallPage.redirectToInstallPage(params, session.shop, scopes);
19
16
  };
20
17
  async function alreadyGranted(scopes, admin) {
21
- const scopesInformation = await fetchScopesInformation.fetchScopeInformation(admin);
22
- const grantedScopes = scopesInformation.app.installation.accessScopes.map((scope) => scope.handle);
18
+ const scopesDetail = await fetchScopesDetails.fetchScopeDetail(admin);
19
+ const grantedScopes = scopesDetail.app.installation.accessScopes.map((scope) => scope.handle);
23
20
  return new shopifyApi.AuthScopes(grantedScopes).has(scopes);
24
21
  }
25
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"request.js","sources":["../../../../../../../src/server/authenticate/admin/scope/request.ts"],"sourcesContent":[null],"names":["redirectToInstallPage","fetchScopeInformation","AuthScopes"],"mappings":";;;;;;SAQgB,oBAAoB,CAClC,MAAmB,EACnB,OAAgB,EAChB,KAAsB,EAAA;AAEtB,IAAA,OAAO,eAAe,aAAa,CAAC,MAAgB,EAAA;AAClD,QAAA,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,CAAC;AAExB,QAAA,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE;YACxC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,GAAG,EAAC,MAAM,EAAC;AACZ,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;AAChC,QAAA,IAAI,MAAM,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC;YAAE,OAAO;QAEhD,MAAM,MAAMA,2CAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAClE,KAAC,CAAC;AAEF,IAAA,eAAe,cAAc,CAAC,MAAgB,EAAE,KAAsB,EAAA;AACpE,QAAA,MAAM,iBAAiB,GAAG,MAAMC,4CAAqB,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,aAAa,GAAG,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CACvE,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CACxB,CAAC;QACF,OAAO,IAAIC,qBAAU,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KAClD;AACH;;;;"}
1
+ {"version":3,"file":"request.js","sources":["../../../../../../../src/server/authenticate/admin/scope/request.ts"],"sourcesContent":[null],"names":["redirectToInstallPage","fetchScopeDetail","AuthScopes"],"mappings":";;;;;;SAQgB,oBAAoB,CAClC,MAAmB,EACnB,OAAgB,EAChB,KAAsB,EAAA;AAEtB,IAAA,OAAO,eAAe,aAAa,CAAC,MAAgB,EAAA;AAClD,QAAA,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,CAAC;AAExB,QAAA,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,EAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;AAE3E,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;AAChC,QAAA,IAAI,MAAM,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC;YAAE,OAAO;QAEhD,MAAM,MAAMA,2CAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAClE,KAAC,CAAC;AAEF,IAAA,eAAe,cAAc,CAAC,MAAgB,EAAE,KAAsB,EAAA;AACpE,QAAA,MAAM,YAAY,GAAG,MAAMC,mCAAgB,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAClE,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CACxB,CAAC;QACF,OAAO,IAAIC,qBAAU,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KAClD;AACH;;;;"}
@@ -1,17 +1,15 @@
1
1
  'use strict';
2
2
 
3
3
  var revokeScopes = require('./client/revoke-scopes.js');
4
- var fetchScopesInformation = require('./client/fetch-scopes-information.js');
5
- var query = require('./query.js');
6
4
 
7
5
  function revokeScopesFactory(params, session, admin) {
8
6
  return async function revoke(scopes) {
9
7
  const { logger } = params;
8
+ await validateScopes(scopes);
10
9
  logger.debug('Revoke scopes: ', {
11
10
  shop: session.shop,
12
11
  scopes,
13
12
  });
14
- await validateScopes(scopes);
15
13
  const revokeScopesResult = await revokeScopes.revokeScopes(admin, scopes);
16
14
  if (revokeScopesResult.userErrors?.length > 0) {
17
15
  logger.error('Failed to revoke scopes: ', {
@@ -25,8 +23,9 @@ function revokeScopesFactory(params, session, admin) {
25
23
  },
26
24
  });
27
25
  }
28
- const scopesInfo = await fetchScopesInformation.fetchScopeInformation(admin);
29
- return query.mapFetchScopeInformation(scopesInfo);
26
+ return {
27
+ revoked: revokeScopesResult.revoked.map((scope) => scope.handle),
28
+ };
30
29
  };
31
30
  }
32
31
  async function validateScopes(scopes) {
@@ -1 +1 @@
1
- {"version":3,"file":"revoke.js","sources":["../../../../../../../src/server/authenticate/admin/scope/revoke.ts"],"sourcesContent":[null],"names":["revokeScopes","fetchScopeInformation","mapFetchScopeInformation"],"mappings":";;;;;;SASgB,mBAAmB,CACjC,MAAmB,EACnB,OAAgB,EAChB,KAAsB,EAAA;AAEtB,IAAA,OAAO,eAAe,MAAM,CAAC,MAAgB,EAAA;AAC3C,QAAA,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,CAAC;AAExB,QAAA,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE;YAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM;AACP,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;QAE7B,MAAM,kBAAkB,GAAG,MAAMA,yBAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC7D,IAAI,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,EAAE;AAC7C,YAAA,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE;gBACxC,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EAAE,kBAAkB,CAAC,UAAU;AACtC,aAAA,CAAC,CAAC;YAEH,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE;AAChE,gBAAA,MAAM,EAAE,GAAG;AACX,gBAAA,OAAO,EAAE;AACP,oBAAA,cAAc,EAAE,kBAAkB;AACnC,iBAAA;AACF,aAAA,CAAC,CAAC;SACJ;AAED,QAAA,MAAM,UAAU,GAAG,MAAMC,4CAAqB,CAAC,KAAK,CAAC,CAAC;AACtD,QAAA,OAAOC,8BAAwB,CAAC,UAAU,CAAC,CAAC;AAC9C,KAAC,CAAC;AACJ,CAAC;AAED,eAAe,cAAc,CAAC,MAAgB,EAAA;IAC5C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAClC,MAAM,IAAI,QAAQ,CAAC,oBAAoB,EAAE,EAAC,MAAM,EAAE,GAAG,EAAC,CAAC,CAAC;KACzD;AACH;;;;"}
1
+ {"version":3,"file":"revoke.js","sources":["../../../../../../../src/server/authenticate/admin/scope/revoke.ts"],"sourcesContent":[null],"names":["revokeScopes"],"mappings":";;;;SAOgB,mBAAmB,CACjC,MAAmB,EACnB,OAAgB,EAChB,KAAsB,EAAA;AAEtB,IAAA,OAAO,eAAe,MAAM,CAAC,MAAgB,EAAA;AAC3C,QAAA,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,CAAC;AAExB,QAAA,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;AAE7B,QAAA,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE;YAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM;AACP,SAAA,CAAC,CAAC;QAEH,MAAM,kBAAkB,GAAG,MAAMA,yBAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC7D,IAAI,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,EAAE;AAC7C,YAAA,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE;gBACxC,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EAAE,kBAAkB,CAAC,UAAU;AACtC,aAAA,CAAC,CAAC;YAEH,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE;AAChE,gBAAA,MAAM,EAAE,GAAG;AACX,gBAAA,OAAO,EAAE;AACP,oBAAA,cAAc,EAAE,kBAAkB;AACnC,iBAAA;AACF,aAAA,CAAC,CAAC;SACJ;QAED,OAAO;AACL,YAAA,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC;SACjE,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;AAED,eAAe,cAAc,CAAC,MAAgB,EAAA;IAC5C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAClC,MAAM,IAAI,QAAQ,CAAC,oBAAoB,EAAE,EAAC,MAAM,EAAE,GAAG,EAAC,CAAC,CAAC;KACzD;AACH;;;;"}
@@ -20,6 +20,10 @@ Object.defineProperty(exports, "BillingInterval", {
20
20
  enumerable: true,
21
21
  get: function () { return shopifyApi.BillingInterval; }
22
22
  });
23
+ Object.defineProperty(exports, "BillingReplacementBehavior", {
24
+ enumerable: true,
25
+ get: function () { return shopifyApi.BillingReplacementBehavior; }
26
+ });
23
27
  Object.defineProperty(exports, "DeliveryMethod", {
24
28
  enumerable: true,
25
29
  get: function () { return shopifyApi.DeliveryMethod; }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/server/index.ts"],"sourcesContent":[null],"names":["setAbstractRuntimeString"],"mappings":";;;;;;;;;;AAGAA,gCAAwB,CAAC,MAAK;AAC5B,IAAA,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/server/index.ts"],"sourcesContent":[null],"names":["setAbstractRuntimeString"],"mappings":";;;;;;;;;;AAGAA,gCAAwB,CAAC,MAAK;AAC5B,IAAA,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -104,7 +104,11 @@ function deriveApi(appConfig) {
104
104
  appUrl = new URL(appConfig.appUrl);
105
105
  }
106
106
  catch (error) {
107
- throw new shopifyApi.ShopifyError('Invalid appUrl provided. Please provide a valid URL.');
107
+ const message = appConfig.appUrl === ''
108
+ ? `Detected an empty appUrl configuration, please make sure to set the necessary environment variables.\n` +
109
+ `If you're deploying your app, you can find more information at https://shopify.dev/docs/apps/launch/deployment/deploy-web-app/deploy-to-hosting-service#step-4-set-up-environment-variables`
110
+ : `Invalid appUrl configuration '${appConfig.appUrl}', please provide a valid URL.`;
111
+ throw new shopifyApi.ShopifyError(message);
108
112
  }
109
113
  /* eslint-disable no-process-env */
110
114
  if (appUrl.hostname === 'localhost' && !appUrl.port && process.env.PORT) {
@@ -1 +1 @@
1
- {"version":3,"file":"shopify-app.js","sources":["../../../../src/server/shopify-app.ts"],"sourcesContent":[null],"names":["overrideLogger","AppDistribution","MerchantCustomAuth","TokenExchangeStrategy","AuthCodeFlowStrategy","authStrategyFactory","addDocumentResponseHeadersFactory","registerWebhooksFactory","authenticateFlowFactory","authenticatePublicFactory","authenticateFulfillmentServiceFactory","authenticateWebhookFactory","unauthenticatedAdminContextFactory","unauthenticatedStorefrontContextFactory","loginFactory","logDisabledFutureFlags","ShopifyError","SHOPIFY_REMIX_LIBRARY_VERSION","shopifyApi","LATEST_API_VERSION","IdempotentPromiseHandler"],"mappings":"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"}
1
+ {"version":3,"file":"shopify-app.js","sources":["../../../../src/server/shopify-app.ts"],"sourcesContent":[null],"names":["overrideLogger","AppDistribution","MerchantCustomAuth","TokenExchangeStrategy","AuthCodeFlowStrategy","authStrategyFactory","addDocumentResponseHeadersFactory","registerWebhooksFactory","authenticateFlowFactory","authenticatePublicFactory","authenticateFulfillmentServiceFactory","authenticateWebhookFactory","unauthenticatedAdminContextFactory","unauthenticatedStorefrontContextFactory","loginFactory","logDisabledFutureFlags","ShopifyError","SHOPIFY_REMIX_LIBRARY_VERSION","shopifyApi","LATEST_API_VERSION","IdempotentPromiseHandler"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ var testConfig = require('./test-config.js');
4
+
5
+
6
+
7
+ exports.testConfig = testConfig.testConfig;
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ var shopifyApi = require('@shopify/shopify-api');
4
+ var memory = require('../../session-storage/shopify-app-session-storage-memory/dist/esm/memory.js');
5
+ var testHelpers = require('@shopify/shopify-api/test-helpers');
6
+
7
+ const TEST_CONFIG = {
8
+ apiKey: testHelpers.API_KEY,
9
+ apiSecretKey: testHelpers.API_SECRET_KEY,
10
+ scopes: ['testScope'],
11
+ appUrl: testHelpers.APP_URL,
12
+ adminApiAccessToken: testHelpers.API_KEY,
13
+ privateAppStorefrontAccessToken: testHelpers.API_KEY,
14
+ logger: {
15
+ level: shopifyApi.LogSeverity.Debug,
16
+ },
17
+ sessionStorage: new memory.MemorySessionStorage(),
18
+ isTesting: true,
19
+ };
20
+ function testConfig({ future, ...overrides } = {}) {
21
+ return {
22
+ ...TEST_CONFIG,
23
+ ...overrides,
24
+ logger: {
25
+ ...TEST_CONFIG.logger,
26
+ ...overrides.logger,
27
+ },
28
+ future,
29
+ };
30
+ }
31
+
32
+ exports.testConfig = testConfig;
33
+ //# sourceMappingURL=test-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-config.js","sources":["../../../../../src/server/test-helpers/test-config.ts"],"sourcesContent":[null],"names":["API_KEY","API_SECRET_KEY","APP_URL","LogSeverity","MemorySessionStorage"],"mappings":";;;;;;AAYA,MAAM,WAAW,GAAG;AAClB,IAAA,MAAM,EAAEA,mBAAO;AACf,IAAA,YAAY,EAAEC,0BAAc;IAC5B,MAAM,EAAE,CAAC,WAAW,CAAQ;AAC5B,IAAA,MAAM,EAAEC,mBAAO;AACf,IAAA,mBAAmB,EAAEF,mBAAO;AAC5B,IAAA,+BAA+B,EAAEA,mBAAO;AACxC,IAAA,MAAM,EAAE;QACN,KAAK,EAAEG,sBAAW,CAAC,KAAK;AACzB,KAAA;IACD,cAAc,EAAE,IAAIC,2BAAoB,EAAE;AAC1C,IAAA,SAAS,EAAE,IAAI;CACP,CAAC;AAEL,SAAU,UAAU,CAIxB,EAAC,MAAM,EAAE,GAAG,SAAS,EAAA,GAAmC,EAEvD,EAAA;IAED,OAAO;AACL,QAAA,GAAG,WAAW;AACd,QAAA,GAAG,SAAS;AACZ,QAAA,MAAM,EAAE;YACN,GAAG,WAAW,CAAC,MAAM;YACrB,GAAI,SAAoC,CAAC,MAAM;AAChD,SAAA;QACD,MAAM;KACA,CAAC;AACX;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const SHOPIFY_REMIX_LIBRARY_VERSION = '3.1.0';
3
+ const SHOPIFY_REMIX_LIBRARY_VERSION = '3.3.0';
4
4
 
5
5
  exports.SHOPIFY_REMIX_LIBRARY_VERSION = SHOPIFY_REMIX_LIBRARY_VERSION;
6
6
  //# sourceMappingURL=version.js.map
@@ -0,0 +1,29 @@
1
+ 'use strict';
2
+
3
+ class MemorySessionStorage {
4
+ sessions = {};
5
+ async storeSession(session) {
6
+ this.sessions[session.id] = session;
7
+ return true;
8
+ }
9
+ async loadSession(id) {
10
+ return this.sessions[id] || undefined;
11
+ }
12
+ async deleteSession(id) {
13
+ if (this.sessions[id]) {
14
+ delete this.sessions[id];
15
+ }
16
+ return true;
17
+ }
18
+ async deleteSessions(ids) {
19
+ ids.forEach((id) => delete this.sessions[id]);
20
+ return true;
21
+ }
22
+ async findSessionsByShop(shop) {
23
+ const results = Object.values(this.sessions).filter((session) => session.shop === shop);
24
+ return results;
25
+ }
26
+ }
27
+
28
+ exports.MemorySessionStorage = MemorySessionStorage;
29
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sources":["../../../../../../../session-storage/shopify-app-session-storage-memory/dist/esm/memory.mjs"],"sourcesContent":["class MemorySessionStorage {\n sessions = {};\n async storeSession(session) {\n this.sessions[session.id] = session;\n return true;\n }\n async loadSession(id) {\n return this.sessions[id] || undefined;\n }\n async deleteSession(id) {\n if (this.sessions[id]) {\n delete this.sessions[id];\n }\n return true;\n }\n async deleteSessions(ids) {\n ids.forEach((id) => delete this.sessions[id]);\n return true;\n }\n async findSessionsByShop(shop) {\n const results = Object.values(this.sessions).filter((session) => session.shop === shop);\n return results;\n }\n}\n\nexport { MemorySessionStorage };\n//# sourceMappingURL=memory.mjs.map\n"],"names":[],"mappings":";;AAAA,MAAM,oBAAoB,CAAC;AAC3B,IAAI,QAAQ,GAAG,EAAE,CAAC;AAClB,IAAI,MAAM,YAAY,CAAC,OAAO,EAAE;AAChC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;AAC5C,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,WAAW,CAAC,EAAE,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC;AAC9C,KAAK;AACL,IAAI,MAAM,aAAa,CAAC,EAAE,EAAE;AAC5B,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AAC/B,YAAY,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,cAAc,CAAC,GAAG,EAAE;AAC9B,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACtD,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,kBAAkB,CAAC,IAAI,EAAE;AACnC,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAChG,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL;;;;"}
@@ -9,6 +9,7 @@ import { cancelBillingFactory } from './billing/cancel.mjs';
9
9
  import { requireBillingFactory } from './billing/require.mjs';
10
10
  import { requestBillingFactory } from './billing/request.mjs';
11
11
  import { checkBillingFactory } from './billing/check.mjs';
12
+ import { createUsageRecordFactory } from './billing/create-usage-record.mjs';
12
13
  import { createAdminApiContext } from './helpers/create-admin-api-context.mjs';
13
14
  import { ensureAppIsEmbeddedIfRequired } from './helpers/ensure-app-is-embedded-if-required.mjs';
14
15
  import { ensureSessionTokenSearchParamIfRequired } from './helpers/ensure-session-token-search-param-if-required.mjs';
@@ -43,6 +44,7 @@ function authStrategyFactory({ strategy, ...params }) {
43
44
  check: checkBillingFactory(params, request, session),
44
45
  request: requestBillingFactory(params, request, session),
45
46
  cancel: cancelBillingFactory(params, request, session),
47
+ createUsageRecord: createUsageRecordFactory(params, request, session),
46
48
  },
47
49
  session,
48
50
  cors: ensureCORSHeadersFactory(params, request),