equipped 5.0.4 → 5.0.6

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 (189) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cjs/index.cjs +7 -0
  3. package/package.json +132 -29
  4. package/lib/cache/base.d.ts +0 -6
  5. package/lib/cache/base.js +0 -3
  6. package/lib/cache/base.js.map +0 -1
  7. package/lib/cache/index.d.ts +0 -3
  8. package/lib/cache/index.js +0 -4
  9. package/lib/cache/index.js.map +0 -1
  10. package/lib/cache/pipes.d.ts +0 -17
  11. package/lib/cache/pipes.js +0 -10
  12. package/lib/cache/pipes.js.map +0 -1
  13. package/lib/cache/types/redis.d.ts +0 -11
  14. package/lib/cache/types/redis.js +0 -54
  15. package/lib/cache/types/redis.js.map +0 -1
  16. package/lib/dbs/base/_instance.d.ts +0 -20
  17. package/lib/dbs/base/_instance.js +0 -52
  18. package/lib/dbs/base/_instance.js.map +0 -1
  19. package/lib/dbs/base/core.d.ts +0 -113
  20. package/lib/dbs/base/core.js +0 -2
  21. package/lib/dbs/base/core.js.map +0 -1
  22. package/lib/dbs/base/types.d.ts +0 -8
  23. package/lib/dbs/base/types.js +0 -2
  24. package/lib/dbs/base/types.js.map +0 -1
  25. package/lib/dbs/index.d.ts +0 -6
  26. package/lib/dbs/index.js +0 -7
  27. package/lib/dbs/index.js.map +0 -1
  28. package/lib/dbs/mongo/api.d.ts +0 -9
  29. package/lib/dbs/mongo/api.js +0 -149
  30. package/lib/dbs/mongo/api.js.map +0 -1
  31. package/lib/dbs/mongo/changes.d.ts +0 -11
  32. package/lib/dbs/mongo/changes.js +0 -80
  33. package/lib/dbs/mongo/changes.js.map +0 -1
  34. package/lib/dbs/mongo/index.d.ts +0 -21
  35. package/lib/dbs/mongo/index.js +0 -59
  36. package/lib/dbs/mongo/index.js.map +0 -1
  37. package/lib/dbs/mongo/query.d.ts +0 -6
  38. package/lib/dbs/mongo/query.js +0 -72
  39. package/lib/dbs/mongo/query.js.map +0 -1
  40. package/lib/dbs/pipes.d.ts +0 -126
  41. package/lib/dbs/pipes.js +0 -74
  42. package/lib/dbs/pipes.js.map +0 -1
  43. package/lib/errors/equippedError.d.ts +0 -6
  44. package/lib/errors/equippedError.js +0 -12
  45. package/lib/errors/equippedError.js.map +0 -1
  46. package/lib/errors/index.d.ts +0 -9
  47. package/lib/errors/index.js +0 -10
  48. package/lib/errors/index.js.map +0 -1
  49. package/lib/errors/requestError.d.ts +0 -14
  50. package/lib/errors/requestError.js +0 -11
  51. package/lib/errors/requestError.js.map +0 -1
  52. package/lib/errors/types/authorizationExpired.d.ts +0 -5
  53. package/lib/errors/types/authorizationExpired.js +0 -9
  54. package/lib/errors/types/authorizationExpired.js.map +0 -1
  55. package/lib/errors/types/badRequestError.d.ts +0 -5
  56. package/lib/errors/types/badRequestError.js +0 -9
  57. package/lib/errors/types/badRequestError.js.map +0 -1
  58. package/lib/errors/types/notAuthenticatedError.d.ts +0 -5
  59. package/lib/errors/types/notAuthenticatedError.js +0 -9
  60. package/lib/errors/types/notAuthenticatedError.js.map +0 -1
  61. package/lib/errors/types/notAuthorizedError.d.ts +0 -5
  62. package/lib/errors/types/notAuthorizedError.js +0 -9
  63. package/lib/errors/types/notAuthorizedError.js.map +0 -1
  64. package/lib/errors/types/notFoundError.d.ts +0 -5
  65. package/lib/errors/types/notFoundError.js +0 -9
  66. package/lib/errors/types/notFoundError.js.map +0 -1
  67. package/lib/errors/types/refreshTokenMisusedError.d.ts +0 -5
  68. package/lib/errors/types/refreshTokenMisusedError.js +0 -9
  69. package/lib/errors/types/refreshTokenMisusedError.js.map +0 -1
  70. package/lib/errors/types/validationError.d.ts +0 -10
  71. package/lib/errors/types/validationError.js +0 -9
  72. package/lib/errors/types/validationError.js.map +0 -1
  73. package/lib/events/base.d.ts +0 -14
  74. package/lib/events/base.js +0 -6
  75. package/lib/events/base.js.map +0 -1
  76. package/lib/events/index.d.ts +0 -4
  77. package/lib/events/index.js +0 -5
  78. package/lib/events/index.js.map +0 -1
  79. package/lib/events/pipes.d.ts +0 -31
  80. package/lib/events/pipes.js +0 -17
  81. package/lib/events/pipes.js.map +0 -1
  82. package/lib/events/types/kafka.d.ts +0 -9
  83. package/lib/events/types/kafka.js +0 -81
  84. package/lib/events/types/kafka.js.map +0 -1
  85. package/lib/events/types/rabbitmq.d.ts +0 -9
  86. package/lib/events/types/rabbitmq.js +0 -51
  87. package/lib/events/types/rabbitmq.js.map +0 -1
  88. package/lib/index.d.ts +0 -1
  89. package/lib/index.js +0 -2
  90. package/lib/index.js.map +0 -1
  91. package/lib/instance/hooks.d.ts +0 -7
  92. package/lib/instance/hooks.js +0 -26
  93. package/lib/instance/hooks.js.map +0 -1
  94. package/lib/instance/index.d.ts +0 -131
  95. package/lib/instance/index.js +0 -78
  96. package/lib/instance/index.js.map +0 -1
  97. package/lib/instance/settings.d.ts +0 -239
  98. package/lib/instance/settings.js +0 -121
  99. package/lib/instance/settings.js.map +0 -1
  100. package/lib/jobs/index.d.ts +0 -2
  101. package/lib/jobs/index.js +0 -3
  102. package/lib/jobs/index.js.map +0 -1
  103. package/lib/jobs/pipes.d.ts +0 -23
  104. package/lib/jobs/pipes.js +0 -7
  105. package/lib/jobs/pipes.js.map +0 -1
  106. package/lib/jobs/types/redis.d.ts +0 -28
  107. package/lib/jobs/types/redis.js +0 -88
  108. package/lib/jobs/types/redis.js.map +0 -1
  109. package/lib/server/impls/base.d.ts +0 -37
  110. package/lib/server/impls/base.js +0 -205
  111. package/lib/server/impls/base.js.map +0 -1
  112. package/lib/server/impls/express.d.ts +0 -7
  113. package/lib/server/impls/express.js +0 -111
  114. package/lib/server/impls/express.js.map +0 -1
  115. package/lib/server/impls/fastify.d.ts +0 -6
  116. package/lib/server/impls/fastify.js +0 -125
  117. package/lib/server/impls/fastify.js.map +0 -1
  118. package/lib/server/index.d.ts +0 -10
  119. package/lib/server/index.js +0 -10
  120. package/lib/server/index.js.map +0 -1
  121. package/lib/server/middlewares/index.d.ts +0 -1
  122. package/lib/server/middlewares/index.js +0 -2
  123. package/lib/server/middlewares/index.js.map +0 -1
  124. package/lib/server/middlewares/parseAuthUser.d.ts +0 -4
  125. package/lib/server/middlewares/parseAuthUser.js +0 -21
  126. package/lib/server/middlewares/parseAuthUser.js.map +0 -1
  127. package/lib/server/middlewares/requireAuthUser.d.ts +0 -16
  128. package/lib/server/middlewares/requireAuthUser.js +0 -57
  129. package/lib/server/middlewares/requireAuthUser.js.map +0 -1
  130. package/lib/server/openapi.d.ts +0 -33
  131. package/lib/server/openapi.js +0 -202
  132. package/lib/server/openapi.js.map +0 -1
  133. package/lib/server/pipes.d.ts +0 -74
  134. package/lib/server/pipes.js +0 -34
  135. package/lib/server/pipes.js.map +0 -1
  136. package/lib/server/requests-auth/apiKeys.d.ts +0 -4
  137. package/lib/server/requests-auth/apiKeys.js +0 -3
  138. package/lib/server/requests-auth/apiKeys.js.map +0 -1
  139. package/lib/server/requests-auth/index.d.ts +0 -2
  140. package/lib/server/requests-auth/index.js +0 -3
  141. package/lib/server/requests-auth/index.js.map +0 -1
  142. package/lib/server/requests-auth/tokens.d.ts +0 -44
  143. package/lib/server/requests-auth/tokens.js +0 -101
  144. package/lib/server/requests-auth/tokens.js.map +0 -1
  145. package/lib/server/requests.d.ts +0 -80
  146. package/lib/server/requests.js +0 -56
  147. package/lib/server/requests.js.map +0 -1
  148. package/lib/server/routes.d.ts +0 -14
  149. package/lib/server/routes.js +0 -70
  150. package/lib/server/routes.js.map +0 -1
  151. package/lib/server/sockets.d.ts +0 -25
  152. package/lib/server/sockets.js +0 -127
  153. package/lib/server/sockets.js.map +0 -1
  154. package/lib/server/types.d.ts +0 -109
  155. package/lib/server/types.js +0 -26
  156. package/lib/server/types.js.map +0 -1
  157. package/lib/types/index.d.ts +0 -3
  158. package/lib/types/index.js +0 -3
  159. package/lib/types/index.js.map +0 -1
  160. package/lib/types/overrides.d.ts +0 -23
  161. package/lib/types/overrides.js +0 -2
  162. package/lib/types/overrides.js.map +0 -1
  163. package/lib/utilities/authProviders.d.ts +0 -28
  164. package/lib/utilities/authProviders.js +0 -60
  165. package/lib/utilities/authProviders.js.map +0 -1
  166. package/lib/utilities/hash.d.ts +0 -2
  167. package/lib/utilities/hash.js +0 -15
  168. package/lib/utilities/hash.js.map +0 -1
  169. package/lib/utilities/index.d.ts +0 -6
  170. package/lib/utilities/index.js +0 -7
  171. package/lib/utilities/index.js.map +0 -1
  172. package/lib/utilities/json.d.ts +0 -2
  173. package/lib/utilities/json.js +0 -14
  174. package/lib/utilities/json.js.map +0 -1
  175. package/lib/utilities/media.d.ts +0 -1
  176. package/lib/utilities/media.js +0 -11
  177. package/lib/utilities/media.js.map +0 -1
  178. package/lib/utilities/random.d.ts +0 -2
  179. package/lib/utilities/random.js +0 -8
  180. package/lib/utilities/random.js.map +0 -1
  181. package/lib/utilities/retry.d.ts +0 -7
  182. package/lib/utilities/retry.js +0 -12
  183. package/lib/utilities/retry.js.map +0 -1
  184. package/lib/validations/index.d.ts +0 -6
  185. package/lib/validations/index.js +0 -21
  186. package/lib/validations/index.js.map +0 -1
  187. package/lib/validations/valleyed.d.ts +0 -54
  188. package/lib/validations/valleyed.js +0 -32
  189. package/lib/validations/valleyed.js.map +0 -1
