{"version":3,"file":"CollectHttpMetricsMiddelware.cjs","sources":["../../../../../packages/engine-http/src/prometheus/CollectHttpMetricsMiddelware.ts"],"sourcesContent":["import prom from 'prom-client'\nimport { ProjectInfoMiddlewareState } from '../project-common'\nimport { KoaMiddleware } from '../application'\nimport { ModuleInfoMiddlewareState } from '../common'\nimport { GraphQLKoaState } from '../graphql'\n\nexport const createColllectHttpMetricsMiddleware = (\n\tregistry: prom.Registry,\n): KoaMiddleware<Partial<ProjectInfoMiddlewareState & ModuleInfoMiddlewareState & GraphQLKoaState>> => {\n\tconst requestSummary = new prom.Histogram({\n\t\tname: 'contember_http_duration_seconds',\n\t\thelp: '[DEPRECATED] Incoming HTTP requests statistics by http_method (OPTIONS requests are ignored), http_code, contember_project (or \"unknown\" for undefined project), contember_project_group (or \"unknown\" for undefined project group), contember_module (system, tenant, content, unknown) and graphql_operation (query, mutation, unknown)',\n\t\tregisters: [registry],\n\t\tlabelNames: ['http_method', 'http_code', 'contember_project', 'contember_project_group', 'contember_module', 'graphql_operation'],\n\t\tbuckets: [0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10],\n\t})\n\n\tconst requestSummaryMs = new prom.Histogram({\n\t\tname: 'contember_http_duration_ms',\n\t\thelp: '[DEPRECATED] Incoming HTTP requests statistics by http_method (OPTIONS requests are ignored), http_code, contember_project (or \"unknown\" for undefined project), contember_project_group (or \"unknown\" for undefined project group), contember_module (system, tenant, content, unknown) and graphql_operation (query, mutation, unknown)',\n\t\tregisters: [registry],\n\t\tlabelNames: ['http_method', 'http_code', 'contember_project', 'contember_project_group', 'contember_module', 'graphql_operation'],\n\t\tbuckets: [5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000, 10000],\n\t})\n\n\treturn async (ctx, next) => {\n\t\tconst start = Date.now()\n\t\ttry {\n\t\t\tawait next()\n\t\t} finally {\n\t\t\tconst labels = {\n\t\t\t\thttp_method: ctx.method,\n\t\t\t\thttp_code: ctx.status,\n\t\t\t\tcontember_project: ctx.state.project || 'unknown',\n\t\t\t\tcontember_project_group: ctx.state.projectGroup || 'unknown',\n\t\t\t\tcontember_module: ctx.state.module || 'unknown',\n\t\t\t\tgraphql_operation: ctx.state.graphql?.operationName || 'unknown',\n\t\t\t}\n\t\t\tif (ctx.method !== 'OPTIONS') {\n\t\t\t\trequestSummary.observe(labels, (Date.now() - start) / 1000)\n\t\t\t\trequestSummaryMs.observe(labels, Date.now() - start)\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";;;AAMa,MAAA,sCAAsC,CAClD,aACsG;AAChG,QAAA,iBAAiB,IAAI,KAAK,UAAU;AAAA,IACzC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW,CAAC,QAAQ;AAAA,IACpB,YAAY,CAAC,eAAe,aAAa,qBAAqB,2BAA2B,oBAAoB,mBAAmB;AAAA,IAChI,SAAS,CAAC,MAAO,MAAM,OAAO,MAAM,KAAK,MAAM,KAAK,GAAG,KAAK,GAAG,EAAE;AAAA,EAAA,CACjE;AAEK,QAAA,mBAAmB,IAAI,KAAK,UAAU;AAAA,IAC3C,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW,CAAC,QAAQ;AAAA,IACpB,YAAY,CAAC,eAAe,aAAa,qBAAqB,2BAA2B,oBAAoB,mBAAmB;AAAA,IAChI,SAAS,CAAC,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAM,MAAM,KAAM,GAAK;AAAA,EAAA,CAC/D;AAEM,SAAA,OAAO,KAAK,SAAS;AACrB,UAAA,QAAQ,KAAK,IAAI;AACnB,QAAA;AACH,YAAM,KAAK;AAAA,IAAA,UACV;AACD,YAAM,SAAS;AAAA,QACd,aAAa,IAAI;AAAA,QACjB,WAAW,IAAI;AAAA,QACf,mBAAmB,IAAI,MAAM,WAAW;AAAA,QACxC,yBAAyB,IAAI,MAAM,gBAAgB;AAAA,QACnD,kBAAkB,IAAI,MAAM,UAAU;AAAA,QACtC,mBAAmB,IAAI,MAAM,SAAS,iBAAiB;AAAA,MACxD;AACI,UAAA,IAAI,WAAW,WAAW;AAC7B,uBAAe,QAAQ,SAAS,KAAK,IAAI,IAAI,SAAS,GAAI;AAC1D,yBAAiB,QAAQ,QAAQ,KAAK,IAAA,IAAQ,KAAK;AAAA,MAAA;AAAA,IACpD;AAAA,EAEF;AACD;;"}