@shopify/shopify-app-remix 3.2.0 → 3.3.1

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 (44) hide show
  1. package/README.md +1 -1
  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/scope/client/revoke-scopes.js +1 -1
  7. package/dist/cjs/server/authenticate/admin/scope/client/revoke-scopes.js.map +1 -1
  8. package/dist/cjs/server/authenticate/admin/scope/revoke.js +2 -5
  9. package/dist/cjs/server/authenticate/admin/scope/revoke.js.map +1 -1
  10. package/dist/cjs/server/index.js +4 -0
  11. package/dist/cjs/server/index.js.map +1 -1
  12. package/dist/cjs/server/version.js +1 -1
  13. package/dist/esm/server/authenticate/admin/authenticate.mjs +2 -0
  14. package/dist/esm/server/authenticate/admin/authenticate.mjs.map +1 -1
  15. package/dist/esm/server/authenticate/admin/billing/create-usage-record.mjs +34 -0
  16. package/dist/esm/server/authenticate/admin/billing/create-usage-record.mjs.map +1 -0
  17. package/dist/esm/server/authenticate/admin/scope/client/revoke-scopes.mjs +1 -1
  18. package/dist/esm/server/authenticate/admin/scope/client/revoke-scopes.mjs.map +1 -1
  19. package/dist/esm/server/authenticate/admin/scope/revoke.mjs +2 -5
  20. package/dist/esm/server/authenticate/admin/scope/revoke.mjs.map +1 -1
  21. package/dist/esm/server/index.mjs +1 -1
  22. package/dist/esm/server/version.mjs +1 -1
  23. package/dist/ts/server/authenticate/admin/authenticate.d.ts.map +1 -1
  24. package/dist/ts/server/authenticate/admin/billing/create-usage-record.d.ts +5 -0
  25. package/dist/ts/server/authenticate/admin/billing/create-usage-record.d.ts.map +1 -0
  26. package/dist/ts/server/authenticate/admin/billing/index.d.ts +1 -0
  27. package/dist/ts/server/authenticate/admin/billing/index.d.ts.map +1 -1
  28. package/dist/ts/server/authenticate/admin/billing/types.d.ts +138 -2
  29. package/dist/ts/server/authenticate/admin/billing/types.d.ts.map +1 -1
  30. package/dist/ts/server/authenticate/admin/scope/revoke.d.ts +1 -1
  31. package/dist/ts/server/authenticate/admin/scope/revoke.d.ts.map +1 -1
  32. package/dist/ts/server/authenticate/admin/scope/types.d.ts +1 -1
  33. package/dist/ts/server/authenticate/admin/scope/types.d.ts.map +1 -1
  34. package/dist/ts/server/authenticate/webhooks/types.d.ts +32 -0
  35. package/dist/ts/server/authenticate/webhooks/types.d.ts.map +1 -1
  36. package/dist/ts/server/config-types.d.ts +42 -28
  37. package/dist/ts/server/config-types.d.ts.map +1 -1
  38. package/dist/ts/server/index.d.ts +1 -1
  39. package/dist/ts/server/index.d.ts.map +1 -1
  40. package/dist/ts/server/types.d.ts +64 -40
  41. package/dist/ts/server/types.d.ts.map +1 -1
  42. package/dist/ts/server/version.d.ts +1 -1
  43. package/dist/tsconfig.build.tsbuildinfo +1 -1
  44. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/server/authenticate/webhooks/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AAEnE,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAEnD,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM;IACjD;;;;;;;;;;;;;;;;OAgBG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;;;;;;;;;;;;;OAgBG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE7B;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,4BAA4B,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAC7E,SAAQ,OAAO,CAAC,MAAM,CAAC;IACvB,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB,CACxC,SAAS,SAAS,oBAAoB,EACtC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CACjC,SAAQ,OAAO,CAAC,MAAM,CAAC;IACvB;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,KAAK,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;CACnC;AAED,MAAM,MAAM,cAAc,CACxB,SAAS,SAAS,oBAAoB,EACtC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,IAE/B,4BAA4B,CAAC,MAAM,CAAC,GACpC,yBAAyB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAEjD,MAAM,MAAM,mBAAmB,CAC7B,SAAS,SAAS,oBAAoB,EACtC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,IAC/B,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/server/authenticate/webhooks/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AAEnE,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAEnD,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM;IACjD;;;;;;;;;;;;;;;;OAgBG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;;;;;;;;;;;;;OAgBG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE7B;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,4BAA4B,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAC7E,SAAQ,OAAO,CAAC,MAAM,CAAC;IACvB,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB,CACxC,SAAS,SAAS,oBAAoB,EACtC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CACjC,SAAQ,OAAO,CAAC,MAAM,CAAC;IACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCG;IACH,KAAK,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;CACnC;AAED,MAAM,MAAM,cAAc,CACxB,SAAS,SAAS,oBAAoB,EACtC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,IAE/B,4BAA4B,CAAC,MAAM,CAAC,GACpC,yBAAyB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAEjD,MAAM,MAAM,mBAAmB,CAC7B,SAAS,SAAS,oBAAoB,EACtC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,IAC/B,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC"}
