@promster/server
Version:
Server exposing metrics under GET /metrics
1 lines • 1.83 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","names":[],"sources":["../src/server/server.ts"],"sourcesContent":["import {\n createServer as createHttpServer,\n type IncomingMessage,\n type Server,\n type ServerResponse,\n} from 'node:http';\n\nimport {\n getContentType,\n getSummary,\n skipMetricsInEnvironment,\n} from '@promster/metrics';\n\ntype TServerOptions = {\n port: number;\n hostname: string;\n detectKubernetes: boolean;\n};\n\nconst defaultOptions: TServerOptions = {\n port: 7788,\n hostname: '0.0.0.0',\n detectKubernetes: false,\n};\n\nconst createServer = async (\n options: Partial<TServerOptions>,\n): Promise<Server> => {\n const defaultedOptions = {\n ...defaultOptions,\n ...options,\n };\n\n const server = createHttpServer(\n async (_req: IncomingMessage, res: ServerResponse) => {\n res.writeHead(200, 'OK', { 'content-type': getContentType() });\n res.end(await getSummary());\n },\n );\n\n return new Promise((resolve, reject) => {\n const skipServerStart = skipMetricsInEnvironment(defaultedOptions);\n\n const port = skipServerStart ? undefined : defaultedOptions.port;\n\n server.listen(port, defaultedOptions.hostname, () => {\n server.on('error', reject);\n\n resolve(server);\n });\n });\n};\n\nexport { createServer };\n"],"mappings":";;;;AAmBA,MAAM,iBAAiC;CACrC,MAAM;CACN,UAAU;CACV,kBAAkB;AACpB;AAEA,MAAM,eAAe,OACnB,YACoB;CACpB,MAAM,mBAAmB;EACvB,GAAG;EACH,GAAG;CACL;CAEA,MAAM,UAAA,GAAA,UAAA,aAAA,CACJ,OAAO,MAAuB,QAAwB;EACpD,IAAI,UAAU,KAAK,MAAM,EAAE,iBAAA,GAAA,kBAAA,eAAA,CAA+B,EAAE,CAAC;EAC7D,IAAI,IAAI,OAAA,GAAA,kBAAA,WAAA,CAAiB,CAAC;CAC5B,CACF;CAEA,OAAO,IAAI,SAAS,SAAS,WAAW;EAGtC,MAAM,QAAA,GAAA,kBAAA,yBAAA,CAF2C,gBAEtB,IAAI,KAAA,IAAY,iBAAiB;EAE5D,OAAO,OAAO,MAAM,iBAAiB,gBAAgB;GACnD,OAAO,GAAG,SAAS,MAAM;GAEzB,QAAQ,MAAM;EAChB,CAAC;CACH,CAAC;AACH"}