equipped 5.2.3 → 5.2.5

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.
Files changed (46) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cjs/server/impls/base.cjs +13 -8
  3. package/dist/cjs/server/impls/base.cjs.map +1 -1
  4. package/dist/cjs/server/impls/base.min.cjs +1 -1
  5. package/dist/cjs/server/impls/base.min.cjs.map +1 -1
  6. package/dist/cjs/server/routes.cjs +1 -0
  7. package/dist/cjs/server/routes.cjs.map +1 -1
  8. package/dist/cjs/server/routes.min.cjs +1 -1
  9. package/dist/cjs/server/routes.min.cjs.map +1 -1
  10. package/dist/cjs/server/types.cjs +3 -1
  11. package/dist/cjs/server/types.cjs.map +1 -1
  12. package/dist/cjs/server/types.min.cjs +1 -1
  13. package/dist/cjs/server/types.min.cjs.map +1 -1
  14. package/dist/esm/server/impls/base.min.mjs +1 -1
  15. package/dist/esm/server/impls/base.min.mjs.map +1 -1
  16. package/dist/esm/server/impls/base.mjs +9 -4
  17. package/dist/esm/server/impls/base.mjs.map +1 -1
  18. package/dist/esm/server/routes.min.mjs +1 -1
  19. package/dist/esm/server/routes.min.mjs.map +1 -1
  20. package/dist/esm/server/routes.mjs +1 -0
  21. package/dist/esm/server/routes.mjs.map +1 -1
  22. package/dist/esm/server/types.min.mjs +1 -1
  23. package/dist/esm/server/types.min.mjs.map +1 -1
  24. package/dist/esm/server/types.mjs +3 -1
  25. package/dist/esm/server/types.mjs.map +1 -1
  26. package/dist/types/audit/index.d.ts +3 -4
  27. package/dist/types/{core-BWUHISEy.d.ts → core-BrkNSwvc.d.ts} +1 -1
  28. package/dist/types/{db-DEiImw1Z.d.ts → db-C8YY1yTO.d.ts} +1 -1
  29. package/dist/types/{db-vKGTnGlO.d.ts → db-Dj1SGto0.d.ts} +2 -2
  30. package/dist/types/dbs/index.d.ts +5 -6
  31. package/dist/types/errors/index.d.ts +3 -4
  32. package/dist/types/events/index.d.ts +2 -3
  33. package/dist/types/fastify-Cv1D0iUh.d.ts +225 -0
  34. package/dist/types/index.d.ts +6 -7
  35. package/dist/types/instance/index.d.ts +6 -7
  36. package/dist/types/{kafka-DCpqW_YM.d.ts → kafka-Cf-TUJgv.d.ts} +12 -2
  37. package/dist/types/{requestError-MGJ-ojtC.d.ts → requestError-C2PNWUrt.d.ts} +12 -149
  38. package/dist/types/server/impls/base.js +9 -4
  39. package/dist/types/server/index.d.ts +9 -9
  40. package/dist/types/server/routes.js +1 -0
  41. package/dist/types/server/types.js +3 -1
  42. package/dist/types/{validationError-BbiTIoAh.d.ts → validationError-Bw8OYv5s.d.ts} +1 -1
  43. package/dist/types/validations/index.d.ts +2 -3
  44. package/package.json +1 -1
  45. package/dist/types/base-CfeyC14V.d.ts +0 -14
  46. package/dist/types/fastify-BizyaCY_.d.ts +0 -80
@@ -1,16 +1,15 @@
1
1
  export { Instance } from './instance/index.js';
2
2
  import 'pino';
3
3
  import 'valleyed';
4
- import './requestError-MGJ-ojtC.js';
4
+ import './requestError-C2PNWUrt.js';
5
5
  import './types/index.js';
6
6
  import './overrides-6Hxg764S.js';
7
- import './base-CfeyC14V.js';
8
7
  import 'node:http2';
9
8
  import 'node:stream';
10
9
  import '@fastify/cookie';
11
- import './kafka-DCpqW_YM.js';
10
+ import './kafka-Cf-TUJgv.js';
12
11
  import './events/index.js';
13
- import './fastify-BizyaCY_.js';
12
+ import './fastify-Cv1D0iUh.js';
14
13
  import 'express';
15
14
  import 'fastify';
16
15
  import 'supertest/lib/agent';
@@ -19,10 +18,10 @@ import '@fastify/cors';
19
18
  import 'cors';
20
19
  import 'supertest';