@@ -48,27 +48,32 @@ export interface AppConfigArg<Resources extends ShopifyRestResources = ShopifyRe
48
48
  */
49
49
  useOnlineTokens?: boolean;
50
50
  /**
51
- * The config for the webhook topics your app would like to subscribe to.
51
+ * The config for the shop-specific webhooks your app needs.
52
52
  *
53
- * {@link https://shopify.dev/docs/apps/webhooks}
53
+ * Use this to configure shop-specific webhooks. In many cases defining app-specific webhooks in the `shopify.app.toml` will be sufficient and easier to manage. Please see:
54
54
  *
55
- * This can be in used in conjunction with the afterAuth hook to register webhook topics when a user installs your app. Or you can use this function in other processes such as background jobs.
55
+ * {@link https://shopify.dev/docs/apps/build/webhooks/subscribe#app-specific-vs-shop-specific-subscriptions}
56
+ *
57
+ * You should only use this if you need shop-specific webhooks. If you do need shop-specific webhooks this can be in used in conjunction with the afterAuth hook, loaders or processes such as background jobs.
56
58
  *
57
59
  * @example
58
- * <caption>Registering for a webhook when a merchant uninstalls your app.</caption>
60
+ * <caption>Registering shop-specific webhooks.</caption>
59
61
  * ```ts
60
- * // /app/shopify.server.ts
62
+ * // app/shopify.server.ts
61
63
  * import { DeliveryMethod, shopifyApp } from "@shopify/shopify-app-remix/server";
62
64
  *
63
65
  * const shopify = shopifyApp({
64
66
  * webhooks: {
65
- * APP_UNINSTALLED: {
67
+ * PRODUCTS_CREATE: {
66
68
  * deliveryMethod: DeliveryMethod.Http,
67
- * callbackUrl: "/webhooks",
69
+ * callbackUrl: "/webhooks/products/create",
68
70
  * },
69
71
  * },
70
72
  * hooks: {
71
73
  * afterAuth: async ({ session }) => {
74
+ * // Register webhooks for the shop
75
+ * // In this example, every shop will have these webhooks
76
+ * // But you could wrap this in some custom shop specific conditional logic
72
77
  * shopify.registerWebhooks({ session });
73
78
  * }
74
79
  * },
@@ -76,26 +81,42 @@ export interface AppConfigArg<Resources extends ShopifyRestResources = ShopifyRe
76
81
  * });
77
82
  * export default shopify;
78
83
  * export const authenticate = shopify.authenticate;
84
+ * ```
79
85
  *
80
- * // /app/routes/webhooks.jsx
81
- * import { ActionFunctionArgs } from "@remix-run/node";
86
+ * @example
87
+ * <caption>Registering app-specific webhooks (Recommended)</caption>
88
+ * ```toml
89
+ * # shopify.app.toml
90
+ * [webhooks]
91
+ * api_version = "2024-07"
92
+
93
+ * [[webhooks.subscriptions]]
94
+ * topics = ["products/create"]
95
+ * uri = "/webhooks/products/create"
82
96
  *
97
+ * ```
98
+ *
99
+ * @example
100
+ * <caption>Authenticating a webhook request</caption>
101
+ *
102
+ * ```ts
103
+ * // /app/routes/webhooks.ts
104
+ * import { ActionFunctionArgs } from "@remix-run/node";
83
105
  * import { authenticate } from "../shopify.server";
84
106
  * import db from "../db.server";
85
107
  *
86
108
  * export const action = async ({ request }: ActionFunctionArgs) => {
87
- * const { topic, shop } = await authenticate.webhook(request);
88
- *
89
- * switch (topic) {
90
- * case "APP_UNINSTALLED":
91
- * await db.session.deleteMany({ where: { shop } });
92
- * break;
93
- * case "CUSTOMERS_DATA_REQUEST":
94
- * case "CUSTOMERS_REDACT":
95
- * case "SHOP_REDACT":
96
- * default:
97
- * throw new Response("Unhandled webhook topic", { status: 404 });
109
+ * const { topic, shop, session, payload } = await authenticate.webhook(request);
110
+ *
111
+ * // Webhook requests can trigger after an app is uninstalled
112
+ * // If the app is already uninstalled, the session may be undefined.
113
+ * if (!session) {
114
+ * throw new Response();
98
115
  * }
116
+ *
117
+ * // Handle the webhook
118
+ * console.log(`${TOPIC} webhook received with`, JSON.stringify(payload))
119
+ *
99
120
  * throw new Response();
100
121
  * };
101
122
  * ```
@@ -228,7 +249,7 @@ interface HooksConfig {
228
249
  * @param context.admin - An object with access to the Shopify Admin API's.
229
250
  *
230
251
  * @example
231
- * <caption>Registering webhooks and seeding data when a merchant installs your app.</caption>
252
+ * <caption>Seeding data when a merchant installs your app.</caption>
232
253
  * ```ts
233
254
  * import { DeliveryMethod, shopifyApp } from "@shopify/shopify-app-remix/server";
234
255
  * import { seedStoreData } from "~/db/seeds"
@@ -236,16 +257,9 @@ interface HooksConfig {
236
257
  * const shopify = shopifyApp({
237
258
  * hooks: {
238
259
  * afterAuth: async ({ session }) => {
239
- * shopify.registerWebhooks({ session });
240
260
  * seedStoreData({session})
241
261
  * }
242
262
  * },
243
- * webhooks: {
244
- * APP_UNINSTALLED: {
245
- * deliveryMethod: DeliveryMethod.Http,
246
- * callbackUrl: "/webhooks",
247
- * },
248
- * },
249
263
  * // ...etc
250
264
  * });
251
265
  * ```
@@ -1 +1 @@
1
- {"version":3,"file":"config-types.d.ts","sourceRoot":"","sources":["../../../src/server/config-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-types.d.ts","sourceRoot":"","sources":["../../../src/server/config-types.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import '@shopify/shopify-api/adapters/web-api';
2
- export { LATEST_API_VERSION, LogSeverity, DeliveryMethod, BillingInterval, ApiVersion, Session, } from '@shopify/shopify-api';
2
+ export { LATEST_API_VERSION, LogSeverity, DeliveryMethod, BillingInterval, BillingReplacementBehavior, ApiVersion, Session, } from '@shopify/shopify-api';
3
3
  export type { JwtPayload } from '@shopify/shopify-api';
4
4
  export type * from './types-contexts';
5
5
  export type { ShopifyApp, LoginError } from './types';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,uCAAuC,CAAC;AAO/C,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,eAAe,EACf,UAAU,EACV,OAAO,GACR,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAErD,mBAAmB,kBAAkB,CAAC;AACtC,YAAY,EAAC,UAAU,EAAE,UAAU,EAAC,MAAM,SAAS,CAAC;AACpD,OAAO,EAAC,cAAc,EAAE,eAAe,EAAC,MAAM,SAAS,CAAC;AACxD,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AACzC,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,uCAAuC,CAAC;AAO/C,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,eAAe,EACf,0BAA0B,EAC1B,UAAU,EACV,OAAO,GACR,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAErD,mBAAmB,kBAAkB,CAAC;AACtC,YAAY,EAAC,UAAU,EAAE,UAAU,EAAC,MAAM,SAAS,CAAC;AACpD,OAAO,EAAC,cAAc,EAAE,eAAe,EAAC,MAAM,SAAS,CAAC;AACxD,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AACzC,cAAc,UAAU,CAAC"}
@@ -164,50 +164,65 @@ interface Authenticate<Config extends AppConfigArg> {
164
164
  * <caption>Authenticating a webhook request</caption>
165
165
  *
166
166
  * ```ts
167
- * // /app/shopify.server.ts
167
+ * // app/routes/webhooks.ts
168
+ * import { ActionFunctionArgs } from "@remix-run/node";
169
+ * import { authenticate } from "../shopify.server";
170
+ * import db from "../db.server";
171
+ *
172
+ * export const action = async ({ request }: ActionFunctionArgs) => {
173
+ * const { topic, shop, session, payload } = await authenticate.webhook(request);
174
+ *
175
+ * // Webhook requests can trigger after an app is uninstalled
176
+ * // If the app is already uninstalled, the session may be undefined.
177
+ * if (!session) {
178
+ * throw new Response();
179
+ * }
180
+ *
181
+ * // Handle the webhook
182
+ * console.log(`${TOPIC} webhook received with payload:`, JSON.stringify(payload))
183
+ *
184
+ * throw new Response();
185
+ * };
186
+ * ```
187
+ *
188
+ * @example
189
+ * <caption>Registering app-specific webhooks (Recommended)</caption>
190
+ * ```toml
191
+ * # shopify.app.toml
192
+ * [webhooks]
193
+ * api_version = "2024-07"
194
+
195
+ * [[webhooks.subscriptions]]
196
+ * topics = ["products/create"]
197
+ * uri = "/webhooks/products/create"
198
+ *
199
+ * ```
200
+ *
201
+ * @example
202
+ * <caption>Registering shop-specific webhooks.</caption>
203
+ * <description>In many cases you won't need this. Please see: [https://shopify.dev/docs/apps/build/webhooks/subscribe#app-specific-vs-shop-specific-subscriptions](https://shopify.dev/docs/apps/build/webhooks/subscribe#app-specific-vs-shop-specific-subscriptions)
204
+ * </description>
205
+ * ```ts
206
+ * // app/shopify.server.ts
168
207
  * import { DeliveryMethod, shopifyApp } from "@shopify/shopify-app-remix/server";
169
208
  *
170
209
  * const shopify = shopifyApp({
171
210
  * webhooks: {
172
- * APP_UNINSTALLED: {
211
+ * PRODUCTS_CREATE: {
173
212
  * deliveryMethod: DeliveryMethod.Http,
174
- * callbackUrl: "/webhooks",
213
+ * callbackUrl: "/webhooks/products/create",
175
214
  * },
176
215
  * },
177
216
  * hooks: {
178
217
  * afterAuth: async ({ session }) => {
218
+ * // Register webhooks for the shop
219
+ * // In this example, every shop will have these webhooks
220
+ * // You could wrap this in some custom shop specific conditional logic if needed
179
221
  * shopify.registerWebhooks({ session });
180
222
  * },
181
223
  * },
182
224
  * // ...etc
183
225
  * });
184
- * export default shopify;
185
- * export const authenticate = shopify.authenticate;
186
- * ```
187
- * ```ts
188
- * // /app/routes/webhooks.ts
189
- * import { ActionFunctionArgs } from "@remix-run/node";
190
- * import { authenticate } from "../shopify.server";
191
- * import db from "../db.server";
192
- *
193
- * export const action = async ({ request }: ActionFunctionArgs) => {
194
- * const { topic, shop, session } = await authenticate.webhook(request);
195
- *
196
- * switch (topic) {
197
- * case "APP_UNINSTALLED":
198
- * if (session) {
199
- * await db.session.deleteMany({ where: { shop } });
200
- * }
201
- * break;
202
- * case "CUSTOMERS_DATA_REQUEST":
203
- * case "CUSTOMERS_REDACT":
204
- * case "SHOP_REDACT":
205
- * default:
206
- * throw new Response("Unhandled webhook topic", { status: 404 });
207
- * }
208
- *
209
- * throw new Response();
210
- * };
211
226
  * ```
212
227
  */
