UNPKG

@xapi-js/adaptor-nestjs

Version:
78 lines (77 loc) 3.82 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); let _nestjs_common = require("@nestjs/common"); let _xapi_js_core = require("@xapi-js/core"); let rxjs = require("rxjs"); //#region \0@oxc-project+runtime@0.139.0/helpers/esm/decorate.js function __decorate(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; } //#endregion //#region src/xapi-request-interceptor.ts var _XapiRequestInterceptor; let XapiRequestInterceptor = _XapiRequestInterceptor = class XapiRequestInterceptor { constructor(schemaOrOptions, options) { this.logger = new _nestjs_common.Logger(_XapiRequestInterceptor.name); if (schemaOrOptions && "kind" in schemaOrOptions) { this.schema = schemaOrOptions; this.options = options; } else this.options = schemaOrOptions; } async intercept(context, next) { const request = context.switchToHttp().getRequest(); this.logger.debug(`XapiRequestInterceptor Intercepting request: ${request.method} ${request.url}`); const codec = this.options?.codec; if ((0, _xapi_js_core.xapiContentTypeMatches)(request.headers["content-type"], codec) && request.body) { const root = codec === void 0 ? (0, _xapi_js_core.parse)(request.body) : (0, _xapi_js_core.decodeXapiWire)((0, _xapi_js_core.xapiBodyToBytes)(request.body), codec); request.body = this.schema ? (0, _xapi_js_core.decodeRoot)(this.schema, root) : root; } return next.handle(); } }; XapiRequestInterceptor = _XapiRequestInterceptor = __decorate([(0, _nestjs_common.Injectable)()], XapiRequestInterceptor); //#endregion //#region src/xapi-response-interceptor.ts var _XapiResponseInterceptor; let XapiResponseInterceptor = _XapiResponseInterceptor = class XapiResponseInterceptor { constructor(schemaOrOptions, options) { this.logger = new _nestjs_common.Logger(_XapiResponseInterceptor.name); if (schemaOrOptions && "kind" in schemaOrOptions) { this.schema = schemaOrOptions; this.options = options; } else this.options = schemaOrOptions; } intercept(context, next) { this.logger.debug(`XapiResponseInterceptor Intercepting response`); const codec = this.options?.codec; const http = typeof context.switchToHttp === "function" ? context.switchToHttp() : void 0; const response = http && typeof http.getResponse === "function" ? http.getResponse() : void 0; if (codec !== void 0 && typeof response?.setHeader === "function") response.setHeader("Content-Type", (0, _xapi_js_core.xapiContentType)(codec)); return next.handle().pipe((0, rxjs.map)((value) => { const root = this.schema ? (0, _xapi_js_core.encodeRoot)(this.schema, value) : value; if (!(0, _xapi_js_core.isXapiRoot)(root)) throw new Error("Handler did not return an XapiRoot instance"); try { return codec === void 0 ? (0, _xapi_js_core.write)(root) : (0, _xapi_js_core.encodeXapiWire)(root, codec); } catch (error) { this.logger.error(`Failed to serialize XapiRoot with codec: ${error}`); throw error; } })); } }; XapiResponseInterceptor = _XapiResponseInterceptor = __decorate([(0, _nestjs_common.Injectable)()], XapiResponseInterceptor); //#endregion Object.defineProperty(exports, "XapiRequestInterceptor", { enumerable: true, get: function() { return XapiRequestInterceptor; } }); Object.defineProperty(exports, "XapiResponseInterceptor", { enumerable: true, get: function() { return XapiResponseInterceptor; } });