@web-ts-toolkit/express-json-router 0.28.0 → 0.30.0

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
@@ -41,6 +41,32 @@ app.use(router.original);
41
41
  - `JsonRouter.createHandler(...)`
42
42
  - `JsonRouter.ErrorFormats`
43
43
 
44
+ ## Handler Defaults
45
+
46
+ `JsonRouter` still exposes static customization points such as:
47
+
48
+ - `JsonRouter.errorMessageProvider`
49
+ - `JsonRouter.preJson`
50
+ - `JsonRouter.postJson`
51
+ - `JsonRouter.preError`
52
+ - `JsonRouter.postError`
53
+
54
+ These now behave as defaults for future `new JsonRouter(...)` instances.
55
+
56
+ - Updating a static property affects routers created after that change.
57
+ - Existing routers keep the response-handler instance they were constructed with.
58
+ - For fully isolated behavior, pass an explicit handler instance as the third constructor argument.
59
+
60
+ ```ts
61
+ const handler = JsonRouter.createHandler({
62
+ errorFormat: JsonRouter.ErrorFormats.rfc9457,
63
+ });
64
+
65
+ handler.errorMessageProvider = () => 'custom-error';
66
+
67
+ const router = new JsonRouter('/api', undefined, handler);
68
+ ```
69
+
44
70
  ## Documentation
45
71
 
46
72
  Full package documentation lives in `website/docs/packages/express-json-router.md`.
