UNPKG

apitally

Version:

Simple API monitoring & analytics for REST APIs built with Express, Fastify, NestJS, AdonisJS, Hono, H3, Elysia, Hapi, and Koa.

71 lines 2.86 kB
var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var _a; function _ts_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; } __name(_ts_decorate, "_ts_decorate"); function _ts_metadata(k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); } __name(_ts_metadata, "_ts_metadata"); import { Injectable } from "@nestjs/common"; import { catchError, throwError } from "rxjs"; let setConsumerFn = null; async function useApitally(app, config) { const httpAdapter = app.getHttpAdapter(); const instance = httpAdapter.getInstance(); const platform = httpAdapter.constructor.name.toLowerCase().includes("fastify") ? "fastify" : "express"; if (platform === "express") { const { useApitally: useApitally2, setConsumer: setConsumer2 } = await import("../express/index.js"); setConsumerFn = setConsumer2; useApitally2(instance, config); } else if (platform === "fastify") { const { apitallyPlugin, setConsumer: setConsumer2 } = await import("../fastify/index.js"); setConsumerFn = setConsumer2; await instance.register(apitallyPlugin, config); } app.useGlobalInterceptors(new ApitallyInterceptor(platform)); } __name(useApitally, "useApitally"); function setConsumer(request, consumer) { if (setConsumerFn) { setConsumerFn(request, consumer); } } __name(setConsumer, "setConsumer"); let ApitallyInterceptor = (_a = class { platform; constructor(platform) { this.platform = platform; } intercept(context, next) { return next.handle().pipe(catchError((exception) => { if (context.getType() === "http") { const ctx = context.switchToHttp(); const res = ctx.getResponse(); if (this.platform === "express" && res.locals) { res.locals.serverError = exception; } else if (this.platform === "fastify" && (!exception.statusCode || exception.statusCode === 500)) { res.serverError = exception; } } return throwError(() => exception); })); } }, __name(_a, "ApitallyInterceptor"), _a); ApitallyInterceptor = _ts_decorate([ Injectable(), _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ String ]) ], ApitallyInterceptor); export { setConsumer, useApitally }; //# sourceMappingURL=index.js.map