@olakai/sdk
Version:
This document demonstrates how to use the Olakai SDK with all its features.
71 lines • 3.03 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.applyMiddleware = applyMiddleware;
const utils_1 = require("../utils");
__exportStar(require("./logging"), exports);
__exportStar(require("./rateLimiter"), exports);
__exportStar(require("./timeout"), exports);
__exportStar(require("./caching"), exports);
__exportStar(require("./circuitBreaker"), exports);
__exportStar(require("./common"), exports);
__exportStar(require("./transform"), exports);
__exportStar(require("./custom"), exports);
/**
* Apply middleware to a function
* @param middlewares - The middleware to apply
* @param args - The arguments to pass to the function
* @param action - The action to perform
* @param result - The result of the function
* @param error - The error of the function
*/
async function applyMiddleware(middlewares, args, action, result, error) {
(0, utils_1.olakaiLogger)("Applying beforeCall middleware...", "info");
let processedArgs = args;
let processedResult = result || null;
try {
for (const middleware of middlewares) {
if (action === "beforeCall" && middleware.beforeCall) {
const middlewareResult = await middleware.beforeCall(processedArgs);
if (middlewareResult) {
processedArgs = middlewareResult;
}
}
else if (action === "afterCall" && middleware.afterCall && processedResult) {
const middlewareResult = await middleware.afterCall(processedResult, processedArgs);
if (middlewareResult) {
processedResult = middlewareResult;
}
}
else if (action === "error" && middleware.onError && error) {
await middleware.onError(error, processedArgs);
}
}
}
catch (error) {
(0, utils_1.olakaiLogger)(`Error during beforeCall middleware: ${error}. \n Continuing execution...`, "error");
throw error;
}
(0, utils_1.olakaiLogger)("BeforeCall middleware completed...", "info");
if (action === "beforeCall") {
return processedArgs;
}
else if (action === "afterCall" && processedResult) {
return processedResult;
}
throw new Error("Middleware returned null");
}
//# sourceMappingURL=index.js.map