@entwico/health-probes 1.1.0 → 1.1.2
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/dist/checks.d.ts +1 -1
- package/dist/checks.d.ts.map +1 -1
- package/dist/checks.js +16 -13
- package/dist/checks.js.map +1 -1
- package/dist/probes.d.ts +1 -1
- package/dist/probes.d.ts.map +1 -1
- package/dist/probes.js +10 -10
- package/dist/probes.js.map +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +19 -14
- package/dist/server.js.map +1 -1
- package/package.json +18 -29
package/dist/checks.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { HealthCheck, HealthCheckResult } from './types.js';
|
|
2
2
|
export declare class HealthChecks {
|
|
3
3
|
private readonly registered;
|
|
4
|
+
private run;
|
|
4
5
|
register(name: string, check: () => Promise<HealthCheckResult | void> | HealthCheckResult | void): () => void;
|
|
5
6
|
register(check: HealthCheck): () => void;
|
|
6
|
-
private run;
|
|
7
7
|
runAll(): Promise<Record<string, HealthCheckResult>>;
|
|
8
8
|
runRequired(): Promise<boolean>;
|
|
9
9
|
getChecks(): HealthCheck[];
|
package/dist/checks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../src/checks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAOjE,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkC;
|
|
1
|
+
{"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../src/checks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAOjE,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkC;YAK/C,GAAG;IA+BjB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,iBAAiB,GAAG,IAAI,GAAG,MAAM,IAAI;IAC7G,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,IAAI;IAqBlC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAkBpD,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAwBrC,SAAS,IAAI,WAAW,EAAE;CAG3B;AAED,eAAO,MAAM,MAAM,cAAqB,CAAC"}
|
package/dist/checks.js
CHANGED
|
@@ -1,16 +1,6 @@
|
|
|
1
1
|
const DEFAULT_TIMEOUT = 5000;
|
|
2
2
|
export class HealthChecks {
|
|
3
3
|
registered = new Map();
|
|
4
|
-
register(nameOrCheck, checkFn) {
|
|
5
|
-
const check = typeof nameOrCheck === 'string' ? { name: nameOrCheck, check: checkFn } : nameOrCheck;
|
|
6
|
-
if (this.registered.has(check.name)) {
|
|
7
|
-
console.warn(`[health] overwriting existing check "${check.name}"`);
|
|
8
|
-
}
|
|
9
|
-
this.registered.set(check.name, check);
|
|
10
|
-
return () => {
|
|
11
|
-
this.registered.delete(check.name);
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
4
|
async run(check) {
|
|
15
5
|
const timeout = check.timeout ?? DEFAULT_TIMEOUT;
|
|
16
6
|
const start = performance.now();
|
|
@@ -33,9 +23,19 @@ export class HealthChecks {
|
|
|
33
23
|
return { status: 'unhealthy', latency, error: errorMessage };
|
|
34
24
|
}
|
|
35
25
|
}
|
|
26
|
+
register(nameOrCheck, checkFn) {
|
|
27
|
+
const check = typeof nameOrCheck === 'string' ? { name: nameOrCheck, check: checkFn } : nameOrCheck;
|
|
28
|
+
if (this.registered.has(check.name)) {
|
|
29
|
+
console.warn(`[health] overwriting existing check "${check.name}"`);
|
|
30
|
+
}
|
|
31
|
+
this.registered.set(check.name, check);
|
|
32
|
+
return () => {
|
|
33
|
+
this.registered.delete(check.name);
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
36
|
async runAll() {
|
|
37
37
|
const results = {};
|
|
38
|
-
const checks =
|
|
38
|
+
const checks = this.registered.values().toArray();
|
|
39
39
|
const checkPromises = checks.map(async (check) => {
|
|
40
40
|
const result = await this.run(check);
|
|
41
41
|
results[check.name] = result;
|
|
@@ -44,7 +44,10 @@ export class HealthChecks {
|
|
|
44
44
|
return results;
|
|
45
45
|
}
|
|
46
46
|
async runRequired() {
|
|
47
|
-
const requiredChecks =
|
|
47
|
+
const requiredChecks = this.registered
|
|
48
|
+
.values()
|
|
49
|
+
.filter((check) => !check.optional)
|
|
50
|
+
.toArray();
|
|
48
51
|
if (requiredChecks.length === 0) {
|
|
49
52
|
return true;
|
|
50
53
|
}
|
|
@@ -56,7 +59,7 @@ export class HealthChecks {
|
|
|
56
59
|
return results.every(Boolean);
|
|
57
60
|
}
|
|
58
61
|
getChecks() {
|
|
59
|
-
return
|
|
62
|
+
return this.registered.values().toArray();
|
|
60
63
|
}
|
|
61
64
|
}
|
|
62
65
|
export const checks = new HealthChecks();
|
package/dist/checks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checks.js","sourceRoot":"","sources":["../src/checks.ts"],"names":[],"mappings":"AAEA,MAAM,eAAe,GAAG,IAAI,CAAC;AAK7B,MAAM,OAAO,YAAY;IACN,UAAU,GAAG,IAAI,GAAG,EAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"checks.js","sourceRoot":"","sources":["../src/checks.ts"],"names":[],"mappings":"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"}
|
package/dist/probes.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { HealthProbe, HealthStatusProbe } from './types.js';
|
|
2
2
|
export declare class HealthProbes {
|
|
3
3
|
private state;
|
|
4
|
-
private createProbeResponse;
|
|
5
4
|
readonly live: HealthProbe;
|
|
6
5
|
readonly startup: HealthProbe;
|
|
7
6
|
readonly ready: HealthProbe;
|
|
8
7
|
readonly health: HealthStatusProbe;
|
|
8
|
+
private createProbeResponse;
|
|
9
9
|
}
|
|
10
10
|
export declare const probes: HealthProbes;
|
|
11
11
|
//# sourceMappingURL=probes.d.ts.map
|
package/dist/probes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"probes.d.ts","sourceRoot":"","sources":["../src/probes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAmC,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAKlG,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAIX;IAEF,
|
|
1
|
+
{"version":3,"file":"probes.d.ts","sourceRoot":"","sources":["../src/probes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAmC,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAKlG,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAIX;IAEF,QAAQ,CAAC,IAAI,EAAE,WAAW,CAaxB;IAEF,QAAQ,CAAC,OAAO,EAAE,WAAW,CAa3B;IAEF,QAAQ,CAAC,KAAK,EAAE,WAAW,CAazB;IAEF,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAiChC;IAEF,OAAO,CAAC,mBAAmB;CAM5B;AAED,eAAO,MAAM,MAAM,cAAqB,CAAC"}
|
package/dist/probes.js
CHANGED
|
@@ -5,12 +5,6 @@ export class HealthProbes {
|
|
|
5
5
|
startup: false,
|
|
6
6
|
ready: false,
|
|
7
7
|
};
|
|
8
|
-
createProbeResponse(result) {
|
|
9
|
-
return new Response(result.passing ? 'OK' : 'Service Unavailable', {
|
|
10
|
-
status: result.passing ? 200 : 503,
|
|
11
|
-
headers: { 'Content-Type': 'text/plain' },
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
8
|
live = {
|
|
15
9
|
enable: () => {
|
|
16
10
|
this.state.live = true;
|
|
@@ -18,8 +12,8 @@ export class HealthProbes {
|
|
|
18
12
|
disable: () => {
|
|
19
13
|
this.state.live = false;
|
|
20
14
|
},
|
|
21
|
-
get:
|
|
22
|
-
return { passing: this.state.live };
|
|
15
|
+
get: () => {
|
|
16
|
+
return Promise.resolve({ passing: this.state.live });
|
|
23
17
|
},
|
|
24
18
|
response: async () => {
|
|
25
19
|
return this.createProbeResponse(await this.live.get());
|
|
@@ -32,8 +26,8 @@ export class HealthProbes {
|
|
|
32
26
|
disable: () => {
|
|
33
27
|
this.state.startup = false;
|
|
34
28
|
},
|
|
35
|
-
get:
|
|
36
|
-
return { passing: this.state.startup };
|
|
29
|
+
get: () => {
|
|
30
|
+
return Promise.resolve({ passing: this.state.startup });
|
|
37
31
|
},
|
|
38
32
|
response: async () => {
|
|
39
33
|
return this.createProbeResponse(await this.startup.get());
|
|
@@ -82,6 +76,12 @@ export class HealthProbes {
|
|
|
82
76
|
});
|
|
83
77
|
},
|
|
84
78
|
};
|
|
79
|
+
createProbeResponse(result) {
|
|
80
|
+
return new Response(result.passing ? 'OK' : 'Service Unavailable', {
|
|
81
|
+
status: result.passing ? 200 : 503,
|
|
82
|
+
headers: { 'Content-Type': 'text/plain' },
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
85
|
}
|
|
86
86
|
export const probes = new HealthProbes();
|
|
87
87
|
//# sourceMappingURL=probes.js.map
|
package/dist/probes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"probes.js","sourceRoot":"","sources":["../src/probes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAMrC,MAAM,OAAO,YAAY;IACf,KAAK,GAAG;QACd,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,KAAK;KACb,CAAC;
|
|
1
|
+
{"version":3,"file":"probes.js","sourceRoot":"","sources":["../src/probes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAMrC,MAAM,OAAO,YAAY;IACf,KAAK,GAAG;QACd,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,KAAK;KACb,CAAC;IAEO,IAAI,GAAgB;QAC3B,MAAM,EAAE,GAAG,EAAE;YACX,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QACzB,CAAC;QACD,OAAO,EAAE,GAAG,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;QAC1B,CAAC;QACD,GAAG,EAAE,GAA+B,EAAE;YACpC,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,QAAQ,EAAE,KAAK,IAAuB,EAAE;YACtC,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACzD,CAAC;KACF,CAAC;IAEO,OAAO,GAAgB;QAC9B,MAAM,EAAE,GAAG,EAAE;YACX,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QAC5B,CAAC;QACD,OAAO,EAAE,GAAG,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;QAC7B,CAAC;QACD,GAAG,EAAE,GAA+B,EAAE;YACpC,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,QAAQ,EAAE,KAAK,IAAuB,EAAE;YACtC,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5D,CAAC;KACF,CAAC;IAEO,KAAK,GAAgB;QAC5B,MAAM,EAAE,GAAG,EAAE;YACX,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;QAC1B,CAAC;QACD,OAAO,EAAE,GAAG,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAC3B,CAAC;QACD,GAAG,EAAE,KAAK,IAAgC,EAAE;YAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC5E,CAAC;QACD,QAAQ,EAAE,KAAK,IAAuB,EAAE;YACtC,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1D,CAAC;KACF,CAAC;IAEO,MAAM,GAAsB;QACnC,GAAG,EAAE,KAAK,IAA2B,EAAE;YACrC,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YAEtC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;YAEvF,MAAM,oBAAoB,GAAG,UAAU;iBACpC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;iBAClC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC;YAEnE,IAAI,MAAM,GAA2B,SAAS,CAAC;YAE/C,IAAI,oBAAoB,EAAE,CAAC;gBACzB,MAAM,GAAG,WAAW,CAAC;YACvB,CAAC;iBAAM,IAAI,YAAY,EAAE,CAAC;gBACxB,MAAM,GAAG,UAAU,CAAC;YACtB,CAAC;YAED,OAAO;gBACL,MAAM;gBACN,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;gBACvF,MAAM,EAAE,YAAY;aACrB,CAAC;QACJ,CAAC;QACD,QAAQ,EAAE,KAAK,IAAuB,EAAE;YACtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAEvC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;gBACnD,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IAEM,mBAAmB,CAAC,MAAyB;QACnD,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,EAAE;YACjE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;YAClC,OAAO,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE;SAC1C,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC"}
|
package/dist/server.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { HealthServerOptions } from './types.js';
|
|
2
2
|
export declare class HealthServer {
|
|
3
3
|
private instance;
|
|
4
|
+
private handleRequest;
|
|
4
5
|
start(options?: HealthServerOptions): void;
|
|
5
6
|
stop(): Promise<void>;
|
|
6
|
-
private handleRequest;
|
|
7
7
|
}
|
|
8
8
|
export declare const server: HealthServer;
|
|
9
9
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAc,MAAM,YAAY,CAAC;AAKlE,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAuB;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAc,MAAM,YAAY,CAAC;AAKlE,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAuB;YAEzB,aAAa;IAuB3B,KAAK,CAAC,OAAO,GAAE,mBAAwB,GAAG,IAAI;IAqC9C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAkBtB;AAED,eAAO,MAAM,MAAM,cAAqB,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -3,6 +3,25 @@ import { K8sPaths } from './paths.js';
|
|
|
3
3
|
import { probes } from './probes.js';
|
|
4
4
|
export class HealthServer {
|
|
5
5
|
instance = null;
|
|
6
|
+
async handleRequest(pathname, paths) {
|
|
7
|
+
switch (pathname) {
|
|
8
|
+
case paths.live: {
|
|
9
|
+
return probes.live.response();
|
|
10
|
+
}
|
|
11
|
+
case paths.startup: {
|
|
12
|
+
return probes.startup.response();
|
|
13
|
+
}
|
|
14
|
+
case paths.ready: {
|
|
15
|
+
return probes.ready.response();
|
|
16
|
+
}
|
|
17
|
+
case paths.health: {
|
|
18
|
+
return probes.health.response();
|
|
19
|
+
}
|
|
20
|
+
default: {
|
|
21
|
+
return new Response('Not Found', { status: 404 });
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
6
25
|
start(options = {}) {
|
|
7
26
|
if (this.instance) {
|
|
8
27
|
return;
|
|
@@ -47,20 +66,6 @@ export class HealthServer {
|
|
|
47
66
|
});
|
|
48
67
|
});
|
|
49
68
|
}
|
|
50
|
-
async handleRequest(pathname, paths) {
|
|
51
|
-
switch (pathname) {
|
|
52
|
-
case paths.live:
|
|
53
|
-
return probes.live.response();
|
|
54
|
-
case paths.startup:
|
|
55
|
-
return probes.startup.response();
|
|
56
|
-
case paths.ready:
|
|
57
|
-
return probes.ready.response();
|
|
58
|
-
case paths.health:
|
|
59
|
-
return probes.health.response();
|
|
60
|
-
default:
|
|
61
|
-
return new Response('Not Found', { status: 404 });
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
69
|
}
|
|
65
70
|
export const server = new HealthServer();
|
|
66
71
|
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,YAAY,EAAE,MAAM,WAAW,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAMrC,MAAM,OAAO,YAAY;IACf,QAAQ,GAAkB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@entwico/health-probes",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "Kubernetes-style health check probes for Node.js — framework-agnostic /livez, /readyz, /startupz, and /healthz endpoints",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "admin@entwico.com",
|
|
@@ -35,39 +35,28 @@
|
|
|
35
35
|
"type": "git",
|
|
36
36
|
"url": "https://github.com/entwico/health-probes"
|
|
37
37
|
},
|
|
38
|
-
"scripts": {
|
|
39
|
-
"build": "tsc --project tsconfig.build.json",
|
|
40
|
-
"clean": "rm -rf dist",
|
|
41
|
-
"prebuild": "npm run clean",
|
|
42
|
-
"prepublishOnly": "npm run build && npm run test && npm run lint",
|
|
43
|
-
"validate": "run-s lint typecheck test",
|
|
44
|
-
"lint": "eslint . --report-unused-disable-directives --max-warnings 0",
|
|
45
|
-
"typecheck": "tsc",
|
|
46
|
-
"test": "npx tsx --test --experimental-test-coverage src/index.test.ts",
|
|
47
|
-
"prepare": "husky",
|
|
48
|
-
"semantic-release": "semantic-release"
|
|
49
|
-
},
|
|
50
38
|
"publishConfig": {
|
|
51
39
|
"access": "public",
|
|
52
40
|
"provenance": true
|
|
53
41
|
},
|
|
54
42
|
"devDependencies": {
|
|
55
|
-
"@
|
|
56
|
-
"@
|
|
57
|
-
"@semantic-release/changelog": "^6.0.3",
|
|
58
|
-
"@semantic-release/git": "^10.0.1",
|
|
43
|
+
"@changesets/cli": "^2.31.0",
|
|
44
|
+
"@entwico/eslint-config": "^2.0.7",
|
|
59
45
|
"@types/node": "^25.2.0",
|
|
60
|
-
"
|
|
61
|
-
"eslint": "^9.39.2",
|
|
62
|
-
"eslint-config-prettier": "^10.1.8",
|
|
63
|
-
"eslint-import-resolver-typescript": "^4.4.4",
|
|
64
|
-
"eslint-plugin-import": "^2.32.0",
|
|
65
|
-
"eslint-plugin-prettier": "^5.5.5",
|
|
66
|
-
"husky": "^9.1.7",
|
|
67
|
-
"npm-run-all": "^4.1.5",
|
|
68
|
-
"semantic-release": "^25.0.3",
|
|
46
|
+
"eslint": "^10.6.0",
|
|
69
47
|
"tsx": "^4.21.0",
|
|
70
|
-
"typescript": "^
|
|
71
|
-
|
|
48
|
+
"typescript": "^6.0.3"
|
|
49
|
+
},
|
|
50
|
+
"scripts": {
|
|
51
|
+
"build": "tsc --project tsconfig.build.json",
|
|
52
|
+
"clean": "rm -rf dist",
|
|
53
|
+
"prebuild": "pnpm clean",
|
|
54
|
+
"validate": "pnpm lint && pnpm typecheck && pnpm test",
|
|
55
|
+
"lint": "eslint --cache .",
|
|
56
|
+
"lint:fix": "pnpm lint --fix",
|
|
57
|
+
"typecheck": "tsc",
|
|
58
|
+
"test": "tsx --test --experimental-test-coverage src/index.test.ts",
|
|
59
|
+
"ci:version": "changeset version && pnpm install --no-frozen-lockfile",
|
|
60
|
+
"ci:publish": "changeset publish"
|
|
72
61
|
}
|
|
73
|
-
}
|
|
62
|
+
}
|