UNPKG

@saleor/app-sdk

Version:
140 lines (118 loc) 4.69 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); var _chunkQD7O4CVVjs = require('./chunk-QD7O4CVV.js'); var _chunkDE4A7PETjs = require('./chunk-DE4A7PET.js'); // src/handlers/platforms/fetch-api/platform-adapter.ts var WebApiAdapter = class { constructor(request, ResponseConstructor) { this.request = request; this.ResponseConstructor = ResponseConstructor; } getHeader(name) { return this.request.headers.get(name); } async getBody() { const request = this.request.clone(); return request.json(); } async getRawBody() { const request = this.request.clone(); return request.text(); } getBaseUrl() { const url = new URL(this.request.url); const host = this.request.headers.get("host"); const xForwardedProto = this.request.headers.get("x-forwarded-proto"); let protocol; if (xForwardedProto) { const xForwardedForProtocols = xForwardedProto.split(",").map((value) => value.trimStart()); protocol = xForwardedForProtocols.find((el) => el === "https") || xForwardedForProtocols.find((el) => el === "http") || xForwardedForProtocols[0]; } else { protocol = url.protocol.replace(":", ""); } return `${protocol}://${host}`; } get method() { return this.request.method; } async send(result) { const body = result.bodyType === "json" ? JSON.stringify(result.body) : result.body; return new this.ResponseConstructor(body, { status: result.status, headers: { "Content-Type": result.bodyType === "json" ? "application/json" : "text/plain" } }); } }; // src/handlers/platforms/fetch-api/create-app-register-handler.ts var createAppRegisterHandler = (config) => async (req) => { const adapter = new WebApiAdapter(req, Response); const useCase = new (0, _chunkQD7O4CVVjs.RegisterActionHandler)(adapter); const result = await useCase.handleAction(config); return adapter.send(result); }; // src/handlers/platforms/fetch-api/create-manifest-handler.ts var createManifestHandler = (config) => async (request) => { const adapter = new WebApiAdapter(request, Response); const actionHandler = new (0, _chunkQD7O4CVVjs.ManifestActionHandler)(adapter); const result = await actionHandler.handleAction(config); return adapter.send(result); }; // src/handlers/platforms/fetch-api/create-protected-handler.ts var createProtectedHandler = (handlerFn, apl, requiredPermissions) => async (request) => { const adapter = new WebApiAdapter(request, Response); const actionValidator = new (0, _chunkQD7O4CVVjs.ProtectedActionValidator)(adapter); const validationResult = await actionValidator.validateRequest({ apl, requiredPermissions }); if (validationResult.result === "failure") { return adapter.send(validationResult.value); } const context = validationResult.value; try { return await handlerFn(request, context); } catch (err) { return new Response("Unexpected server error", { status: 500 }); } }; // src/handlers/platforms/fetch-api/saleor-webhooks/saleor-webhook.ts var debug = _chunkDE4A7PETjs.createDebug.call(void 0, "SaleorWebhook"); var SaleorWebApiWebhook = class extends _chunkQD7O4CVVjs.GenericSaleorWebhook { createHandler(handlerFn) { return async (req) => { const adapter = new WebApiAdapter(req, Response); const prepareRequestResult = await super.prepareRequest(adapter); if (prepareRequestResult.result === "sendResponse") { return prepareRequestResult.response; } debug("Incoming request validated. Call handlerFn"); return handlerFn(req, { ...prepareRequestResult.context }); }; } }; // src/handlers/platforms/fetch-api/saleor-webhooks/saleor-async-webhook.ts var SaleorAsyncWebhook = class extends SaleorWebApiWebhook { constructor(configuration) { super(configuration); this.eventType = "async"; this.event = configuration.event; } createHandler(handlerFn) { return super.createHandler(handlerFn); } }; // src/handlers/platforms/fetch-api/saleor-webhooks/saleor-sync-webhook.ts var SaleorSyncWebhook = class extends SaleorWebApiWebhook { constructor(configuration) { super(configuration); this.eventType = "sync"; this.event = configuration.event; } createHandler(handlerFn) { return super.createHandler(handlerFn); } }; exports.WebApiAdapter = WebApiAdapter; exports.createAppRegisterHandler = createAppRegisterHandler; exports.createManifestHandler = createManifestHandler; exports.createProtectedHandler = createProtectedHandler; exports.SaleorAsyncWebhook = SaleorAsyncWebhook; exports.SaleorSyncWebhook = SaleorSyncWebhook;