@emeryld/rrroutes-server 2.6.8 → 2.7.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.
@@ -182,10 +182,36 @@ export type ControllerMap<R extends {
182
182
  }, Ctx = unknown, Names extends string = string> = {
183
183
  [P in KeysOfRegistry<R>]: RouteDef<LeafFromKey<R, P>, Ctx, Names>;
184
184
  };
185
- export type PartialControllerMap<R extends {
185
+ type RegistryLike = {
186
186
  all: readonly AnyLeafLowProfile[];
187
187
  byKey: Record<string, AnyLeafLowProfile>;
188
- }, Ctx = unknown, Names extends string = string> = Partial<ControllerMap<R, Ctx, Names>>;
188
+ };
189
+ export type PartialControllerMap<R extends RegistryLike, Ctx = unknown, Names extends string = string> = Partial<ControllerMap<R, Ctx, Names>>;
190
+ type GlobalBeforeArgsByKey<R extends RegistryLike, Ctx = unknown> = {
191
+ [K in KeysOfRegistry<R>]: {
192
+ key: K;
193
+ method: Uppercase<LeafFromKey<R, K>['method']>;
194
+ path: LeafFromKey<R, K>['path'];
195
+ req: express.Request;
196
+ res: express.Response;
197
+ next: express.NextFunction;
198
+ ctx: CtxWithRoutesLogger<Ctx>;
199
+ } & RouteRequestPayload<LeafFromKey<R, K>>;
200
+ };
201
+ export type RegisterControllersBeforeArgs<R extends RegistryLike, Ctx = unknown> = GlobalBeforeArgsByKey<R, Ctx>[KeysOfRegistry<R>];
202
+ export type RegisterControllersBeforeHandler<R extends RegistryLike, Ctx = unknown> = (args: RegisterControllersBeforeArgs<R, Ctx>) => any;
203
+ export type RegisterControllersOptions<R extends RegistryLike, Ctx = unknown> = {
204
+ /**
205
+ * Ctx-aware middlewares that run for every controller registered in this call.
206
+ * Order: global `before` (this option) -> route `before` -> handler.
207
+ */
208
+ before?: Array<RegisterControllersBeforeHandler<R, Ctx>>;
209
+ /**
210
+ * Deprecated runtime toggle kept for backward compatibility.
211
+ * Passing truthy still enforces the previous runtime missing-key error behavior.
212
+ */
213
+ all?: boolean;
214
+ };
189
215
  /** Options + derivation helpers */
190
216
  export type BuildCtxArgs = {
191
217
  req: express.Request;
@@ -258,7 +284,7 @@ export type RouteServer<Ctx = unknown, Names extends string = string> = {
258
284
  registerControllers<R extends {
259
285
  all: readonly AnyLeafLowProfile[];
260
286
  byKey: Record<string, AnyLeafLowProfile>;
261
- }, F extends boolean = false>(registry: R, controllers: F extends false ? PartialControllerMap<R, Ctx, Names> : ControllerMap<R, Ctx, Names>, all?: F): void;
287
+ }, F extends boolean = false>(registry: R, controllers: F extends false ? PartialControllerMap<R, Ctx, Names> : ControllerMap<R, Ctx, Names>, allOrOptions?: F | RegisterControllersOptions<R, Ctx>): void;
262
288
  warnMissingControllers<R extends {
263
289
  all: readonly AnyLeafLowProfile[];
264
290
  byKey: Record<string, AnyLeafLowProfile>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@emeryld/rrroutes-server",
3
- "version": "2.6.8",
3
+ "version": "2.7.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -17,8 +17,8 @@
17
17
  "dist"
18
18
  ],
19
19
  "dependencies": {
20
- "@emeryld/rrroutes-contract": "^2.6.5",
21
- "jose": "^6.2.1",
20
+ "@emeryld/rrroutes-contract": "^2.7.0",
21
+ "jose": "^6.2.2",
22
22
  "multer": "1.4.5-lts.2",
23
23
  "socket.io": "^4.8.3",
24
24
  "zod": "^4.3.6"