@shopify/shopify-app-remix 3.1.0 → 3.2.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 (70) hide show
  1. package/README.md +56 -12
  2. package/dist/cjs/server/authenticate/admin/helpers/redirect.js +21 -5
  3. package/dist/cjs/server/authenticate/admin/helpers/redirect.js.map +1 -1
  4. package/dist/cjs/server/authenticate/admin/scope/client/fetch-scopes-details.js +26 -0
  5. package/dist/cjs/server/authenticate/admin/scope/client/fetch-scopes-details.js.map +1 -0
  6. package/dist/cjs/server/authenticate/admin/scope/query.js +13 -21
  7. package/dist/cjs/server/authenticate/admin/scope/query.js.map +1 -1
  8. package/dist/cjs/server/authenticate/admin/scope/request.js +4 -7
  9. package/dist/cjs/server/authenticate/admin/scope/request.js.map +1 -1
  10. package/dist/cjs/server/authenticate/admin/scope/revoke.js +5 -3
  11. package/dist/cjs/server/authenticate/admin/scope/revoke.js.map +1 -1
  12. package/dist/cjs/server/shopify-app.js +5 -1
  13. package/dist/cjs/server/shopify-app.js.map +1 -1
  14. package/dist/cjs/server/test-helpers/index.js +8 -0
  15. package/dist/cjs/server/test-helpers/index.js.map +1 -0
  16. package/dist/cjs/server/test-helpers/test-config.js +33 -0
  17. package/dist/cjs/server/test-helpers/test-config.js.map +1 -0
  18. package/dist/cjs/server/version.js +1 -1
  19. package/dist/cjs/session-storage/shopify-app-session-storage-memory/dist/esm/memory.js +29 -0
  20. package/dist/cjs/session-storage/shopify-app-session-storage-memory/dist/esm/memory.js.map +1 -0
  21. package/dist/esm/server/authenticate/admin/helpers/redirect.mjs +21 -5
  22. package/dist/esm/server/authenticate/admin/helpers/redirect.mjs.map +1 -1
  23. package/dist/esm/server/authenticate/admin/scope/client/fetch-scopes-details.mjs +24 -0
  24. package/dist/esm/server/authenticate/admin/scope/client/fetch-scopes-details.mjs.map +1 -0
  25. package/dist/esm/server/authenticate/admin/scope/query.mjs +13 -21
  26. package/dist/esm/server/authenticate/admin/scope/query.mjs.map +1 -1
  27. package/dist/esm/server/authenticate/admin/scope/request.mjs +4 -7
  28. package/dist/esm/server/authenticate/admin/scope/request.mjs.map +1 -1
  29. package/dist/esm/server/authenticate/admin/scope/revoke.mjs +6 -4
  30. package/dist/esm/server/authenticate/admin/scope/revoke.mjs.map +1 -1
  31. package/dist/esm/server/shopify-app.mjs +5 -1
  32. package/dist/esm/server/shopify-app.mjs.map +1 -1
  33. package/dist/esm/server/test-helpers/index.mjs +2 -0
  34. package/dist/esm/server/test-helpers/index.mjs.map +1 -0
  35. package/dist/esm/server/test-helpers/test-config.mjs +31 -0
  36. package/dist/esm/server/test-helpers/test-config.mjs.map +1 -0
  37. package/dist/esm/server/version.mjs +1 -1
  38. package/dist/esm/session-storage/shopify-app-session-storage-memory/dist/esm/memory.mjs +27 -0
  39. package/dist/esm/session-storage/shopify-app-session-storage-memory/dist/esm/memory.mjs.map +1 -0
  40. package/dist/ts/server/authenticate/admin/helpers/redirect.d.ts.map +1 -1
  41. package/dist/ts/server/authenticate/admin/scope/client/{fetch-scopes-information.d.ts → fetch-scopes-details.d.ts} +3 -3
  42. package/dist/ts/server/authenticate/admin/scope/client/fetch-scopes-details.d.ts.map +1 -0
  43. package/dist/ts/server/authenticate/admin/scope/query.d.ts +4 -4
  44. package/dist/ts/server/authenticate/admin/scope/query.d.ts.map +1 -1
  45. package/dist/ts/server/authenticate/admin/scope/request.d.ts.map +1 -1
  46. package/dist/ts/server/authenticate/admin/scope/revoke.d.ts +3 -1
  47. package/dist/ts/server/authenticate/admin/scope/revoke.d.ts.map +1 -1
  48. package/dist/ts/server/authenticate/admin/scope/types.d.ts +6 -9
  49. package/dist/ts/server/authenticate/admin/scope/types.d.ts.map +1 -1
  50. package/dist/ts/server/authenticate/admin/types.d.ts +1 -1
  51. package/dist/ts/server/authenticate/admin/types.d.ts.map +1 -1
  52. package/dist/ts/server/index.d.ts +2 -1
  53. package/dist/ts/server/index.d.ts.map +1 -1
  54. package/dist/ts/server/shopify-app.d.ts.map +1 -1
  55. package/dist/ts/server/test-helpers/index.d.ts +2 -0
  56. package/dist/ts/server/test-helpers/index.d.ts.map +1 -0
  57. package/dist/ts/server/test-helpers/test-config.d.ts +36 -0
  58. package/dist/ts/server/test-helpers/test-config.d.ts.map +1 -0
  59. package/dist/ts/server/types-contexts.d.ts +4 -1
  60. package/dist/ts/server/types-contexts.d.ts.map +1 -1
  61. package/dist/ts/server/types.d.ts +1 -1
  62. package/dist/ts/server/types.d.ts.map +1 -1
  63. package/dist/ts/server/version.d.ts +1 -1
  64. package/dist/tsconfig.build.tsbuildinfo +1 -1
  65. package/package.json +32 -27
  66. package/dist/cjs/server/authenticate/admin/scope/client/fetch-scopes-information.js +0 -23
  67. package/dist/cjs/server/authenticate/admin/scope/client/fetch-scopes-information.js.map +0 -1
  68. package/dist/esm/server/authenticate/admin/scope/client/fetch-scopes-information.mjs +0 -21
  69. package/dist/esm/server/authenticate/admin/scope/client/fetch-scopes-information.mjs.map +0 -1
  70. 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 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
 
