@salespark/route-utils 1.0.6 → 1.0.7
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 +11 -11
- package/dist/index.d.ts +5 -5
- package/dist/index.js +6 -6
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -21,10 +21,10 @@ Supports both **CommonJS** and **ESM** imports.
|
|
|
21
21
|
|
|
22
22
|
```ts
|
|
23
23
|
// ESM
|
|
24
|
-
import { wrapRoute, createResponder, makeRouteUtils, resolveRouteResponse,
|
|
24
|
+
import { wrapRoute, createResponder, makeRouteUtils, resolveRouteResponse, errorSanitizer } from "@salespark/route-utils";
|
|
25
25
|
|
|
26
26
|
// CommonJS
|
|
27
|
-
const { wrapRoute, createResponder, makeRouteUtils, resolveRouteResponse,
|
|
27
|
+
const { wrapRoute, createResponder, makeRouteUtils, resolveRouteResponse, errorSanitizer } = require("@salespark/route-utils");
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
---
|
|
@@ -75,7 +75,7 @@ All route handlers must return an object with the following structure:
|
|
|
75
75
|
```ts
|
|
76
76
|
import { makeRouteUtils } from "@salespark/route-utils";
|
|
77
77
|
|
|
78
|
-
const { wrapRoute, createResponder, resolveRouteResponse,
|
|
78
|
+
const { wrapRoute, createResponder, resolveRouteResponse, errorSanitizer } = makeRouteUtils({
|
|
79
79
|
logger: console.error, // or rollbar.error, sentry.captureException, etc.
|
|
80
80
|
tagPrefix: "/routes/producers", // optional prefix for logs
|
|
81
81
|
});
|
|
@@ -91,7 +91,7 @@ const { wrapRoute, createResponder, resolveRouteResponse, errorSanatizer } = mak
|
|
|
91
91
|
- `wrapRoute`
|
|
92
92
|
- `createResponder`
|
|
93
93
|
- `resolveRouteResponse`
|
|
94
|
-
- `
|
|
94
|
+
- `errorSanitizer`
|
|
95
95
|
|
|
96
96
|
---
|
|
97
97
|
|
|
@@ -137,12 +137,12 @@ if (!resolveRouteResponse(res, response)) {
|
|
|
137
137
|
|
|
138
138
|
---
|
|
139
139
|
|
|
140
|
-
### `
|
|
140
|
+
### `errorSanitizer`
|
|
141
141
|
|
|
142
142
|
Sanitizes error output to avoid leaking sensitive data. It tries `error.reason`, then `error.message`, then falls back to a safe default.
|
|
143
143
|
|
|
144
144
|
```ts
|
|
145
|
-
const { createResponder,
|
|
145
|
+
const { createResponder, errorSanitizer } = require("@salespark/route-utils");
|
|
146
146
|
|
|
147
147
|
router.post("/something-awesome", async (req, res) => {
|
|
148
148
|
try {
|
|
@@ -154,7 +154,7 @@ router.post("/something-awesome", async (req, res) => {
|
|
|
154
154
|
|
|
155
155
|
// Error handling
|
|
156
156
|
} catch (error) {
|
|
157
|
-
res.status(500).send(
|
|
157
|
+
res.status(500).send(errorSanitizer(error)).end();
|
|
158
158
|
}
|
|
159
159
|
});
|
|
160
160
|
|
|
@@ -166,12 +166,12 @@ router.post("/something-awesome", async (req, res) => {
|
|
|
166
166
|
res.status(200).send(response).end();
|
|
167
167
|
})
|
|
168
168
|
.catch((err) => {
|
|
169
|
-
res.status(400).send(
|
|
169
|
+
res.status(400).send(errorSanitizer(err)).end();
|
|
170
170
|
});
|
|
171
171
|
|
|
172
172
|
// Error handling
|
|
173
173
|
} catch (error) {
|
|
174
|
-
res.status(500).send(
|
|
174
|
+
res.status(500).send(errorSanitizer(error)).end();
|
|
175
175
|
}
|
|
176
176
|
});
|
|
177
177
|
```
|
|
@@ -280,5 +280,5 @@ MIT © [SalesPark](https://salespark.io)
|
|
|
280
280
|
|
|
281
281
|
---
|
|
282
282
|
|
|
283
|
-
_Document version:
|
|
284
|
-
_Last update:
|
|
283
|
+
_Document version: 5_
|
|
284
|
+
_Last update: 20-03-2026_
|
package/dist/index.d.ts
CHANGED
|
@@ -55,7 +55,7 @@ export interface ApiResponse<T = unknown, M = unknown> {
|
|
|
55
55
|
* History:
|
|
56
56
|
* 18-03-2026: Created
|
|
57
57
|
****************************************************************************************************************/
|
|
58
|
-
export declare const
|
|
58
|
+
export declare const errorSanitizer: (error: unknown, options?: {
|
|
59
59
|
maxLength?: number;
|
|
60
60
|
allowErrorMessage?: boolean;
|
|
61
61
|
}) => {
|
|
@@ -66,7 +66,7 @@ export declare const errorSanatizer: (error: unknown, options?: {
|
|
|
66
66
|
* Builds helper functions bound to a default logger and tag prefix for consistent route handling.
|
|
67
67
|
* @param {LoggerFn} logger - Optional logger for reporting unexpected shapes or errors
|
|
68
68
|
* @param {string} tagPrefix - Optional prefix appended to generated log tags
|
|
69
|
-
* @returns {object} - Helper bundle: wrapRoute, createResponder, resolveRouteResponse,
|
|
69
|
+
* @returns {object} - Helper bundle: wrapRoute, createResponder, resolveRouteResponse, errorSanitizer
|
|
70
70
|
* History:
|
|
71
71
|
* 16-08-2025: Created
|
|
72
72
|
****************************************************************************************************************/
|
|
@@ -83,7 +83,7 @@ export declare const makeRouteUtils: ({ logger, tagPrefix, }?: {
|
|
|
83
83
|
logger?: LoggerFn;
|
|
84
84
|
}) => (workFn: () => Promise<ApiResponse> | ApiResponse) => Promise<boolean>;
|
|
85
85
|
resolveRouteResponse: (res: ResLike, response: any) => boolean;
|
|
86
|
-
|
|
86
|
+
errorSanitizer: (error: unknown, options?: {
|
|
87
87
|
maxLength?: number;
|
|
88
88
|
allowErrorMessage?: boolean;
|
|
89
89
|
}) => {
|
|
@@ -124,7 +124,7 @@ declare const _default: {
|
|
|
124
124
|
logger?: LoggerFn;
|
|
125
125
|
}) => (workFn: () => Promise<ApiResponse> | ApiResponse) => Promise<boolean>;
|
|
126
126
|
resolveRouteResponse: (res: ResLike, response: any) => boolean;
|
|
127
|
-
|
|
127
|
+
errorSanitizer: (error: unknown, options?: {
|
|
128
128
|
maxLength?: number;
|
|
129
129
|
allowErrorMessage?: boolean;
|
|
130
130
|
}) => {
|
|
@@ -139,7 +139,7 @@ declare const _default: {
|
|
|
139
139
|
tag?: string;
|
|
140
140
|
logger?: LoggerFn;
|
|
141
141
|
}) => (workFn: () => Promise<ApiResponse> | ApiResponse) => Promise<boolean>;
|
|
142
|
-
|
|
142
|
+
errorSanitizer: (error: unknown, options?: {
|
|
143
143
|
maxLength?: number;
|
|
144
144
|
allowErrorMessage?: boolean;
|
|
145
145
|
}) => {
|
package/dist/index.js
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* 16-08-2025: Initial version
|
|
21
21
|
****************************************************************************************************************/
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
-
exports.createResponder = exports.wrapRoute = exports.resolveRouteResponse = exports.makeRouteUtils = exports.
|
|
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
26
|
/****************************************************************************************************************
|
|
@@ -74,19 +74,19 @@ const sanitizeMessage = (message, maxLength) => {
|
|
|
74
74
|
* History:
|
|
75
75
|
* 18-03-2026: Created
|
|
76
76
|
****************************************************************************************************************/
|
|
77
|
-
const
|
|
77
|
+
const errorSanitizer = (error, options = {}) => {
|
|
78
78
|
const allowErrorMessage = options.allowErrorMessage === true;
|
|
79
79
|
const maxLength = Number.isFinite(options.maxLength) && options.maxLength > 0 ? Math.floor(options.maxLength) : 500;
|
|
80
80
|
const message = readErrorMessage(error, allowErrorMessage);
|
|
81
81
|
return { error: message ? sanitizeMessage(message, maxLength) : "Unexpected error" };
|
|
82
82
|
};
|
|
83
|
-
exports.
|
|
83
|
+
exports.errorSanitizer = errorSanitizer;
|
|
84
84
|
/****************************************************************************************************************
|
|
85
85
|
* ##: Create route utility helpers with defaults
|
|
86
86
|
* Builds helper functions bound to a default logger and tag prefix for consistent route handling.
|
|
87
87
|
* @param {LoggerFn} logger - Optional logger for reporting unexpected shapes or errors
|
|
88
88
|
* @param {string} tagPrefix - Optional prefix appended to generated log tags
|
|
89
|
-
* @returns {object} - Helper bundle: wrapRoute, createResponder, resolveRouteResponse,
|
|
89
|
+
* @returns {object} - Helper bundle: wrapRoute, createResponder, resolveRouteResponse, errorSanitizer
|
|
90
90
|
* History:
|
|
91
91
|
* 16-08-2025: Created
|
|
92
92
|
****************************************************************************************************************/
|
|
@@ -159,7 +159,7 @@ const makeRouteUtils = ({ logger = noopLogger, tagPrefix = "", } = {}) => {
|
|
|
159
159
|
}
|
|
160
160
|
};
|
|
161
161
|
};
|
|
162
|
-
return { wrapRoute, createResponder, resolveRouteResponse: exports.resolveRouteResponse,
|
|
162
|
+
return { wrapRoute, createResponder, resolveRouteResponse: exports.resolveRouteResponse, errorSanitizer: exports.errorSanitizer };
|
|
163
163
|
};
|
|
164
164
|
exports.makeRouteUtils = makeRouteUtils;
|
|
165
165
|
/****************************************************************************************************************
|
|
@@ -261,7 +261,7 @@ exports.default = {
|
|
|
261
261
|
makeRouteUtils: exports.makeRouteUtils,
|
|
262
262
|
wrapRoute: exports.wrapRoute,
|
|
263
263
|
createResponder: exports.createResponder,
|
|
264
|
-
|
|
264
|
+
errorSanitizer: exports.errorSanitizer,
|
|
265
265
|
resolveRouteResponse: exports.resolveRouteResponse,
|
|
266
266
|
};
|
|
267
267
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salespark/route-utils",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.7",
|
|
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",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"license": "MIT",
|
|
27
27
|
"repository": {
|
|
28
28
|
"type": "git",
|
|
29
|
-
"url": "https://github.com/salespark
|
|
29
|
+
"url": "https://github.com/FBlade/salespark-route-utils.git"
|
|
30
30
|
},
|
|
31
31
|
"publishConfig": {
|
|
32
32
|
"access": "public"
|