@saleor/app-sdk
Version:
SDK for building great Saleor Apps
140 lines (118 loc) • 4.69 kB
JavaScript
;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;