UNPKG

apitally

Version:

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

123 lines 3.93 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var provider_exports = {}; __export(provider_exports, { default: () => ApitallyProvider }); module.exports = __toCommonJS(provider_exports); var import_node_async_hooks = require("node:async_hooks"); var import_client = require("../common/client.js"); var import_packageVersions = require("../common/packageVersions.js"); var import_loggers = require("../loggers/index.js"); const _ApitallyProvider = class _ApitallyProvider { app; constructor(app) { this.app = app; } register() { this.app.container.singleton("apitallyClient", () => { const config = this.app.config.get("apitally"); return new import_client.ApitallyClient(config); }); this.app.container.singleton("apitallyLogsContext", () => { return new import_node_async_hooks.AsyncLocalStorage(); }); } async start() { const client = await this.app.container.make("apitallyClient"); if (client.requestLogger.config.captureLogs) { const logsContext = await this.app.container.make("apitallyLogsContext"); const logger = await this.app.container.make("logger"); (0, import_loggers.patchPinoLogger)(logger.pino, logsContext); (0, import_loggers.patchConsole)(logsContext); } } async ready() { const client = await this.app.container.make("apitallyClient"); const router = await this.app.container.make("router"); const paths = listRoutes(router); const versions = getVersions(this.app.config.get("apitally.appVersion")); const startupData = { paths, versions, client: "js:adonisjs" }; client.setStartupData(startupData); client.startSync(); } async shutdown() { const client = await this.app.container.make("apitallyClient"); await client.handleShutdown(); } }; __name(_ApitallyProvider, "ApitallyProvider"); let ApitallyProvider = _ApitallyProvider; function listRoutes(router) { const routes = router.toJSON(); const paths = []; for (const domain in routes) { for (const route of routes[domain]) { for (const method of route.methods) { if (![ "HEAD", "OPTIONS" ].includes(method.toUpperCase())) { paths.push({ method: method.toUpperCase(), path: route.pattern }); } } } } return paths; } __name(listRoutes, "listRoutes"); function getVersions(appVersion) { const versions = [ [ "nodejs", process.version.replace(/^v/, "") ] ]; const adonisJsVersion = (0, import_packageVersions.getPackageVersion)("@adonisjs/core"); const apitallyVersion = (0, import_packageVersions.getPackageVersion)("../.."); if (adonisJsVersion) { versions.push([ "adonisjs", adonisJsVersion ]); } if (apitallyVersion) { versions.push([ "apitally", apitallyVersion ]); } if (appVersion) { versions.push([ "app", appVersion ]); } return Object.fromEntries(versions); } __name(getVersions, "getVersions"); //# sourceMappingURL=provider.cjs.map