213
228
  webhook: AuthenticateWebhook<RestResourcesType<Config>, string>;
@@ -280,25 +295,34 @@ export interface ShopifyAppBase<Config extends AppConfigArg> {
280
295
  */
281
296
  addDocumentResponseHeaders: AddDocumentResponseHeaders;
282
297
  /**
283
- * Register webhook topics for a store using the given session. Most likely you want to use this in combination with the afterAuth hook.
298
+ * Register shop-specific webhook subscriptions using the Admin GraphQL API.
299
+ *
300
+ * In many cases defining app-specific webhooks in the `shopify.app.toml` will be sufficient and easier to manage. Please see:
301
+ *
302
+ * {@link https://shopify.dev/docs/apps/build/webhooks/subscribe#app-specific-vs-shop-specific-subscriptions}
303
+ *
304
+ * You should only use this if you need shop-specific webhooks.
284
305
  *
285
306
  * @example
286
- * <caption>Registering webhooks after install</caption>
287
- * <description>Trigger the registration to create the webhook subscriptions after a merchant installs your app using the `afterAuth` hook. Learn more about [subscribing to webhooks.](/docs/api/shopify-app-remix/v1/guide-webhooks)</description>
307
+ * <caption>Registering shop-specific webhooks after install</caption>
308
+ * <description>Trigger the registration to create the shop-specific webhook subscriptions after a merchant installs your app using the `afterAuth` hook. Learn more about [subscribing to webhooks.](https://shopify.dev/docs/api/shopify-app-remix/v3/guide-webhooks)</description>
288
309
  * ```ts
289
- * // /app/shopify.server.ts
310
+ * // app/shopify.server.ts
290
311
  * import { DeliveryMethod, shopifyApp } from "@shopify/shopify-app-remix/server";
291
312
  *
292
313
  * const shopify = shopifyApp({
314
+ * webhooks: {
315
+ * PRODUCTS_CREATE: {
316
+ * deliveryMethod: DeliveryMethod.Http,
317
+ * callbackUrl: "/webhooks/products/create",
318
+ * },
319
+ * },
293
320
  * hooks: {
294
321
  * afterAuth: async ({ session }) => {
322
+ * // Register webhooks for the shop
323
+ * // In this example, every shop will have these webhooks
324
+ * // You could wrap this in some custom shop specific conditional logic if needed
295
325
  * shopify.registerWebhooks({ session });
296
- * }
297
- * },
298
- * webhooks: {
299
- * APP_UNINSTALLED: {
300
- * deliveryMethod: DeliveryMethod.Http,
301
- * callbackUrl: "/webhooks",
302
326
  * },
303
327
  * },
304
328
  * // ...etc
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/server/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/server/types.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const SHOPIFY_REMIX_LIBRARY_VERSION = "3.2.0";
1
+ export declare const SHOPIFY_REMIX_LIBRARY_VERSION = "3.3.0";
2
2
  //# sourceMappingURL=version.d.ts.map