UNPKG

@iwci/shopify-app-utils

Version:

This library adds a variety of utilities to simpliy usage of some shopify APIs.

32 lines (31 loc) 1.45 kB
import { DeliveryMethod } from '@shopify/shopify-api'; import { Payload, Topics } from './webhooks'; export * from './webhooks'; export * from './topics'; export declare type WebhookHandlerFunction<T extends Topics> = (topic: T, shop_domain: `${string}.myshopify.com`, payload: Payload<T>, webhookId: string, apiVersion?: string) => Promise<void>; interface BaseWebhookHandler<T extends Topics> { id?: string; includeFields?: string[]; metafieldNamespaces?: string[]; } export interface HttpWebhookHandler<T extends Topics> extends BaseWebhookHandler<T> { deliveryMethod: DeliveryMethod.Http; privateMetafieldNamespaces?: string[]; callbackUrl: string; } export interface HttpWebhookHandlerWithCallback<T extends Topics> extends HttpWebhookHandler<T> { callback: WebhookHandlerFunction<T>; } export interface EventBridgeWebhookHandler<T extends Topics> extends BaseWebhookHandler<T> { deliveryMethod: DeliveryMethod.EventBridge; arn: string; } export interface PubSubWebhookHandler<T extends Topics> extends BaseWebhookHandler<T> { deliveryMethod: DeliveryMethod.PubSub; pubSubProject: string; pubSubTopic: string; } export declare type WebhookHandler<T extends Topics> = HttpWebhookHandler<T> | HttpWebhookHandlerWithCallback<T> | EventBridgeWebhookHandler<T> | PubSubWebhookHandler<T>; export type WebhookHandlersParam = { [Topic in Topics]?: WebhookHandler<Topic> | WebhookHandler<Topic>[]; };