@firebreak/vitals 1.2.1 → 1.2.3
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/index.cjs +25 -18
- package/dist/index.mjs +25 -18
- package/dist/integrations/express.cjs +25 -18
- package/dist/integrations/express.mjs +25 -18
- package/dist/integrations/next.cjs +25 -18
- package/dist/integrations/next.mjs +25 -18
- package/package.json +37 -9
package/dist/index.cjs
CHANGED
|
@@ -191,30 +191,37 @@ function extractToken(options) {
|
|
|
191
191
|
// src/handler.ts
|
|
192
192
|
var RESERVED_METADATA_KEYS = ["status", "timestamp", "checks"];
|
|
193
193
|
function createHealthcheckHandler(options) {
|
|
194
|
-
const { registry, token
|
|
194
|
+
const { registry, token: rawToken, queryParamName = "token", metadata = {} } = options;
|
|
195
|
+
const token = rawToken || null;
|
|
195
196
|
for (const key of Object.keys(metadata)) {
|
|
196
197
|
if (RESERVED_METADATA_KEYS.includes(key)) {
|
|
197
198
|
throw new Error(`Metadata key '${key}' is reserved. Use a different key name.`);
|
|
198
199
|
}
|
|
199
200
|
}
|
|
200
201
|
return async (req) => {
|
|
201
|
-
if (token
|
|
202
|
-
const
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
202
|
+
if (token === null) {
|
|
203
|
+
const body = {
|
|
204
|
+
status: "ok",
|
|
205
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
206
|
+
...metadata
|
|
207
|
+
};
|
|
208
|
+
return { status: 200, body };
|
|
209
|
+
}
|
|
210
|
+
const provided = extractToken({
|
|
211
|
+
queryParams: req.queryParams,
|
|
212
|
+
authorizationHeader: req.authorizationHeader,
|
|
213
|
+
queryParamName
|
|
214
|
+
});
|
|
215
|
+
if (provided === null) {
|
|
216
|
+
const body = {
|
|
217
|
+
status: "ok",
|
|
218
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
219
|
+
...metadata
|
|
220
|
+
};
|
|
221
|
+
return { status: 200, body };
|
|
222
|
+
}
|
|
223
|
+
if (!verifyToken(provided, token)) {
|
|
224
|
+
return { status: 403, body: { error: "Forbidden" } };
|
|
218
225
|
}
|
|
219
226
|
const response = await registry.run();
|
|
220
227
|
return {
|
package/dist/index.mjs
CHANGED
|
@@ -156,30 +156,37 @@ function extractToken(options) {
|
|
|
156
156
|
// src/handler.ts
|
|
157
157
|
var RESERVED_METADATA_KEYS = ["status", "timestamp", "checks"];
|
|
158
158
|
function createHealthcheckHandler(options) {
|
|
159
|
-
const { registry, token
|
|
159
|
+
const { registry, token: rawToken, queryParamName = "token", metadata = {} } = options;
|
|
160
|
+
const token = rawToken || null;
|
|
160
161
|
for (const key of Object.keys(metadata)) {
|
|
161
162
|
if (RESERVED_METADATA_KEYS.includes(key)) {
|
|
162
163
|
throw new Error(`Metadata key '${key}' is reserved. Use a different key name.`);
|
|
163
164
|
}
|
|
164
165
|
}
|
|
165
166
|
return async (req) => {
|
|
166
|
-
if (token
|
|
167
|
-
const
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
167
|
+
if (token === null) {
|
|
168
|
+
const body = {
|
|
169
|
+
status: "ok",
|
|
170
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
171
|
+
...metadata
|
|
172
|
+
};
|
|
173
|
+
return { status: 200, body };
|
|
174
|
+
}
|
|
175
|
+
const provided = extractToken({
|
|
176
|
+
queryParams: req.queryParams,
|
|
177
|
+
authorizationHeader: req.authorizationHeader,
|
|
178
|
+
queryParamName
|
|
179
|
+
});
|
|
180
|
+
if (provided === null) {
|
|
181
|
+
const body = {
|
|
182
|
+
status: "ok",
|
|
183
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
184
|
+
...metadata
|
|
185
|
+
};
|
|
186
|
+
return { status: 200, body };
|
|
187
|
+
}
|
|
188
|
+
if (!verifyToken(provided, token)) {
|
|
189
|
+
return { status: 403, body: { error: "Forbidden" } };
|
|
183
190
|
}
|
|
184
191
|
const response = await registry.run();
|
|
185
192
|
return {
|
|
@@ -79,30 +79,37 @@ function httpStatusCode(status) {
|
|
|
79
79
|
// src/handler.ts
|
|
80
80
|
var RESERVED_METADATA_KEYS = ["status", "timestamp", "checks"];
|
|
81
81
|
function createHealthcheckHandler(options) {
|
|
82
|
-
const { registry, token
|
|
82
|
+
const { registry, token: rawToken, queryParamName = "token", metadata = {} } = options;
|
|
83
|
+
const token = rawToken || null;
|
|
83
84
|
for (const key of Object.keys(metadata)) {
|
|
84
85
|
if (RESERVED_METADATA_KEYS.includes(key)) {
|
|
85
86
|
throw new Error(`Metadata key '${key}' is reserved. Use a different key name.`);
|
|
86
87
|
}
|
|
87
88
|
}
|
|
88
89
|
return async (req) => {
|
|
89
|
-
if (token
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
90
|
+
if (token === null) {
|
|
91
|
+
const body = {
|
|
92
|
+
status: "ok",
|
|
93
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
94
|
+
...metadata
|
|
95
|
+
};
|
|
96
|
+
return { status: 200, body };
|
|
97
|
+
}
|
|
98
|
+
const provided = extractToken({
|
|
99
|
+
queryParams: req.queryParams,
|
|
100
|
+
authorizationHeader: req.authorizationHeader,
|
|
101
|
+
queryParamName
|
|
102
|
+
});
|
|
103
|
+
if (provided === null) {
|
|
104
|
+
const body = {
|
|
105
|
+
status: "ok",
|
|
106
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
107
|
+
...metadata
|
|
108
|
+
};
|
|
109
|
+
return { status: 200, body };
|
|
110
|
+
}
|
|
111
|
+
if (!verifyToken(provided, token)) {
|
|
112
|
+
return { status: 403, body: { error: "Forbidden" } };
|
|
106
113
|
}
|
|
107
114
|
const response = await registry.run();
|
|
108
115
|
return {
|
|
@@ -53,30 +53,37 @@ function httpStatusCode(status) {
|
|
|
53
53
|
// src/handler.ts
|
|
54
54
|
var RESERVED_METADATA_KEYS = ["status", "timestamp", "checks"];
|
|
55
55
|
function createHealthcheckHandler(options) {
|
|
56
|
-
const { registry, token
|
|
56
|
+
const { registry, token: rawToken, queryParamName = "token", metadata = {} } = options;
|
|
57
|
+
const token = rawToken || null;
|
|
57
58
|
for (const key of Object.keys(metadata)) {
|
|
58
59
|
if (RESERVED_METADATA_KEYS.includes(key)) {
|
|
59
60
|
throw new Error(`Metadata key '${key}' is reserved. Use a different key name.`);
|
|
60
61
|
}
|
|
61
62
|
}
|
|
62
63
|
return async (req) => {
|
|
63
|
-
if (token
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
64
|
+
if (token === null) {
|
|
65
|
+
const body = {
|
|
66
|
+
status: "ok",
|
|
67
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
68
|
+
...metadata
|
|
69
|
+
};
|
|
70
|
+
return { status: 200, body };
|
|
71
|
+
}
|
|
72
|
+
const provided = extractToken({
|
|
73
|
+
queryParams: req.queryParams,
|
|
74
|
+
authorizationHeader: req.authorizationHeader,
|
|
75
|
+
queryParamName
|
|
76
|
+
});
|
|
77
|
+
if (provided === null) {
|
|
78
|
+
const body = {
|
|
79
|
+
status: "ok",
|
|
80
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
81
|
+
...metadata
|
|
82
|
+
};
|
|
83
|
+
return { status: 200, body };
|
|
84
|
+
}
|
|
85
|
+
if (!verifyToken(provided, token)) {
|
|
86
|
+
return { status: 403, body: { error: "Forbidden" } };
|
|
80
87
|
}
|
|
81
88
|
const response = await registry.run();
|
|
82
89
|
return {
|
|
@@ -79,30 +79,37 @@ function httpStatusCode(status) {
|
|
|
79
79
|
// src/handler.ts
|
|
80
80
|
var RESERVED_METADATA_KEYS = ["status", "timestamp", "checks"];
|
|
81
81
|
function createHealthcheckHandler(options) {
|
|
82
|
-
const { registry, token
|
|
82
|
+
const { registry, token: rawToken, queryParamName = "token", metadata = {} } = options;
|
|
83
|
+
const token = rawToken || null;
|
|
83
84
|
for (const key of Object.keys(metadata)) {
|
|
84
85
|
if (RESERVED_METADATA_KEYS.includes(key)) {
|
|
85
86
|
throw new Error(`Metadata key '${key}' is reserved. Use a different key name.`);
|
|
86
87
|
}
|
|
87
88
|
}
|
|
88
89
|
return async (req) => {
|
|
89
|
-
if (token
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
90
|
+
if (token === null) {
|
|
91
|
+
const body = {
|
|
92
|
+
status: "ok",
|
|
93
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
94
|
+
...metadata
|
|
95
|
+
};
|
|
96
|
+
return { status: 200, body };
|
|
97
|
+
}
|
|
98
|
+
const provided = extractToken({
|
|
99
|
+
queryParams: req.queryParams,
|
|
100
|
+
authorizationHeader: req.authorizationHeader,
|
|
101
|
+
queryParamName
|
|
102
|
+
});
|
|
103
|
+
if (provided === null) {
|
|
104
|
+
const body = {
|
|
105
|
+
status: "ok",
|
|
106
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
107
|
+
...metadata
|
|
108
|
+
};
|
|
109
|
+
return { status: 200, body };
|
|
110
|
+
}
|
|
111
|
+
if (!verifyToken(provided, token)) {
|
|
112
|
+
return { status: 403, body: { error: "Forbidden" } };
|
|
106
113
|
}
|
|
107
114
|
const response = await registry.run();
|
|
108
115
|
return {
|
|
@@ -53,30 +53,37 @@ function httpStatusCode(status) {
|
|
|
53
53
|
// src/handler.ts
|
|
54
54
|
var RESERVED_METADATA_KEYS = ["status", "timestamp", "checks"];
|
|
55
55
|
function createHealthcheckHandler(options) {
|
|
56
|
-
const { registry, token
|
|
56
|
+
const { registry, token: rawToken, queryParamName = "token", metadata = {} } = options;
|
|
57
|
+
const token = rawToken || null;
|
|
57
58
|
for (const key of Object.keys(metadata)) {
|
|
58
59
|
if (RESERVED_METADATA_KEYS.includes(key)) {
|
|
59
60
|
throw new Error(`Metadata key '${key}' is reserved. Use a different key name.`);
|
|
60
61
|
}
|
|
61
62
|
}
|
|
62
63
|
return async (req) => {
|
|
63
|
-
if (token
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
64
|
+
if (token === null) {
|
|
65
|
+
const body = {
|
|
66
|
+
status: "ok",
|
|
67
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
68
|
+
...metadata
|
|
69
|
+
};
|
|
70
|
+
return { status: 200, body };
|
|
71
|
+
}
|
|
72
|
+
const provided = extractToken({
|
|
73
|
+
queryParams: req.queryParams,
|
|
74
|
+
authorizationHeader: req.authorizationHeader,
|
|
75
|
+
queryParamName
|
|
76
|
+
});
|
|
77
|
+
if (provided === null) {
|
|
78
|
+
const body = {
|
|
79
|
+
status: "ok",
|
|
80
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
81
|
+
...metadata
|
|
82
|
+
};
|
|
83
|
+
return { status: 200, body };
|
|
84
|
+
}
|
|
85
|
+
if (!verifyToken(provided, token)) {
|
|
86
|
+
return { status: 403, body: { error: "Forbidden" } };
|
|
80
87
|
}
|
|
81
88
|
const response = await registry.run();
|
|
82
89
|
return {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@firebreak/vitals",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.3",
|
|
4
4
|
"description": "Deep healthcheck endpoints following the HEALTHCHECK_SPEC format",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -88,9 +88,9 @@
|
|
|
88
88
|
"lint": "tsc --noEmit"
|
|
89
89
|
},
|
|
90
90
|
"peerDependencies": {
|
|
91
|
-
"
|
|
91
|
+
"express": ">=4.0.0",
|
|
92
92
|
"ioredis": ">=5.0.0",
|
|
93
|
-
"
|
|
93
|
+
"pg": ">=8.0.0"
|
|
94
94
|
},
|
|
95
95
|
"peerDependenciesMeta": {
|
|
96
96
|
"pg": {
|
|
@@ -104,17 +104,45 @@
|
|
|
104
104
|
}
|
|
105
105
|
},
|
|
106
106
|
"devDependencies": {
|
|
107
|
-
"tsup": "^8.0.0",
|
|
108
|
-
"typescript": "^5.5.0",
|
|
109
|
-
"vitest": "^2.0.0",
|
|
110
|
-
"@types/node": "^22.0.0",
|
|
111
107
|
"@types/express": "^5.0.0",
|
|
108
|
+
"@types/node": "^22.0.0",
|
|
112
109
|
"@types/pg": "^8.0.0",
|
|
113
|
-
"
|
|
110
|
+
"@types/supertest": "^6.0.0",
|
|
114
111
|
"express": "^4.21.0",
|
|
112
|
+
"ioredis": "^5.0.0",
|
|
115
113
|
"pg": "^8.13.0",
|
|
116
114
|
"supertest": "^7.0.0",
|
|
117
|
-
"
|
|
115
|
+
"tsup": "^8.0.0",
|
|
116
|
+
"typescript": "^5.5.0",
|
|
117
|
+
"vitest": "^2.0.0"
|
|
118
|
+
},
|
|
119
|
+
"overrides": {
|
|
120
|
+
"array-flatten": "npm:@socketregistry/array-flatten@^1",
|
|
121
|
+
"es-define-property": "npm:@socketregistry/es-define-property@^1",
|
|
122
|
+
"es-set-tostringtag": "npm:@socketregistry/es-set-tostringtag@^1",
|
|
123
|
+
"function-bind": "npm:@socketregistry/function-bind@^1",
|
|
124
|
+
"gopd": "npm:@socketregistry/gopd@^1",
|
|
125
|
+
"has-symbols": "npm:@socketregistry/has-symbols@^1",
|
|
126
|
+
"has-tostringtag": "npm:@socketregistry/has-tostringtag@^1",
|
|
127
|
+
"hasown": "npm:@socketregistry/hasown@^1",
|
|
128
|
+
"object-assign": "npm:@socketregistry/object-assign@^1",
|
|
129
|
+
"safe-buffer": "npm:@socketregistry/safe-buffer@^1",
|
|
130
|
+
"safer-buffer": "npm:@socketregistry/safer-buffer@^1",
|
|
131
|
+
"side-channel": "npm:@socketregistry/side-channel@^1"
|
|
132
|
+
},
|
|
133
|
+
"resolutions": {
|
|
134
|
+
"array-flatten": "npm:@socketregistry/array-flatten@^1",
|
|
135
|
+
"es-define-property": "npm:@socketregistry/es-define-property@^1",
|
|
136
|
+
"es-set-tostringtag": "npm:@socketregistry/es-set-tostringtag@^1",
|
|
137
|
+
"function-bind": "npm:@socketregistry/function-bind@^1",
|
|
138
|
+
"gopd": "npm:@socketregistry/gopd@^1",
|
|
139
|
+
"has-symbols": "npm:@socketregistry/has-symbols@^1",
|
|
140
|
+
"has-tostringtag": "npm:@socketregistry/has-tostringtag@^1",
|
|
141
|
+
"hasown": "npm:@socketregistry/hasown@^1",
|
|
142
|
+
"object-assign": "npm:@socketregistry/object-assign@^1",
|
|
143
|
+
"safe-buffer": "npm:@socketregistry/safe-buffer@^1",
|
|
144
|
+
"safer-buffer": "npm:@socketregistry/safer-buffer@^1",
|
|
145
|
+
"side-channel": "npm:@socketregistry/side-channel@^1"
|
|
118
146
|
},
|
|
119
147
|
"engines": {
|
|
120
148
|
"node": ">=20.0.0"
|