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
JavaScript
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