@@ -1,101 +0,0 @@
1
- import jwt from 'jsonwebtoken';
2
- import { AuthorizationExpired, EquippedError, NotAuthenticatedError } from '../../errors';
3
- import { Instance } from '../../instance';
4
- import { StatusCodes } from '../types';
5
- export class BaseTokensUtility {
6
- extractAccessTokenValue(headerValue) {
7
- if (!headerValue.startsWith('Bearer '))
8
- throw new EquippedError(`authorization header must begin with 'Bearer '`, { headerValue });
9
- return headerValue.slice(7);
10
- }
11
- async exchangeTokens(tokens, getPayload) {
12
- const authUser = await this.verifyAccessToken(tokens.accessToken).catch((err) => {
13
- const error = err;
14
- if (error.statusCode === StatusCodes.AuthorizationExpired)
15
- return null;
16
- else
17
- throw err;
18
- });
19
- if (authUser)
20
- return tokens;
21
- const refreshUser = await this.verifyRefreshToken(tokens.refreshToken);
22
- const payloads = await getPayload(refreshUser.id);
23
- return {
24
- accessToken: await this.createAccessToken(payloads.access),
25
- refreshToken: await this.createRefreshToken(payloads.refresh),
26
- };
27
- }
28
- }
29
- export class CacheTokensUtility extends BaseTokensUtility {
30
- #getAccessTokenKey;
31
- #getRefreshTokenKey;
32
- options;
33
- constructor(options) {
34
- super();
35
- this.options = {
36
- accessTokenKey: 'accessTokenKey',
37
- refreshTokenKey: 'refreshTokenKey',
38
- accessTokenTTL: 60 * 60,
39
- refreshTokenTTL: 14 * 24 * 60 * 60,
40
- accessTokenPrefix: 'tokens:access:',
41
- refreshTokenPrefix: 'tokens:refresh:',
42
- ...options,
43
- };
44
- this.#getAccessTokenKey = (userId) => `${this.options.accessTokenPrefix}${userId}`;
45
- this.#getRefreshTokenKey = (userId) => `${this.options.refreshTokenPrefix}${userId}`;
46
- }
47
- async createAccessToken(payload) {
48
- const token = jwt.sign(payload, this.options.accessTokenKey, { expiresIn: this.options.accessTokenTTL });
49
- await Instance.get().cache.set(this.#getAccessTokenKey(payload.id), token, this.options.accessTokenTTL);
50
- return token;
51
- }
52
- async createRefreshToken(payload) {
53
- const token = jwt.sign(payload, this.options.refreshTokenKey, { expiresIn: this.options.refreshTokenTTL });
54
- await Instance.get().cache.set(this.#getRefreshTokenKey(payload.id), token, this.options.refreshTokenTTL);
55
- return token;
56
- }
57
- async verifyAccessToken(authHeader) {
58
- try {
59
- const accessToken = this.extractAccessTokenValue(authHeader);
60
- const user = jwt.verify(accessToken, this.options.accessTokenKey);
61
- if (!user)
62
- throw new NotAuthenticatedError();
63
- const cachedToken = await this.retrieveAccessTokenFor(user.id);
64
- if (accessToken && accessToken !== cachedToken)
65
- throw new AuthorizationExpired();
66
- return user;
67
- }
68
- catch (err) {
69
- if (err instanceof AuthorizationExpired)
70
- throw err;
71
- if (err instanceof jwt.TokenExpiredError)
72
- throw new AuthorizationExpired(undefined, err);
73
- else
74
- throw new NotAuthenticatedError(undefined, err);
75
- }
76
- }
77
- async verifyRefreshToken(token) {
78
- try {
79
- const user = jwt.verify(token, this.options.refreshTokenKey);
80
- if (!user)
81
- throw new NotAuthenticatedError();
82
- return user;
83
- }
84
- catch (err) {
85
- throw new NotAuthenticatedError(undefined, err);
86
- }
87
- }
88
- async retrieveAccessTokenFor(userId) {
89
- return Instance.get().cache.get(this.#getAccessTokenKey(userId));
90
- }
91
- async retrieveRefreshTokenFor(userId) {
92
- return Instance.get().cache.get(this.#getRefreshTokenKey(userId));
93
- }
94
- async deleteAccessTokenFor(userId) {
95
- await Instance.get().cache.delete(this.#getAccessTokenKey(userId));
96
- }
97
- async deleteRefreshTokenFor(userId) {
98
- await Instance.get().cache.delete(this.#getRefreshTokenKey(userId));
99
- }
100
- }
101
- //# sourceMappingURL=tokens.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../src/server/requests-auth/tokens.ts"],"names":[],"mappings":"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"}
@@ -1,80 +0,0 @@
1
- import type { Readable } from 'stream';
2
- import type { RequestError } from '../errors';
3
- import type { DefaultHeaders, IncomingFile, MethodsEnum, RouteDef, RouteDefToReqRes } from './types';
4
- import type { AuthUser, RefreshUser, DistributiveOmit, IsInTypeList } from '../types';
5
- type HeaderKeys = 'Authorization' | 'RefreshToken' | 'ApiKey' | 'Referer' | 'ContentType' | 'UserAgent';
6
- type ReqUser<T> = {
7
- error?: RequestError;
8
- value?: T;
9
- };
10
- type FallbackHeadersType = Record<string, string | string[] | undefined>;
11
- export declare class Request<Def extends RouteDefToReqRes<any>> {
12
- readonly ip: string | undefined;
13
- readonly method: MethodsEnum;
14
- readonly path: string;
15
- body: Def['body'];
16
- params: Def['params'];
17
- query: Def['query'];
18
- headers: Record<HeaderKeys, string | undefined> & Def['requestHeaders'] & FallbackHeadersType;
19
- context: Def['context'];
20
- readonly cookies: Record<string, any>;
21
- users: {
22
- access: ReqUser<AuthUser>;
23
- refresh: ReqUser<RefreshUser>;
24
- apiKey: ReqUser<AuthUser>;
25
- };
26
- authUser?: AuthUser;
27
- constructor({ ip, body, cookies, params, query, method, path, context, headers, files, }: {
28
- ip: string | undefined;
29
- body: Def['body'];
30
- params: Def['params'];
31
- query: Def['query'];
32
- cookies: Record<string, any>;
33
- headers: Record<HeaderKeys, string | undefined> & Def['requestHeaders'] & FallbackHeadersType;
34
- files: Record<string, IncomingFile[]>;
35
- method: MethodsEnum;
36
- path: string;
37
- context: Def['context'];
38
- });
39
- pipe(stream: Readable, opts?: {
40
- headers?: Def['responseHeaders'];
41
- status?: Def['statusCode'];
42
- }): Response<Omit<Def, "response"> & {
43
- response: Readable;
44
- }>;
45
- res(params: DistributiveOmit<RequestParams<Def>, 'piped'>): Response<Def>;
46
- error<T extends Omit<Def, 'response' | 'statusCode' | 'responseHeaders' | 'contentType'> & {
47
- response: RequestError['serializedErrors'];
48
- statusCode: RequestError['statusCode'];
49
- responseHeaders: DefaultHeaders;
50
- contentType: 'application/json';
51
- }>(params: DistributiveOmit<RequestParams<T>, 'piped'>): Response<T>;
52
- }
53
- type RequestParams<Def extends RouteDefToReqRes<any>, T = Def['response']> = {
54
- body: T;
55
- piped?: boolean;
56
- } & (IsInTypeList<Def['statusCode'], [
57
- NonNullable<RouteDef['defaultStatusCode']>,
58
- 200
59
- ]> extends true ? {
60
- status?: Def['statusCode'];
61
- } : {
62
- status: Def['statusCode'];
63
- }) & (IsInTypeList<Def['contentType'], [NonNullable<RouteDef['defaultContentType']>, 'application/json']> extends true ? {
64
- contentType?: Def['contentType'];
65
- } : {
66
- contentType: Def['contentType'];
67
- }) & (IsInTypeList<Def['responseHeaders'], [DefaultHeaders]> extends true ? {
68
- headers?: Def['responseHeaders'];
69
- } : {
70
- headers: Def['responseHeaders'];
71
- });
72
- export declare class Response<Def extends RouteDefToReqRes<any>> {
73
- body: Def['response'] | undefined;
74
- headers: Def['responseHeaders'];
75
- readonly status: Def['statusCode'];
76
- readonly contentType: Def['contentType'];
77
- readonly piped: boolean;
78
- constructor({ body, status, headers, piped, contentType }: RequestParams<Def>);
79
- }
80
- export {};
@@ -1,56 +0,0 @@
1
- import { parseJSONObject } from '../utilities';
2
- export class Request {
3
- ip;
4
- method;
5
- path;
6
- body;
7
- params;
8
- query;
9
- headers;
10
- context;
11
- cookies;
12
- users = {
13
- access: {},
14
- refresh: {},
15
- apiKey: {},
16
- };
17
- authUser;
18
- constructor({ ip, body, cookies, params, query, method, path, context, headers, files, }) {
19
- this.ip = ip;
20
- this.method = method;
21
- this.path = path;
22
- this.params = params;
23
- this.cookies = cookies;
24
- this.headers = headers;
25
- this.query = parseJSONObject(query);
26
- this.body = Object.assign(parseJSONObject(body), files);
27
- this.context = context;
28
- }
29
- pipe(stream, opts = {}) {
30
- return new Response({ ...opts, piped: true, body: stream });
31
- }
32
- res(params) {
33
- return new Response({ ...params, piped: false });
34
- }
35
- error(params) {
36
- return new Response({ ...params, piped: false });
37
- }
38
- }
39
- export class Response {
40
- body;
41
- headers;
42
- status;
43
- contentType;
44
- piped;
45
- constructor({ body, status = 200, headers = {}, piped = false, contentType = 'application/json' }) {
46
- this.body = body;
47
- this.status = status;
48
- this.contentType = contentType;
49
- this.headers = headers;
50
- this.piped = piped;
51
- if (!this.piped) {
52
- this.headers['Content-Type'] = contentType;
53
- }
54
- }
55
- }
56
- //# sourceMappingURL=requests.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"requests.js","sourceRoot":"","sources":["../../src/server/requests.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAM9C,MAAM,OAAO,OAAO;IACV,EAAE,CAAoB;IACtB,MAAM,CAAa;IACnB,IAAI,CAAQ;IACrB,IAAI,CAAa;IACjB,MAAM,CAAe;IACrB,KAAK,CAAc;IACnB,OAAO,CAAsF;IAC7F,OAAO,CAAgB;IACd,OAAO,CAAqB;IACrC,KAAK,GAID;QACH,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,EAAE;KACV,CAAA;IACD,QAAQ,CAAW;IAEnB,YAAY,EACX,EAAE,EACF,IAAI,EACJ,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,IAAI,EACJ,OAAO,EACP,OAAO,EACP,KAAK,GAYL;QACA,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;QACZ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;QACnC,IAAI,CAAC,IAAI,GAAQ,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAA;QAC5D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;IAED,IAAI,CAAC,MAAgB,EAAE,OAAyE,EAAE;QACjG,OAAO,IAAI,QAAQ,CAAsD,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IACjH,CAAC;IAED,GAAG,CAAC,MAAqD;QACxD,OAAO,IAAI,QAAQ,CAAW,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IAC3D,CAAC;IAED,KAAK,CAOH,MAAmD;QACpD,OAAO,IAAI,QAAQ,CAAS,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IACzD,CAAC;CACD;AAeD,MAAM,OAAO,QAAQ;IACpB,IAAI,CAA6B;IACjC,OAAO,CAAwB;IACtB,MAAM,CAAmB;IACzB,WAAW,CAAoB;IAC/B,KAAK,CAAS;IAEvB,YAAY,EAAE,IAAI,EAAE,MAAM,GAAQ,GAAG,EAAE,OAAO,GAAQ,EAAE,EAAE,KAAK,GAAG,KAAK,EAAE,WAAW,GAAQ,kBAAkB,EAAsB;QACnI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAElB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAEjB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,WAAW,CAAA;QAC3C,CAAC;IACF,CAAC;CACD"}
@@ -1,14 +0,0 @@
1
- import { RouteDefHandler, RouterConfig, Route, RouteConfig, RouteDef, MergeRouteDefs } from './types';
2
- export declare class Router<T extends RouteDef> {
3
- #private;
4
- constructor(config?: RouterConfig<T>);
5
- head: <R extends RouteDef>(path: string, config?: RouteConfig<R>) => (handler: RouteDefHandler<MergeRouteDefs<T, R>>) => Route<MergeRouteDefs<T, R>>;
6
- get: <R extends RouteDef>(path: string, config?: RouteConfig<R>) => (handler: RouteDefHandler<MergeRouteDefs<T, R>>) => Route<MergeRouteDefs<T, R>>;
7
- post: <R extends RouteDef>(path: string, config?: RouteConfig<R>) => (handler: RouteDefHandler<MergeRouteDefs<T, R>>) => Route<MergeRouteDefs<T, R>>;
8
- put: <R extends RouteDef>(path: string, config?: RouteConfig<R>) => (handler: RouteDefHandler<MergeRouteDefs<T, R>>) => Route<MergeRouteDefs<T, R>>;
9
- patch: <R extends RouteDef>(path: string, config?: RouteConfig<R>) => (handler: RouteDefHandler<MergeRouteDefs<T, R>>) => Route<MergeRouteDefs<T, R>>;
10
- delete: <R extends RouteDef>(path: string, config?: RouteConfig<R>) => (handler: RouteDefHandler<MergeRouteDefs<T, R>>) => Route<MergeRouteDefs<T, R>>;
11
- options: <R extends RouteDef>(path: string, config?: RouteConfig<R>) => (handler: RouteDefHandler<MergeRouteDefs<T, R>>) => Route<MergeRouteDefs<T, R>>;
12
- nest(...routers: Router<any>[]): void;
13
- get routes(): Route<any>[];
14
- }
@@ -1,70 +0,0 @@
1
- import { v } from 'valleyed';
2
- import { Methods } from './types';
3
- function mergeSchemas(...schemas) {
4
- const k = {
5
- params: '',
6
- headers: '',
7
- query: '',
8
- body: '',
9
- response: '',
10
- responseHeaders: '',
11
- defaultStatusCode: '',
12
- defaultContentType: '',
13
- context: '',
14
- };
15
- function merge(acc, cur) {
16
- if (!acc)
17
- return cur;
18
- if (!cur)
19
- return acc;
20
- if (typeof acc === 'number')
21
- return cur;
22
- if (typeof acc === 'string')
23
- return cur;
24
- if (typeof acc === 'function')
25
- return cur;
26
- return v.merge(acc, cur);
27
- }
28
- return Object.fromEntries(Object.keys(k).map((key) => [
29
- key,
30
- schemas.map((s) => s[key]).reduce(merge, null),
31
- ]));
32
- }
33
- const groupRoutes = (config, routes) => routes.map((route) => ({
34
- ...config,
35
- ...route,
36
- path: `${config.path}/${route.path}`,
37
- groups: [...(config.groups ?? []), ...(route.groups ?? [])],
38
- middlewares: [...(config.middlewares ?? []), ...(route.middlewares ?? [])],
39
- schema: mergeSchemas(config.schema ?? {}, route.schema ?? {}),
40
- security: [...(config.security ?? []), ...(route.security ?? [])],
41
- }));
42
- export class Router {
43
- #config = { path: '' };
44
- #routes = [];
45
- #children = [];
46
- constructor(config = { path: '' }) {
47
- this.#config = config;
48
- }
49
- #wrap(method) {
50
- return (path, config = {}) => (handler) => {
51
- const route = groupRoutes(this.#config, [{ ...config, path, method, handler: handler }])[0];
52
- this.#routes.push(route);
53
- return route;
54
- };
55
- }
56
- head = this.#wrap(Methods.head);
57
- get = this.#wrap(Methods.get);
58
- post = this.#wrap(Methods.post);
59
- put = this.#wrap(Methods.put);
60
- patch = this.#wrap(Methods.patch);
61
- delete = this.#wrap(Methods.delete);
62
- options = this.#wrap(Methods.options);
63
- nest(...routers) {
64
- routers.forEach((router) => this.#children.push(router));
65
- }
66
- get routes() {
67
- return [...this.#routes].concat(this.#children.flatMap((child) => groupRoutes(this.#config, child.routes)));
68
- }
69
- }
70
- //# sourceMappingURL=routes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/server/routes.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- import type io from 'socket.io';
2
- import { Entity } from '../dbs/base/core';
3
- import { EventBus } from '../events';
4
- import type { AuthUser } from '../types';
5
- export type OnJoinFn = (data: {
6
- channel: string;
7
- user: AuthUser | null;
8
- }, params: Record<string, any>, query: Record<string, any>) => Promise<string | null>;
9
- export type SocketCallbacks = {
10
- onConnect: (userId: string, socketId: string) => Promise<void>;
11
- onDisconnect: (userId: string, socketId: string) => Promise<void>;
12
- };
13
- export declare class SocketEmitter {
14
- #private;
15
- readonly socketInstance: io.Server;
16
- constructor(socket: io.Server, eventBus?: EventBus);
17
- created<T extends Entity>(channels: string[], data: T, to: string | string[] | null): Promise<void>;
18
- updated<T extends Entity>(channels: string[], { after, before }: {
19
- after: T;
20
- before: T;
21
- }, to: string | string[] | null): Promise<void>;
22
- deleted<T extends Entity>(channels: string[], data: T, to: string | string[] | null): Promise<void>;
23
- set connectionCallbacks(callbacks: SocketCallbacks);
24
- register(channel: string, onJoin: OnJoinFn): this;
25
- }
@@ -1,127 +0,0 @@
1
- import { match as Match } from 'path-to-regexp';
2
- import { Instance } from '../instance';
3
- import { StatusCodes } from './types';
4
- var EmitTypes;
5
- (function (EmitTypes) {
6
- EmitTypes["created"] = "created";
7
- EmitTypes["updated"] = "updated";
8
- EmitTypes["deleted"] = "deleted";
9
- })(EmitTypes || (EmitTypes = {}));
10
- const EmitterEvent = '__listener_emitter';
11
- const defaultTo = '*';
12
- export class SocketEmitter {
13
- socketInstance;
14
- #connectionCallbacks = { onConnect: async () => { }, onDisconnect: async () => { } };
15
- #routes = {};
16
- #publish = async () => { };
17
- constructor(socket, eventBus) {
18
- this.socketInstance = socket;
19
- this.#setupSocketConnection();
20
- Instance.on('setup', () => {
21
- this.#publish = eventBus
22
- ? eventBus.createPublisher(EmitterEvent)
23
- : async (data) => {
24
- socket.to(data.channel).emit(data.channel, data);
25
- };
26
- eventBus?.createSubscriber(EmitterEvent, async (data) => {
27
- socket.to(data.channel).emit(data.channel, data);
28
- }, { fanout: true });
29
- }, 1);
30
- }
31
- async created(channels, data, to) {
32
- await this.#emit(channels, EmitTypes.created, { after: data.toJSON(), before: null }, to);
33
- }
34
- async updated(channels, { after, before }, to) {
35
- await this.#emit(channels, EmitTypes.updated, { after: after.toJSON(), before: before.toJSON() }, to);
36
- }
37
- async deleted(channels, data, to) {
38
- await this.#emit(channels, EmitTypes.deleted, { before: data.toJSON(), after: null }, to);
39
- }
40
- async #emit(channels, type, { before, after }, to) {
41
- const toArray = Array.isArray(to) ? to : [to ?? defaultTo];
42
- const channelMap = channels.flatMap((c) => toArray.map((to) => `${to}:${c}`));
43
- await Promise.all(channelMap.map(async (channel) => this.#publish({ channel, type, before, after })));
44
- }
45
- set connectionCallbacks(callbacks) {
46
- this.#connectionCallbacks = callbacks;
47
- this.#setupSocketConnection();
48
- }
49
- register(channel, onJoin) {
50
- this.#routes[channel] = onJoin;
51
- this.#routes[channel + '/:id'] = onJoin;
52
- return this;
53
- }
54
- #getConfig(channel) {
55
- const matcher = (key) => Match(key)(channel);
56
- const matchedChannel = Object.keys(this.#routes).find(matcher) ?? null;
57
- if (!matchedChannel)
58
- return null;
59
- const match = matcher(matchedChannel);
60
- if (!match)
61
- return null;
62
- return {
63
- config: this.#routes[matchedChannel],
64
- params: match.params,
65
- };
66
- }
67
- #setupSocketConnection = () => {
68
- this.socketInstance.removeAllListeners('connection');
69
- this.socketInstance.on('connection', async (socket) => {
70
- const socketId = socket.id;
71
- let user = null;
72
- const tokensUtil = Instance.get().settings.server?.requestsAuth.tokens;
73
- if (socket.handshake.auth.authorization && tokensUtil)
74
- user = await tokensUtil.verifyAccessToken(socket.handshake.auth.authorization ?? '').catch(() => null);
75
- socket.on('leave', async (data, callback) => {
76
- if (!data.channel)
77
- return (typeof callback === 'function' &&
78
- callback({
79
- code: StatusCodes.ValidationError,
80
- message: 'channel is required',
81
- channel: '',
82
- }));
83
- socket.leave(data.channel);
84
- return (typeof callback === 'function' &&
85
- callback({
86
- code: StatusCodes.Ok,
87
- message: '',
88
- channel: data.channel,
89
- }));
90
- });
91
- socket.on('join', async (data, callback) => {
92
- if (!data.channel)
93
- return (typeof callback === 'function' &&
94
- callback({
95
- code: StatusCodes.ValidationError,
96
- message: 'channel is required',
97
- channel: '',
98
- }));
99
- const channel = data.channel;
100
- const route = this.#getConfig(channel) ?? null;
101
- if (!route)
102
- return (typeof callback === 'function' &&
103
- callback({
104
- code: StatusCodes.BadRequest,
105
- message: 'unknown channel',
106
- channel,
107
- }));
108
- const to = await route.config({ channel, user }, route.params, data.query ?? {});
109
- const newChannel = `${to ?? defaultTo}:${channel}`;
110
- socket.join(newChannel);
111
- return (typeof callback === 'function' &&
112
- callback({
113
- code: StatusCodes.Ok,
114
- message: '',
115
- channel: newChannel,
116
- }));
117
- });
118
- if (user)
119
- await this.#connectionCallbacks.onConnect(user.id, socketId);
120
- socket.on('disconnect', async () => {
121
- if (user)
122
- await this.#connectionCallbacks.onDisconnect(user.id, socketId);
123
- });
124
- });
125
- };
126
- }
127
- //# sourceMappingURL=sockets.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sockets.js","sourceRoot":"","sources":["../../src/server/sockets.ts"],"names":[],"mappings":"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"}
@@ -1,109 +0,0 @@
1
- import { IsInTypeList, Pipe, PipeContext, PipeInput, PipeOutput, Prettify } from 'valleyed';
2
- import type { Request, Response } from './requests';
3
- import type { RequestError } from '../errors';
4
- import { Enum } from '../types';
5
- export declare const Methods: {
6
- readonly head: "head";
7
- readonly get: "get";
8
- readonly post: "post";
9
- readonly put: "put";
10
- readonly patch: "patch";
11
- readonly delete: "delete";
12
- readonly options: "options";
13
- };
14
- export declare const StatusCodes: {
15
- readonly Ok: 200;
16
- readonly Found: 302;
17
- readonly BadRequest: 400;
18
- readonly NotAuthenticated: 401;
19
- readonly NotAuthorized: 403;
20
- readonly NotFound: 404;
21
- readonly ValidationError: 422;
22
- readonly TooManyRequests: 429;
23
- readonly AuthorizationExpired: 461;
24
- };
25
- export type MethodsEnum = Enum<typeof Methods>;
26
- export type StatusCodesEnum = Enum<typeof StatusCodes>;
27
- export type DefaultHeaders = Record<string, ArrayOrValue<string>>;
28
- type ArrayOrValue<T> = T | T[] | undefined;
29
- export type IncomingFile = {
30
- name: string;
31
- type: string;
32
- size: number;
33
- isTruncated: boolean;
34
- data: Buffer;
35
- duration: number;
36
- };
37
- export type RouteDef = {
38
- params?: Pipe<Record<string, ArrayOrValue<string>>, Record<string, ArrayOrValue<string>>, any>;
39
- query?: Pipe<Record<string, ArrayOrValue<unknown>>, Record<string, ArrayOrValue<unknown>>, any>;
40
- headers?: Pipe<DefaultHeaders, DefaultHeaders, any>;
41
- body?: Pipe<Record<string, unknown>, Record<string, unknown>, any>;
42
- response?: Pipe<unknown, unknown, any>;
43
- responseHeaders?: Pipe<DefaultHeaders, DefaultHeaders, any>;
44
- defaultStatusCode?: StatusCodesEnum;
45
- defaultContentType?: string;
46
- context?: (req: Request<RouteDefToReqRes<RouteDef>>) => Awaitable<Record<string, unknown>>;
47
- };
48
- type RouteGroup = {
49
- name: string;
50
- description?: string;
51
- };
52
- type HandlerSetup<T extends RouteDef> = (route: Route<T>) => void;
53
- export type RouteConfig<T extends RouteDef> = {
54
- middlewares?: ReturnType<typeof makeMiddleware<RouteDef>>[];
55
- onError?: ReturnType<typeof makeErrorMiddleware<RouteDef>>;
56
- groups?: (RouteGroup | RouteGroup['name'])[];
57
- title?: string;
58
- descriptions?: string[];
59
- security?: Record<string, string[]>[];
60
- schema?: T;
61
- hide?: boolean;
62
- };
63
- export type RouterConfig<T extends RouteDef> = RouteConfig<T> & {
64
- path: string;
65
- };
66
- export type Route<T extends RouteDef> = RouteConfig<T> & {
67
- path: string;
68
- method: MethodsEnum;
69
- handler: RouteDefHandler<T>;
70
- };
71
- type GetApiPart<T extends RouteDef, K extends keyof RouteDef> = NonNullable<IsInTypeList<T[K], [unknown]> extends true ? RouteDef[K] : T[K]>;
72
- type ArePipes<A, B> = A extends Pipe<any, any, any> ? (B extends Pipe<any, any, any> ? true : false) : false;
73
- type Compare<K extends keyof RouteDef, A, B> = IsInTypeList<B, [unknown]> extends true ? A : IsInTypeList<A, [unknown]> extends true ? B : K extends `default${string}` | 'context' ? B : ArePipes<A, B> extends true ? Pipe<PipeInput<A> & PipeInput<B>, PipeOutput<A> & PipeOutput<B>, PipeContext<A> & PipeContext<B>> : B;
74
- export type MergeRouteDefs<A extends RouteDef, B extends RouteDef> = {
75
- [K in keyof RouteDef]: Compare<K, A[K], B[K]>;
76
- };
77
- export type RouteDefToReqRes<T extends RouteDef> = Prettify<{
78
- body: PipeOutput<GetApiPart<T, 'body'>>;
79
- params: PipeOutput<GetApiPart<T, 'params'>>;
80
- requestHeaders: PipeOutput<GetApiPart<T, 'headers'>>;
81
- query: PipeOutput<GetApiPart<T, 'query'>>;
82
- response: PipeOutput<GetApiPart<T, 'response'>>;
83
- responseHeaders: PipeOutput<GetApiPart<T, 'responseHeaders'>>;
84
- statusCode: GetApiPart<T, 'defaultStatusCode'>;
85
- contentType: GetApiPart<T, 'defaultContentType'>;
86
- context: Awaited<ReturnType<GetApiPart<T, 'context'>>>;
87
- }>;
88
- type Awaitable<T> = Promise<T> | T;
89
- type Res<T extends RouteDefToReqRes<any>> = Awaitable<IsInTypeList<T['statusCode'], [StatusCodesEnum, 200]> extends true ? IsInTypeList<T['responseHeaders'], [DefaultHeaders]> extends true ? Response<T> | T['response'] : Response<T> : Response<T>>;
90
- export type RouteDefHandler<Def extends RouteDef> = (req: Request<RouteDefToReqRes<Def>>) => Res<RouteDefToReqRes<Def>>;
91
- type RouteMiddlewareHandler<_Def extends RouteDef> = (req: Request<RouteDefToReqRes<RouteDef>>) => Awaitable<void>;
92
- type ErrorHandler<Def extends RouteDef> = (req: Request<RouteDefToReqRes<Def>>, err: Error) => Res<Omit<RouteDefToReqRes<Def>, 'response' | 'statusCode' | 'responseHeaders'> & {
93
- response: RequestError['serializedErrors'];
94
- statusCode: RequestError['statusCode'];
95
- responseHeaders: DefaultHeaders;
96
- }>;
97
- declare function makeMiddlewareHandler<Cb extends Function, T extends RouteDef>(cb: Cb, onSetup?: HandlerSetup<T>): {
98
- cb: Cb;
99
- onSetup: HandlerSetup<T> | undefined;
100
- };
101
- export declare const makeMiddleware: <Def extends RouteDef>(...args: Parameters<typeof makeMiddlewareHandler<RouteMiddlewareHandler<Def>, Def>>) => {
102
- cb: RouteMiddlewareHandler<Def>;
103
- onSetup: HandlerSetup<Def> | undefined;
104
- };
105
- export declare const makeErrorMiddleware: <Def extends RouteDef>(...args: Parameters<typeof makeMiddlewareHandler<ErrorHandler<Def>, Def>>) => {
106
- cb: ErrorHandler<Def>;
107
- onSetup: HandlerSetup<Def> | undefined;
108
- };
109
- export {};
@@ -1,26 +0,0 @@
1
- export const Methods = {
2
- head: 'head',
3
- get: 'get',
4
- post: 'post',
5
- put: 'put',
6
- patch: 'patch',
7
- delete: 'delete',
8
- options: 'options',
9
- };
10
- export const StatusCodes = {
11
- Ok: 200,
12
- Found: 302,
13
- BadRequest: 400,
14
- NotAuthenticated: 401,
15
- NotAuthorized: 403,
16
- NotFound: 404,
17
- ValidationError: 422,
18
- TooManyRequests: 429,
19
- AuthorizationExpired: 461,
20
- };
21
- function makeMiddlewareHandler(cb, onSetup) {
22
- return { cb, onSetup };
23
- }
24
- export const makeMiddleware = (...args) => makeMiddlewareHandler(...args);
25
- export const makeErrorMiddleware = (...args) => makeMiddlewareHandler(...args);
26
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,OAAO,GAAG;IACtB,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;CACT,CAAA;AAEV,MAAM,CAAC,MAAM,WAAW,GAAG;IAC1B,EAAE,EAAE,GAAG;IACP,KAAK,EAAE,GAAG;IACV,UAAU,EAAE,GAAG;IACf,gBAAgB,EAAE,GAAG;IACrB,aAAa,EAAE,GAAG;IAClB,QAAQ,EAAE,GAAG;IACb,eAAe,EAAE,GAAG;IACpB,eAAe,EAAE,GAAG;IACpB,oBAAoB,EAAE,GAAG;CAChB,CAAA;AAsGV,SAAS,qBAAqB,CAA0C,EAAM,EAAE,OAAyB;IACxG,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAA;AACvB,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAuB,GAAG,IAAgF,EAAE,EAAE,CAC3I,qBAAqB,CAAC,GAAG,IAAI,CAAC,CAAA;AAC/B,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAuB,GAAG,IAAsE,EAAE,EAAE,CACtI,qBAAqB,CAAC,GAAG,IAAI,CAAC,CAAA"}
@@ -1,3 +0,0 @@
1
- export * from 'valleyed/lib/utils/types';
2
- export * from './overrides';
3
- export type Enum<T> = T[keyof T];