21
20
  import 'socket.io';
22
- import './core-BWUHISEy.js';
21
+ import './core-BrkNSwvc.js';
23
22
  import 'mongodb';
24
23
  import './cache/index.js';
25
24
  import 'ioredis';
26
- import './db-vKGTnGlO.js';
27
- import './db-DEiImw1Z.js';
25
+ import './db-Dj1SGto0.js';
26
+ import './db-C8YY1yTO.js';
28
27
  import './jobs/index.js';
@@ -1,14 +1,13 @@
1
1
  import { Logger } from 'pino';
2
2
  import * as valleyed from 'valleyed';
3
3
  import { PipeOutput, ConditionalObjectKeys, PipeInput, Pipe } from 'valleyed';
4
- import { B as BaseRequestAuthMethod, E as EquippedError } from '../requestError-MGJ-ojtC.js';
5
- import { E as EventBus } from '../base-CfeyC14V.js';
6
- import { K as KafkaEventBus } from '../kafka-DCpqW_YM.js';
4
+ import { E as EquippedError } from '../requestError-C2PNWUrt.js';
5
+ import { K as KafkaEventBus, E as EventBus } from '../kafka-Cf-TUJgv.js';
7
6
  import { RabbitMQEventBus } from '../events/index.js';
8
7
  import { A as AuthUser } from '../overrides-6Hxg764S.js';
9
- import { E as ExpressServer, F as FastifyServer } from '../fastify-BizyaCY_.js';
8
+ import { E as ExpressServer, F as FastifyServer, B as BaseRequestAuthMethod } from '../fastify-Cv1D0iUh.js';
10
9
  import { InMemoryCache, RedisCache } from '../cache/index.js';
11
- import { M as MongoDb } from '../db-vKGTnGlO.js';
10
+ import { M as MongoDb } from '../db-Dj1SGto0.js';
12
11
  import { RedisJob } from '../jobs/index.js';
13
12
  import '../types/index.js';
14
13
  import 'node:http2';
@@ -22,10 +21,10 @@ import '@fastify/cors';
22
21
  import 'cors';
23
22
  import 'supertest';
24
23
  import 'socket.io';
25
- import '../core-BWUHISEy.js';
24
+ import '../core-BrkNSwvc.js';
26
25
  import 'mongodb';
27
26
  import 'ioredis';
28
- import '../db-DEiImw1Z.js';
27
+ import '../db-C8YY1yTO.js';
29
28
 
30
29
  type HookEvent = 'setup' | 'start' | 'close';
31
30
  type HookCb = Promise<unknown | void> | (() => void | unknown | Promise<void | unknown>);
@@ -1,8 +1,18 @@
1
1
  import { E as Events } from './overrides-6Hxg764S.js';
2
- import { E as EventBus, S as StreamOptions } from './base-CfeyC14V.js';
3
2
  import * as valleyed from 'valleyed';
4
3
  import { PipeOutput } from 'valleyed';
5
4
 
5
+ type StreamOptions = {
6
+ skipScope?: boolean;
7
+ fanout: boolean;
8
+ };
9
+ declare abstract class EventBus {
10
+ abstract createStream<Event extends Events[keyof Events]>(topic: Event['topic'], options?: Partial<StreamOptions>): {
11
+ publish: (data: Event['data']) => Promise<boolean>;
12
+ subscribe: (onMessage: (data: Event['data']) => Promise<void>) => void;
13
+ };
14
+ }
15
+
6
16
  declare const rabbitmqConfigPipe: () => valleyed.Pipe<{
7
17
  uri: string;
8
18
  eventColumnName: string;
@@ -41,4 +51,4 @@ declare class KafkaEventBus extends EventBus {
41
51
  };
42
52
  }
43
53
 
44
- export { KafkaEventBus as K, type RabbitMQConfig as R, type KafkaConfig as a, kafkaConfigPipe as k, rabbitmqConfigPipe as r };
54
+ export { EventBus as E, KafkaEventBus as K, type RabbitMQConfig as R, type StreamOptions as S, type KafkaConfig as a, kafkaConfigPipe as k, rabbitmqConfigPipe as r };
@@ -1,11 +1,9 @@
1
- import * as valleyed from 'valleyed';
2
- import { PipeOutput, Pipe, Prettify, IsInTypeList, PipeInput, DistributiveOmit } from 'valleyed';
1
+ import { Pipe, Prettify, PipeOutput, IsInTypeList, PipeInput, DistributiveOmit } from 'valleyed';
3
2
  import { Enum } from './types/index.js';
