honion
Version:
68 lines (67 loc) • 2.92 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var _Honion_mds;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Honion = void 0;
const context_1 = require("./context");
const logger_1 = require("./logger");
const middlewares_1 = require("./middlewares");
const middleware_container_1 = require("./middlewares/middleware-container");
class Honion {
constructor() {
_Honion_mds.set(this, []);
this.logger = new logger_1.BaseLogger();
(0, middleware_container_1.initContainer)(this, __classPrivateFieldGet(this, _Honion_mds, "f"));
}
hook(arg1, arg2) {
let mh;
let type;
if (typeof arg1 == "function") {
mh = arg1;
type = middlewares_1.HookType.BeforeInvoke;
}
else {
type = arg1;
mh = arg2;
}
__classPrivateFieldGet(this, _Honion_mds, "f").push(() => new middlewares_1.HookMiddleware(mh, type));
return this;
}
invoke(ctx) {
return __awaiter(this, void 0, void 0, function* () {
ctx = ctx !== null && ctx !== void 0 ? ctx : new context_1.Context();
Object.defineProperty(ctx, "honion", {
configurable: true,
get: () => this,
});
if (!__classPrivateFieldGet(this, _Honion_mds, "f").length) {
return ctx;
}
try {
yield (0, middlewares_1.invokeMiddlewares)(ctx, __classPrivateFieldGet(this, _Honion_mds, "f"));
}
catch (err) {
ctx.catchError(err);
}
return ctx;
});
}
setLogger(logger) {
this.logger = logger;
}
}
exports.Honion = Honion;
_Honion_mds = new WeakMap();