@shopify/shopify-app-remix 3.8.4 → 4.0.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 (154) hide show
  1. package/README.md +2 -3
  2. package/dist/cjs/server/adapters/node/index.js +0 -2
  3. package/dist/cjs/server/adapters/node/index.js.map +1 -1
  4. package/dist/cjs/server/authenticate/admin/authenticate.js.map +1 -1
  5. package/dist/cjs/server/authenticate/admin/helpers/create-admin-api-context.js.map +1 -1
  6. package/dist/cjs/server/authenticate/admin/helpers/trigger-after-auth-hook.js.map +1 -1
  7. package/dist/cjs/server/authenticate/admin/scope/client/fetch-scopes-details.js.map +1 -1
  8. package/dist/cjs/server/authenticate/admin/scope/client/revoke-scopes.js.map +1 -1
  9. package/dist/cjs/server/authenticate/admin/scope/factory.js.map +1 -1
  10. package/dist/cjs/server/authenticate/admin/scope/query.js.map +1 -1
  11. package/dist/cjs/server/authenticate/admin/scope/request.js.map +1 -1
  12. package/dist/cjs/server/authenticate/admin/scope/revoke.js.map +1 -1
  13. package/dist/cjs/server/authenticate/admin/strategies/auth-code-flow.js.map +1 -1
  14. package/dist/cjs/server/authenticate/admin/strategies/merchant-custom-app.js.map +1 -1
  15. package/dist/cjs/server/authenticate/admin/strategies/token-exchange.js.map +1 -1
  16. package/dist/cjs/server/authenticate/flow/authenticate.js.map +1 -1
  17. package/dist/cjs/server/authenticate/fulfillment-service/authenticate.js.map +1 -1
  18. package/dist/cjs/server/authenticate/public/appProxy/authenticate.js.map +1 -1
  19. package/dist/cjs/server/authenticate/public/factory.js.map +1 -1
  20. package/dist/cjs/server/authenticate/webhooks/authenticate.js.map +1 -1
  21. package/dist/cjs/server/clients/admin/factory.js +0 -11
  22. package/dist/cjs/server/clients/admin/factory.js.map +1 -1
  23. package/dist/cjs/server/clients/admin/graphql.js +1 -2
  24. package/dist/cjs/server/clients/admin/graphql.js.map +1 -1
  25. package/dist/cjs/server/future/flags.js.map +1 -1
  26. package/dist/cjs/server/index.js +0 -8
  27. package/dist/cjs/server/index.js.map +1 -1
  28. package/dist/cjs/server/override-logger.js +2 -2
  29. package/dist/cjs/server/override-logger.js.map +1 -1
  30. package/dist/cjs/server/shopify-app.js +1 -2
  31. package/dist/cjs/server/shopify-app.js.map +1 -1
  32. package/dist/cjs/server/test-helpers/test-config.js.map +1 -1
  33. package/dist/cjs/server/types.js.map +1 -1
  34. package/dist/cjs/server/unauthenticated/admin/factory.js.map +1 -1
  35. package/dist/cjs/server/version.js +1 -1
  36. package/dist/cjs/server/version.js.map +1 -1
  37. package/dist/esm/server/adapters/node/index.mjs +1 -3
  38. package/dist/esm/server/adapters/node/index.mjs.map +1 -1
  39. package/dist/esm/server/authenticate/admin/authenticate.mjs.map +1 -1
  40. package/dist/esm/server/authenticate/admin/helpers/create-admin-api-context.mjs.map +1 -1
  41. package/dist/esm/server/authenticate/admin/helpers/trigger-after-auth-hook.mjs.map +1 -1
  42. package/dist/esm/server/authenticate/admin/scope/client/fetch-scopes-details.mjs.map +1 -1
  43. package/dist/esm/server/authenticate/admin/scope/client/revoke-scopes.mjs.map +1 -1
  44. package/dist/esm/server/authenticate/admin/scope/factory.mjs.map +1 -1
  45. package/dist/esm/server/authenticate/admin/scope/query.mjs.map +1 -1
  46. package/dist/esm/server/authenticate/admin/scope/request.mjs.map +1 -1
  47. package/dist/esm/server/authenticate/admin/scope/revoke.mjs.map +1 -1
  48. package/dist/esm/server/authenticate/admin/strategies/auth-code-flow.mjs.map +1 -1
  49. package/dist/esm/server/authenticate/admin/strategies/merchant-custom-app.mjs.map +1 -1
  50. package/dist/esm/server/authenticate/admin/strategies/token-exchange.mjs.map +1 -1
  51. package/dist/esm/server/authenticate/flow/authenticate.mjs.map +1 -1
  52. package/dist/esm/server/authenticate/fulfillment-service/authenticate.mjs.map +1 -1
  53. package/dist/esm/server/authenticate/public/appProxy/authenticate.mjs.map +1 -1
  54. package/dist/esm/server/authenticate/public/factory.mjs.map +1 -1
  55. package/dist/esm/server/authenticate/webhooks/authenticate.mjs.map +1 -1
  56. package/dist/esm/server/clients/admin/factory.mjs +0 -11
  57. package/dist/esm/server/clients/admin/factory.mjs.map +1 -1
  58. package/dist/esm/server/clients/admin/graphql.mjs +1 -2
  59. package/dist/esm/server/clients/admin/graphql.mjs.map +1 -1
  60. package/dist/esm/server/future/flags.mjs.map +1 -1
  61. package/dist/esm/server/index.mjs +1 -1
  62. package/dist/esm/server/index.mjs.map +1 -1
  63. package/dist/esm/server/override-logger.mjs +2 -2
  64. package/dist/esm/server/override-logger.mjs.map +1 -1
  65. package/dist/esm/server/shopify-app.mjs +2 -3
  66. package/dist/esm/server/shopify-app.mjs.map +1 -1
  67. package/dist/esm/server/test-helpers/test-config.mjs.map +1 -1
  68. package/dist/esm/server/types.mjs.map +1 -1
  69. package/dist/esm/server/unauthenticated/admin/factory.mjs.map +1 -1
  70. package/dist/esm/server/version.mjs +1 -1
  71. package/dist/esm/server/version.mjs.map +1 -1
  72. package/dist/ts/server/authenticate/admin/authenticate.admin.doc.d.ts.map +1 -1
  73. package/dist/ts/server/authenticate/admin/authenticate.d.ts +2 -2
  74. package/dist/ts/server/authenticate/admin/authenticate.d.ts.map +1 -1
  75. package/dist/ts/server/authenticate/admin/billing/types.d.ts +1 -2
  76. package/dist/ts/server/authenticate/admin/billing/types.d.ts.map +1 -1
  77. package/dist/ts/server/authenticate/admin/helpers/create-admin-api-context.d.ts +2 -3
  78. package/dist/ts/server/authenticate/admin/helpers/create-admin-api-context.d.ts.map +1 -1
  79. package/dist/ts/server/authenticate/admin/helpers/trigger-after-auth-hook.d.ts +2 -3
  80. package/dist/ts/server/authenticate/admin/helpers/trigger-after-auth-hook.d.ts.map +1 -1
  81. package/dist/ts/server/authenticate/admin/scope/client/fetch-scopes-details.d.ts +1 -2
  82. package/dist/ts/server/authenticate/admin/scope/client/fetch-scopes-details.d.ts.map +1 -1
  83. package/dist/ts/server/authenticate/admin/scope/client/revoke-scopes.d.ts +1 -2
  84. package/dist/ts/server/authenticate/admin/scope/client/revoke-scopes.d.ts.map +1 -1
  85. package/dist/ts/server/authenticate/admin/scope/factory.d.ts +1 -2
  86. package/dist/ts/server/authenticate/admin/scope/factory.d.ts.map +1 -1
  87. package/dist/ts/server/authenticate/admin/scope/query.d.ts +1 -2
  88. package/dist/ts/server/authenticate/admin/scope/query.d.ts.map +1 -1
  89. package/dist/ts/server/authenticate/admin/scope/request.d.ts +1 -2
  90. package/dist/ts/server/authenticate/admin/scope/request.d.ts.map +1 -1
  91. package/dist/ts/server/authenticate/admin/scope/revoke.d.ts +1 -2
  92. package/dist/ts/server/authenticate/admin/scope/revoke.d.ts.map +1 -1
  93. package/dist/ts/server/authenticate/admin/strategies/auth-code-flow.d.ts +3 -3
  94. package/dist/ts/server/authenticate/admin/strategies/auth-code-flow.d.ts.map +1 -1
  95. package/dist/ts/server/authenticate/admin/strategies/merchant-custom-app.d.ts +2 -2
  96. package/dist/ts/server/authenticate/admin/strategies/merchant-custom-app.d.ts.map +1 -1
  97. package/dist/ts/server/authenticate/admin/strategies/token-exchange.d.ts +2 -2
  98. package/dist/ts/server/authenticate/admin/strategies/token-exchange.d.ts.map +1 -1
  99. package/dist/ts/server/authenticate/admin/types.d.ts +9 -9
  100. package/dist/ts/server/authenticate/admin/types.d.ts.map +1 -1
  101. package/dist/ts/server/authenticate/flow/authenticate.d.ts +1 -3
  102. package/dist/ts/server/authenticate/flow/authenticate.d.ts.map +1 -1
  103. package/dist/ts/server/authenticate/flow/types.d.ts +4 -5
  104. package/dist/ts/server/authenticate/flow/types.d.ts.map +1 -1
  105. package/dist/ts/server/authenticate/fulfillment-service/authenticate.d.ts +1 -3
  106. package/dist/ts/server/authenticate/fulfillment-service/authenticate.d.ts.map +1 -1
  107. package/dist/ts/server/authenticate/fulfillment-service/types.d.ts +4 -5
  108. package/dist/ts/server/authenticate/fulfillment-service/types.d.ts.map +1 -1
  109. package/dist/ts/server/authenticate/public/appProxy/authenticate.d.ts +1 -3
  110. package/dist/ts/server/authenticate/public/appProxy/authenticate.d.ts.map +1 -1
  111. package/dist/ts/server/authenticate/public/appProxy/types.d.ts +6 -7
  112. package/dist/ts/server/authenticate/public/appProxy/types.d.ts.map +1 -1
  113. package/dist/ts/server/authenticate/public/factory.d.ts +1 -3
  114. package/dist/ts/server/authenticate/public/factory.d.ts.map +1 -1
  115. package/dist/ts/server/authenticate/public/types.d.ts +2 -3
  116. package/dist/ts/server/authenticate/public/types.d.ts.map +1 -1
  117. package/dist/ts/server/authenticate/webhooks/authenticate.d.ts +1 -3
  118. package/dist/ts/server/authenticate/webhooks/authenticate.d.ts.map +1 -1
  119. package/dist/ts/server/authenticate/webhooks/types.d.ts +5 -6
  120. package/dist/ts/server/authenticate/webhooks/types.d.ts.map +1 -1
  121. package/dist/ts/server/clients/admin/factory.d.ts +3 -4
  122. package/dist/ts/server/clients/admin/factory.d.ts.map +1 -1
  123. package/dist/ts/server/clients/admin/graphql.d.ts.map +1 -1
  124. package/dist/ts/server/clients/admin/types.d.ts +2 -134
  125. package/dist/ts/server/clients/admin/types.d.ts.map +1 -1
  126. package/dist/ts/server/config-types.d.ts +14 -16
  127. package/dist/ts/server/config-types.d.ts.map +1 -1
  128. package/dist/ts/server/future/flags.d.ts +2 -22
  129. package/dist/ts/server/future/flags.d.ts.map +1 -1
  130. package/dist/ts/server/index.d.ts +1 -1
  131. package/dist/ts/server/index.d.ts.map +1 -1
  132. package/dist/ts/server/shopify-app.d.ts +1 -2
  133. package/dist/ts/server/shopify-app.d.ts.map +1 -1
  134. package/dist/ts/server/test-helpers/test-config.d.ts +2 -2
  135. package/dist/ts/server/test-helpers/test-config.d.ts.map +1 -1
  136. package/dist/ts/server/types-contexts.d.ts +17 -31
  137. package/dist/ts/server/types-contexts.d.ts.map +1 -1
  138. package/dist/ts/server/types.d.ts +13 -14
  139. package/dist/ts/server/types.d.ts.map +1 -1
  140. package/dist/ts/server/unauthenticated/admin/factory.d.ts +1 -3
  141. package/dist/ts/server/unauthenticated/admin/factory.d.ts.map +1 -1
  142. package/dist/ts/server/unauthenticated/admin/types.d.ts +5 -6
  143. package/dist/ts/server/unauthenticated/admin/types.d.ts.map +1 -1
  144. package/dist/ts/server/unauthenticated/types.d.ts +3 -5
  145. package/dist/ts/server/unauthenticated/types.d.ts.map +1 -1
  146. package/dist/ts/server/version.d.ts +1 -1
  147. package/dist/tsconfig.build.tsbuildinfo +1 -1
  148. package/package.json +13 -16
  149. package/dist/cjs/server/clients/admin/rest.js +0 -132
  150. package/dist/cjs/server/clients/admin/rest.js.map +0 -1
  151. package/dist/esm/server/clients/admin/rest.mjs +0 -130
  152. package/dist/esm/server/clients/admin/rest.mjs.map +0 -1
  153. package/dist/ts/server/clients/admin/rest.d.ts +0 -39
  154. package/dist/ts/server/clients/admin/rest.d.ts.map +0 -1
