@autofleet/nitur 2.2.1-4 → 2.2.1-5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/alive-endpoint/middleware.cjs +1 -1
- package/lib/alive-endpoint/middleware.cjs.map +1 -1
- package/lib/alive-endpoint/middleware.d.cts +1 -0
- package/lib/alive-endpoint/middleware.d.ts +1 -0
- package/lib/alive-endpoint/middleware.js +1 -1
- package/lib/alive-endpoint/middleware.js.map +1 -1
- package/lib/health/readiness.cjs +1 -1
- package/lib/health/readiness.cjs.map +1 -1
- package/lib/health/readiness.d.cts +16 -4
- package/lib/health/readiness.d.ts +16 -4
- package/lib/health/readiness.js +1 -1
- package/lib/health/readiness.js.map +1 -1
- package/lib/health/shared.cjs +1 -1
- package/lib/health/shared.cjs.map +1 -1
- package/lib/health/shared.js +1 -1
- package/lib/health/shared.js.map +1 -1
- package/lib/index.cjs +1 -1
- package/lib/index.js +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`./base.cjs`),t=require(`../logger.cjs`);function
|
|
1
|
+
const e=require(`./base.cjs`),t=require(`../logger.cjs`),n=require(`../health/liveness.cjs`);function r(r){let i=r.logger??t.logger;return async(t,a)=>{let o=t.query;if(`probe`in o&&o.probe===`liveness`)return n.livenessEndpoint({logger:i})(t,a);try{let t=await e.systemAliveCheck(r);return a.json(t),!0}catch(e){return a.status(500).json({err:e}),i.error(`Error on alive endpoint`,{err:e}),!1}}}exports.aliveEndpointMiddleware=r;
|
|
2
2
|
//# sourceMappingURL=middleware.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.cjs","names":["parameters: SystemAliveParameters","logger","loggerFallback","_req: Request","res: Response"],"sources":["../../src/alive-endpoint/middleware.ts"],"sourcesContent":["import type { Request, Response } from 'express';\nimport { logger as loggerFallback } from '../logger';\nimport { systemAliveCheck, type SystemAliveParameters } from './base';\n\nexport function aliveEndpointMiddleware(parameters: SystemAliveParameters) {\n const logger = parameters.logger ?? loggerFallback;\n return async (_req: Request, res: Response): Promise<boolean> => {\n try {\n const response = await systemAliveCheck(parameters);\n res.json(response);\n return true;\n } catch (err) {\n res.status(500).json({ err });\n logger.error('Error on alive endpoint', { err });\n return false;\n }\n };\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"middleware.cjs","names":["parameters: SystemAliveParameters","logger","loggerFallback","_req: Request","res: Response"],"sources":["../../src/alive-endpoint/middleware.ts"],"sourcesContent":["import type { Request, Response } from 'express';\nimport { logger as loggerFallback } from '../logger';\nimport { systemAliveCheck, type SystemAliveParameters } from './base';\nimport { livenessEndpoint } from '../health/liveness';\n// import { readinessEndpoint } from '../health/readiness';\n\nexport function aliveEndpointMiddleware(parameters: SystemAliveParameters) {\n const logger = parameters.logger ?? loggerFallback;\n return async (_req: Request, res: Response): Promise<boolean> => {\n const queryParams = _req.query;\n if ('probe' in queryParams) {\n if (queryParams.probe === 'liveness') {\n return livenessEndpoint({ logger })(_req, res);\n }\n }\n\n try {\n const response = await systemAliveCheck(parameters);\n res.json(response);\n return true;\n } catch (err) {\n res.status(500).json({ err });\n logger.error('Error on alive endpoint', { err });\n return false;\n }\n };\n}\n"],"mappings":"6FAMA,SAAgB,EAAwBA,EAAmC,CACzE,IAAMC,EAAS,EAAW,QAAUC,EAAAA,OACpC,OAAO,MAAOC,EAAeC,IAAoC,CAC/D,IAAM,EAAc,EAAK,MACzB,GAAI,UAAW,GACT,EAAY,QAAU,WACxB,MAAO,GAAA,iBAAiB,CAAE,OAAA,CAAQ,EAAC,CAAC,EAAM,EAAI,CAIlD,GAAI,CACF,IAAM,EAAW,KAAM,GAAA,iBAAiB,EAAW,CAEnD,MADA,GAAI,KAAK,EAAS,EACX,CACR,OAAQ,EAAK,CAGZ,MAFA,GAAI,OAAO,IAAI,CAAC,KAAK,CAAE,KAAK,EAAC,CAC7B,EAAO,MAAM,0BAA2B,CAAE,KAAK,EAAC,EACzC,CACR,CACF,CACF"}
|
|
@@ -2,6 +2,7 @@ import { SystemAliveParameters } from "./base.cjs";
|
|
|
2
2
|
import { Request, Response } from "express";
|
|
3
3
|
|
|
4
4
|
//#region src/alive-endpoint/middleware.d.ts
|
|
5
|
+
// import { readinessEndpoint } from '../health/readiness';
|
|
5
6
|
declare function aliveEndpointMiddleware(parameters: SystemAliveParameters): (_req: Request, res: Response) => Promise<boolean>;
|
|
6
7
|
//#endregion
|
|
7
8
|
export { aliveEndpointMiddleware };
|
|
@@ -2,6 +2,7 @@ import { SystemAliveParameters } from "./base.js";
|
|
|
2
2
|
import { Request, Response } from "express";
|
|
3
3
|
|
|
4
4
|
//#region src/alive-endpoint/middleware.d.ts
|
|
5
|
+
// import { readinessEndpoint } from '../health/readiness';
|
|
5
6
|
declare function aliveEndpointMiddleware(parameters: SystemAliveParameters): (_req: Request, res: Response) => Promise<boolean>;
|
|
6
7
|
//#endregion
|
|
7
8
|
export { aliveEndpointMiddleware };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{systemAliveCheck as e}from"./base.js";import{logger as t}from"../logger.js";function
|
|
1
|
+
import{systemAliveCheck as e}from"./base.js";import{logger as t}from"../logger.js";import{livenessEndpoint as n}from"../health/liveness.js";function r(r){let i=r.logger??t;return async(t,a)=>{let o=t.query;if(`probe`in o&&o.probe===`liveness`)return n({logger:i})(t,a);try{let t=await e(r);return a.json(t),!0}catch(e){return a.status(500).json({err:e}),i.error(`Error on alive endpoint`,{err:e}),!1}}}export{r as aliveEndpointMiddleware};
|
|
2
2
|
//# sourceMappingURL=middleware.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","names":["parameters: SystemAliveParameters","logger","loggerFallback","_req: Request","res: Response"],"sources":["../../src/alive-endpoint/middleware.ts"],"sourcesContent":["import type { Request, Response } from 'express';\nimport { logger as loggerFallback } from '../logger';\nimport { systemAliveCheck, type SystemAliveParameters } from './base';\n\nexport function aliveEndpointMiddleware(parameters: SystemAliveParameters) {\n const logger = parameters.logger ?? loggerFallback;\n return async (_req: Request, res: Response): Promise<boolean> => {\n try {\n const response = await systemAliveCheck(parameters);\n res.json(response);\n return true;\n } catch (err) {\n res.status(500).json({ err });\n logger.error('Error on alive endpoint', { err });\n return false;\n }\n };\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"middleware.js","names":["parameters: SystemAliveParameters","logger","loggerFallback","_req: Request","res: Response"],"sources":["../../src/alive-endpoint/middleware.ts"],"sourcesContent":["import type { Request, Response } from 'express';\nimport { logger as loggerFallback } from '../logger';\nimport { systemAliveCheck, type SystemAliveParameters } from './base';\nimport { livenessEndpoint } from '../health/liveness';\n// import { readinessEndpoint } from '../health/readiness';\n\nexport function aliveEndpointMiddleware(parameters: SystemAliveParameters) {\n const logger = parameters.logger ?? loggerFallback;\n return async (_req: Request, res: Response): Promise<boolean> => {\n const queryParams = _req.query;\n if ('probe' in queryParams) {\n if (queryParams.probe === 'liveness') {\n return livenessEndpoint({ logger })(_req, res);\n }\n }\n\n try {\n const response = await systemAliveCheck(parameters);\n res.json(response);\n return true;\n } catch (err) {\n res.status(500).json({ err });\n logger.error('Error on alive endpoint', { err });\n return false;\n }\n };\n}\n"],"mappings":"4IAMA,SAAgB,EAAwBA,EAAmC,CACzE,IAAMC,EAAS,EAAW,QAAUC,EACpC,OAAO,MAAOC,EAAeC,IAAoC,CAC/D,IAAM,EAAc,EAAK,MACzB,GAAI,UAAW,GACT,EAAY,QAAU,WACxB,MAAO,GAAiB,CAAE,OAAA,CAAQ,EAAC,CAAC,EAAM,EAAI,CAIlD,GAAI,CACF,IAAM,EAAW,KAAM,GAAiB,EAAW,CAEnD,MADA,GAAI,KAAK,EAAS,EACX,CACR,OAAQ,EAAK,CAGZ,MAFA,GAAI,OAAO,IAAI,CAAC,KAAK,CAAE,KAAK,EAAC,CAC7B,EAAO,MAAM,0BAA2B,CAAE,KAAK,EAAC,EACzC,CACR,CACF,CACF"}
|
package/lib/health/readiness.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`../logger.cjs`),t=require(`./shared.cjs`)
|
|
1
|
+
const e=require(`../logger.cjs`),t=require(`./shared.cjs`),n=(e,t,n)=>Promise.race([e,new Promise((e,r)=>setTimeout(()=>r(Error(`${n} timeout`)),t))]);function r({rabbit:r,sequelize:i,redis:a,elasticsearch:o,logger:s=e.logger,timeoutMs:c=400}){return async(e,l)=>{try{await t.eventLoopHeartbeat();let e=[];r&&e.push(n(r.isConnected().then(e=>{if(!e)throw Error(`rabbit disconnected`);s.debug?.(`rabbit ok`,{pid:process.pid})}),c,`rabbit`)),i&&e.push(n(i.query(`select 'ok' as status`).then(e=>{let{status:t}=e[0][0];if(t!==`ok`)throw Error(`sequelize disconnected`);s.debug?.(`sequelize ok`,{pid:process.pid})}),c,`sequelize`)),a&&e.push(n(a.ping().then(()=>s.debug?.(`redis ok`,{pid:process.pid})),c,`redis`)),o&&e.push(n(o.ping().then(e=>{if(!e)throw Error(`elasticsearch disconnected`);s.debug?.(`elasticsearch ok`,{pid:process.pid})}),c,`elasticsearch`)),await Promise.all(e),l.status(200).json({status:`ok`})}catch(e){s.warn?.(`readiness failed`,{err:e}),l.status(503).json({error:e.message})}}}exports.readinessEndpoint=r;
|
|
2
2
|
//# sourceMappingURL=readiness.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readiness.cjs","names":["
|
|
1
|
+
{"version":3,"file":"readiness.cjs","names":["p: Promise<T>","ms: number","tag: string","fallbackLogger","_req: Request","res: Response","checks: Promise<unknown>[]","result: [[{ status: string; }]]"],"sources":["../../src/health/readiness.ts"],"sourcesContent":["import type { Request, Response } from 'express';\nimport { logger as fallbackLogger } from '../logger';\nimport { eventLoopHeartbeat } from './shared';\n\nexport interface ReadinessDeps {\n rabbit?: { isConnected: () => Promise<boolean>; };\n sequelize?: { query: (sql: string | { query: string; values: unknown[]; }) => Promise<any>; };\n redis?: { ping: () => Promise<void>; };\n elasticsearch?: { ping: () => Promise<boolean>; };\n logger?: { debug?: (...a: any[]) => void; warn?: (...a: any[]) => void; };\n timeoutMs?: number;\n}\n\nconst withTimeout = <T>(p: Promise<T>, ms: number, tag: string) =>\n Promise.race([\n p,\n new Promise<never>((_, r) => setTimeout(() => r(new Error(`${tag} timeout`)), ms)),\n ]);\n\nexport function readinessEndpoint({\n rabbit,\n sequelize,\n redis,\n elasticsearch,\n logger = fallbackLogger,\n timeoutMs = 400,\n}: ReadinessDeps) {\n return async (_req: Request, res: Response): Promise<void> => {\n try {\n await eventLoopHeartbeat();\n\n const checks: Promise<unknown>[] = [];\n\n if (rabbit)\n checks.push(\n withTimeout(\n rabbit.isConnected().then((ok) => {\n if (!ok) throw new Error('rabbit disconnected');\n logger.debug?.('rabbit ok', { pid: process.pid });\n }),\n timeoutMs,\n 'rabbit',\n ),\n );\n\n if (sequelize)\n checks.push(\n withTimeout(\n sequelize\n .query('select \\'ok\\' as status')\n .then((result: [[{ status: string; }]]) => {\n const { status } = result[0][0];\n if (status !== 'ok') throw new Error('sequelize disconnected');\n logger.debug?.('sequelize ok', { pid: process.pid });\n }),\n timeoutMs,\n 'sequelize',\n ),\n );\n\n if (redis)\n checks.push(\n withTimeout(\n redis.ping().then(() => logger.debug?.('redis ok', { pid: process.pid })),\n timeoutMs,\n 'redis',\n ),\n );\n\n if (elasticsearch)\n checks.push(\n withTimeout(\n elasticsearch\n .ping()\n .then((ok) => {\n if (!ok) throw new Error('elasticsearch disconnected');\n logger.debug?.('elasticsearch ok', { pid: process.pid });\n }),\n timeoutMs,\n 'elasticsearch',\n ),\n );\n\n await Promise.all(checks);\n res.status(200).json({ status: 'ok' });\n } catch (err) {\n logger.warn?.('readiness failed', { err });\n res.status(503).json({ error: (err as Error).message });\n }\n };\n}\n"],"mappings":"2DAaM,EAAc,CAAIA,EAAeC,EAAYC,IACjD,QAAQ,KAAK,CACX,EACA,IAAI,QAAe,CAAC,EAAG,IAAM,WAAW,IAAM,EAAE,AAAI,OAAO,EAAE,EAAI,UAAA,CAAW,CAAE,EAAG,CAClF,EAAC,CAEJ,SAAgB,EAAkB,CAChC,SACA,YACA,QACA,gBACA,OAAA,EAASC,EAAAA,OACT,YAAY,IACE,CAAE,CAChB,OAAO,MAAOC,EAAeC,IAAiC,CAC5D,GAAI,CACF,KAAM,GAAA,oBAAoB,CAE1B,IAAMC,EAA6B,CAAE,EAqDrC,AAnDI,GACF,EAAO,KACL,EACE,EAAO,aAAa,CAAC,KAAK,AAAC,GAAO,CAChC,IAAK,EAAI,KAAM,CAAI,MAAM,sBAAA,CACzB,EAAO,QAAQ,YAAa,CAAE,IAAK,QAAQ,GAAK,EAAC,AAClD,EAAC,CACF,EACA,SACD,CACF,CAEC,GACF,EAAO,KACL,EACE,EACG,MAAM,wBAA0B,CAChC,KAAK,AAACC,GAAoC,CACzC,GAAM,CAAE,SAAQ,CAAG,EAAO,GAAG,GAC7B,GAAI,IAAW,KAAM,KAAM,CAAI,MAAM,yBAAA,CACrC,EAAO,QAAQ,eAAgB,CAAE,IAAK,QAAQ,GAAK,EAAC,AACrD,EAAC,CACJ,EACA,YACD,CACF,CAEC,GACF,EAAO,KACL,EACE,EAAM,MAAM,CAAC,KAAK,IAAM,EAAO,QAAQ,WAAY,CAAE,IAAK,QAAQ,GAAK,EAAC,CAAC,CACzE,EACA,QACD,CACF,CAEC,GACF,EAAO,KACL,EACE,EACG,MAAM,CACN,KAAK,AAAC,GAAO,CACZ,IAAK,EAAI,KAAM,CAAI,MAAM,6BAAA,CACzB,EAAO,QAAQ,mBAAoB,CAAE,IAAK,QAAQ,GAAK,EAAC,AACzD,EAAC,CACJ,EACA,gBACD,CACF,CAEH,KAAM,SAAQ,IAAI,EAAO,CACzB,EAAI,OAAO,IAAI,CAAC,KAAK,CAAE,OAAQ,IAAM,EAAC,AACvC,OAAQ,EAAK,CAEZ,AADA,EAAO,OAAO,mBAAoB,CAAE,KAAK,EAAC,CAC1C,EAAI,OAAO,IAAI,CAAC,KAAK,CAAE,MAAQ,EAAc,OAAS,EAAC,AACxD,CACF,CACF"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { SimpleLogger } from "./shared.cjs";
|
|
2
1
|
import { Request, Response } from "express";
|
|
3
2
|
|
|
4
3
|
//#region src/health/readiness.d.ts
|
|
@@ -7,7 +6,10 @@ interface ReadinessDeps {
|
|
|
7
6
|
isConnected: () => Promise<boolean>;
|
|
8
7
|
};
|
|
9
8
|
sequelize?: {
|
|
10
|
-
|
|
9
|
+
query: (sql: string | {
|
|
10
|
+
query: string;
|
|
11
|
+
values: unknown[];
|
|
12
|
+
}) => Promise<any>;
|
|
11
13
|
};
|
|
12
14
|
redis?: {
|
|
13
15
|
ping: () => Promise<void>;
|
|
@@ -15,10 +17,20 @@ interface ReadinessDeps {
|
|
|
15
17
|
elasticsearch?: {
|
|
16
18
|
ping: () => Promise<boolean>;
|
|
17
19
|
};
|
|
20
|
+
logger?: {
|
|
21
|
+
debug?: (...a: any[]) => void;
|
|
22
|
+
warn?: (...a: any[]) => void;
|
|
23
|
+
};
|
|
18
24
|
timeoutMs?: number;
|
|
19
|
-
logger?: SimpleLogger;
|
|
20
25
|
}
|
|
21
|
-
declare function readinessEndpoint(
|
|
26
|
+
declare function readinessEndpoint({
|
|
27
|
+
rabbit,
|
|
28
|
+
sequelize,
|
|
29
|
+
redis,
|
|
30
|
+
elasticsearch,
|
|
31
|
+
logger,
|
|
32
|
+
timeoutMs
|
|
33
|
+
}: ReadinessDeps): (_req: Request, res: Response) => Promise<void>;
|
|
22
34
|
//#endregion
|
|
23
35
|
export { readinessEndpoint };
|
|
24
36
|
//# sourceMappingURL=readiness.d.cts.map
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { SimpleLogger } from "./shared.js";
|
|
2
1
|
import { Request, Response } from "express";
|
|
3
2
|
|
|
4
3
|
//#region src/health/readiness.d.ts
|
|
@@ -7,7 +6,10 @@ interface ReadinessDeps {
|
|
|
7
6
|
isConnected: () => Promise<boolean>;
|
|
8
7
|
};
|
|
9
8
|
sequelize?: {
|
|
10
|
-
|
|
9
|
+
query: (sql: string | {
|
|
10
|
+
query: string;
|
|
11
|
+
values: unknown[];
|
|
12
|
+
}) => Promise<any>;
|
|
11
13
|
};
|
|
12
14
|
redis?: {
|
|
13
15
|
ping: () => Promise<void>;
|
|
@@ -15,10 +17,20 @@ interface ReadinessDeps {
|
|
|
15
17
|
elasticsearch?: {
|
|
16
18
|
ping: () => Promise<boolean>;
|
|
17
19
|
};
|
|
20
|
+
logger?: {
|
|
21
|
+
debug?: (...a: any[]) => void;
|
|
22
|
+
warn?: (...a: any[]) => void;
|
|
23
|
+
};
|
|
18
24
|
timeoutMs?: number;
|
|
19
|
-
logger?: SimpleLogger;
|
|
20
25
|
}
|
|
21
|
-
declare function readinessEndpoint(
|
|
26
|
+
declare function readinessEndpoint({
|
|
27
|
+
rabbit,
|
|
28
|
+
sequelize,
|
|
29
|
+
redis,
|
|
30
|
+
elasticsearch,
|
|
31
|
+
logger,
|
|
32
|
+
timeoutMs
|
|
33
|
+
}: ReadinessDeps): (_req: Request, res: Response) => Promise<void>;
|
|
22
34
|
//#endregion
|
|
23
35
|
export { readinessEndpoint };
|
|
24
36
|
//# sourceMappingURL=readiness.d.ts.map
|
package/lib/health/readiness.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{logger as e}from"../logger.js";import{eventLoopHeartbeat as t
|
|
1
|
+
import{logger as e}from"../logger.js";import{eventLoopHeartbeat as t}from"./shared.js";const n=(e,t,n)=>Promise.race([e,new Promise((e,r)=>setTimeout(()=>r(Error(`${n} timeout`)),t))]);function r({rabbit:r,sequelize:i,redis:a,elasticsearch:o,logger:s=e,timeoutMs:c=400}){return async(e,l)=>{try{await t();let e=[];r&&e.push(n(r.isConnected().then(e=>{if(!e)throw Error(`rabbit disconnected`);s.debug?.(`rabbit ok`,{pid:process.pid})}),c,`rabbit`)),i&&e.push(n(i.query(`select 'ok' as status`).then(e=>{let{status:t}=e[0][0];if(t!==`ok`)throw Error(`sequelize disconnected`);s.debug?.(`sequelize ok`,{pid:process.pid})}),c,`sequelize`)),a&&e.push(n(a.ping().then(()=>s.debug?.(`redis ok`,{pid:process.pid})),c,`redis`)),o&&e.push(n(o.ping().then(e=>{if(!e)throw Error(`elasticsearch disconnected`);s.debug?.(`elasticsearch ok`,{pid:process.pid})}),c,`elasticsearch`)),await Promise.all(e),l.status(200).json({status:`ok`})}catch(e){s.warn?.(`readiness failed`,{err:e}),l.status(503).json({error:e.message})}}}export{r as readinessEndpoint};
|
|
2
2
|
//# sourceMappingURL=readiness.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readiness.js","names":["
|
|
1
|
+
{"version":3,"file":"readiness.js","names":["p: Promise<T>","ms: number","tag: string","fallbackLogger","_req: Request","res: Response","checks: Promise<unknown>[]","result: [[{ status: string; }]]"],"sources":["../../src/health/readiness.ts"],"sourcesContent":["import type { Request, Response } from 'express';\nimport { logger as fallbackLogger } from '../logger';\nimport { eventLoopHeartbeat } from './shared';\n\nexport interface ReadinessDeps {\n rabbit?: { isConnected: () => Promise<boolean>; };\n sequelize?: { query: (sql: string | { query: string; values: unknown[]; }) => Promise<any>; };\n redis?: { ping: () => Promise<void>; };\n elasticsearch?: { ping: () => Promise<boolean>; };\n logger?: { debug?: (...a: any[]) => void; warn?: (...a: any[]) => void; };\n timeoutMs?: number;\n}\n\nconst withTimeout = <T>(p: Promise<T>, ms: number, tag: string) =>\n Promise.race([\n p,\n new Promise<never>((_, r) => setTimeout(() => r(new Error(`${tag} timeout`)), ms)),\n ]);\n\nexport function readinessEndpoint({\n rabbit,\n sequelize,\n redis,\n elasticsearch,\n logger = fallbackLogger,\n timeoutMs = 400,\n}: ReadinessDeps) {\n return async (_req: Request, res: Response): Promise<void> => {\n try {\n await eventLoopHeartbeat();\n\n const checks: Promise<unknown>[] = [];\n\n if (rabbit)\n checks.push(\n withTimeout(\n rabbit.isConnected().then((ok) => {\n if (!ok) throw new Error('rabbit disconnected');\n logger.debug?.('rabbit ok', { pid: process.pid });\n }),\n timeoutMs,\n 'rabbit',\n ),\n );\n\n if (sequelize)\n checks.push(\n withTimeout(\n sequelize\n .query('select \\'ok\\' as status')\n .then((result: [[{ status: string; }]]) => {\n const { status } = result[0][0];\n if (status !== 'ok') throw new Error('sequelize disconnected');\n logger.debug?.('sequelize ok', { pid: process.pid });\n }),\n timeoutMs,\n 'sequelize',\n ),\n );\n\n if (redis)\n checks.push(\n withTimeout(\n redis.ping().then(() => logger.debug?.('redis ok', { pid: process.pid })),\n timeoutMs,\n 'redis',\n ),\n );\n\n if (elasticsearch)\n checks.push(\n withTimeout(\n elasticsearch\n .ping()\n .then((ok) => {\n if (!ok) throw new Error('elasticsearch disconnected');\n logger.debug?.('elasticsearch ok', { pid: process.pid });\n }),\n timeoutMs,\n 'elasticsearch',\n ),\n );\n\n await Promise.all(checks);\n res.status(200).json({ status: 'ok' });\n } catch (err) {\n logger.warn?.('readiness failed', { err });\n res.status(503).json({ error: (err as Error).message });\n }\n };\n}\n"],"mappings":"uFAaA,MAAM,EAAc,CAAIA,EAAeC,EAAYC,IACjD,QAAQ,KAAK,CACX,EACA,IAAI,QAAe,CAAC,EAAG,IAAM,WAAW,IAAM,EAAE,AAAI,OAAO,EAAE,EAAI,UAAA,CAAW,CAAE,EAAG,CAClF,EAAC,CAEJ,SAAgB,EAAkB,CAChC,SACA,YACA,QACA,gBACA,OAAA,EAASC,EACT,YAAY,IACE,CAAE,CAChB,OAAO,MAAOC,EAAeC,IAAiC,CAC5D,GAAI,CACF,KAAM,IAAoB,CAE1B,IAAMC,EAA6B,CAAE,EAqDrC,AAnDI,GACF,EAAO,KACL,EACE,EAAO,aAAa,CAAC,KAAK,AAAC,GAAO,CAChC,IAAK,EAAI,KAAM,CAAI,MAAM,sBAAA,CACzB,EAAO,QAAQ,YAAa,CAAE,IAAK,QAAQ,GAAK,EAAC,AAClD,EAAC,CACF,EACA,SACD,CACF,CAEC,GACF,EAAO,KACL,EACE,EACG,MAAM,wBAA0B,CAChC,KAAK,AAACC,GAAoC,CACzC,GAAM,CAAE,SAAQ,CAAG,EAAO,GAAG,GAC7B,GAAI,IAAW,KAAM,KAAM,CAAI,MAAM,yBAAA,CACrC,EAAO,QAAQ,eAAgB,CAAE,IAAK,QAAQ,GAAK,EAAC,AACrD,EAAC,CACJ,EACA,YACD,CACF,CAEC,GACF,EAAO,KACL,EACE,EAAM,MAAM,CAAC,KAAK,IAAM,EAAO,QAAQ,WAAY,CAAE,IAAK,QAAQ,GAAK,EAAC,CAAC,CACzE,EACA,QACD,CACF,CAEC,GACF,EAAO,KACL,EACE,EACG,MAAM,CACN,KAAK,AAAC,GAAO,CACZ,IAAK,EAAI,KAAM,CAAI,MAAM,6BAAA,CACzB,EAAO,QAAQ,mBAAoB,CAAE,IAAK,QAAQ,GAAK,EAAC,AACzD,EAAC,CACJ,EACA,gBACD,CACF,CAEH,KAAM,SAAQ,IAAI,EAAO,CACzB,EAAI,OAAO,IAAI,CAAC,KAAK,CAAE,OAAQ,IAAM,EAAC,AACvC,OAAQ,EAAK,CAEZ,AADA,EAAO,OAAO,mBAAoB,CAAE,KAAK,EAAC,CAC1C,EAAI,OAAO,IAAI,CAAC,KAAK,CAAE,MAAQ,EAAc,OAAS,EAAC,AACxD,CACF,CACF"}
|
package/lib/health/shared.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function e(e=200){return new Promise((t,n)=>{let r=Date.now();setImmediate(()=>{Date.now()-r>e?n(Error(`event‑loop lag`)):t()})})}
|
|
1
|
+
function e(e=200){return new Promise((t,n)=>{let r=Date.now();setImmediate(()=>{Date.now()-r>e?n(Error(`event‑loop lag`)):t()})})}exports.eventLoopHeartbeat=e;
|
|
2
2
|
//# sourceMappingURL=shared.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.cjs","names":[
|
|
1
|
+
{"version":3,"file":"shared.cjs","names":[],"sources":["../../src/health/shared.ts"],"sourcesContent":["export interface SimpleLogger {\n error: (message: string, meta: Record<string, unknown>) => void;\n warn: (message: string, meta: Record<string, unknown>) => void;\n info: (message: string, meta: Record<string, unknown>) => void;\n debug?: (message: string, meta: Record<string, unknown>) => void;\n};\n\nexport function eventLoopHeartbeat(maxLag = 200): Promise<void> {\n return new Promise((resolve, reject) => {\n const start = Date.now();\n setImmediate(() => {\n if (Date.now() - start > maxLag) {\n reject(new Error('event‑loop lag'));\n } else {\n resolve();\n }\n });\n });\n}\n\nexport async function runParallelChecks(\n checks: Map<string, Promise<unknown>>,\n): Promise<void> {\n if (checks.size === 0) {\n return;\n }\n await Promise.all(\n Array.from(checks.values()).map(check =>\n check.catch((err) => {\n throw new Error(`Check failed: ${err.message}`);\n }),\n ),\n );\n}\n"],"mappings":"AAOA,SAAgB,EAAmB,EAAS,IAAoB,CAC9D,OAAO,IAAI,QAAQ,CAAC,EAAS,IAAW,CACtC,IAAM,EAAQ,KAAK,KAAK,CACxB,aAAa,IAAM,CACjB,AAAI,KAAK,KAAK,CAAG,EAAQ,EACvB,EAAO,AAAI,MAAM,iBAAA,CAAkB,CAEnC,GAAS,AAEZ,EAAC,AACH,EACF"}
|
package/lib/health/shared.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function e(e=200){return new Promise((t,n)=>{let r=Date.now();setImmediate(()=>{Date.now()-r>e?n(Error(`event‑loop lag`)):t()})})}
|
|
1
|
+
function e(e=200){return new Promise((t,n)=>{let r=Date.now();setImmediate(()=>{Date.now()-r>e?n(Error(`event‑loop lag`)):t()})})}export{e as eventLoopHeartbeat};
|
|
2
2
|
//# sourceMappingURL=shared.js.map
|
package/lib/health/shared.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","names":[
|
|
1
|
+
{"version":3,"file":"shared.js","names":[],"sources":["../../src/health/shared.ts"],"sourcesContent":["export interface SimpleLogger {\n error: (message: string, meta: Record<string, unknown>) => void;\n warn: (message: string, meta: Record<string, unknown>) => void;\n info: (message: string, meta: Record<string, unknown>) => void;\n debug?: (message: string, meta: Record<string, unknown>) => void;\n};\n\nexport function eventLoopHeartbeat(maxLag = 200): Promise<void> {\n return new Promise((resolve, reject) => {\n const start = Date.now();\n setImmediate(() => {\n if (Date.now() - start > maxLag) {\n reject(new Error('event‑loop lag'));\n } else {\n resolve();\n }\n });\n });\n}\n\nexport async function runParallelChecks(\n checks: Map<string, Promise<unknown>>,\n): Promise<void> {\n if (checks.size === 0) {\n return;\n }\n await Promise.all(\n Array.from(checks.values()).map(check =>\n check.catch((err) => {\n throw new Error(`Check failed: ${err.message}`);\n }),\n ),\n );\n}\n"],"mappings":"AAOA,SAAgB,EAAmB,EAAS,IAAoB,CAC9D,OAAO,IAAI,QAAQ,CAAC,EAAS,IAAW,CACtC,IAAM,EAAQ,KAAK,KAAK,CACxB,aAAa,IAAM,CACjB,AAAI,KAAK,KAAK,CAAG,EAAQ,EACvB,EAAO,AAAI,MAAM,iBAAA,CAAkB,CAEnC,GAAS,AAEZ,EAAC,AACH,EACF"}
|
package/lib/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`./
|
|
1
|
+
const e=require(`./health/liveness.cjs`),t=require(`./alive-endpoint/middleware.cjs`),n=require(`./health/readiness.cjs`),r={liveness:e.livenessEndpoint,readiness:n.readinessEndpoint};exports.aliveEndpoint=t.aliveEndpointMiddleware,exports.probes=r;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/lib/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{livenessEndpoint as e}from"./health/liveness.js";import{aliveEndpointMiddleware as t}from"./alive-endpoint/middleware.js";import{readinessEndpoint as n}from"./health/readiness.js";const r={liveness:e,readiness:n};export{t as aliveEndpoint,r as probes};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|