equipped 5.0.6 → 5.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.
Files changed (95) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/cjs/cache.cjs +11 -0
  3. package/dist/cjs/cache.cjs.map +1 -0
  4. package/dist/cjs/chunk-UBQPLHM4.cjs +2507 -0
  5. package/dist/cjs/chunk-UBQPLHM4.cjs.map +1 -0
  6. package/dist/cjs/dbs.cjs +27 -0
  7. package/dist/cjs/dbs.cjs.map +1 -0
  8. package/dist/cjs/errors.cjs +23 -0
  9. package/dist/cjs/errors.cjs.map +1 -0
  10. package/dist/cjs/events.cjs +17 -0
  11. package/dist/cjs/events.cjs.map +1 -0
  12. package/dist/cjs/index.cjs.map +1 -0
  13. package/dist/cjs/jobs.cjs +9 -0
  14. package/dist/cjs/jobs.cjs.map +1 -0
  15. package/dist/cjs/server.cjs +41 -0
  16. package/dist/cjs/server.cjs.map +1 -0
  17. package/dist/cjs/types.cjs +1 -0
  18. package/dist/cjs/types.cjs.map +1 -0
  19. package/dist/cjs/utilities.cjs +21 -0
  20. package/dist/cjs/utilities.cjs.map +1 -0
  21. package/dist/cjs/validations.cjs +11 -0
  22. package/dist/cjs/validations.cjs.map +1 -0
  23. package/dist/esm/cache.min.mjs +2 -0
  24. package/dist/esm/cache.min.mjs.map +1 -0
  25. package/dist/esm/cache.mjs +11 -0
  26. package/dist/esm/cache.mjs.map +1 -0
  27. package/dist/esm/chunk-SHJLDB4M.mjs +2507 -0
  28. package/dist/esm/chunk-SHJLDB4M.mjs.map +1 -0
  29. package/dist/esm/chunk-WKZT3EQO.min.mjs +32 -0
  30. package/dist/esm/chunk-WKZT3EQO.min.mjs.map +1 -0
  31. package/dist/esm/dbs.min.mjs +2 -0
  32. package/dist/esm/dbs.min.mjs.map +1 -0
  33. package/dist/esm/dbs.mjs +27 -0
  34. package/dist/esm/dbs.mjs.map +1 -0
  35. package/dist/esm/errors.min.mjs +2 -0
  36. package/dist/esm/errors.min.mjs.map +1 -0
  37. package/dist/esm/errors.mjs +23 -0
  38. package/dist/esm/errors.mjs.map +1 -0
  39. package/dist/esm/events.min.mjs +2 -0
  40. package/dist/esm/events.min.mjs.map +1 -0
  41. package/dist/esm/events.mjs +17 -0
  42. package/dist/esm/events.mjs.map +1 -0
  43. package/dist/esm/index.min.mjs +2 -0
  44. package/dist/esm/index.min.mjs.map +1 -0
  45. package/dist/esm/index.mjs +7 -0
  46. package/dist/esm/index.mjs.map +1 -0
  47. package/dist/esm/jobs.min.mjs +2 -0
  48. package/dist/esm/jobs.min.mjs.map +1 -0
  49. package/dist/esm/jobs.mjs +9 -0
  50. package/dist/esm/jobs.mjs.map +1 -0
  51. package/dist/esm/server.min.mjs +2 -0
  52. package/dist/esm/server.min.mjs.map +1 -0
  53. package/dist/esm/server.mjs +41 -0
  54. package/dist/esm/server.mjs.map +1 -0
  55. package/dist/esm/types.min.mjs +1 -0
  56. package/dist/esm/types.min.mjs.map +1 -0
  57. package/dist/esm/types.mjs +1 -0
  58. package/dist/esm/types.mjs.map +1 -0
  59. package/dist/esm/utilities.min.mjs +2 -0
  60. package/dist/esm/utilities.min.mjs.map +1 -0
  61. package/dist/esm/utilities.mjs +21 -0
  62. package/dist/esm/utilities.mjs.map +1 -0
  63. package/dist/esm/validations.min.mjs +2 -0
  64. package/dist/esm/validations.min.mjs.map +1 -0
  65. package/dist/esm/validations.mjs +11 -0
  66. package/dist/esm/validations.mjs.map +1 -0
  67. package/dist/types/base-k4t2NepI.d.ts +8 -0
  68. package/dist/types/cache.d.ts +32 -0
  69. package/dist/types/cache.js +10 -0
  70. package/dist/types/chunk-XNSFFTXR.js +2506 -0
  71. package/dist/types/dbs.d.ts +16 -0
  72. package/dist/types/dbs.js +26 -0
  73. package/dist/types/errors.d.ts +39 -0
  74. package/dist/types/errors.js +22 -0
  75. package/dist/types/events.d.ts +13 -0
  76. package/dist/types/events.js +16 -0
  77. package/dist/types/index-D-NoC-on.d.ts +562 -0
  78. package/dist/types/index-U2VdDArL.d.ts +287 -0
  79. package/dist/types/index.d.ts +16 -0
  80. package/dist/types/index.js +6 -0
  81. package/dist/types/jobs.d.ts +54 -0
  82. package/dist/types/jobs.js +8 -0
  83. package/dist/types/kafka-CW925i4B.d.ts +57 -0
  84. package/dist/types/overrides-6Hxg764S.d.ts +25 -0
  85. package/dist/types/requests-BlJQeR64.d.ts +207 -0
  86. package/dist/types/server.d.ts +48 -0
  87. package/dist/types/server.js +40 -0
  88. package/dist/types/types.d.ts +5 -0
  89. package/dist/types/types.js +0 -0
  90. package/dist/types/utilities.d.ts +68 -0
  91. package/dist/types/utilities.js +20 -0
  92. package/dist/types/validationError-XbHmdYeK.d.ts +12 -0
  93. package/dist/types/validations.d.ts +74 -0
  94. package/dist/types/validations.js +10 -0
  95. package/package.json +2 -2
