UNPKG

@saleor/app-sdk

Version:
100 lines (90 loc) 5.32 kB
import { P as PlatformAdapterInterface, A as ActionHandlerResult, G as GenericCreateAppRegisterHandlerOptions, d as WebhookContext } from '../../saleor-webhook-YTC9mx0J.js'; import { NextApiRequest, NextApiResponse, NextApiHandler } from 'next'; import { C as CreateManifestHandlerOptions$1, P as ProtectedHandlerContext, G as GenericSaleorWebhook, a as GenericWebhookConfig } from '../../generic-saleor-webhook-CCxgPr8c.js'; import { APL } from '../../APL/index.js'; import { Permission, AsyncWebhookEventType, SyncWebhookEventType } from '../../types.js'; import '../../saleor-app.js'; import 'graphql'; import '../../verify-signature-mKf0fpOE.js'; type NextJsHandlerInput = NextApiRequest; type NextJsHandler = (req: NextApiRequest, res: NextApiResponse) => Promise<void>; /** PlatformAdapter for Next.js /pages router API routes * * Platform adapters are used in Actions to handle generic request logic * like getting body, headers, etc. * * Thanks to this Actions logic can be re-used for each platform * @see {PlatformAdapterInterface} * @see {@link https://nextjs.org/docs/pages/building-your-application/routing/api-routes} * * */ declare class NextJsAdapter implements PlatformAdapterInterface<NextJsHandlerInput> { request: NextApiRequest; private res; readonly type: "next"; constructor(request: NextApiRequest, res: NextApiResponse); getHeader(name: string): string | null; getBody(): Promise<unknown>; getRawBody(): Promise<string>; getBaseUrl(): string; get method(): "POST" | "GET"; send(result: ActionHandlerResult): Promise<void>; } type CreateAppRegisterHandlerOptions = GenericCreateAppRegisterHandlerOptions<NextJsHandlerInput>; /** * Returns API route handler for **Next.js pages router** * for register endpoint that is called by Saleor when installing the app * * It verifies the request and stores `app_token` from Saleor * in APL and along with all required AuthData fields (jwks, saleorApiUrl, ...) * * **Recommended path**: `/api/register` * (configured in manifest handler) * * To learn more check Saleor docs * @see {@link https://docs.saleor.io/developer/extending/apps/architecture/app-requirements#register-url} * */ declare const createAppRegisterHandler: (config: CreateAppRegisterHandlerOptions) => NextJsHandler; type CreateManifestHandlerOptions = CreateManifestHandlerOptions$1<NextJsHandlerInput>; /** Returns app manifest API route handler for Next.js pages router * * App manifest is an endpoint that Saleor will call your App metadata. * It has the App's name and description, as well as all the necessary information to * register webhooks, permissions, and extensions. * * **Recommended path**: `/api/manifest` * * To learn more check Saleor docs * @see {@link https://docs.saleor.io/developer/extending/apps/architecture/app-requirements#manifest-url} * @see {@link https://nextjs.org/docs/pages/building-your-application/routing/api-routes} * */ declare const createManifestHandler: (options: CreateManifestHandlerOptions) => NextJsHandler; type NextJsProtectedApiHandler<TResp = unknown> = (req: NextApiRequest, res: NextApiResponse<TResp>, ctx: ProtectedHandlerContext) => unknown | Promise<unknown>; /** * Wraps provided function, to ensure incoming request comes from Saleor Dashboard. * Also provides additional `context` object containing request properties. */ declare const createProtectedHandler: (handlerFn: NextJsProtectedApiHandler, apl: APL, requiredPermissions?: Permission[]) => NextApiHandler; type WebhookConfig<Event = AsyncWebhookEventType | SyncWebhookEventType> = GenericWebhookConfig<NextApiRequest, Event>; type NextJsWebhookHandler<TPayload = unknown> = (req: NextApiRequest, res: NextApiResponse, ctx: WebhookContext<TPayload>) => unknown | Promise<unknown>; declare abstract class SaleorWebhook<TPayload = unknown> extends GenericSaleorWebhook<NextApiRequest, TPayload> { /** * Wraps provided function, to ensure incoming request comes from registered Saleor instance. * Also provides additional `context` object containing typed payload and request properties. */ createHandler(handlerFn: NextJsWebhookHandler<TPayload>): NextApiHandler; } declare class SaleorAsyncWebhook<TPayload = unknown> extends SaleorWebhook<TPayload> { readonly event: AsyncWebhookEventType; protected readonly eventType: "async"; constructor(configuration: WebhookConfig<AsyncWebhookEventType>); createHandler(handlerFn: NextJsWebhookHandler<TPayload>): NextApiHandler; } type NextJsSyncWebhookHandler<TPayload> = NextJsWebhookHandler<TPayload>; declare class SaleorSyncWebhook<TPayload = unknown, TEvent extends SyncWebhookEventType = SyncWebhookEventType> extends SaleorWebhook<TPayload> { readonly event: TEvent; protected readonly eventType: "sync"; constructor(configuration: WebhookConfig<TEvent>); createHandler(handlerFn: NextJsSyncWebhookHandler<TPayload>): NextApiHandler; } export { type CreateAppRegisterHandlerOptions, type CreateManifestHandlerOptions, NextJsAdapter, type NextJsHandler, type NextJsHandlerInput, type NextJsProtectedApiHandler, type NextJsSyncWebhookHandler, type NextJsWebhookHandler, SaleorAsyncWebhook, SaleorSyncWebhook, createAppRegisterHandler, createManifestHandler, createProtectedHandler };