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.
- package/CHANGELOG.md +14 -0
- package/dist/cjs/server/impls/base.cjs +13 -8
- package/dist/cjs/server/impls/base.cjs.map +1 -1
- package/dist/cjs/server/impls/base.min.cjs +1 -1
- package/dist/cjs/server/impls/base.min.cjs.map +1 -1
- package/dist/cjs/server/routes.cjs +1 -0
- package/dist/cjs/server/routes.cjs.map +1 -1
- package/dist/cjs/server/routes.min.cjs +1 -1
- package/dist/cjs/server/routes.min.cjs.map +1 -1
- package/dist/cjs/server/types.cjs +3 -1
- package/dist/cjs/server/types.cjs.map +1 -1
- package/dist/cjs/server/types.min.cjs +1 -1
- package/dist/cjs/server/types.min.cjs.map +1 -1
- package/dist/esm/server/impls/base.min.mjs +1 -1
- package/dist/esm/server/impls/base.min.mjs.map +1 -1
- package/dist/esm/server/impls/base.mjs +9 -4
- package/dist/esm/server/impls/base.mjs.map +1 -1
- package/dist/esm/server/routes.min.mjs +1 -1
- package/dist/esm/server/routes.min.mjs.map +1 -1
- package/dist/esm/server/routes.mjs +1 -0
- package/dist/esm/server/routes.mjs.map +1 -1
- package/dist/esm/server/types.min.mjs +1 -1
- package/dist/esm/server/types.min.mjs.map +1 -1
- package/dist/esm/server/types.mjs +3 -1
- package/dist/esm/server/types.mjs.map +1 -1
- package/dist/types/audit/index.d.ts +3 -4
- package/dist/types/{core-BWUHISEy.d.ts → core-BrkNSwvc.d.ts} +1 -1
- package/dist/types/{db-DEiImw1Z.d.ts → db-C8YY1yTO.d.ts} +1 -1
- package/dist/types/{db-vKGTnGlO.d.ts → db-Dj1SGto0.d.ts} +2 -2
- package/dist/types/dbs/index.d.ts +5 -6
- package/dist/types/errors/index.d.ts +3 -4
- package/dist/types/events/index.d.ts +2 -3
- package/dist/types/fastify-Cv1D0iUh.d.ts +225 -0
- package/dist/types/index.d.ts +6 -7
- package/dist/types/instance/index.d.ts +6 -7
- package/dist/types/{kafka-DCpqW_YM.d.ts → kafka-Cf-TUJgv.d.ts} +12 -2
- package/dist/types/{requestError-MGJ-ojtC.d.ts → requestError-C2PNWUrt.d.ts} +12 -149
- package/dist/types/server/impls/base.js +9 -4
- package/dist/types/server/index.d.ts +9 -9
- package/dist/types/server/routes.js +1 -0
- package/dist/types/server/types.js +3 -1
- package/dist/types/{validationError-BbiTIoAh.d.ts → validationError-Bw8OYv5s.d.ts} +1 -1
- package/dist/types/validations/index.d.ts +2 -3
- package/package.json +1 -1
- package/dist/types/base-CfeyC14V.d.ts +0 -14
- package/dist/types/fastify-BizyaCY_.d.ts +0 -80
package/dist/types/index.d.ts
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
export { Instance } from './instance/index.js';
|
|
2
2
|
import 'pino';
|
|
3
3
|
import 'valleyed';
|
|
4
|
-
import './requestError-
|
|
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-
|
|
10
|
+
import './kafka-Cf-TUJgv.js';
|
|
12
11
|
import './events/index.js';
|
|
13
|
-
import './fastify-
|
|
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-
|
|
21
|
+
import './core-BrkNSwvc.js';
|
|
23
22
|
import 'mongodb';
|
|
24
23
|
import './cache/index.js';
|
|
25
24
|
import 'ioredis';
|
|
26
|
-
import './db-
|
|
27
|
-
import './db-
|
|
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 {
|
|
5
|
-
import { E as EventBus } from '../
|
|
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-
|
|
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-
|
|
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-
|
|
24
|
+
import '../core-BrkNSwvc.js';
|
|
26
25
|
import 'mongodb';
|
|
27
26
|
import 'ioredis';
|
|
28
|
-
import '../db-
|
|
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
|
|
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
|
|
247
|
-
type RouteMiddlewareHandler<_Def extends RouteDef> = (req: Request<RouteDefToReqRes<RouteDef
|
|
248
|
-
type
|
|
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 {
|
|
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
|
|
64
|
-
const rawRes = await route.handler(request
|
|
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,
|
|
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
|
-
|
|
2
|
-
|
|
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-
|
|
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
|
|
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,
|
|
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,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-
|
|
5
|
-
import { V as ValidationError } from '../validationError-
|
|
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,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 };
|