@@ -0,0 +1,16 @@
1
+ import { M as Model, E as Entity, D as DbChange, a as MongoDbConfig, b as DbChangeConfig, c as DbChangeCallbacks } from './index-U2VdDArL.js';
2
+ export { B as BulkWriteOperation, k as Conditions, h as Config, C as CreateInput, e as Db, i as DbConfig, g as EntityInput, I as IdType, j as MongoDb, O as Options, Q as QueryKeys, m as QueryParams, n as QueryParamsInput, s as QueryResults, p as QueryWhere, r as QueryWhereBlock, o as QueryWhereClause, f as Table, d as TableOptions, T as TopicPrefix, U as UpdateInput, t as mongoDbConfigPipe, q as queryParamsPipe, l as queryResultsPipe, w as wrapQueryParams } from './index-U2VdDArL.js';
3
+ import { MongoClient } from 'mongodb';
4
+ export { Filter } from 'mongodb';
5
+ import 'valleyed';
6
+ import './kafka-CW925i4B.js';
7
+ import './overrides-6Hxg764S.js';
8
+
9
+ declare class MongoDbChange<Model extends Model<{
10
+ _id: string;
11
+ }>, Entity extends Entity> extends DbChange<Model, Entity> {
12
+ #private;
13
+ constructor(config: MongoDbConfig, change: DbChangeConfig, client: MongoClient, dbName: string, colName: string, callbacks: DbChangeCallbacks<Model, Entity>, mapper: (model: Model) => Entity);
14
+ }
15
+
16
+ export { DbChange, DbChangeCallbacks, DbChangeConfig, Entity, Model, MongoDbChange, MongoDbConfig };
@@ -0,0 +1,26 @@
1
+ import {
2
+ Conditions,
3
+ Db,
4
+ DbChange,
5
+ MongoDb,
6
+ MongoDbChange,
7
+ QueryKeys,
8
+ TopicPrefix,
9
+ mongoDbConfigPipe,
10
+ queryParamsPipe,
11
+ queryResultsPipe,
12
+ wrapQueryParams
13
+ } from "./chunk-XNSFFTXR.js";
14
+ export {
15
+ Conditions,
16
+ Db,
17
+ DbChange,
18
+ MongoDb,
19
+ MongoDbChange,
20
+ QueryKeys,
21
+ TopicPrefix,
22
+ mongoDbConfigPipe,
23
+ queryParamsPipe,
24
+ queryResultsPipe,
25
+ wrapQueryParams
26
+ };
@@ -0,0 +1,39 @@
1
+ import { R as RequestError } from './requests-BlJQeR64.js';
2
+ export { E as EquippedError } from './requests-BlJQeR64.js';
3
+ export { V as ValidationError } from './validationError-XbHmdYeK.js';
4
+ import 'stream';
5
+ import 'valleyed';
6
+ import './overrides-6Hxg764S.js';
7
+ import './types.js';
8
+
9
+ declare class AuthorizationExpired extends RequestError {
10
+ statusCode: 461;
11
+ constructor(message?: string, cause?: unknown);
12
+ }
13
+
14
+ declare class BadRequestError extends RequestError {
15
+ statusCode: 400;
16
+ constructor(message: string, cause?: unknown);
17
+ }
18
+
19
+ declare class NotAuthenticatedError extends RequestError {
20
+ statusCode: 401;
21
+ constructor(message?: string, cause?: unknown);
22
+ }
23
+
24
+ declare class NotAuthorizedError extends RequestError {
25
+ statusCode: 403;
26
+ constructor(message?: string, cause?: unknown);
27
+ }
28
+
29
+ declare class NotFoundError extends RequestError {
30
+ statusCode: 404;
31
+ constructor(message?: string, cause?: unknown);
32
+ }
33
+
34
+ declare class RefreshTokenMisusedError extends RequestError {
35
+ statusCode: 401;
36
+ constructor(message?: string, cause?: unknown);
37
+ }
38
+
39
+ export { AuthorizationExpired, BadRequestError, NotAuthenticatedError, NotAuthorizedError, NotFoundError, RefreshTokenMisusedError, RequestError };
@@ -0,0 +1,22 @@
1
+ import {
2
+ AuthorizationExpired,
3
+ BadRequestError,
4
+ EquippedError,
5
+ NotAuthenticatedError,
6
+ NotAuthorizedError,
7
+ NotFoundError,
8
+ RefreshTokenMisusedError,
9
+ RequestError,
10
+ ValidationError
11
+ } from "./chunk-XNSFFTXR.js";
12
+ export {
13
+ AuthorizationExpired,
14
+ BadRequestError,
15
+ EquippedError,
16
+ NotAuthenticatedError,
17
+ NotAuthorizedError,
18
+ NotFoundError,
19
+ RefreshTokenMisusedError,
20
+ RequestError,
21
+ ValidationError
22
+ };
@@ -0,0 +1,13 @@
1
+ import { E as EventBus, R as RabbitMQConfig, P as PublishOptions, S as SubscribeOptions } from './kafka-CW925i4B.js';
2
+ export { D as DefaultSubscribeOptions, K as KafkaConfig, a as KafkaEventBus, k as kafkaConfigPipe, r as rabbitmqConfigPipe } from './kafka-CW925i4B.js';
3
+ import { E as Events } from './overrides-6Hxg764S.js';
4
+ import 'valleyed';
5
+
6
+ declare class RabbitMQEventBus extends EventBus {
7
+ #private;
8
+ constructor(config: RabbitMQConfig);
9
+ createPublisher<Event extends Events[keyof Events]>(topicName: Event['topic'], options?: Partial<PublishOptions>): (data: Event["data"]) => Promise<boolean>;
10
+ createSubscriber<Event extends Events[keyof Events]>(topicName: Event['topic'], onMessage: (data: Event['data']) => Promise<void>, options?: Partial<SubscribeOptions>): void;
11
+ }
12
+
13
+ export { EventBus, PublishOptions, RabbitMQConfig, RabbitMQEventBus, SubscribeOptions };
@@ -0,0 +1,16 @@
1
+ import {
2
+ DefaultSubscribeOptions,
3
+ EventBus,
4
+ KafkaEventBus,
5
+ RabbitMQEventBus,
6
+ kafkaConfigPipe,
7
+ rabbitmqConfigPipe
8
+ } from "./chunk-XNSFFTXR.js";
9
+ export {
10
+ DefaultSubscribeOptions,
11
+ EventBus,
12
+ KafkaEventBus,
13
+ RabbitMQEventBus,
14
+ kafkaConfigPipe,
15
+ rabbitmqConfigPipe
16
+ };
@@ -0,0 +1,562 @@
1
+ import * as valleyed from 'valleyed';
2
+ import { PipeOutput, ConditionalObjectKeys, PipeInput, IsInTypeList, DataClass, Pipe } from 'valleyed';
3
+ import { Logger } from 'pino';
4
+ import { C as Cache } from './base-k4t2NepI.js';
5
+ import { E as EventBus } from './kafka-CW925i4B.js';
6
+ import { E as Entity, j as MongoDb } from './index-U2VdDArL.js';
7
+ import { RedisJob } from './jobs.js';
8
+ import * as supertest_lib_agent from 'supertest/lib/agent';
9
+ import http from 'http';
10
+ import supertest from 'supertest';
11
+ import { A as AuthUser, a as RefreshUser } from './overrides-6Hxg764S.js';
12
+ import { d as RouteDef, i as RouterConfig, h as RouteConfig, k as RouteDefHandler, j as MergeRouteDefs, e as Route, a as Request, b as Response, f as MethodsEnum, E as EquippedError } from './requests-BlJQeR64.js';
13
+ import io from 'socket.io';
14
+
15
+ type HookEvent = 'setup' | 'start' | 'close';
16
+ type HookCb = Promise<unknown | void> | (() => void | unknown | Promise<void | unknown>);
17
+
18
+ declare abstract class BaseApiKeysUtility {
19
+ abstract verifyApiKey(apiKey: string): Promise<AuthUser>;
20
+ }
21
+
22
+ declare abstract class BaseTokensUtility {
23
+ abstract createAccessToken(payload: AuthUser): Promise<string>;
24
+ abstract createRefreshToken(payload: RefreshUser): Promise<string>;
25
+ abstract verifyAccessToken(token: string): Promise<AuthUser>;
26
+ abstract verifyRefreshToken(token: string): Promise<RefreshUser>;
27
+ abstract retrieveAccessTokenFor(userId: string): Promise<string | null>;
28
+ abstract retrieveRefreshTokenFor(userId: string): Promise<string | null>;
29
+ abstract deleteAccessTokenFor(userId: string): Promise<void>;
30
+ abstract deleteRefreshTokenFor(userId: string): Promise<void>;
31
+ extractAccessTokenValue(headerValue: string): string;
32
+ exchangeTokens(tokens: {
33
+ accessToken: string;
34
+ refreshToken: string;
35
+ }, getPayload: (id: string) => Promise<{
36
+ access: AuthUser;
37
+ refresh: RefreshUser;
38
+ }>): Promise<{
39
+ accessToken: string;
40
+ refreshToken: string;
41
+ }>;
42
+ }
43
+ type CacheTokensUtilityOptions = {
44
+ accessTokenKey: string;
45
+ refreshTokenKey: string;
46
+ accessTokenTTL: number;
47
+ refreshTokenTTL: number;
48
+ accessTokenPrefix: string;
49
+ refreshTokenPrefix: string;
50
+ };
51
+ declare class CacheTokensUtility extends BaseTokensUtility {
52
+ #private;
53
+ private options;
54
+ constructor(options?: Partial<CacheTokensUtilityOptions>);
55
+ createAccessToken(payload: AuthUser): Promise<string>;
56
+ createRefreshToken(payload: RefreshUser): Promise<string>;
57
+ verifyAccessToken(authHeader: string): Promise<AuthUser>;
58
+ verifyRefreshToken(token: string): Promise<RefreshUser>;
59
+ retrieveAccessTokenFor(userId: string): Promise<string | null>;
60
+ retrieveRefreshTokenFor(userId: string): Promise<string | null>;
61
+ deleteAccessTokenFor(userId: string): Promise<void>;
62
+ deleteRefreshTokenFor(userId: string): Promise<void>;
63
+ }
64
+
65
+ declare const serverPipe: valleyed.Pipe<{
66
+ type: "fastify" | "express";
67
+ port: number;
68
+ publicPath: string | undefined;
69
+ healthPath: string | undefined;
70
+ openapi: {
71
+ docsVersion: string | undefined;
72
+ docsBaseUrl: string[] | undefined;
73
+ docsPath: string | undefined;
74
+ } | undefined;
75
+ requests: {
76
+ log: boolean | undefined;
77
+ paginationDefaultLimit: number | undefined;
78
+ maxFileUploadSizeInMb: number | undefined;
79
+ rateLimit: {
80
+ enabled: boolean | undefined;
81
+ periodInMs: number | undefined;
82
+ limit: number | undefined;
83
+ } | undefined;
84
+ slowdown: {
85
+ enabled: boolean | undefined;
86
+ periodInMs: number | undefined;
87
+ delayAfter: number | undefined;
88
+ delayInMs: number | undefined;
89
+ } | undefined;
90
+ } | undefined;
91
+ requestsAuth: {
92
+ tokens: BaseTokensUtility | undefined;
93
+ apiKey: BaseApiKeysUtility | undefined;
94
+ } | undefined;
95
+ }, {
96
+ type: "fastify" | "express";
97
+ port: number;
98
+ publicPath: string | undefined;
99
+ healthPath: string | undefined;
100
+ openapi: {
101
+ docsVersion: string;
102
+ docsBaseUrl: string[];
103
+ docsPath: string;
104
+ };
105
+ requests: {
106
+ log: boolean;
107
+ paginationDefaultLimit: number;
108
+ maxFileUploadSizeInMb: number;
109
+ rateLimit: {
110
+ enabled: boolean;
111
+ periodInMs: number;
112
+ limit: number;
113
+ };
114
+ slowdown: {
115
+ enabled: boolean;
116
+ periodInMs: number;
117
+ delayAfter: number;
118
+ delayInMs: number;
119
+ };
120
+ };
121
+ requestsAuth: {
122
+ tokens: BaseTokensUtility | undefined;
123
+ apiKey: BaseApiKeysUtility | undefined;
124
+ };
125
+ }, any>;
126
+ type ServerConfig = {
127
+ config: PipeOutput<typeof serverPipe>;
128
+ app: {
129
+ id: string;
130
+ name: string;
131
+ };
132
+ log: Instance<any, any>['log'];
133
+ eventBus?: EventBus;
134
+ };
135
+
136
+ declare class Router<T extends RouteDef> {
137
+ #private;
138
+ constructor(config?: RouterConfig<T>);
139
+ head: <R extends RouteDef>(path: string, config?: RouteConfig<R>) => (handler: RouteDefHandler<MergeRouteDefs<T, R>>) => Route<MergeRouteDefs<T, R>>;
140
+ get: <R extends RouteDef>(path: string, config?: RouteConfig<R>) => (handler: RouteDefHandler<MergeRouteDefs<T, R>>) => Route<MergeRouteDefs<T, R>>;
141
+ post: <R extends RouteDef>(path: string, config?: RouteConfig<R>) => (handler: RouteDefHandler<MergeRouteDefs<T, R>>) => Route<MergeRouteDefs<T, R>>;
142
+ put: <R extends RouteDef>(path: string, config?: RouteConfig<R>) => (handler: RouteDefHandler<MergeRouteDefs<T, R>>) => Route<MergeRouteDefs<T, R>>;
143
+ patch: <R extends RouteDef>(path: string, config?: RouteConfig<R>) => (handler: RouteDefHandler<MergeRouteDefs<T, R>>) => Route<MergeRouteDefs<T, R>>;
144
+ delete: <R extends RouteDef>(path: string, config?: RouteConfig<R>) => (handler: RouteDefHandler<MergeRouteDefs<T, R>>) => Route<MergeRouteDefs<T, R>>;
145
+ options: <R extends RouteDef>(path: string, config?: RouteConfig<R>) => (handler: RouteDefHandler<MergeRouteDefs<T, R>>) => Route<MergeRouteDefs<T, R>>;
146
+ nest(...routers: Router<any>[]): void;
147
+ get routes(): Route<any>[];
148
+ }
149
+
150
+ type OnJoinFn = (data: {
151
+ channel: string;
152
+ user: AuthUser | null;
153
+ }, params: Record<string, any>, query: Record<string, any>) => Promise<string | null>;
154
+ type SocketCallbacks = {
155
+ onConnect: (userId: string, socketId: string) => Promise<void>;
156
+ onDisconnect: (userId: string, socketId: string) => Promise<void>;
157
+ };
158
+ declare class SocketEmitter {
159
+ #private;
160
+ readonly socketInstance: io.Server;
161
+ constructor(socket: io.Server, eventBus?: EventBus);
162
+ created<T extends Entity>(channels: string[], data: T, to: string | string[] | null): Promise<void>;
163
+ updated<T extends Entity>(channels: string[], { after, before }: {
164
+ after: T;
165
+ before: T;
166
+ }, to: string | string[] | null): Promise<void>;
167
+ deleted<T extends Entity>(channels: string[], data: T, to: string | string[] | null): Promise<void>;
168
+ set connectionCallbacks(callbacks: SocketCallbacks);
169
+ register(channel: string, onJoin: OnJoinFn): this;
170
+ }
171
+
172
+ declare abstract class Server<Req = any, Res = any> {
173
+ #private;
174
+ private config;
175
+ protected implementations: {
176
+ parseRequest: (req: Req) => Promise<Request<any>>;
177
+ handleResponse: (res: Res, response: Response<any>) => Promise<void>;
178
+ registerRoute: (method: MethodsEnum, path: string, cb: (req: Req, res: Res) => Promise<void>) => void;
179
+ registerErrorHandler: (cb: (error: Error, req: Req, res: Res) => Promise<void>) => void;
180
+ registerNotFoundHandler: (cb: (req: Req, res: Res) => Promise<void>) => void;
181
+ start: (port: number) => Promise<boolean>;
182
+ };
183
+ socket: SocketEmitter;
184
+ protected server: http.Server;
185
+ protected cors: {
186
+ origin: string;
187
+ methods: string[];
188
+ };
189
+ constructor(server: http.Server, config: ServerConfig, implementations: {
190
+ parseRequest: (req: Req) => Promise<Request<any>>;
191
+ handleResponse: (res: Res, response: Response<any>) => Promise<void>;
192
+ registerRoute: (method: MethodsEnum, path: string, cb: (req: Req, res: Res) => Promise<void>) => void;
193
+ registerErrorHandler: (cb: (error: Error, req: Req, res: Res) => Promise<void>) => void;
194
+ registerNotFoundHandler: (cb: (req: Req, res: Res) => Promise<void>) => void;
195
+ start: (port: number) => Promise<boolean>;
196
+ });
197
+ addRouter(...routers: Router<any>[]): void;
198
+ addRoute<T extends RouteDef>(...routes: Route<T>[]): void;
199
+ test(): supertest_lib_agent<supertest.SuperTestStatic.Test>;
200
+ start(): Promise<boolean>;
201
+ }
202
+
203
+ declare const instanceSettingsPipe: () => valleyed.Pipe<{
204
+ app: {
205
+ id: string;
206
+ name: string;
207
+ };
208
+ log: {
209
+ level: "fatal" | "error" | "warn" | "info" | "debug" | "trace" | "silent" | undefined;
210
+ } | undefined;
211
+ dbs: {
212
+ types: Record<string, {
213
+ uri: string;
214
+ } & {
215
+ type: "mongo";
216
+ }>;
217
+ changes: {
218
+ debeziumUrl: string;
219
+ kafkaConfig: {
220
+ brokers: string[];
221
+ ssl: boolean | undefined;
222
+ sasl: {
223
+ mechanism: "plain";
224
+ username: string;
225
+ password: string;
226
+ } | undefined;
227
+ confluent: boolean | undefined;
228
+ clientId: string | undefined;
229
+ };
230
+ } | undefined;
231
+ } | undefined;
232
+ eventBus: ({
233
+ brokers: string[];
234
+ ssl: boolean | undefined;
235
+ sasl: {
236
+ mechanism: "plain";
237
+ username: string;
238
+ password: string;
239
+ } | undefined;
240
+ confluent: boolean | undefined;
241
+ clientId: string | undefined;
242
+ } & {
243
+ type: "kafka";
244
+ }) | ({
245
+ uri: string;
246
+ eventColumnName: string;
247
+ } & {
248
+ type: "rabbitmq";
249
+ }) | undefined;
250
+ cache: {
251
+ host: string;
252
+ port: number | undefined;
253
+ password: string | undefined;
254
+ username: string | undefined;
255
+ tls: boolean | undefined;
256
+ cluster: boolean | undefined;
257
+ } & {
258
+ type: "redis";
259
+ };
260
+ jobs: ({
261
+ redisConfig: {
262
+ host: string;
263
+ port: number | undefined;
264
+ password: string | undefined;
265
+ username: string | undefined;
266
+ tls: boolean | undefined;
267
+ cluster: boolean | undefined;
268
+ };
269
+ queueName: string;
270
+ } & {
271
+ type: "redis";
272
+ }) | undefined;
273
+ server: {
274
+ type: "fastify" | "express";
275
+ port: number;
276
+ publicPath: string | undefined;
277
+ healthPath: string | undefined;
278
+ openapi: {
279
+ docsVersion: string | undefined;
280
+ docsBaseUrl: string[] | undefined;
281
+ docsPath: string | undefined;
282
+ } | undefined;
283
+ requests: {
284
+ log: boolean | undefined;
285
+ paginationDefaultLimit: number | undefined;
286
+ maxFileUploadSizeInMb: number | undefined;
287
+ rateLimit: {
288
+ enabled: boolean | undefined;
289
+ periodInMs: number | undefined;
290
+ limit: number | undefined;
291
+ } | undefined;
292
+ slowdown: {
293
+ enabled: boolean | undefined;
294
+ periodInMs: number | undefined;
295
+ delayAfter: number | undefined;
296
+ delayInMs: number | undefined;
297
+ } | undefined;
298
+ } | undefined;
299
+ requestsAuth: {
300
+ tokens: BaseTokensUtility | undefined;
301
+ apiKey: BaseApiKeysUtility | undefined;
302
+ } | undefined;
303
+ } | undefined;
304
+ utils: {
305
+ hashSaltRounds: number | undefined;
306
+ } | undefined;
307
+ }, {
308
+ app: {
309
+ id: string;
310
+ name: string;
311
+ };
312
+ log: {
313
+ level: "fatal" | "error" | "warn" | "info" | "debug" | "trace" | "silent";
314
+ };
315
+ dbs: {
316
+ types: Record<string, {
317
+ uri: string;
318
+ } & {
319
+ type: "mongo";
320
+ }>;
321
+ changes: {
322
+ debeziumUrl: string;
323
+ kafkaConfig: {
324
+ brokers: string[];
325
+ ssl: boolean | undefined;
326
+ sasl: {
327
+ mechanism: "plain";
328
+ username: string;
329
+ password: string;
330
+ } | undefined;
331
+ confluent: boolean | undefined;
332
+ clientId: string | undefined;
333
+ };
334
+ } | undefined;
335
+ } | undefined;
336
+ eventBus: ({
337
+ brokers: string[];
338
+ ssl: boolean | undefined;
339
+ sasl: {
340
+ mechanism: "plain";
341
+ username: string;
342
+ password: string;
343
+ } | undefined;
344
+ confluent: boolean | undefined;
345
+ clientId: string | undefined;
346
+ } & {
347
+ type: "kafka";
348
+ }) | ({
349
+ uri: string;
350
+ eventColumnName: string;
351
+ } & {
352
+ type: "rabbitmq";
353
+ }) | undefined;
354
+ cache: {
355
+ host: string;
356
+ port: number | undefined;
357
+ password: string | undefined;
358
+ username: string | undefined;
359
+ tls: boolean | undefined;
360
+ cluster: boolean | undefined;
361
+ } & {
362
+ type: "redis";
363
+ };
364
+ jobs: ({
365
+ redisConfig: {
366
+ host: string;
367
+ port: number | undefined;
368
+ password: string | undefined;
369
+ username: string | undefined;
370
+ tls: boolean | undefined;
371
+ cluster: boolean | undefined;
372
+ };
373
+ queueName: string;
374
+ } & {
375
+ type: "redis";
376
+ }) | undefined;
377
+ server: {
378
+ type: "fastify" | "express";
379
+ port: number;
380
+ publicPath: string | undefined;
381
+ healthPath: string | undefined;
382
+ openapi: {
383
+ docsVersion: string;
384
+ docsBaseUrl: string[];
385
+ docsPath: string;
386
+ };
387
+ requests: {
388
+ log: boolean;
389
+ paginationDefaultLimit: number;
390
+ maxFileUploadSizeInMb: number;
391
+ rateLimit: {
392
+ enabled: boolean;
393
+ periodInMs: number;
394
+ limit: number;
395
+ };
396
+ slowdown: {
397
+ enabled: boolean;
398
+ periodInMs: number;
399
+ delayAfter: number;
400
+ delayInMs: number;
401
+ };
402
+ };
403
+ requestsAuth: {
404
+ tokens: BaseTokensUtility | undefined;
405
+ apiKey: BaseApiKeysUtility | undefined;
406
+ };
407
+ } | undefined;
408
+ utils: {
409
+ hashSaltRounds: number;
410
+ };
411
+ }, any>;
412
+ type Settings = PipeOutput<ReturnType<typeof instanceSettingsPipe>>;
413
+ type SettingsInput = ConditionalObjectKeys<PipeInput<ReturnType<typeof instanceSettingsPipe>>>;
414
+ type DbTypesMap = {
415
+ mongo: MongoDb;
416
+ };
417
+ type ReshapeDbs<T extends SettingsInput> = IsInTypeList<NonNullable<T['dbs']>['types'], [unknown]> extends true ? {} : {
418
+ [K in keyof NonNullable<T['dbs']>['types']]: NonNullable<T['dbs']>['types'][K] extends {
419
+ type: keyof DbTypesMap;
420
+ } ? DbTypesMap[NonNullable<T['dbs']>['types'][K]['type']] : never;
421
+ };
422
+ type AddUndefined<T, C> = IsInTypeList<C, [undefined, unknown]> extends true ? undefined : T;
423
+ type MapSettingsToInstance<T extends SettingsInput> = {
424
+ app: T['app'];
425
+ log: Logger<any, boolean>;
426
+ eventBus: AddUndefined<EventBus, T['eventBus']>;
427
+ cache: AddUndefined<Cache, T['cache']>;
428
+ jobs: AddUndefined<RedisJob, T['jobs']>;
429
+ server: AddUndefined<Server, T['server']>;
430
+ dbs: ReshapeDbs<T>;
431
+ utils: T['utils'];
432
+ };
433
+
434
+ declare class Instance<E extends object, S extends SettingsInput> extends DataClass<MapSettingsToInstance<S>> {
435
+ #private;
436
+ readonly envs: Readonly<E>;
437
+ readonly settings: Readonly<Settings>;
438
+ private constructor();
439
+ getScopedName(name: string, key?: string): string;
440
+ start(): Promise<void>;
441
+ static create<E extends object, S extends SettingsInput>(envsPipe: Pipe<unknown, E, any>, settings: (envs: E) => S): Instance<E, S>;
442
+ static get(): Instance<object, {
443
+ app: {
444
+ id: string;
445
+ name: string;
446
+ };
447
+ cache: {
448
+ host: string;
449
+ type: "redis";
450
+ port?: number | undefined;
451
+ password?: string | undefined;
452
+ username?: string | undefined;
453
+ tls?: boolean | undefined;
454
+ cluster?: boolean | undefined;
455
+ };
456
+ log?: {
457
+ level?: "fatal" | "error" | "warn" | "info" | "debug" | "trace" | "silent" | undefined;
458
+ } | undefined;
459
+ dbs?: {
460
+ types: {
461
+ [x: string]: {
462
+ uri: string;
463
+ type: "mongo";
464
+ };
465
+ };
466
+ changes?: {
467
+ debeziumUrl: string;
468
+ kafkaConfig: {
469
+ brokers: string[];
470
+ ssl?: boolean | undefined;
471
+ sasl?: {
472
+ mechanism: "plain";
473
+ username: string;
474
+ password: string;
475
+ } | undefined;
476
+ confluent?: boolean | undefined;
477
+ clientId?: string | undefined;
478
+ };
479
+ } | undefined;
480
+ } | undefined;
481
+ eventBus?: {
482
+ brokers: string[];
483
+ type: "kafka";
484
+ ssl?: boolean | undefined;
485
+ sasl?: {
486
+ mechanism: "plain";
487
+ username: string;
488
+ password: string;
489
+ } | undefined;
490
+ confluent?: boolean | undefined;
491
+ clientId?: string | undefined;
492
+ } | {
493
+ uri: string;
494
+ eventColumnName: string;
495
+ type: "rabbitmq";
496
+ } | undefined;
497
+ jobs?: {
498
+ redisConfig: {
499
+ host: string;
500
+ port?: number | undefined;
501
+ password?: string | undefined;
502
+ username?: string | undefined;
503
+ tls?: boolean | undefined;
504
+ cluster?: boolean | undefined;
505
+ };
506
+ queueName: string;
507
+ type: "redis";
508
+ } | undefined;
509
+ server?: {
510
+ type: "fastify" | "express";
511
+ port: number;
512
+ publicPath?: string | undefined;
513
+ healthPath?: string | undefined;
514
+ openapi?: {
515
+ docsVersion?: string | undefined;
516
+ docsBaseUrl?: string[] | undefined;
517
+ docsPath?: string | undefined;
518
+ } | undefined;
519
+ requests?: {
520
+ log?: boolean | undefined;
521
+ paginationDefaultLimit?: number | undefined;
522
+ maxFileUploadSizeInMb?: number | undefined;
523
+ rateLimit?: {
524
+ enabled?: boolean | undefined;
525
+ periodInMs?: number | undefined;
526
+ limit?: number | undefined;
527
+ } | undefined;
528
+ slowdown?: {
529
+ enabled?: boolean | undefined;
530
+ periodInMs?: number | undefined;
531
+ delayAfter?: number | undefined;
532
+ delayInMs?: number | undefined;
533
+ } | undefined;
534
+ } | undefined;
535
+ requestsAuth?: {
536
+ tokens?: {
537
+ createAccessToken: {};
538
+ createRefreshToken: {};
539
+ verifyAccessToken: {};
540
+ verifyRefreshToken: {};
541
+ retrieveAccessTokenFor: {};
542
+ retrieveRefreshTokenFor: {};
543
+ deleteAccessTokenFor: {};
544
+ deleteRefreshTokenFor: {};
545
+ extractAccessTokenValue: {};
546
+ exchangeTokens: {};
547
+ } | undefined;
548
+ apiKey?: {
549
+ verifyApiKey: {};
550
+ } | undefined;
551
+ } | undefined;
552
+ } | undefined;
553
+ utils?: {
554
+ hashSaltRounds?: number | undefined;
555
+ } | undefined;
556
+ }>;
557
+ static on(event: HookEvent, cb: HookCb, order: number): void;
558
+ static resolveBeforeCrash<T>(cb: () => Promise<T>): Promise<T>;
559
+ static crash(error: EquippedError): never;
560
+ }
561
+
562
+ export { BaseApiKeysUtility as B, CacheTokensUtility as C, Instance as I, type OnJoinFn as O, Router as R, Server as S, type ServerConfig as a, BaseTokensUtility as b, type SocketCallbacks as c, SocketEmitter as d, serverPipe as s };