@salespark/route-utils 1.0.7 → 1.0.9
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/README.md +16 -3
- package/dist/index.d.ts +19 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +66 -10
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -58,9 +58,13 @@ All route handlers must return an object with the following structure:
|
|
|
58
58
|
### Status Rules
|
|
59
59
|
|
|
60
60
|
- ✅ `status: true` → Success: The HTTP response will send **only the `data` directly** (e.g., `res.json(data)` for 200, or no content for 204).
|
|
61
|
-
- ❌ `status: false` → Failure: The HTTP response will send **only
|
|
61
|
+
- ❌ `status: false` → Failure: The HTTP response will send **only a safe error payload** (e.g., `res.json({ error: "...", message: "..." })` for 400 or other codes).
|
|
62
62
|
- 🚨 Missing `status` → Treated as malformed response (`500` with basic error message).
|
|
63
63
|
|
|
64
|
+
#### Security note (failures)
|
|
65
|
+
|
|
66
|
+
When `status: false`, **the response never exposes sensitive error data**. If `data` is an `Error` instance, the payload is sanitized and **does not include stack traces or raw error objects**. By default, only a generic message is returned. You can explicitly allow `Error.message` when needed via `createResponder` options.
|
|
67
|
+
|
|
64
68
|
### Default HTTP Mapping
|
|
65
69
|
|
|
66
70
|
- Success with data → `200 OK` (sends data directly)
|
|
@@ -122,6 +126,12 @@ router.get("/achievements", validateAuth, async (req, res) => {
|
|
|
122
126
|
const respond = createResponder(res, { tag: "GET /achievements" });
|
|
123
127
|
await respond(() => ops.getProducerAchievements(res.locals.auth.producer_id));
|
|
124
128
|
});
|
|
129
|
+
|
|
130
|
+
// Allow exposing Error.message (optional override)
|
|
131
|
+
router.get("/debug", async (req, res) => {
|
|
132
|
+
const respond = createResponder(res, { allowErrorMessage: true });
|
|
133
|
+
await respond(() => ops.debugRoute());
|
|
134
|
+
});
|
|
125
135
|
```
|
|
126
136
|
|
|
127
137
|
---
|
|
@@ -133,6 +143,9 @@ const response = await ops.doSomething();
|
|
|
133
143
|
if (!resolveRouteResponse(res, response)) {
|
|
134
144
|
res.status(500).json({ status: false, error: "No response sent" });
|
|
135
145
|
}
|
|
146
|
+
|
|
147
|
+
// Optional: allow Error.message when response.data is an Error instance
|
|
148
|
+
resolveRouteResponse(res, response, { allowErrorMessage: true });
|
|
136
149
|
```
|
|
137
150
|
|
|
138
151
|
---
|
|
@@ -280,5 +293,5 @@ MIT © [SalesPark](https://salespark.io)
|
|
|
280
293
|
|
|
281
294
|
---
|
|
282
295
|
|
|
283
|
-
_Document version:
|
|
284
|
-
_Last update:
|
|
296
|
+
_Document version: 6_
|
|
297
|
+
_Last update: 28-03-2026_
|
package/dist/index.d.ts
CHANGED
|
@@ -81,8 +81,11 @@ export declare const makeRouteUtils: ({ logger, tagPrefix, }?: {
|
|
|
81
81
|
createResponder: (res: ResLike, options?: {
|
|
82
82
|
tag?: string;
|
|
83
83
|
logger?: LoggerFn;
|
|
84
|
+
allowErrorMessage?: boolean;
|
|
84
85
|
}) => (workFn: () => Promise<ApiResponse> | ApiResponse) => Promise<boolean>;
|
|
85
|
-
resolveRouteResponse: (res: ResLike, response: any
|
|
86
|
+
resolveRouteResponse: (res: ResLike, response: any, options?: {
|
|
87
|
+
allowErrorMessage?: boolean;
|
|
88
|
+
}) => boolean;
|
|
86
89
|
errorSanitizer: (error: unknown, options?: {
|
|
87
90
|
maxLength?: number;
|
|
88
91
|
allowErrorMessage?: boolean;
|
|
@@ -95,12 +98,17 @@ export declare const makeRouteUtils: ({ logger, tagPrefix, }?: {
|
|
|
95
98
|
* Normalizes a route response, applies headers/status, and prevents double sends when headers are already sent.
|
|
96
99
|
* @param {ResLike} res - Express-like response object
|
|
97
100
|
* @param {ApiResponse} response - ApiResponse payload with a required boolean status
|
|
101
|
+
* @param {object} options - Optional overrides for responder behavior
|
|
102
|
+
* @param {boolean} options.allowErrorMessage - Allow exposing Error.message when response.data is an Error
|
|
98
103
|
* @returns {boolean} - True if a response was sent; false when res is invalid
|
|
99
104
|
* History:
|
|
100
105
|
* 16-08-2025: Created
|
|
101
106
|
* 21-08-2025: Changed response method to directly use response.data
|
|
107
|
+
* 27-03-2026: Implemented allowErrorMessage option for error responses
|
|
102
108
|
****************************************************************************************************************/
|
|
103
|
-
export declare const resolveRouteResponse: (res: ResLike, response: any
|
|
109
|
+
export declare const resolveRouteResponse: (res: ResLike, response: any, options?: {
|
|
110
|
+
allowErrorMessage?: boolean;
|
|
111
|
+
}) => boolean;
|
|
104
112
|
export declare const wrapRoute: (handler: (req: any, res: ResLike) => Promise<ApiResponse> | ApiResponse, options?: {
|
|
105
113
|
tag?: string;
|
|
106
114
|
logger?: LoggerFn;
|
|
@@ -108,6 +116,7 @@ export declare const wrapRoute: (handler: (req: any, res: ResLike) => Promise<Ap
|
|
|
108
116
|
export declare const createResponder: (res: ResLike, options?: {
|
|
109
117
|
tag?: string;
|
|
110
118
|
logger?: LoggerFn;
|
|
119
|
+
allowErrorMessage?: boolean;
|
|
111
120
|
}) => (workFn: () => Promise<ApiResponse> | ApiResponse) => Promise<boolean>;
|
|
112
121
|
/** Default export bundle (optional convenience) */
|
|
113
122
|
declare const _default: {
|
|
@@ -122,8 +131,11 @@ declare const _default: {
|
|
|
122
131
|
createResponder: (res: ResLike, options?: {
|
|
123
132
|
tag?: string;
|
|
124
133
|
logger?: LoggerFn;
|
|
134
|
+
allowErrorMessage?: boolean;
|
|
125
135
|
}) => (workFn: () => Promise<ApiResponse> | ApiResponse) => Promise<boolean>;
|
|
126
|
-
resolveRouteResponse: (res: ResLike, response: any
|
|
136
|
+
resolveRouteResponse: (res: ResLike, response: any, options?: {
|
|
137
|
+
allowErrorMessage?: boolean;
|
|
138
|
+
}) => boolean;
|
|
127
139
|
errorSanitizer: (error: unknown, options?: {
|
|
128
140
|
maxLength?: number;
|
|
129
141
|
allowErrorMessage?: boolean;
|
|
@@ -138,6 +150,7 @@ declare const _default: {
|
|
|
138
150
|
createResponder: (res: ResLike, options?: {
|
|
139
151
|
tag?: string;
|
|
140
152
|
logger?: LoggerFn;
|
|
153
|
+
allowErrorMessage?: boolean;
|
|
141
154
|
}) => (workFn: () => Promise<ApiResponse> | ApiResponse) => Promise<boolean>;
|
|
142
155
|
errorSanitizer: (error: unknown, options?: {
|
|
143
156
|
maxLength?: number;
|
|
@@ -145,7 +158,9 @@ declare const _default: {
|
|
|
145
158
|
}) => {
|
|
146
159
|
error: string;
|
|
147
160
|
};
|
|
148
|
-
resolveRouteResponse: (res: ResLike, response: any
|
|
161
|
+
resolveRouteResponse: (res: ResLike, response: any, options?: {
|
|
162
|
+
allowErrorMessage?: boolean;
|
|
163
|
+
}) => boolean;
|
|
149
164
|
};
|
|
150
165
|
export default _default;
|
|
151
166
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;kHAmBkH;AAElH,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;AAEjE;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAClC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;IAClC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;IAClC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IACnD,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,CAAC,CAAC;CACV;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -23,6 +23,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
23
23
|
exports.createResponder = exports.wrapRoute = exports.resolveRouteResponse = exports.makeRouteUtils = exports.errorSanitizer = void 0;
|
|
24
24
|
/** No-op logger (silent). Used when no logger function is provided. */
|
|
25
25
|
const noopLogger = () => { };
|
|
26
|
+
/****************************************************************************************************************
|
|
27
|
+
* ##: Detect error-like objects
|
|
28
|
+
* Identifies plain objects that look like serialized Errors (stack/name/message).
|
|
29
|
+
* @param {unknown} value - Value to inspect
|
|
30
|
+
* @returns {boolean} - True when the value looks like an Error
|
|
31
|
+
* History:
|
|
32
|
+
* 28-03-2026: Created
|
|
33
|
+
****************************************************************************************************************/
|
|
34
|
+
const isErrorLike = (value) => {
|
|
35
|
+
if (!value || typeof value !== "object")
|
|
36
|
+
return false;
|
|
37
|
+
const err = value;
|
|
38
|
+
const hasStack = typeof err.stack === "string" && err.stack.trim();
|
|
39
|
+
if (hasStack)
|
|
40
|
+
return true;
|
|
41
|
+
const hasName = typeof err.name === "string" && err.name.trim();
|
|
42
|
+
const hasMessage = typeof err.message === "string" && err.message.trim();
|
|
43
|
+
if (hasName && hasMessage)
|
|
44
|
+
return /Error$/.test(err.name);
|
|
45
|
+
return false;
|
|
46
|
+
};
|
|
26
47
|
/****************************************************************************************************************
|
|
27
48
|
* ##: Read error message for sanitizer
|
|
28
49
|
* Extracts a safe message from error input, preferring string reason or message.
|
|
@@ -31,8 +52,11 @@ const noopLogger = () => { };
|
|
|
31
52
|
* @returns {string | undefined} - Safe message string or undefined when no safe message is available
|
|
32
53
|
* History:
|
|
33
54
|
* 18-03-2026: Created
|
|
55
|
+
* 28-03-2026: Updated to respect allowErrorMessage flag for Error instances
|
|
34
56
|
****************************************************************************************************************/
|
|
35
57
|
const readErrorMessage = (error, allowErrorMessage) => {
|
|
58
|
+
if (!allowErrorMessage && isErrorLike(error))
|
|
59
|
+
return undefined;
|
|
36
60
|
if (error instanceof Error)
|
|
37
61
|
return allowErrorMessage ? error.message : undefined;
|
|
38
62
|
if (typeof error === "string")
|
|
@@ -81,6 +105,40 @@ const errorSanitizer = (error, options = {}) => {
|
|
|
81
105
|
return { error: message ? sanitizeMessage(message, maxLength) : "Unexpected error" };
|
|
82
106
|
};
|
|
83
107
|
exports.errorSanitizer = errorSanitizer;
|
|
108
|
+
/****************************************************************************************************************
|
|
109
|
+
* ##: Build safe error response body
|
|
110
|
+
* Avoids leaking Error details by default, with an optional override to expose Error.message.
|
|
111
|
+
* @param {unknown} raw - Raw error payload returned by the handler
|
|
112
|
+
* @param {object} options - Optional overrides for sanitizer behavior
|
|
113
|
+
* @param {number} options.maxLength - Maximum length for the output message
|
|
114
|
+
* @param {boolean} options.allowErrorMessage - Allow exposing Error.message when raw is an Error instance
|
|
115
|
+
* @returns {{ error: string; message?: string }} - Safe error response payload
|
|
116
|
+
* History:
|
|
117
|
+
* 27-03-2026: Created
|
|
118
|
+
* 28-03-2026: Preserve non-error object payloads (e.g. code) while sanitizing message fields
|
|
119
|
+
****************************************************************************************************************/
|
|
120
|
+
const buildErrorBody = (raw, options = {}) => {
|
|
121
|
+
const maxLength = Number.isFinite(options.maxLength) && options.maxLength > 0 ? Math.floor(options.maxLength) : 500;
|
|
122
|
+
if (raw instanceof Error || isErrorLike(raw)) {
|
|
123
|
+
const safeMessage = options.allowErrorMessage ? readErrorMessage(raw, true) : undefined;
|
|
124
|
+
return { error: "UnexpectedError", message: safeMessage ? sanitizeMessage(safeMessage, maxLength) : "Unexpected error" };
|
|
125
|
+
}
|
|
126
|
+
if (raw && typeof raw === "object") {
|
|
127
|
+
const err = raw;
|
|
128
|
+
const errorValue = typeof err.error === "string" && err.error.trim() ? err.error : undefined;
|
|
129
|
+
const messageValue = typeof err.message === "string" && err.message.trim() ? err.message : undefined;
|
|
130
|
+
if (errorValue || messageValue) {
|
|
131
|
+
return {
|
|
132
|
+
...err,
|
|
133
|
+
...(errorValue ? { error: sanitizeMessage(errorValue, maxLength) } : {}),
|
|
134
|
+
...(messageValue ? { message: sanitizeMessage(messageValue, maxLength) } : {}),
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
return err;
|
|
138
|
+
}
|
|
139
|
+
const message = typeof raw === "string" ? raw : "Request failed";
|
|
140
|
+
return { error: "RequestFailed", message: sanitizeMessage(message, maxLength) };
|
|
141
|
+
};
|
|
84
142
|
/****************************************************************************************************************
|
|
85
143
|
* ##: Create route utility helpers with defaults
|
|
86
144
|
* Builds helper functions bound to a default logger and tag prefix for consistent route handling.
|
|
@@ -133,14 +191,16 @@ const makeRouteUtils = ({ logger = noopLogger, tagPrefix = "", } = {}) => {
|
|
|
133
191
|
* @returns {Function} - Work executor: (workFn) => Promise<true>
|
|
134
192
|
* History:
|
|
135
193
|
* 16-08-2025: Created
|
|
194
|
+
* 27-03-2026: Implemented allowErrorMessage option for in-route responders
|
|
136
195
|
****************************************************************************************************************/
|
|
137
196
|
const createResponder = (res, options = {}) => {
|
|
138
197
|
const tagBase = options.tag;
|
|
139
198
|
const routeLogger = typeof options.logger === "function" ? options.logger : logger;
|
|
199
|
+
const allowErrorMessage = options.allowErrorMessage === true;
|
|
140
200
|
return async (workFn) => {
|
|
141
201
|
try {
|
|
142
202
|
const response = await workFn();
|
|
143
|
-
if ((0, exports.resolveRouteResponse)(res, response))
|
|
203
|
+
if ((0, exports.resolveRouteResponse)(res, response, { allowErrorMessage }))
|
|
144
204
|
return true; // Responded successfully
|
|
145
205
|
// Unexpected shape
|
|
146
206
|
routeLogger({ message: "Unexpected response shape", response }, tagBase || "createResponder");
|
|
@@ -167,12 +227,15 @@ exports.makeRouteUtils = makeRouteUtils;
|
|
|
167
227
|
* Normalizes a route response, applies headers/status, and prevents double sends when headers are already sent.
|
|
168
228
|
* @param {ResLike} res - Express-like response object
|
|
169
229
|
* @param {ApiResponse} response - ApiResponse payload with a required boolean status
|
|
230
|
+
* @param {object} options - Optional overrides for responder behavior
|
|
231
|
+
* @param {boolean} options.allowErrorMessage - Allow exposing Error.message when response.data is an Error
|
|
170
232
|
* @returns {boolean} - True if a response was sent; false when res is invalid
|
|
171
233
|
* History:
|
|
172
234
|
* 16-08-2025: Created
|
|
173
235
|
* 21-08-2025: Changed response method to directly use response.data
|
|
236
|
+
* 27-03-2026: Implemented allowErrorMessage option for error responses
|
|
174
237
|
****************************************************************************************************************/
|
|
175
|
-
const resolveRouteResponse = (res, response) => {
|
|
238
|
+
const resolveRouteResponse = (res, response, options = {}) => {
|
|
176
239
|
try {
|
|
177
240
|
// Guard: ensure `res` looks like a valid Express-like response object
|
|
178
241
|
if (!res || typeof res.status !== "function" || typeof res.send !== "function")
|
|
@@ -220,14 +283,7 @@ const resolveRouteResponse = (res, response) => {
|
|
|
220
283
|
// Error path
|
|
221
284
|
if (isFail) {
|
|
222
285
|
const raw = response.data;
|
|
223
|
-
const errBody = raw
|
|
224
|
-
? { error: raw.name || "Error", message: raw.message }
|
|
225
|
-
: raw && typeof raw === "object"
|
|
226
|
-
? {
|
|
227
|
-
...(raw.error ? { error: raw.error } : {}),
|
|
228
|
-
...(raw.message ? { message: raw.message } : {}),
|
|
229
|
-
}
|
|
230
|
-
: { error: "RequestFailed", message: typeof raw === "string" ? raw : "Request failed" };
|
|
286
|
+
const errBody = buildErrorBody(raw, { allowErrorMessage: options.allowErrorMessage });
|
|
231
287
|
res.status(http).json(errBody);
|
|
232
288
|
return true;
|
|
233
289
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;kHAmBkH;;;AAgClH,uEAAuE;AACvE,MAAM,UAAU,GAAa,GAAG,EAAE,GAAE,CAAC,CAAC;AAEtC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salespark/route-utils",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
4
4
|
"description": "Vendor-agnostic helpers for Express route handlers with normalized responses and optional logging.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
"access": "public"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@types/express": "^
|
|
36
|
-
"rimraf": "^6.
|
|
37
|
-
"typescript": "^
|
|
35
|
+
"@types/express": "^5.0.6",
|
|
36
|
+
"rimraf": "^6.1.3",
|
|
37
|
+
"typescript": "^6.0.2"
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
40
40
|
"express": ">=4"
|