4
- import { E as EventBus } from './base-CfeyC14V.js';
5
- import { A as AuthUser } from './overrides-6Hxg764S.js';
6
3
  import { IncomingHttpHeaders } from 'node:http2';
7
4
  import { Readable } from 'node:stream';
8
5
  import { SerializeOptions } from '@fastify/cookie';
6
+ import { A as AuthUser } from './overrides-6Hxg764S.js';
9
7
 
10
8
  declare class EquippedError extends Error {
11
9
  readonly message: string;
@@ -14,147 +12,6 @@ declare class EquippedError extends Error {
14
12
  constructor(message: string, context: Record<string, unknown>, cause?: unknown | undefined);
15
13
  }
16
14
 
17
- declare abstract class BaseRequestAuthMethod<T extends {
18
- id: string;
19
- }> {
20
- abstract parse(headers: IncomingHttpHeaders): Promise<T>;
21
- abstract routeSecuritySchemeName(): string | null;
22
- static process<T extends {
23
- id: string;
24
- }>(methods: BaseRequestAuthMethod<T>[], headers: IncomingHttpHeaders): Promise<T | null>;
25
- }
26
-
27
- declare const serverConfigPipe: () => valleyed.Pipe<({
28
- port: number;
29
- cors: {
30
- origin: true | string[] | undefined;
31
- methods: ("get" | "delete" | "head" | "options" | "post" | "put" | "patch")[] | undefined;
32
- credentials: boolean | undefined;
33
- } | undefined;
34
- eventBus: EventBus | undefined;
35
- publicPath: string | undefined;
36
- healthPath: string | undefined;
37
- openapi: {
38
- docsVersion: string | undefined;
39
- docsBaseUrl: string[] | undefined;
40
- docsPath: string | undefined;
41
- } | undefined;
42
- requests: {
43
- log: boolean | undefined;
44
- rateLimit: {
45
- enabled: boolean | undefined;
46
- periodInMs: number | undefined;
47
- limit: number | undefined;
48
- } | undefined;
49
- slowdown: {
50
- enabled: boolean | undefined;
51
- periodInMs: number | undefined;
52
- delayAfter: number | undefined;
53
- delayInMs: number | undefined;
54
- } | undefined;
55
- } | undefined;
56
- socketsAuthMethods: BaseRequestAuthMethod<AuthUser>[] | undefined;
57
- } & {
58
- type: "fastify";
59
- }) | ({
60
- port: number;
61
- cors: {
62
- origin: true | string[] | undefined;
63
- methods: ("get" | "delete" | "head" | "options" | "post" | "put" | "patch")[] | undefined;
64
- credentials: boolean | undefined;
65
- } | undefined;
66
- eventBus: EventBus | undefined;
67
- publicPath: string | undefined;
68
- healthPath: string | undefined;
69
- openapi: {
70
- docsVersion: string | undefined;
71
- docsBaseUrl: string[] | undefined;
72
- docsPath: string | undefined;
73
- } | undefined;
74
- requests: {
75
- log: boolean | undefined;
76
- rateLimit: {
77
- enabled: boolean | undefined;
78
- periodInMs: number | undefined;
79
- limit: number | undefined;
80
- } | undefined;
81
- slowdown: {
82
- enabled: boolean | undefined;
83
- periodInMs: number | undefined;
84
- delayAfter: number | undefined;
85
- delayInMs: number | undefined;
86
- } | undefined;
87
- } | undefined;
88
- socketsAuthMethods: BaseRequestAuthMethod<AuthUser>[] | undefined;
89
- } & {
90
- type: "express";
91
- }), ({
92
- port: number;
93
- cors: {
94
- origin: true | string[] | undefined;
95
- methods: ("get" | "delete" | "head" | "options" | "post" | "put" | "patch")[] | undefined;
96
- credentials: boolean | undefined;
97
- } | undefined;
98
- eventBus: EventBus | undefined;
99
- publicPath: string | undefined;
100
- healthPath: string | undefined;
101
- openapi: {
102
- docsVersion: string;
103
- docsBaseUrl: string[];
104
- docsPath: string;
105
- };
106
- requests: {
107
- log: boolean;
108
- rateLimit: {
109
- enabled: boolean;
110
- periodInMs: number;
111
- limit: number;
112
- };
113
- slowdown: {
114
- enabled: boolean;
115
- periodInMs: number;
116
- delayAfter: number;
117
- delayInMs: number;
118
- };
119
- };
120
- socketsAuthMethods: BaseRequestAuthMethod<AuthUser>[];
121
- } & {
122
- type: "fastify";
123
- }) | ({
124
- port: number;
125
- cors: {
126
- origin: true | string[] | undefined;
127
- methods: ("get" | "delete" | "head" | "options" | "post" | "put" | "patch")[] | undefined;
128
- credentials: boolean | undefined;
129
- } | undefined;
130
- eventBus: EventBus | undefined;
131
- publicPath: string | undefined;
132
- healthPath: string | undefined;
133
- openapi: {
134
- docsVersion: string;
135
- docsBaseUrl: string[];
136
- docsPath: string;
137
- };
138
- requests: {
139
- log: boolean;
140
- rateLimit: {
141
- enabled: boolean;
142
- periodInMs: number;
143
- limit: number;
144
- };
145
- slowdown: {
146
- enabled: boolean;
147
- periodInMs: number;
148
- delayAfter: number;
149
- delayInMs: number;
150
- };
151
- };
152
- socketsAuthMethods: BaseRequestAuthMethod<AuthUser>[];
153
- } & {
154
- type: "express";
155
- })>;
156
- type ServerConfig = PipeOutput<ReturnType<typeof serverConfigPipe>>;
157
-
158
15
  declare const Methods: {
159
16
  readonly head: "head";
160
17
  readonly get: "get";
@@ -207,6 +64,7 @@ type RouteGroup = {
207
64
  type HandlerSetup<T extends RouteDef> = (route: Route<T>) => void;
208
65
  type RouteConfig<T extends RouteDef> = {
209
66
  middlewares?: ReturnType<typeof makeMiddleware<RouteDef>>[];
67
+ responseMiddlewares?: ReturnType<typeof makeResponseMiddleware<RouteDef>>[];
210
68
  onError?: ReturnType<typeof makeErrorMiddleware<RouteDef>>;
211
69
  groups?: (RouteGroup | RouteGroup['name'])[];
212
70
  title?: string;
@@ -243,9 +101,10 @@ type RouteDefToReqRes<T extends RouteDef> = Prettify<{
243
101
  }>;
244
102
  type Awaitable<T> = Promise<T> | T;
245
103
  type Res<T extends RouteDefToReqRes<any>> = Awaitable<IsInTypeList<T['statusCode'], [StatusCodesEnum, 200]> extends true ? IsInTypeList<T['responseHeaders'], [DefaultHeaders]> extends true ? IsInTypeList<T['responseCookies'], [DefaultCookies]> extends true ? Response<T> | T['response'] : Response<T> : Response<T> : Response<T>>;
246
- type RouteDefHandler<Def extends RouteDef> = (req: Request<RouteDefToReqRes<Def>>, config: ServerConfig) => Res<RouteDefToReqRes<Def>>;
247
- type RouteMiddlewareHandler<_Def extends RouteDef> = (req: Request<RouteDefToReqRes<RouteDef>>, config: ServerConfig) => Awaitable<void>;
248
- type ErrorHandler<Def extends RouteDef> = (req: Request<RouteDefToReqRes<Def>>, config: ServerConfig, err: Error) => Res<Omit<RouteDefToReqRes<Def>, 'response' | 'statusCode' | 'responseHeaders' | 'responseCookies'> & {
104
+ type RouteDefHandler<Def extends RouteDef> = (req: Request<RouteDefToReqRes<Def>>) => Res<RouteDefToReqRes<Def>>;
105
+ type RouteMiddlewareHandler<_Def extends RouteDef> = (req: Request<RouteDefToReqRes<RouteDef>>) => Awaitable<void>;
106
+ type RouteResponseMiddlewareHandler<_Def extends RouteDef> = (req: Request<RouteDefToReqRes<RouteDef>>, res: Response<RouteDefToReqRes<RouteDef>>) => Awaitable<void>;
107
+ type ErrorHandler<Def extends RouteDef> = (req: Request<RouteDefToReqRes<Def>>, err: Error) => Res<Omit<RouteDefToReqRes<Def>, 'response' | 'statusCode' | 'responseHeaders' | 'responseCookies'> & {
249
108
  response: RequestError['serializedErrors'];
250
109
  statusCode: RequestError['statusCode'];
251
110
  responseHeaders: DefaultHeaders;
@@ -259,6 +118,10 @@ declare const makeMiddleware: <Def extends RouteDef>(...args: Parameters<typeof
259
118
  cb: RouteMiddlewareHandler<Def>;
260
119
  onSetup: HandlerSetup<Def> | undefined;
261
120
  };
121
+ declare const makeResponseMiddleware: <Def extends RouteDef>(...args: Parameters<typeof makeMiddlewareHandler<RouteResponseMiddlewareHandler<Def>, Def>>) => {
122
+ cb: RouteResponseMiddlewareHandler<Def>;
123
+ onSetup: HandlerSetup<Def> | undefined;
124
+ };
262
125
  declare const makeErrorMiddleware: <Def extends RouteDef>(...args: Parameters<typeof makeMiddlewareHandler<ErrorHandler<Def>, Def>>) => {
263
126
  cb: ErrorHandler<Def>;
264
127
  onSetup: HandlerSetup<Def> | undefined;
@@ -354,4 +217,4 @@ declare abstract class RequestError extends EquippedError {
354
217
  }[], cause?: unknown);
355
218
  }
356
219
 
357
- export { BaseRequestAuthMethod as B, type CookieVal as C, type DefaultHeaders as D, EquippedError as E, type IncomingFile as I, Methods as M, RequestError as R, type ServerConfig as S, Request as a, Response as b, type RouteDefToReqRes as c, type RouteDef as d, type Route as e, StatusCodes as f, type MethodsEnum as g, type StatusCodesEnum as h, type DefaultCookies as i, type RouteConfig as j, type RouterConfig as k, type MergeRouteDefs as l, type RouteDefHandler as m, makeMiddleware as n, makeErrorMiddleware as o, serverConfigPipe as s };
220
+ export { type CookieVal as C, type DefaultHeaders as D, EquippedError as E, type IncomingFile as I, Methods as M, RequestError as R, StatusCodes as S, Request as a, Response as b, type RouteDefToReqRes as c, type RouteDef as d, type Route as e, type MethodsEnum as f, type StatusCodesEnum as g, type DefaultCookies as h, type RouteConfig as i, type RouterConfig as j, type MergeRouteDefs as k, type RouteDefHandler as l, makeMiddleware as m, makeResponseMiddleware as n, makeErrorMiddleware as o };
@@ -48,25 +48,27 @@ class Server {
48
48
  addRoute(...routes) {
49
49
  routes.forEach((route) => {
50
50
  this.#queue.push(async () => {
51
- const { method, path, schema = {}, onError, middlewares = [] } = route;
51
+ const { method, path, schema = {}, onError, middlewares = [], responseMiddlewares = [] } = route;
52
52
  const key = `(${method.toUpperCase()}) ${this.#openapi.cleanPath(path)}`;
53
53
  if (this.#routesByKey.get(key))
54
54
  throw new EquippedError(`Route key ${key} already registered. All route keys must be unique`, { route, key });
55
55
  middlewares.forEach((m) => m.onSetup?.(route));
56
56
  onError?.onSetup?.(route);
57
+ responseMiddlewares.forEach((m) => m.onSetup?.(route));
57
58
  const { validateRequest, validateResponse, jsonSchema } = this.#resolveSchema(method, schema);
58
59
  this.#routesByKey.set(key, true);
59
60
  await this.#openapi.register(route, jsonSchema);
60
61
  this.implementations.registerRoute(method, this.#openapi.cleanPath(path), async (req, res) => {
61
62
  const request = await validateRequest(await this.implementations.parseRequest(req));
62
63
  try {
63
- for (const middleware of middlewares) await middleware.cb(request, this.config);
64
- const rawRes = await route.handler(request, this.config);
64
+ for (const middleware of middlewares) await middleware.cb(request);
65
+ const rawRes = await route.handler(request);
65
66
  const response = rawRes instanceof Response ? rawRes : new Response({ body: rawRes, status: StatusCodes.Ok, headers: {}, piped: false });
67
+ for (const middleware of responseMiddlewares) await middleware.cb(request, response);
66
68
  return await this.implementations.handleResponse(res, await validateResponse(response));
67
69
  } catch (error) {
68
70
  if (onError?.cb) {
69
- const rawResponse = await onError.cb(request, this.config, error);
71
+ const rawResponse = await onError.cb(request, error);
70
72
  const response = rawResponse instanceof Response ? rawResponse : new Response({ body: rawResponse, status: StatusCodes.BadRequest, headers: {} });
71
73
  return await this.implementations.handleResponse(res, await validateResponse(response));
72
74
  }
@@ -188,6 +190,9 @@ class Server {
188
190
  const response = error instanceof RequestError ? new Response({
189
191
  body: error.serializedErrors,
190
192
  status: error.statusCode
193
+ }) : error instanceof EquippedError ? new Response({
194
+ body: [{ message: error.message }],
195
+ status: StatusCodes.BadRequest
191
196
  }) : new Response({
192
197
  body: [{ message: "Something went wrong", data: error.message }],
193
198
  status: StatusCodes.BadRequest
@@ -1,21 +1,21 @@
1
- export { E as ExpressServer, F as FastifyServer, O as OnJoinFn, R as Router, S as Server, a as SocketCallbacks, b as SocketEmitter } from '../fastify-BizyaCY_.js';
2
- import { B as BaseRequestAuthMethod, a as Request, c as RouteDefToReqRes, d as RouteDef, S as ServerConfig, e as Route } from '../requestError-MGJ-ojtC.js';
3
- export { C as CookieVal, i as DefaultCookies, D as DefaultHeaders, I as IncomingFile, l as MergeRouteDefs, M as Methods, g as MethodsEnum, b as Response, j as RouteConfig, m as RouteDefHandler, k as RouterConfig, f as StatusCodes, h as StatusCodesEnum, o as makeErrorMiddleware, n as makeMiddleware, s as serverConfigPipe } from '../requestError-MGJ-ojtC.js';
1
+ import { B as BaseRequestAuthMethod } from '../fastify-Cv1D0iUh.js';
2
+ export { E as ExpressServer, F as FastifyServer, O as OnJoinFn, R as Router, S as Server, a as ServerConfig, b as SocketCallbacks, c as SocketEmitter, s as serverConfigPipe } from '../fastify-Cv1D0iUh.js';
4
3
  import { A as AuthUser } from '../overrides-6Hxg764S.js';
4
+ import { a as Request, c as RouteDefToReqRes, d as RouteDef, e as Route } from '../requestError-C2PNWUrt.js';
5
+ export { C as CookieVal, h as DefaultCookies, D as DefaultHeaders, I as IncomingFile, k as MergeRouteDefs, M as Methods, f as MethodsEnum, b as Response, i as RouteConfig, l as RouteDefHandler, j as RouterConfig, S as StatusCodes, g as StatusCodesEnum, o as makeErrorMiddleware, m as makeMiddleware, n as makeResponseMiddleware } from '../requestError-C2PNWUrt.js';
5
6
  import { IncomingHttpHeaders } from 'node:http2';
6
7
  import 'express';
7
8
  import 'fastify';
9
+ import 'valleyed';
10
+ import '../kafka-Cf-TUJgv.js';
8
11
  import 'supertest/lib/agent';
9
12
  import 'node:http';
10
13
  import '@fastify/cors';
11
14
  import 'cors';
12
15
  import 'supertest';
13
16
  import 'socket.io';
14
- import '../core-BWUHISEy.js';
17
+ import '../core-BrkNSwvc.js';
15
18
  import 'mongodb';
16
- import 'valleyed';
17
- import '../kafka-DCpqW_YM.js';
18
- import '../base-CfeyC14V.js';
19
19
  import '../types/index.js';
20
20
  import 'node:stream';
21
21
  import '@fastify/cookie';
@@ -75,8 +75,8 @@ declare abstract class BaseJwtCookieRequestAuthMethod<T extends {
75
75
  }
76
76
 
77
77
  declare const requireAuthUser: (methods: BaseRequestAuthMethod<AuthUser>[]) => {
78
- cb: (req: Request<RouteDefToReqRes<RouteDef>>, config: ServerConfig) => void | Promise<void>;
78
+ cb: (req: Request<RouteDefToReqRes<RouteDef>>) => void | Promise<void>;
79
79
  onSetup: ((route: Route<RouteDef>) => void) | undefined;
80
80
  };
81
81
 
82
- export { BaseApiKeyRequestAuthMethod, BaseJwtCookieRequestAuthMethod, BaseJwtHeaderRequestAuthMethod, BaseJwtRequestAuthMethod, type BaseJwtRequestAuthMethodOptions, BaseRequestAuthMethod, Request, Route, RouteDef, RouteDefToReqRes, ServerConfig, requireAuthUser };
82
+ export { BaseApiKeyRequestAuthMethod, BaseJwtCookieRequestAuthMethod, BaseJwtHeaderRequestAuthMethod, BaseJwtRequestAuthMethod, type BaseJwtRequestAuthMethodOptions, BaseRequestAuthMethod, Request, Route, RouteDef, RouteDefToReqRes, requireAuthUser };
@@ -36,6 +36,7 @@ const groupRoutes = (config, routes) => routes.map((route) => ({
36
36
  path: `${config.path}/${route.path}`,
37
37
  groups: [...config.groups ?? [], ...route.groups ?? []],
38
38
  middlewares: [...config.middlewares ?? [], ...route.middlewares ?? []],
39
+ responseMiddlewares: [...config.responseMiddlewares ?? [], ...route.responseMiddlewares ?? []],
39
40
  schema: mergeSchemas(config.schema ?? {}, route.schema ?? {}),
40
41
  security: [...config.security ?? [], ...route.security ?? []]
41
42
  }));
@@ -22,10 +22,12 @@ function makeMiddlewareHandler(cb, onSetup) {
22
22
  return { cb, onSetup };
23
23
  }
24
24
  const makeMiddleware = (...args) => makeMiddlewareHandler(...args);
25
+ const makeResponseMiddleware = (...args) => makeMiddlewareHandler(...args);
25
26
  const makeErrorMiddleware = (...args) => makeMiddlewareHandler(...args);
26
27
  export {
27
28
  Methods,
28
29
  StatusCodes,
29
30
  makeErrorMiddleware,
30
- makeMiddleware
31
+ makeMiddleware,
32
+ makeResponseMiddleware
31
33
  };
@@ -1,4 +1,4 @@
1
- import { R as RequestError } from './requestError-MGJ-ojtC.js';
1
+ import { R as RequestError } from './requestError-C2PNWUrt.js';
2
2
 
3
3
  type ValidError = {
4
4
  messages: string[];
@@ -1,11 +1,10 @@
1
1
  import { Pipe, PipeInput, PipeOutput, PipeError } from 'valleyed';
2
2
  export * from 'valleyed';
3
3
  import { AsyncLocalStorage } from 'node:async_hooks';
4
- import { I as IncomingFile, a as Request, b as Response, c as RouteDefToReqRes, d as RouteDef } from '../requestError-MGJ-ojtC.js';
5
- import { V as ValidationError } from '../validationError-BbiTIoAh.js';
4
+ import { I as IncomingFile, a as Request, b as Response, c as RouteDefToReqRes, d as RouteDef } from '../requestError-C2PNWUrt.js';
5
+ import { V as ValidationError } from '../validationError-Bw8OYv5s.js';
6
6
  import '../types/index.js';
7
7
  import '../overrides-6Hxg764S.js';
8
- import '../base-CfeyC14V.js';
9
8
  import 'node:http2';
10
9
  import 'node:stream';
11
10
  import '@fastify/cookie';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "equipped",
3
- "version": "5.2.3",
3
+ "version": "5.2.5",
4
4
  "private": false,
5
5
  "description": "",
6
6
  "type": "module",
@@ -1,14 +0,0 @@
1
- import { E as Events } from './overrides-6Hxg764S.js';
2
-
3
- type StreamOptions = {
4
- skipScope?: boolean;
5
- fanout: boolean;
6
- };
7
- declare abstract class EventBus {
8
- abstract createStream<Event extends Events[keyof Events]>(topic: Event['topic'], options?: Partial<StreamOptions>): {
9
- publish: (data: Event['data']) => Promise<boolean>;
10
- subscribe: (onMessage: (data: Event['data']) => Promise<void>) => void;
11
- };
12
- }
13
-
14
- export { EventBus as E, type StreamOptions as S };
@@ -1,80 +0,0 @@
1
- import express from 'express';
2
- import { d as RouteDef, k as RouterConfig, j as RouteConfig, m as RouteDefHandler, l as MergeRouteDefs, e as Route, S as ServerConfig, a as Request, b as Response, g as MethodsEnum } from './requestError-MGJ-ojtC.js';
3
- import { FastifyRequest, FastifyReply } from 'fastify';
4
- import * as supertest_lib_agent from 'supertest/lib/agent';
5
- import http from 'node:http';
6
- import { FastifyCorsOptions } from '@fastify/cors';
7
- import { CorsOptions } from 'cors';
8
- import supertest from 'supertest';
9
- import { Server as Server$1 } from 'socket.io';
10
- import { E as Entity } from './core-BWUHISEy.js';
11
- import { A as AuthUser } from './overrides-6Hxg764S.js';
12
-
13
- declare class Router<T extends RouteDef> {
14
- #private;
15
- constructor(config?: RouterConfig<T>);
16
- head: <R extends RouteDef>(path: string, config?: RouteConfig<R>) => (handler: RouteDefHandler<MergeRouteDefs<T, R>>) => Route<MergeRouteDefs<T, R>>;
17
- get: <R extends RouteDef>(path: string, config?: RouteConfig<R>) => (handler: RouteDefHandler<MergeRouteDefs<T, R>>) => Route<MergeRouteDefs<T, R>>;
18
- post: <R extends RouteDef>(path: string, config?: RouteConfig<R>) => (handler: RouteDefHandler<MergeRouteDefs<T, R>>) => Route<MergeRouteDefs<T, R>>;
19
- put: <R extends RouteDef>(path: string, config?: RouteConfig<R>) => (handler: RouteDefHandler<MergeRouteDefs<T, R>>) => Route<MergeRouteDefs<T, R>>;
20
- patch: <R extends RouteDef>(path: string, config?: RouteConfig<R>) => (handler: RouteDefHandler<MergeRouteDefs<T, R>>) => Route<MergeRouteDefs<T, R>>;
21
- delete: <R extends RouteDef>(path: string, config?: RouteConfig<R>) => (handler: RouteDefHandler<MergeRouteDefs<T, R>>) => Route<MergeRouteDefs<T, R>>;
22
- options: <R extends RouteDef>(path: string, config?: RouteConfig<R>) => (handler: RouteDefHandler<MergeRouteDefs<T, R>>) => Route<MergeRouteDefs<T, R>>;
23
- nest(...routers: Router<any>[]): void;
24
- get routes(): Route<any>[];
25
- }
26
-
27
- type OnJoinFn = (data: {
28
- channel: string;
29
- user: AuthUser | null;
30
- }, params: Record<string, any>, query: Record<string, any>) => Promise<string | null>;
31
- type SocketCallbacks = {
32
- onConnect: (userId: string, socketId: string) => Promise<void>;
33
- onDisconnect: (userId: string, socketId: string) => Promise<void>;
34
- };
35
- declare class SocketEmitter {
36
- #private;
37
- private config;
38
- readonly socketInstance: Server$1;
39
- constructor(socket: Server$1, config: ServerConfig);
40
- created<T extends Entity>(channels: string[], data: T, to: string | string[] | null): Promise<void>;
41
- updated<T extends Entity>(channels: string[], { after, before }: {
42
- after: T;
43
- before: T;
44
- }, to: string | string[] | null): Promise<void>;
45
- deleted<T extends Entity>(channels: string[], data: T, to: string | string[] | null): Promise<void>;
46
- set connectionCallbacks(callbacks: SocketCallbacks);
47
- register(channel: string, onJoin: OnJoinFn): this;
48
- }
49
-
50
- declare abstract class Server<Req = any, Res = any> {
51
- #private;
52
- private config;
53
- private implementations;
54
- socket: SocketEmitter;
55
- protected server: http.Server;
56
- protected get cors(): CorsOptions & FastifyCorsOptions;
57
- constructor(server: http.Server, config: ServerConfig, implementations: {
58
- parseRequest: (req: Req) => Promise<Request<any>>;
59
- handleResponse: (res: Res, response: Response<any>) => Promise<void>;
60
- registerRoute: (method: MethodsEnum, path: string, cb: (req: Req, res: Res) => Promise<void>) => void;
61
- registerErrorHandler: (cb: (error: Error, req: Req, res: Res) => Promise<void>) => void;
62
- registerNotFoundHandler: (cb: (req: Req, res: Res) => Promise<void>) => void;
63
- start: (port: number) => Promise<boolean>;
64
- });
65
- addRouter(...routers: Router<any>[]): void;
66
- addRoute<T extends RouteDef>(...routes: Route<T>[]): void;
67
- test(): supertest_lib_agent<supertest.SuperTestStatic.Test>;
68
- start(): Promise<boolean>;
69
- }
70
-
71
- declare class ExpressServer extends Server<express.Request, express.Response> {
72
- #private;
73
- constructor(config: ServerConfig);
74
- }
75
-
76
- declare class FastifyServer extends Server<FastifyRequest, FastifyReply> {
77
- constructor(config: ServerConfig);
78
- }
79
-
80
- export { ExpressServer as E, FastifyServer as F, type OnJoinFn as O, Router as R, Server as S, type SocketCallbacks as a, SocketEmitter as b };