package/package.json CHANGED
@@ -1,7 +1,10 @@
1
1
  {
2
2
  "name": "@shopify/shopify-app-remix",
3
- "version": "3.8.4",
3
+ "version": "4.0.0",
4
4
  "description": "Shopify Remix - to simplify the building of Shopify Apps with Remix",
5
+ "engines": {
6
+ "node": ">=20.10.0"
7
+ },
5
8
  "repository": {
6
9
  "type": "git",
7
10
  "url": "git+https://github.com/Shopify/shopify-app-js.git",
@@ -58,36 +61,30 @@
58
61
  "remix",
59
62
  "app",
60
63
  "graphql",
61
- "rest",
62
64
  "webhook",
63
65
  "Admin API",
64
66
  "Storefront API"
65
67
  ],
66
68
  "devDependencies": {
69
+ "@babel/preset-env": "^7.28.0",
67
70
  "@remix-run/node": "^2.16.8",
68
71
  "@remix-run/react": "^2.16.8",
69
72
  "@remix-run/testing": "^2.16.8",
70
- "@shopify/generate-docs": "^0.17.1",
73
+ "@shopify/generate-docs": "^0.18.1",
71
74
  "@shopify/polaris": "^12.18.0",
72
75
  "@shopify/react-testing": "^6.0.0",
73
- "@shopify/shopify-app-session-storage-memory": "^4.0.19",
74
- "@testing-library/jest-dom": "^6.6.3",
75
- "@testing-library/react": "^16.3.0",
76
- "@types/jsonwebtoken": "^9.0.10",
77
- "@types/react": "^19.1.8",
78
- "@types/semver": "^7.7.0",
79
- "@types/testing-library__jest-dom": "^6.0.0",
80
- "jest-fetch-mock": "^3.0.3",
81
- "jsonwebtoken": "^9.0.2"
76
+ "@shopify/shopify-app-session-storage-memory": "^5.0.0",
77
+ "@types/react": "^19.1.12",
78
+ "jest-fetch-mock": "^3.0.3"
82
79
  },
83
80
  "dependencies": {
84
81
  "@remix-run/server-runtime": "^2.16.8",
85
82
  "@shopify/admin-api-client": "^1.1.1",
86
- "@shopify/shopify-api": "^11.14.0",
87
- "@shopify/shopify-app-session-storage": "^3.0.19",
83
+ "@shopify/shopify-api": "^12.0.0",
84
+ "@shopify/shopify-app-session-storage": "^4.0.0",
88
85
  "@shopify/storefront-api-client": "^1.0.9",
89
- "isbot": "^5.1.26",
90
- "semver": "^7.7.1"
86
+ "compare-versions": "^6.1.1",
87
+ "isbot": "^5.1.26"
91
88
  },
92
89
  "peerDependencies": {
93
90
  "@remix-run/node": "*",
@@ -1,132 +0,0 @@
1
- 'use strict';
2
-
3
- function restClientFactory({ params, handleClientError, session, }) {
4
- const { api } = params;
5
- const client = new RemixRestClient({
6
- params,
7
- handleClientError,
8
- session,
9
- });
10
- if (api.rest) {
11
- client.resources = {};
12
- const RestResourceClient = restResourceClientFactory({
13
- params,
14
- handleClientError,
15
- session,
16
- });
17
- Object.entries(api.rest).forEach(([name, resource]) => {
18
- class RemixResource extends resource {
19
- static Client = RestResourceClient;
20
- }
21
- Reflect.defineProperty(RemixResource, 'name', {
22
- value: name,
23
- });
24
- Reflect.set(client.resources, name, RemixResource);
25
- });
26
- }
27
- return client;
28
- }
29
- class RemixRestClient {
30
- session;
31
- params;
32
- handleClientError;
33
- constructor({ params, session, handleClientError }) {
34
- this.params = params;
35
- this.handleClientError = handleClientError;
36
- this.session = session;
37
- }
38
- /**
39
- * Performs a GET request on the given path.
40
- *
41
- * @deprecated In a future major release REST will be removed from this package. Please see [all-in on graphql](https://www.shopify.com/ca/partners/blog/all-in-on-graphql).
42
- */
43
- async get(params) {
44
- return this.makeRequest({
45
- method: 'GET',
46
- ...params,
47
- });
48
- }
49
- /**
50
- * Performs a POST request on the given path.
51
- *
52
- * @deprecated In a future major release REST will be removed from this package. Please see [all-in on graphql](https://www.shopify.com/ca/partners/blog/all-in-on-graphql).
53
- */
54
- async post(params) {
55
- return this.makeRequest({
56
- method: 'POST',
57
- ...params,
58
- });
59
- }
60
- /**
61
- * Performs a PUT request on the given path.
62
- *
63
- * @deprecated In a future major release REST will be removed from this package. Please see [all-in on graphql](https://www.shopify.com/ca/partners/blog/all-in-on-graphql).
64
- */
65
- async put(params) {
66
- return this.makeRequest({
67
- method: 'PUT',
68
- ...params,
69
- });
70
- }
71
- /**
72
- * Performs a DELETE request on the given path.
73
- *
74
- * @deprecated In a future major release REST will be removed from this package. Please see [all-in on graphql](https://www.shopify.com/ca/partners/blog/all-in-on-graphql).
75
- */
76
- async delete(params) {
77
- return this.makeRequest({
78
- method: 'DELETE',
79
- ...params,
80
- });
81
- }
82
- async makeRequest(params) {
83
- const originalClient = new this.params.api.clients.Rest({
84
- session: this.session,
85
- });
86
- const originalRequest = Reflect.get(originalClient, 'request');
87
- try {
88
- const apiResponse = await originalRequest.call(originalClient, params);
89
- // We use a separate client for REST requests and REST resources because we want to override the API library
90
- // client class to return a Response object instead.
91
- return new Response(JSON.stringify(apiResponse.body), {
92
- headers: apiResponse.headers,
93
- });
94
- }
95
- catch (error) {
96
- if (this.handleClientError) {
97
- throw await this.handleClientError({
98
- error,
99
- session: this.session,
100
- params: this.params,
101
- });
102
- }
103
- else
104
- throw new Error(error);
105
- }
106
- }
107
- }
108
- function restResourceClientFactory({ params, handleClientError, session, }) {
109
- const { api } = params;
110
- const ApiClient = api.clients.Rest;
111
- return class RestResourceClient extends ApiClient {
112
- async request(requestParams) {
113
- const originalClient = new api.clients.Rest({ session });
114
- const originalRequest = Reflect.get(originalClient, 'request');
115
- try {
116
- // We just call through to the API library client, and handle the error response here, so that data parsing
117
- // behaves the same way.
118
- return await originalRequest.call(originalClient, requestParams);
119
- }
120
- catch (error) {
121
- if (handleClientError) {
122
- throw await handleClientError({ error, params, session });
123
- }
124
- else
125
- throw new Error(error);
126
- }
127
- }
128
- };
129
- }
130
-
131
- exports.restClientFactory = restClientFactory;
132
- //# sourceMappingURL=rest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rest.js","sources":["../../../../../../src/server/clients/admin/rest.ts"],"sourcesContent":["import {\n DeleteRequestParams,\n GetRequestParams,\n PostRequestParams,\n PutRequestParams,\n RequestParams,\n Session,\n Shopify,\n ShopifyRestResources,\n} from '@shopify/shopify-api';\n\nimport type {AdminClientOptions} from './types';\n\nexport type RestClientWithResources<Resources extends ShopifyRestResources> =\n RemixRestClient & {resources: Resources};\n\nexport function restClientFactory<\n Resources extends ShopifyRestResources = ShopifyRestResources,\n>({\n params,\n handleClientError,\n session,\n}: AdminClientOptions): RestClientWithResources<Resources> {\n const {api} = params;\n const client = new RemixRestClient({\n params,\n handleClientError,\n session,\n }) as RestClientWithResources<Resources>;\n\n if (api.rest) {\n client.resources = {} as Resources;\n\n const RestResourceClient = restResourceClientFactory({\n params,\n handleClientError,\n session,\n });\n\n Object.entries(api.rest).forEach(([name, resource]) => {\n class RemixResource extends resource {\n public static Client = RestResourceClient;\n }\n\n Reflect.defineProperty(RemixResource, 'name', {\n value: name,\n });\n\n Reflect.set(client.resources, name, RemixResource);\n });\n }\n\n return client;\n}\n\nclass RemixRestClient {\n public session: Session;\n private params: AdminClientOptions['params'];\n private handleClientError: AdminClientOptions['handleClientError'];\n\n constructor({params, session, handleClientError}: AdminClientOptions) {\n this.params = params;\n this.handleClientError = handleClientError;\n this.session = session;\n }\n\n /**\n * Performs a GET request on the given path.\n *\n * @deprecated In a future major release REST will be removed from this package. Please see [all-in on graphql](https://www.shopify.com/ca/partners/blog/all-in-on-graphql).\n */\n public async get(params: GetRequestParams) {\n return this.makeRequest({\n method: 'GET' as RequestParams['method'],\n ...params,\n });\n }\n\n /**\n * Performs a POST request on the given path.\n *\n * @deprecated In a future major release REST will be removed from this package. Please see [all-in on graphql](https://www.shopify.com/ca/partners/blog/all-in-on-graphql).\n */\n public async post(params: PostRequestParams) {\n return this.makeRequest({\n method: 'POST' as RequestParams['method'],\n ...params,\n });\n }\n\n /**\n * Performs a PUT request on the given path.\n *\n * @deprecated In a future major release REST will be removed from this package. Please see [all-in on graphql](https://www.shopify.com/ca/partners/blog/all-in-on-graphql).\n */\n public async put(params: PutRequestParams) {\n return this.makeRequest({\n method: 'PUT' as RequestParams['method'],\n ...params,\n });\n }\n\n /**\n * Performs a DELETE request on the given path.\n *\n * @deprecated In a future major release REST will be removed from this package. Please see [all-in on graphql](https://www.shopify.com/ca/partners/blog/all-in-on-graphql).\n */\n public async delete(params: DeleteRequestParams) {\n return this.makeRequest({\n method: 'DELETE' as RequestParams['method'],\n ...params,\n });\n }\n\n protected async makeRequest(params: RequestParams): Promise<Response> {\n const originalClient = new this.params.api.clients.Rest({\n session: this.session,\n });\n const originalRequest = Reflect.get(originalClient, 'request');\n\n try {\n const apiResponse = await originalRequest.call(originalClient, params);\n\n // We use a separate client for REST requests and REST resources because we want to override the API library\n // client class to return a Response object instead.\n return new Response(JSON.stringify(apiResponse.body), {\n headers: apiResponse.headers,\n });\n } catch (error) {\n if (this.handleClientError) {\n throw await this.handleClientError({\n error,\n session: this.session,\n params: this.params,\n });\n } else throw new Error(error);\n }\n }\n}\n\nfunction restResourceClientFactory({\n params,\n handleClientError,\n session,\n}: AdminClientOptions): Shopify['clients']['Rest'] {\n const {api} = params;\n\n const ApiClient = api.clients.Rest;\n return class RestResourceClient extends ApiClient {\n protected async request(requestParams: RequestParams) {\n const originalClient = new api.clients.Rest({session});\n const originalRequest = Reflect.get(originalClient, 'request');\n\n try {\n // We just call through to the API library client, and handle the error response here, so that data parsing\n // behaves the same way.\n return await originalRequest.call(originalClient, requestParams);\n } catch (error) {\n if (handleClientError) {\n throw await handleClientError({error, params, session});\n } else throw new Error(error);\n }\n }\n };\n}\n"],"names":[],"mappings":";;AAgBM,SAAU,iBAAiB,CAE/B,EACA,MAAM,EACN,iBAAiB,EACjB,OAAO,GACY,EAAA;AACnB,IAAA,MAAM,EAAC,GAAG,EAAC,GAAG,MAAM;AACpB,IAAA,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,MAAM;QACN,iBAAiB;QACjB,OAAO;AACR,KAAA,CAAuC;AAExC,IAAA,IAAI,GAAG,CAAC,IAAI,EAAE;AACZ,QAAA,MAAM,CAAC,SAAS,GAAG,EAAe;QAElC,MAAM,kBAAkB,GAAG,yBAAyB,CAAC;YACnD,MAAM;YACN,iBAAiB;YACjB,OAAO;AACR,SAAA,CAAC;AAEF,QAAA,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAI;YACpD,MAAM,aAAc,SAAQ,QAAQ,CAAA;AAC3B,gBAAA,OAAO,MAAM,GAAG,kBAAkB;;AAG3C,YAAA,OAAO,CAAC,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE;AAC5C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC;AACpD,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,OAAO,MAAM;AACf;AAEA,MAAM,eAAe,CAAA;AACZ,IAAA,OAAO;AACN,IAAA,MAAM;AACN,IAAA,iBAAiB;AAEzB,IAAA,WAAA,CAAY,EAAC,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAqB,EAAA;AAClE,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB;AAC1C,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;IACxB;AAEA;;;;AAIG;IACI,MAAM,GAAG,CAAC,MAAwB,EAAA;QACvC,OAAO,IAAI,CAAC,WAAW,CAAC;AACtB,YAAA,MAAM,EAAE,KAAgC;AACxC,YAAA,GAAG,MAAM;AACV,SAAA,CAAC;IACJ;AAEA;;;;AAIG;IACI,MAAM,IAAI,CAAC,MAAyB,EAAA;QACzC,OAAO,IAAI,CAAC,WAAW,CAAC;AACtB,YAAA,MAAM,EAAE,MAAiC;AACzC,YAAA,GAAG,MAAM;AACV,SAAA,CAAC;IACJ;AAEA;;;;AAIG;IACI,MAAM,GAAG,CAAC,MAAwB,EAAA;QACvC,OAAO,IAAI,CAAC,WAAW,CAAC;AACtB,YAAA,MAAM,EAAE,KAAgC;AACxC,YAAA,GAAG,MAAM;AACV,SAAA,CAAC;IACJ;AAEA;;;;AAIG;IACI,MAAM,MAAM,CAAC,MAA2B,EAAA;QAC7C,OAAO,IAAI,CAAC,WAAW,CAAC;AACtB,YAAA,MAAM,EAAE,QAAmC;AAC3C,YAAA,GAAG,MAAM;AACV,SAAA,CAAC;IACJ;IAEU,MAAM,WAAW,CAAC,MAAqB,EAAA;AAC/C,QAAA,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;YACtD,OAAO,EAAE,IAAI,CAAC,OAAO;AACtB,SAAA,CAAC;QACF,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC;AAE9D,QAAA,IAAI;YACF,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;;;YAItE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;gBACpD,OAAO,EAAE,WAAW,CAAC,OAAO;AAC7B,aAAA,CAAC;QACJ;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,gBAAA,MAAM,MAAM,IAAI,CAAC,iBAAiB,CAAC;oBACjC,KAAK;oBACL,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,iBAAA,CAAC;YACJ;;AAAO,gBAAA,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC;QAC/B;IACF;AACD;AAED,SAAS,yBAAyB,CAAC,EACjC,MAAM,EACN,iBAAiB,EACjB,OAAO,GACY,EAAA;AACnB,IAAA,MAAM,EAAC,GAAG,EAAC,GAAG,MAAM;AAEpB,IAAA,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI;IAClC,OAAO,MAAM,kBAAmB,SAAQ,SAAS,CAAA;QACrC,MAAM,OAAO,CAAC,aAA4B,EAAA;AAClD,YAAA,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC;YACtD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC;AAE9D,YAAA,IAAI;;;gBAGF,OAAO,MAAM,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC;YAClE;YAAE,OAAO,KAAK,EAAE;gBACd,IAAI,iBAAiB,EAAE;oBACrB,MAAM,MAAM,iBAAiB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAC,CAAC;gBACzD;;AAAO,oBAAA,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC;YAC/B;QACF;KACD;AACH;;;;"}
@@ -1,130 +0,0 @@
1
- function restClientFactory({ params, handleClientError, session, }) {
2
- const { api } = params;
3
- const client = new RemixRestClient({
4
- params,
5
- handleClientError,
6
- session,
7
- });
8
- if (api.rest) {
9
- client.resources = {};
10
- const RestResourceClient = restResourceClientFactory({
11
- params,
12
- handleClientError,
13
- session,
14
- });
15
- Object.entries(api.rest).forEach(([name, resource]) => {
16
- class RemixResource extends resource {
17
- static Client = RestResourceClient;
18
- }
19
- Reflect.defineProperty(RemixResource, 'name', {
20
- value: name,
21
- });
22
- Reflect.set(client.resources, name, RemixResource);
23
- });
24
- }
25
- return client;
26
- }
27
- class RemixRestClient {
28
- session;
29
- params;
30
- handleClientError;
31
- constructor({ params, session, handleClientError }) {
32
- this.params = params;
33
- this.handleClientError = handleClientError;
34
- this.session = session;
35
- }
36
- /**
37
- * Performs a GET request on the given path.
38
- *
39
- * @deprecated In a future major release REST will be removed from this package. Please see [all-in on graphql](https://www.shopify.com/ca/partners/blog/all-in-on-graphql).
40
- */
41
- async get(params) {
42
- return this.makeRequest({
43
- method: 'GET',
44
- ...params,
45
- });
46
- }
47
- /**
48
- * Performs a POST request on the given path.
49
- *
50
- * @deprecated In a future major release REST will be removed from this package. Please see [all-in on graphql](https://www.shopify.com/ca/partners/blog/all-in-on-graphql).
51
- */
52
- async post(params) {
53
- return this.makeRequest({
54
- method: 'POST',
55
- ...params,
56
- });
57
- }
58
- /**
59
- * Performs a PUT request on the given path.
60
- *
61
- * @deprecated In a future major release REST will be removed from this package. Please see [all-in on graphql](https://www.shopify.com/ca/partners/blog/all-in-on-graphql).
62
- */
63
- async put(params) {
64
- return this.makeRequest({
65
- method: 'PUT',
66
- ...params,
67
- });
68
- }
69
- /**
70
- * Performs a DELETE request on the given path.
71
- *
72
- * @deprecated In a future major release REST will be removed from this package. Please see [all-in on graphql](https://www.shopify.com/ca/partners/blog/all-in-on-graphql).
73
- */
74
- async delete(params) {
75
- return this.makeRequest({
76
- method: 'DELETE',
77
- ...params,
78
- });
79
- }
80
- async makeRequest(params) {
81
- const originalClient = new this.params.api.clients.Rest({
82
- session: this.session,
83
- });
84
- const originalRequest = Reflect.get(originalClient, 'request');
85
- try {
86
- const apiResponse = await originalRequest.call(originalClient, params);
87
- // We use a separate client for REST requests and REST resources because we want to override the API library
88
- // client class to return a Response object instead.
89
- return new Response(JSON.stringify(apiResponse.body), {
90
- headers: apiResponse.headers,
91
- });
92
- }
93
- catch (error) {
94
- if (this.handleClientError) {
95
- throw await this.handleClientError({
96
- error,
97
- session: this.session,
98
- params: this.params,
99
- });
100
- }
101
- else
102
- throw new Error(error);
103
- }
104
- }
105
- }
106
- function restResourceClientFactory({ params, handleClientError, session, }) {
107
- const { api } = params;
108
- const ApiClient = api.clients.Rest;
109
- return class RestResourceClient extends ApiClient {
110
- async request(requestParams) {
111
- const originalClient = new api.clients.Rest({ session });
112
- const originalRequest = Reflect.get(originalClient, 'request');
113
- try {
114
- // We just call through to the API library client, and handle the error response here, so that data parsing
115
- // behaves the same way.
116
- return await originalRequest.call(originalClient, requestParams);
117
- }
118
- catch (error) {
119
- if (handleClientError) {
120
- throw await handleClientError({ error, params, session });
121
- }
122
- else
123
- throw new Error(error);
124
- }
125
- }
126
- };
127
- }
128
-
129
- export { restClientFactory };
130
- //# sourceMappingURL=rest.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rest.mjs","sources":["../../../../../../src/server/clients/admin/rest.ts"],"sourcesContent":["import {\n DeleteRequestParams,\n GetRequestParams,\n PostRequestParams,\n PutRequestParams,\n RequestParams,\n Session,\n Shopify,\n ShopifyRestResources,\n} from '@shopify/shopify-api';\n\nimport type {AdminClientOptions} from './types';\n\nexport type RestClientWithResources<Resources extends ShopifyRestResources> =\n RemixRestClient & {resources: Resources};\n\nexport function restClientFactory<\n Resources extends ShopifyRestResources = ShopifyRestResources,\n>({\n params,\n handleClientError,\n session,\n}: AdminClientOptions): RestClientWithResources<Resources> {\n const {api} = params;\n const client = new RemixRestClient({\n params,\n handleClientError,\n session,\n }) as RestClientWithResources<Resources>;\n\n if (api.rest) {\n client.resources = {} as Resources;\n\n const RestResourceClient = restResourceClientFactory({\n params,\n handleClientError,\n session,\n });\n\n Object.entries(api.rest).forEach(([name, resource]) => {\n class RemixResource extends resource {\n public static Client = RestResourceClient;\n }\n\n Reflect.defineProperty(RemixResource, 'name', {\n value: name,\n });\n\n Reflect.set(client.resources, name, RemixResource);\n });\n }\n\n return client;\n}\n\nclass RemixRestClient {\n public session: Session;\n private params: AdminClientOptions['params'];\n private handleClientError: AdminClientOptions['handleClientError'];\n\n constructor({params, session, handleClientError}: AdminClientOptions) {\n this.params = params;\n this.handleClientError = handleClientError;\n this.session = session;\n }\n\n /**\n * Performs a GET request on the given path.\n *\n * @deprecated In a future major release REST will be removed from this package. Please see [all-in on graphql](https://www.shopify.com/ca/partners/blog/all-in-on-graphql).\n */\n public async get(params: GetRequestParams) {\n return this.makeRequest({\n method: 'GET' as RequestParams['method'],\n ...params,\n });\n }\n\n /**\n * Performs a POST request on the given path.\n *\n * @deprecated In a future major release REST will be removed from this package. Please see [all-in on graphql](https://www.shopify.com/ca/partners/blog/all-in-on-graphql).\n */\n public async post(params: PostRequestParams) {\n return this.makeRequest({\n method: 'POST' as RequestParams['method'],\n ...params,\n });\n }\n\n /**\n * Performs a PUT request on the given path.\n *\n * @deprecated In a future major release REST will be removed from this package. Please see [all-in on graphql](https://www.shopify.com/ca/partners/blog/all-in-on-graphql).\n */\n public async put(params: PutRequestParams) {\n return this.makeRequest({\n method: 'PUT' as RequestParams['method'],\n ...params,\n });\n }\n\n /**\n * Performs a DELETE request on the given path.\n *\n * @deprecated In a future major release REST will be removed from this package. Please see [all-in on graphql](https://www.shopify.com/ca/partners/blog/all-in-on-graphql).\n */\n public async delete(params: DeleteRequestParams) {\n return this.makeRequest({\n method: 'DELETE' as RequestParams['method'],\n ...params,\n });\n }\n\n protected async makeRequest(params: RequestParams): Promise<Response> {\n const originalClient = new this.params.api.clients.Rest({\n session: this.session,\n });\n const originalRequest = Reflect.get(originalClient, 'request');\n\n try {\n const apiResponse = await originalRequest.call(originalClient, params);\n\n // We use a separate client for REST requests and REST resources because we want to override the API library\n // client class to return a Response object instead.\n return new Response(JSON.stringify(apiResponse.body), {\n headers: apiResponse.headers,\n });\n } catch (error) {\n if (this.handleClientError) {\n throw await this.handleClientError({\n error,\n session: this.session,\n params: this.params,\n });\n } else throw new Error(error);\n }\n }\n}\n\nfunction restResourceClientFactory({\n params,\n handleClientError,\n session,\n}: AdminClientOptions): Shopify['clients']['Rest'] {\n const {api} = params;\n\n const ApiClient = api.clients.Rest;\n return class RestResourceClient extends ApiClient {\n protected async request(requestParams: RequestParams) {\n const originalClient = new api.clients.Rest({session});\n const originalRequest = Reflect.get(originalClient, 'request');\n\n try {\n // We just call through to the API library client, and handle the error response here, so that data parsing\n // behaves the same way.\n return await originalRequest.call(originalClient, requestParams);\n } catch (error) {\n if (handleClientError) {\n throw await handleClientError({error, params, session});\n } else throw new Error(error);\n }\n }\n };\n}\n"],"names":[],"mappings":"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"}
@@ -1,39 +0,0 @@
1
- import { DeleteRequestParams, GetRequestParams, PostRequestParams, PutRequestParams, RequestParams, Session, ShopifyRestResources } from '@shopify/shopify-api';
2
- import type { AdminClientOptions } from './types';
3
- export type RestClientWithResources<Resources extends ShopifyRestResources> = RemixRestClient & {
4
- resources: Resources;
5
- };
6
- export declare function restClientFactory<Resources extends ShopifyRestResources = ShopifyRestResources>({ params, handleClientError, session, }: AdminClientOptions): RestClientWithResources<Resources>;
7
- declare class RemixRestClient {
8
- session: Session;
9
- private params;
10
- private handleClientError;
11
- constructor({ params, session, handleClientError }: AdminClientOptions);
12
- /**
13
- * Performs a GET request on the given path.
14
- *
15
- * @deprecated In a future major release REST will be removed from this package. Please see [all-in on graphql](https://www.shopify.com/ca/partners/blog/all-in-on-graphql).
16
- */
17
- get(params: GetRequestParams): Promise<Response>;
18
- /**
19
- * Performs a POST request on the given path.
20
- *
21
- * @deprecated In a future major release REST will be removed from this package. Please see [all-in on graphql](https://www.shopify.com/ca/partners/blog/all-in-on-graphql).
22
- */
23
- post(params: PostRequestParams): Promise<Response>;
24
- /**
25
- * Performs a PUT request on the given path.
26
- *
27
- * @deprecated In a future major release REST will be removed from this package. Please see [all-in on graphql](https://www.shopify.com/ca/partners/blog/all-in-on-graphql).
28
- */
29
- put(params: PutRequestParams): Promise<Response>;
30
- /**
31
- * Performs a DELETE request on the given path.
32
- *
33
- * @deprecated In a future major release REST will be removed from this package. Please see [all-in on graphql](https://www.shopify.com/ca/partners/blog/all-in-on-graphql).
34
- */
35
- delete(params: DeleteRequestParams): Promise<Response>;
36
- protected makeRequest(params: RequestParams): Promise<Response>;
37
- }
38
- export {};
39
- //# sourceMappingURL=rest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rest.d.ts","sourceRoot":"","sources":["../../../../../src/server/clients/admin/rest.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,OAAO,EAEP,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,SAAS,CAAC;AAEhD,MAAM,MAAM,uBAAuB,CAAC,SAAS,SAAS,oBAAoB,IACxE,eAAe,GAAG;IAAC,SAAS,EAAE,SAAS,CAAA;CAAC,CAAC;AAE3C,wBAAgB,iBAAiB,CAC/B,SAAS,SAAS,oBAAoB,GAAG,oBAAoB,EAC7D,EACA,MAAM,EACN,iBAAiB,EACjB,OAAO,GACR,EAAE,kBAAkB,GAAG,uBAAuB,CAAC,SAAS,CAAC,CA+BzD;AAED,cAAM,eAAe;IACZ,OAAO,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,iBAAiB,CAA0C;gBAEvD,EAAC,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAC,EAAE,kBAAkB;IAMpE;;;;OAIG;IACU,GAAG,CAAC,MAAM,EAAE,gBAAgB;IAOzC;;;;OAIG;IACU,IAAI,CAAC,MAAM,EAAE,iBAAiB;IAO3C;;;;OAIG;IACU,GAAG,CAAC,MAAM,EAAE,gBAAgB;IAOzC;;;;OAIG;IACU,MAAM,CAAC,MAAM,EAAE,mBAAmB;cAO/B,WAAW,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC;CAwBtE"}