@salespark/route-utils 1.0.6 → 1.0.8

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 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, errorSanatizer } from "@salespark/route-utils";
24
+ import { wrapRoute, createResponder, makeRouteUtils, resolveRouteResponse, errorSanitizer } from "@salespark/route-utils";
25
25
 
26
26
  // CommonJS
27
- const { wrapRoute, createResponder, makeRouteUtils, resolveRouteResponse, errorSanatizer } = require("@salespark/route-utils");
27
+ const { wrapRoute, createResponder, makeRouteUtils, resolveRouteResponse, errorSanitizer } = require("@salespark/route-utils");
28
28
  ```
29
29
 
30
30
  ---
@@ -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 the error details directly** (e.g., `res.json({ error: "...", message: "..." })` for 400 or other codes).
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)
@@ -75,7 +79,7 @@ All route handlers must return an object with the following structure:
75
79
  ```ts
76
80
  import { makeRouteUtils } from "@salespark/route-utils";
77
81
 
78
- const { wrapRoute, createResponder, resolveRouteResponse, errorSanatizer } = makeRouteUtils({
82
+ const { wrapRoute, createResponder, resolveRouteResponse, errorSanitizer } = makeRouteUtils({
79
83
  logger: console.error, // or rollbar.error, sentry.captureException, etc.
80
84
  tagPrefix: "/routes/producers", // optional prefix for logs
81
85
  });
@@ -91,7 +95,7 @@ const { wrapRoute, createResponder, resolveRouteResponse, errorSanatizer } = mak
91
95
  - `wrapRoute`
92
96
  - `createResponder`
93
97
  - `resolveRouteResponse`
94
- - `errorSanatizer`
98
+ - `errorSanitizer`
95
99
 
96
100
  ---
97
101
 
@@ -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,16 +143,19 @@ 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
  ---
139
152
 
140
- ### `errorSanatizer`
153
+ ### `errorSanitizer`
141
154
 
142
155
  Sanitizes error output to avoid leaking sensitive data. It tries `error.reason`, then `error.message`, then falls back to a safe default.
143
156
 
144
157
  ```ts
145
- const { createResponder, errorSanatizer } = require("@salespark/route-utils");
158
+ const { createResponder, errorSanitizer } = require("@salespark/route-utils");
146
159
 
147
160
  router.post("/something-awesome", async (req, res) => {
148
161
  try {
@@ -154,7 +167,7 @@ router.post("/something-awesome", async (req, res) => {
154
167
 
155
168
  // Error handling
156
169
  } catch (error) {
157
- res.status(500).send(errorSanatizer(error)).end();
170
+ res.status(500).send(errorSanitizer(error)).end();
158
171
  }
159
172
  });
160
173
 
@@ -166,12 +179,12 @@ router.post("/something-awesome", async (req, res) => {
166
179
  res.status(200).send(response).end();
167
180
  })
168
181
  .catch((err) => {
169
- res.status(400).send(errorSanatizer(err)).end();
182
+ res.status(400).send(errorSanitizer(err)).end();
170
183
  });
171
184
 
172
185
  // Error handling
173
186
  } catch (error) {
174
- res.status(500).send(errorSanatizer(error)).end();
187
+ res.status(500).send(errorSanitizer(error)).end();
175
188
  }
176
189
  });
177
190
  ```
@@ -280,5 +293,5 @@ MIT © [SalesPark](https://salespark.io)
280
293
 
281
294
  ---
282
295
 
283
- _Document version: 4_
284
- _Last update: 18-03-2026_
296
+ _Document version: 6_
297
+ _Last update: 28-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 errorSanatizer: (error: unknown, options?: {
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, errorSanatizer
69
+ * @returns {object} - Helper bundle: wrapRoute, createResponder, resolveRouteResponse, errorSanitizer
70
70
  * History:
71
71
  * 16-08-2025: Created
72
72
  ****************************************************************************************************************/
@@ -81,9 +81,12 @@ 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) => boolean;
86
- errorSanatizer: (error: unknown, options?: {
86
+ resolveRouteResponse: (res: ResLike, response: any, options?: {
87
+ allowErrorMessage?: boolean;
88
+ }) => boolean;
89
+ errorSanitizer: (error: unknown, options?: {
87
90
  maxLength?: number;
88
91
  allowErrorMessage?: boolean;
89
92
  }) => {
@@ -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) => boolean;
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,9 +131,12 @@ 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) => boolean;
127
- errorSanatizer: (error: unknown, options?: {
136
+ resolveRouteResponse: (res: ResLike, response: any, options?: {
137
+ allowErrorMessage?: boolean;
138
+ }) => boolean;
139
+ errorSanitizer: (error: unknown, options?: {
128
140
  maxLength?: number;
129
141
  allowErrorMessage?: boolean;
130
142
  }) => {
@@ -138,14 +150,17 @@ 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
- errorSanatizer: (error: unknown, options?: {
155
+ errorSanitizer: (error: unknown, options?: {
143
156
  maxLength?: number;
144
157
  allowErrorMessage?: boolean;
145
158
  }) => {
146
159
  error: string;
147
160
  };
148
- resolveRouteResponse: (res: ResLike, response: any) => boolean;
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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;AAqED;;;;;;;;;;kHAUkH;AAClH,eAAO,MAAM,cAAc,GACzB,OAAO,OAAO,EACd,UAAS;IACP,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACxB;;CAOP,CAAC;AA4CF;;;;;;;;kHAQkH;AAClH,eAAO,MAAM,cAAc,GAAI,yBAG5B;IACD,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACf;yBAUwB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,YAAW;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,QAAQ,CAAA;KAAE,MAGxH,KAAK,GAAG,EAAE,KAAK,OAAO,EAAE,QAAQ,GAAG;2BAoCrB,OAAO,YAAW;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;QAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,MAKhG,QAAQ,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW;gCAwCxB,OAAO,YAAY,GAAG,YAAW;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAQ,OAAO;4BApKhH,OAAO,YACL;QACP,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B;;;CAiJF,CAAC;AAEF;;;;;;;;;;;;kHAYkH;AAClH,eAAO,MAAM,oBAAoB,GAAI,KAAK,OAAO,EAAE,UAAU,GAAG,EAAE,UAAS;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAO,KAAG,OAsEjH,CAAC;AAOF,eAAO,MAAM,SAAS,YAjKQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,YAAW;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,QAAQ,CAAA;CAAE,MAGxH,KAAK,GAAG,EAAE,KAAK,OAAO,EAAE,QAAQ,GAAG,kBA8JZ,CAAC;AAC1C,eAAO,MAAM,eAAe,QA3HI,OAAO,YAAW;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;IAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAE,MAKhG,QAAQ,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,qBAsHb,CAAC;AAEtD,mDAAmD;;8CAjLhD;QACD,MAAM,CAAC,EAAE,QAAQ,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;6BAU6B,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,YAAW;YAAE,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,QAAQ,CAAA;SAAE,MAGxH,KAAK,GAAG,EAAE,KAAK,OAAO,EAAE,QAAQ,GAAG;+BAoCrB,OAAO,YAAW;YAAE,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;YAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;SAAE,MAKhG,QAAQ,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW;oCAwCxB,OAAO,YAAY,GAAG,YAAW;YAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;SAAE,KAAQ,OAAO;gCApKhH,OAAO,YACL;YACP,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;SAC7B;;;;yBA4E2B,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,YAAW;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,QAAQ,CAAA;KAAE,MAGxH,KAAK,GAAG,EAAE,KAAK,OAAO,EAAE,QAAQ,GAAG;2BAoCrB,OAAO,YAAW;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;QAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,MAKhG,QAAQ,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW;4BA5HzD,OAAO,YACL;QACP,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B;;;gCAgKuC,OAAO,YAAY,GAAG,YAAW;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAQ,OAAO;;AAiFzH,wBAME"}
package/dist/index.js CHANGED
@@ -20,9 +20,30 @@
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.errorSanatizer = void 0;
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")
@@ -74,19 +98,50 @@ const sanitizeMessage = (message, maxLength) => {
74
98
  * History:
75
99
  * 18-03-2026: Created
76
100
  ****************************************************************************************************************/
77
- const errorSanatizer = (error, options = {}) => {
101
+ const errorSanitizer = (error, options = {}) => {
78
102
  const allowErrorMessage = options.allowErrorMessage === true;
79
103
  const maxLength = Number.isFinite(options.maxLength) && options.maxLength > 0 ? Math.floor(options.maxLength) : 500;
80
104
  const message = readErrorMessage(error, allowErrorMessage);
81
105
  return { error: message ? sanitizeMessage(message, maxLength) : "Unexpected error" };
82
106
  };
83
- exports.errorSanatizer = errorSanatizer;
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
+ ****************************************************************************************************************/
119
+ const buildErrorBody = (raw, options = {}) => {
120
+ const maxLength = Number.isFinite(options.maxLength) && options.maxLength > 0 ? Math.floor(options.maxLength) : 500;
121
+ if (raw instanceof Error || isErrorLike(raw)) {
122
+ const safeMessage = options.allowErrorMessage ? readErrorMessage(raw, true) : undefined;
123
+ return { error: "UnexpectedError", message: safeMessage ? sanitizeMessage(safeMessage, maxLength) : "Unexpected error" };
124
+ }
125
+ if (raw && typeof raw === "object") {
126
+ const err = raw;
127
+ const errorValue = typeof err.error === "string" && err.error.trim() ? err.error : undefined;
128
+ const messageValue = typeof err.message === "string" && err.message.trim() ? err.message : undefined;
129
+ if (errorValue || messageValue) {
130
+ return {
131
+ ...(errorValue ? { error: sanitizeMessage(errorValue, maxLength) } : {}),
132
+ ...(messageValue ? { message: sanitizeMessage(messageValue, maxLength) } : {}),
133
+ };
134
+ }
135
+ }
136
+ const message = typeof raw === "string" ? raw : "Request failed";
137
+ return { error: "RequestFailed", message: sanitizeMessage(message, maxLength) };
138
+ };
84
139
  /****************************************************************************************************************
85
140
  * ##: Create route utility helpers with defaults
86
141
  * Builds helper functions bound to a default logger and tag prefix for consistent route handling.
87
142
  * @param {LoggerFn} logger - Optional logger for reporting unexpected shapes or errors
88
143
  * @param {string} tagPrefix - Optional prefix appended to generated log tags
89
- * @returns {object} - Helper bundle: wrapRoute, createResponder, resolveRouteResponse, errorSanatizer
144
+ * @returns {object} - Helper bundle: wrapRoute, createResponder, resolveRouteResponse, errorSanitizer
90
145
  * History:
91
146
  * 16-08-2025: Created
92
147
  ****************************************************************************************************************/
@@ -133,14 +188,16 @@ const makeRouteUtils = ({ logger = noopLogger, tagPrefix = "", } = {}) => {
133
188
  * @returns {Function} - Work executor: (workFn) => Promise<true>
134
189
  * History:
135
190
  * 16-08-2025: Created
191
+ * 27-03-2026: Implemented allowErrorMessage option for in-route responders
136
192
  ****************************************************************************************************************/
137
193
  const createResponder = (res, options = {}) => {
138
194
  const tagBase = options.tag;
139
195
  const routeLogger = typeof options.logger === "function" ? options.logger : logger;
196
+ const allowErrorMessage = options.allowErrorMessage === true;
140
197
  return async (workFn) => {
141
198
  try {
142
199
  const response = await workFn();
143
- if ((0, exports.resolveRouteResponse)(res, response))
200
+ if ((0, exports.resolveRouteResponse)(res, response, { allowErrorMessage }))
144
201
  return true; // Responded successfully
145
202
  // Unexpected shape
146
203
  routeLogger({ message: "Unexpected response shape", response }, tagBase || "createResponder");
@@ -159,7 +216,7 @@ const makeRouteUtils = ({ logger = noopLogger, tagPrefix = "", } = {}) => {
159
216
  }
160
217
  };
161
218
  };
162
- return { wrapRoute, createResponder, resolveRouteResponse: exports.resolveRouteResponse, errorSanatizer: exports.errorSanatizer };
219
+ return { wrapRoute, createResponder, resolveRouteResponse: exports.resolveRouteResponse, errorSanitizer: exports.errorSanitizer };
163
220
  };
164
221
  exports.makeRouteUtils = makeRouteUtils;
165
222
  /****************************************************************************************************************
@@ -167,12 +224,15 @@ exports.makeRouteUtils = makeRouteUtils;
167
224
  * Normalizes a route response, applies headers/status, and prevents double sends when headers are already sent.
168
225
  * @param {ResLike} res - Express-like response object
169
226
  * @param {ApiResponse} response - ApiResponse payload with a required boolean status
227
+ * @param {object} options - Optional overrides for responder behavior
228
+ * @param {boolean} options.allowErrorMessage - Allow exposing Error.message when response.data is an Error
170
229
  * @returns {boolean} - True if a response was sent; false when res is invalid
171
230
  * History:
172
231
  * 16-08-2025: Created
173
232
  * 21-08-2025: Changed response method to directly use response.data
233
+ * 27-03-2026: Implemented allowErrorMessage option for error responses
174
234
  ****************************************************************************************************************/
175
- const resolveRouteResponse = (res, response) => {
235
+ const resolveRouteResponse = (res, response, options = {}) => {
176
236
  try {
177
237
  // Guard: ensure `res` looks like a valid Express-like response object
178
238
  if (!res || typeof res.status !== "function" || typeof res.send !== "function")
@@ -220,14 +280,7 @@ const resolveRouteResponse = (res, response) => {
220
280
  // Error path
221
281
  if (isFail) {
222
282
  const raw = response.data;
223
- const errBody = raw instanceof Error
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" };
283
+ const errBody = buildErrorBody(raw, { allowErrorMessage: options.allowErrorMessage });
231
284
  res.status(http).json(errBody);
232
285
  return true;
233
286
  }
@@ -261,7 +314,7 @@ exports.default = {
261
314
  makeRouteUtils: exports.makeRouteUtils,
262
315
  wrapRoute: exports.wrapRoute,
263
316
  createResponder: exports.createResponder,
264
- errorSanatizer: exports.errorSanatizer,
317
+ errorSanitizer: exports.errorSanitizer,
265
318
  resolveRouteResponse: exports.resolveRouteResponse,
266
319
  };
267
320
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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.6",
3
+ "version": "1.0.8",
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/route-utils.git"
29
+ "url": "https://github.com/FBlade/salespark-route-utils.git"
30
30
  },
31
31
  "publishConfig": {
32
32
  "access": "public"