@@ -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;;;;"}
@@ -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,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var revokeScopes = require('./client/revoke-scopes.js');
4
- var fetchScopesInformation = require('./client/fetch-scopes-information.js');
4
+ var fetchScopesDetails = require('./client/fetch-scopes-details.js');
5
5
  var query = require('./query.js');
6
6
 
7
7
  function revokeScopesFactory(params, session, admin) {
@@ -25,8 +25,10 @@ function revokeScopesFactory(params, session, admin) {
25
25
  },
26
26
  });
27
27
  }
28
- const scopesInfo = await fetchScopesInformation.fetchScopeInformation(admin);
29
- return query.mapFetchScopeInformation(scopesInfo);
28
+ const scopesDetail = await fetchScopesDetails.fetchScopeDetail(admin);
29
+ return {
30
+ detail: query.mapFetchScopeDetail(scopesDetail),
31
+ };
30
32
  };
31
33
  }
32
34
  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","fetchScopeDetail","mapFetchScopeDetail"],"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,YAAY,GAAG,MAAMC,mCAAgB,CAAC,KAAK,CAAC,CAAC;QACnD,OAAO;AACL,YAAA,MAAM,EAAEC,yBAAmB,CAAC,YAAY,CAAC;SAC1C,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;;;;"}
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;AAsCA;;;;;;;;;;;;;;;;;;;;AAoBG;AACG,SAAU,UAAU,CAKxB,SAA2B,EAAA;AAC3B,IAAA,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,YAAY,CAAU,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAGA,6BAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAE1C,IAAA,IAAI,SAAS,CAAC,QAAQ,EAAE;QACtB,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;KAC9C;IAED,MAAM,MAAM,GAAgB,EAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAC,CAAC;AAElD,IAAA,IAAI,QAAQ,CAAC;IACb,IAAI,MAAM,CAAC,YAAY,KAAKC,qBAAe,CAAC,YAAY,EAAE;AACxD,QAAA,QAAQ,GAAG,IAAIC,oCAAkB,CAAC,MAAM,CAAC,CAAC;KAC3C;AAAM,SAAA,IACL,MAAM,CAAC,MAAM,CAAC,gCAAgC;QAC9C,MAAM,CAAC,aAAa,EACpB;AACA,QAAA,QAAQ,GAAG,IAAIC,mCAAqB,CAAC,MAAM,CAAC,CAAC;KAC9C;SAAM;AACL,QAAA,QAAQ,GAAG,IAAIC,iCAAoB,CAAC,MAAM,CAAC,CAAC;KAC7C;IAED,MAAM,YAAY,GAAGC,gCAAmB,CAAoB;AAC1D,QAAA,GAAG,MAAM;QACT,QAAQ;AACT,KAAA,CAAC,CAAC;AAEH,IAAA,MAAM,OAAO,GAGmB;QAC9B,cAAc,EAAE,MAAM,CAAC,cAAc;AACrC,QAAA,0BAA0B,EAAEC,oDAAiC,CAAC,MAAM,CAAC;AACrE,QAAA,gBAAgB,EAAEC,gCAAuB,CAAC,MAAM,CAAC;AACjD,QAAA,YAAY,EAAE;AACZ,YAAA,KAAK,EAAE,YAAY;AACnB,YAAA,IAAI,EAAEC,sCAAuB,CAAY,MAAM,CAAC;AAChD,YAAA,MAAM,EAAEC,iCAAyB,CAAY,MAAM,CAAC;AACpD,YAAA,kBAAkB,EAChBC,oDAAqC,CAAY,MAAM,CAAC;AAC1D,YAAA,OAAO,EAAEC,yCAA0B,CAAoB,MAAM,CAAC;AAC/D,SAAA;AACD,QAAA,eAAe,EAAE;AACf,YAAA,KAAK,EAAEC,4CAAkC,CAAC,MAAM,CAAC;AACjD,YAAA,UAAU,EAAEC,iDAAuC,CAAC,MAAM,CAAC;AAC5D,SAAA;KACF,CAAC;AAEF,IAAA,IACE,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC;AACjC,QAAA,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,EACvC;AACA,QAAA,OAAO,CAAC,KAAK,GAAGC,kBAAY,CAAC,MAAM,CAAC,CAAC;KACtC;AAED,IAAAC,4BAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEvC,IAAA,OAAO,OAA6B,CAAC;AACvC,CAAC;AAED,SAAS,aAAa,CACpB,QAAgC,EAChC,MAAc,EAAA;AAEd,IAAA,OAAO,MAAM,CAAC,YAAY,KAAKd,qBAAe,CAAC,QAAQ,CAAC;AAC1D,CAAC;AAED,SAAS,mBAAmB,CAC1B,QAAgC,EAChC,MAAc,EAAA;AAEd,IAAA,OAAO,MAAM,CAAC,YAAY,KAAKA,qBAAe,CAAC,cAAc,CAAC;AAChE,CAAC;AAED;AACA;AACM,SAAU,SAAS,CAAC,SAAuB,EAAA;AAC/C,IAAA,IAAI,MAAW,CAAC;AAChB,IAAA,IAAI;QACF,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;KACpC;IAAC,OAAO,KAAK,EAAE;AACd,QAAA,MAAM,IAAIe,uBAAY,CACpB,sDAAsD,CACvD,CAAC;KACH;;AAGD,IAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE;QACvE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;KAChC;;AAED,IAAA,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAEjC,IAAA,IAAI,eAAe,GAAG,CAA0B,uBAAA,EAAAC,qCAA6B,EAAE,CAAC;AAChF,IAAA,IAAI,SAAS,CAAC,eAAe,EAAE;QAC7B,eAAe,GAAG,GAAG,SAAS,CAAC,eAAe,CAAM,GAAA,EAAA,eAAe,EAAE,CAAC;KACvE;AAED,IAAA,OAAOC,qBAAU,CAAC;AAChB,QAAA,GAAG,SAAS;QACZ,QAAQ,EAAE,MAAM,CAAC,IAAI;QACrB,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAqB;QAChE,eAAe;AACf,QAAA,aAAa,EAAE,SAAS,CAAC,aAAa,IAAI,IAAI;AAC9C,QAAA,UAAU,EAAE,SAAS,CAAC,UAAU,IAAIC,6BAAkB;AACtD,QAAA,gBAAgB,EAAE,SAAS,CAAC,YAAY,KAAKlB,qBAAe,CAAC,YAAY;QACzE,OAAO,EAAE,SAAS,CAAC,OAA+B;AAClD,QAAA,MAAM,EAAE;AACN,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,8BAA8B,EAAE,IAAI;AACrC,SAAA;AACD,QAAA,uBAAuB,EAAE,KAAK;AAC/B,KAAA,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CACnB,SAAuB,EACvB,SAAoB,EAAA;IAEpB,IACE,CAAC,SAAS,CAAC,cAAc;AACzB,QAAA,SAAS,CAAC,YAAY,KAAKA,qBAAe,CAAC,YAAY,EACvD;AACA,QAAA,MAAM,IAAIe,uBAAY,CACpB,qJAAqJ,CACtJ,CAAC;KACH;AAED,IAAA,MAAM,cAAc,GAAG,SAAS,CAAC,cAAc,IAAI,OAAO,CAAC;IAC3D,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,IAAIf,qBAAe,CAAC,QAAQ,CAAC;IAE5E,OAAO;AACL,QAAA,GAAG,SAAS;AACZ,QAAA,GAAG,SAAS;QACZ,OAAO,EAAE,SAAS,CAAC,OAA+B;QAClD,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,wBAAwB,EAAE,IAAImB,iDAAwB,EAAE;AACxD,QAAA,eAAe,EAAE,SAAS,CAAC,YAAY,KAAKnB,qBAAe,CAAC,YAAY;AACxE,QAAA,eAAe,EAAE,SAAS,CAAC,eAAe,IAAI,KAAK;AACnD,QAAA,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,EAAE;QAC5B,cAAc,EAAE,SAAS,CAAC,cAAyB;AACnD,QAAA,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,EAAE;AAC9B,QAAA,IAAI,EAAE;AACJ,YAAA,IAAI,EAAE,cAAc;YACpB,YAAY,EAAE,CAAG,EAAA,cAAc,CAAW,SAAA,CAAA;YAC1C,qBAAqB,EAAE,CAAG,EAAA,cAAc,CAAgB,cAAA,CAAA;YACxD,cAAc,EAAE,CAAG,EAAA,cAAc,CAAc,YAAA,CAAA;YAC/C,SAAS,EAAE,CAAG,EAAA,cAAc,CAAQ,MAAA,CAAA;AACrC,SAAA;QACD,YAAY,EAAE,SAAS,CAAC,YAAY;KACrC,CAAC;AACJ;;;;;"}
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.2.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;;;;"}
@@ -7,7 +7,13 @@ function redirectFactory(params, request, shop) {
7
7
  const { config, logger } = params;
8
8
  return function redirect$1(url, init) {
9
9
  const { searchParams } = new URL(request.url);
10
- const parsedUrl = parseURL(url, request.url, shop);
10
+ const { url: parsedUrl, target } = parseURL({
11
+ params,
12
+ url,
13
+ base: config.appUrl,
14
+ shop,
15
+ init,
16
+ });
11
17
  logger.debug('Redirecting', { url: parsedUrl.toString() });
12
18
  const isSameOrigin = parsedUrl.origin === config.appUrl;
13
19
  if (isSameOrigin || url.startsWith('/')) {
@@ -17,7 +23,6 @@ function redirectFactory(params, request, shop) {
17
23
  }
18
24
  });
19
25
  }