package/index.d.mts CHANGED
@@ -57,6 +57,7 @@ declare class JsonRouter {
57
57
  unlock: RouteRegistrar;
58
58
  unsubscribe: RouteRegistrar;
59
59
  private readonly _router;
60
+ private static defaultHandlerDefaults;
60
61
  private static getSharedHandlerProperty;
61
62
  private static setSharedHandlerProperty;
62
63
  static readonly clientErrors: typeof clientErrors;
@@ -72,7 +73,6 @@ declare class JsonRouter {
72
73
  AlreadyReported: typeof AlreadyReported;
73
74
  IMUsed: typeof IMUsed;
74
75
  };
75
- static readonly defaultHandler: ExpressResponseHandler;
76
76
  static readonly HttpResponse: {
77
77
  ok: (data: unknown) => OK<unknown>;
78
78
  created: (data: unknown) => Created<unknown>;
@@ -124,6 +124,7 @@ declare class JsonRouter {
124
124
  readonly rfc9457: "rfc9457";
125
125
  };
126
126
  static readonly createHandler: typeof createHandler;
127
+ static get defaultHandler(): ExpressResponseHandler;
127
128
  static get errorMessageProvider(): typeof DEFAULT_RESPONSE_HANDLER.errorMessageProvider;
128
129
  static set errorMessageProvider(customErrorMessageProvider: typeof DEFAULT_RESPONSE_HANDLER.errorMessageProvider);
129
130
  static get preJson(): typeof DEFAULT_RESPONSE_HANDLER.preJson;
package/index.d.ts CHANGED
@@ -57,6 +57,7 @@ declare class JsonRouter {
57
57
  unlock: RouteRegistrar;
58
58
  unsubscribe: RouteRegistrar;
59
59
  private readonly _router;
60
+ private static defaultHandlerDefaults;
60
61
  private static getSharedHandlerProperty;
61
62
  private static setSharedHandlerProperty;
62
63
  static readonly clientErrors: typeof clientErrors;
@@ -72,7 +73,6 @@ declare class JsonRouter {
72
73
  AlreadyReported: typeof AlreadyReported;
73
74
  IMUsed: typeof IMUsed;
74
75
  };
75
- static readonly defaultHandler: ExpressResponseHandler;
76
76
  static readonly HttpResponse: {
77
77
  ok: (data: unknown) => OK<unknown>;
78
78
  created: (data: unknown) => Created<unknown>;
@@ -124,6 +124,7 @@ declare class JsonRouter {
124
124
  readonly rfc9457: "rfc9457";
125
125
  };
126
126
  static readonly createHandler: typeof createHandler;
127
+ static get defaultHandler(): ExpressResponseHandler;
127
128
  static get errorMessageProvider(): typeof DEFAULT_RESPONSE_HANDLER.errorMessageProvider;
128
129
  static set errorMessageProvider(customErrorMessageProvider: typeof DEFAULT_RESPONSE_HANDLER.errorMessageProvider);
129
130
  static get preJson(): typeof DEFAULT_RESPONSE_HANDLER.preJson;
package/index.js CHANGED
@@ -80,8 +80,17 @@ var toMiddlewareList = (middlewares) => {
80
80
  }
81
81
  return Array.isArray(middlewares) ? middlewares : [middlewares];
82
82
  };
83
+ var createResponseHandlerFromDefaults = (defaults) => {
84
+ const handler = (0, import_express_response_handler.createHandler)();
85
+ handler.errorMessageProvider = defaults.errorMessageProvider;
86
+ handler.preJson = defaults.preJson;
87
+ handler.postJson = defaults.postJson;
88
+ handler.preError = defaults.preError;
89
+ handler.postError = defaults.postError;
90
+ return handler;
91
+ };
83
92
  var JsonRouter = class _JsonRouter {
84
- constructor(basePath = "", middlewares, responseHandler = DEFAULT_RESPONSE_HANDLER) {
93
+ constructor(basePath = "", middlewares, responseHandler = _JsonRouter.defaultHandler) {
85
94
  this.methods = [];
86
95
  this.endpoints = [];
87
96
  this.basePath = normalizeBasePath(basePath);
@@ -108,11 +117,20 @@ var JsonRouter = class _JsonRouter {
108
117
  });
109
118
  }
110
119
  }
120
+ static {
121
+ this.defaultHandlerDefaults = {
122
+ errorMessageProvider: DEFAULT_RESPONSE_HANDLER.errorMessageProvider,
123
+ preJson: DEFAULT_RESPONSE_HANDLER.preJson,
124
+ postJson: DEFAULT_RESPONSE_HANDLER.postJson,
125
+ preError: DEFAULT_RESPONSE_HANDLER.preError,
126
+ postError: DEFAULT_RESPONSE_HANDLER.postError
127
+ };
128
+ }
111
129
  static getSharedHandlerProperty(name) {
112
- return DEFAULT_RESPONSE_HANDLER[name];
130
+ return _JsonRouter.defaultHandlerDefaults[name];
113
131
  }
114
132
  static setSharedHandlerProperty(name, value) {
115
- DEFAULT_RESPONSE_HANDLER[name] = value;
133
+ _JsonRouter.defaultHandlerDefaults[name] = value;
116
134
  }
117
135
  static {
118
136
  this.clientErrors = clientErrors;
@@ -120,9 +138,6 @@ var JsonRouter = class _JsonRouter {
120
138
  static {
121
139
  this.success = success;
122
140
  }
123
- static {
124
- this.defaultHandler = DEFAULT_RESPONSE_HANDLER;
125
- }
126
141
  static {
127
142
  this.HttpResponse = import_express_response_handler.HttpResponse;
128
143
  }
@@ -132,6 +147,9 @@ var JsonRouter = class _JsonRouter {
132
147
  static {
133
148
  this.createHandler = import_express_response_handler.createHandler;
134
149
  }
150
+ static get defaultHandler() {
151
+ return createResponseHandlerFromDefaults(_JsonRouter.defaultHandlerDefaults);
152
+ }
135
153
  static get errorMessageProvider() {
136
154
  return _JsonRouter.getSharedHandlerProperty("errorMessageProvider");
137
155
  }
package/index.mjs CHANGED
@@ -77,8 +77,17 @@ var require_index = __commonJS({
77
77
  }
78
78
  return Array.isArray(middlewares) ? middlewares : [middlewares];
79
79
  };
80
+ var createResponseHandlerFromDefaults = (defaults) => {
81
+ const handler = createHandler();
82
+ handler.errorMessageProvider = defaults.errorMessageProvider;
83
+ handler.preJson = defaults.preJson;
84
+ handler.postJson = defaults.postJson;
85
+ handler.preError = defaults.preError;
86
+ handler.postError = defaults.postError;
87
+ return handler;
88
+ };
80
89
  var JsonRouter = class _JsonRouter {
81
- constructor(basePath = "", middlewares, responseHandler = DEFAULT_RESPONSE_HANDLER) {
90
+ constructor(basePath = "", middlewares, responseHandler = _JsonRouter.defaultHandler) {
82
91
  this.methods = [];
83
92
  this.endpoints = [];
84
93
  this.basePath = normalizeBasePath(basePath);
@@ -105,11 +114,20 @@ var require_index = __commonJS({
105
114
  });
106
115
  }
107
116
  }
117
+ static {
118
+ this.defaultHandlerDefaults = {
119
+ errorMessageProvider: DEFAULT_RESPONSE_HANDLER.errorMessageProvider,
120
+ preJson: DEFAULT_RESPONSE_HANDLER.preJson,
121
+ postJson: DEFAULT_RESPONSE_HANDLER.postJson,
122
+ preError: DEFAULT_RESPONSE_HANDLER.preError,
123
+ postError: DEFAULT_RESPONSE_HANDLER.postError
124
+ };
125
+ }
108
126
  static getSharedHandlerProperty(name) {
109
- return DEFAULT_RESPONSE_HANDLER[name];
127
+ return _JsonRouter.defaultHandlerDefaults[name];
110
128
  }
111
129
  static setSharedHandlerProperty(name, value) {
112
- DEFAULT_RESPONSE_HANDLER[name] = value;
130
+ _JsonRouter.defaultHandlerDefaults[name] = value;
113
131
  }
114
132
  static {
115
133
  this.clientErrors = clientErrors;
@@ -117,9 +135,6 @@ var require_index = __commonJS({
117
135
  static {
118
136
  this.success = success;
119
137
  }
120
- static {
121
- this.defaultHandler = DEFAULT_RESPONSE_HANDLER;
122
- }
123
138
  static {
124
139
  this.HttpResponse = HttpResponse;
125
140
  }
@@ -129,6 +144,9 @@ var require_index = __commonJS({
129
144
  static {
130
145
  this.createHandler = createHandler;
131
146
  }
147
+ static get defaultHandler() {
148
+ return createResponseHandlerFromDefaults(_JsonRouter.defaultHandlerDefaults);
149
+ }
132
150
  static get errorMessageProvider() {
133
151
  return _JsonRouter.getSharedHandlerProperty("errorMessageProvider");
134
152
  }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@web-ts-toolkit/express-json-router",
3
3
  "description": "Express router wrapper for return-value JSON responses",
4
4
  "homepage": "https://web-ts-toolkit.pages.dev/docs/packages/express-json-router",
5
- "version": "0.28.0",
5
+ "version": "0.30.0",
6
6
  "sideEffects": false,
7
7
  "keywords": [
8
8
  "express",
@@ -26,9 +26,9 @@
26
26
  "node": ">=20"
27
27
  },
28
28
  "dependencies": {
29
- "@web-ts-toolkit/express-response-handler": "0.28.0",
30
- "@web-ts-toolkit/http-errors": "0.28.0",
31
- "@web-ts-toolkit/utils": "0.28.0",
29
+ "@web-ts-toolkit/express-response-handler": "0.30.0",
30
+ "@web-ts-toolkit/http-errors": "0.30.0",
31
+ "@web-ts-toolkit/utils": "0.30.0",
32
32
  "express": "^5.2.1"
33
33
  },
34
34
  "files": [