20
- const target = (typeof init !== 'number' && init?.target) || '_self';
21
26
  if (target === '_self') {
22
27
  if (isBounceRequest(request)) {
23
28
  throw renderAppBridge(params, request, {
@@ -56,14 +61,25 @@ function isEmbeddedRequest(request) {
56
61
  const { searchParams } = new URL(request.url);
57
62
  return searchParams.get('embedded') === '1';
58
63
  }
59
- function parseURL(url, base, shop) {
64
+ function parseURL({ params, base, init, shop, url }) {
65
+ let target = typeof init !== 'number' && init?.target ? init.target : undefined;
60
66
  if (isAdminRemotePath(url)) {
67
+ const { config } = params;
61
68
  const adminPath = getAdminRemotePath(url);
62
69
  const cleanShopName = shop.replace('.myshopify.com', '');
63
- return new URL(`https://admin.shopify.com/store/${cleanShopName}${adminPath}`);
70
+ if (!target) {
71
+ target = config.isEmbeddedApp ? '_parent' : '_self';
72
+ }
73
+ return {
74
+ url: new URL(`https://admin.shopify.com/store/${cleanShopName}${adminPath}`),
75
+ target,
76
+ };
64
77
  }
65
78
  else {
66
- return new URL(url, base);
79
+ return {
80
+ url: new URL(url, base),
81
+ target: target ?? '_self',
82
+ };
67
83
  }
68
84
  }
69
85
  const ADMIN_REGEX = /^shopify:\/*admin\//i;
@@ -1 +1 @@
1
- {"version":3,"file":"redirect.mjs","sources":["../../../../../../../src/server/authenticate/admin/helpers/redirect.ts"],"sourcesContent":[null],"names":["redirect","remixRedirect"],"mappings":";;;;;SAkBgB,eAAe,CAC7B,MAAmB,EACnB,OAAgB,EAChB,IAAY,EAAA;AAEZ,IAAA,MAAM,EAAC,MAAM,EAAE,MAAM,EAAC,GAAG,MAAM,CAAC;AAEhC,IAAA,OAAO,SAASA,UAAQ,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,MAAM,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE;AACrC,oBAAA,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE;oBACzB,MAAM;AACP,iBAAA,CAAC,CAAC;aACJ;iBAAM;gBACL,OAAOC,QAAa,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;aAClD;SACF;AAAM,aAAA,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE;AACjC,YAAA,MAAM,4BAA4B,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC1D;AAAM,aAAA,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE;AACrC,YAAA,MAAM,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE;AACrC,gBAAA,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE;gBACzB,MAAM;AACP,aAAA,CAAC,CAAC;SACJ;AACD,QAAA,OAAOA,QAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAClC,KAAC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,OAAgB,EAAA;AACvC,IAAA,QACE,OAAO,CAAC,qBAAqB,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,CAAC,qBAAqB,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.mjs","sources":["../../../../../../../src/server/authenticate/admin/helpers/redirect.ts"],"sourcesContent":[null],"names":["redirect","remixRedirect"],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ const FETCH_SCOPES_DETAIL_QUERY = `#graphql
2
+ query FetchAccessScopes{
3
+ app {
4
+ requestedAccessScopes {
5
+ handle
6
+ }
7
+ optionalAccessScopes {
8
+ handle
9
+ }
10
+ installation {
11
+ accessScopes {
12
+ handle
13
+ }
14
+ }
15
+ }
16
+ }`;
17
+ async function fetchScopeDetail(admin) {
18
+ const fetchScopeDetailResult = await admin.graphql(FETCH_SCOPES_DETAIL_QUERY);
19
+ const resultContent = await fetchScopeDetailResult.json();
20
+ return resultContent.data;
21
+ }
22
+
23
+ export { fetchScopeDetail };
24
+ //# sourceMappingURL=fetch-scopes-details.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-scopes-details.mjs","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;;;;"}
@@ -1,35 +1,27 @@
1
1
  import { AuthScopes } from '@shopify/shopify-api';
2
- import { fetchScopeInformation } from './client/fetch-scopes-information.mjs';
2
+ import { fetchScopeDetail } from './client/fetch-scopes-details.mjs';
3
3
 
4
4
  function queryScopesFactory(params, session, admin) {
5
5
  return async function queryScopes() {
6
6
  const { logger } = params;
7
- logger.debug('Query scopes information: ', {
7
+ logger.debug('Querying scopes details: ', {
8
8
  shop: session.shop,
9
9
  });
10
- const scopesInformation = await fetchScopeInformation(admin);
11
- return mapFetchScopeInformation(scopesInformation);
10
+ const scopesDetail = await fetchScopeDetail(admin);
11
+ return mapFetchScopeDetail(scopesDetail);
12
12
  };
13
13
  }
14
- function mapFetchScopeInformation(fetchScopeInformation) {
15
- const appInformation = fetchScopeInformation.app;
16
- const declaredRequired = new AuthScopes(appInformation.requestedAccessScopes.map((scope) => scope.handle));
17
- const grantedRequired = appInformation.installation.accessScopes
18
- .map((scope) => scope.handle)
19
- .filter((scope) => declaredRequired.has(scope));
20
- const grantedOptional = appInformation.installation.accessScopes
21
- .map((scope) => scope.handle)
22
- .filter((scope) => !declaredRequired.has(scope));
14
+ function mapFetchScopeDetail(scopesDetailResponse) {
15
+ const appInformation = scopesDetailResponse.app;
16
+ const granted = new AuthScopes(appInformation.installation.accessScopes.map((scope) => scope.handle));
17
+ const required = new AuthScopes(appInformation.requestedAccessScopes.map((scope) => scope.handle));
18
+ const optional = new AuthScopes(appInformation.optionalAccessScopes.map((scope) => scope.handle));
23
19
  return {
24
- granted: {
25
- required: grantedRequired,
26
- optional: grantedOptional,
27
- },
28
- declared: {
29
- required: declaredRequired.toArray(),
30
- },
20
+ granted: granted.toArray(),
21
+ required: required.toArray(),
22
+ optional: optional.toArray(),
31
23
  };
32
24
  }
33
25
 
34
- export { mapFetchScopeInformation, queryScopesFactory };
26
+ export { mapFetchScopeDetail, queryScopesFactory };
35
27
  //# sourceMappingURL=query.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.mjs","sources":["../../../../../../../src/server/authenticate/admin/scope/query.ts"],"sourcesContent":[null],"names":[],"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,MAAM,qBAAqB,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,IAAI,UAAU,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.mjs","sources":["../../../../../../../src/server/authenticate/admin/scope/query.ts"],"sourcesContent":[null],"names":[],"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,MAAM,gBAAgB,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,IAAI,UAAU,CAC5B,cAAc,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CACtE,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,UAAU,CAC7B,cAAc,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CAClE,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,UAAU,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;;;;"}