equipped 5.0.5 → 5.0.7

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 +9 -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,10 +0,0 @@
1
- export * from './impls/base';
2
- export * from './impls/express';
3
- export * from './impls/fastify';
4
- export * from './middlewares';
5
- export * from './pipes';
6
- export * from './requests';
7
- export * from './requests-auth';
8
- export * from './routes';
9
- export * from './types';
10
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,UAAU,CAAA;AAExB,cAAc,SAAS,CAAA"}
@@ -1 +0,0 @@
1
- export * from './requireAuthUser';
@@ -1,2 +0,0 @@
1
- export * from './requireAuthUser';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/middlewares/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA"}
@@ -1,4 +0,0 @@
1
- export declare const parseAuthUser: {
2
- cb: (req: import("..").Request<import("..").RouteDefToReqRes<import("..").RouteDef>>) => void | Promise<void>;
3
- onSetup: ((route: import("..").Route<import("..").RouteDef>) => void) | undefined;
4
- };
@@ -1,21 +0,0 @@
1
- import { BadRequestError, RequestError } from '../../errors';
2
- import { Instance } from '../../instance';
3
- import { makeMiddleware } from '../types';
4
- export const parseAuthUser = makeMiddleware(async (request) => {
5
- const requestsAuth = Instance.get().settings.server?.requestsAuth;
6
- if (!requestsAuth)
7
- return;
8
- const { Authorization, ApiKey } = request.headers;
9
- function makeErrorHandler(key) {
10
- return function (err) {
11
- request.users[key].error = err instanceof RequestError ? err : new BadRequestError('failed to parse auth user', err);
12
- request.users[key].error.context[key] = key;
13
- return undefined;
14
- };
15
- }
16
- if (requestsAuth.tokens && Authorization)
17
- request.users.access.value = await requestsAuth.tokens.verifyAccessToken(Authorization).catch(makeErrorHandler('access'));
18
- else if (requestsAuth.apiKey && ApiKey)
19
- request.users.apiKey.value = await requestsAuth.apiKey.verifyApiKey(ApiKey).catch(makeErrorHandler('apiKey'));
20
- });
21
- //# sourceMappingURL=parseAuthUser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parseAuthUser.js","sourceRoot":"","sources":["../../../src/server/middlewares/parseAuthUser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAEzC,MAAM,CAAC,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IAC7D,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IACjE,IAAI,CAAC,YAAY;QAAE,OAAM;IACzB,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAA;IACjD,SAAS,gBAAgB,CAAC,GAAwB;QACjD,OAAO,UAAU,GAAQ;YACxB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,YAAY,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAA;YACpH,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;YAC3C,OAAO,SAAS,CAAA;QACjB,CAAC,CAAA;IACF,CAAC;IACD,IAAI,YAAY,CAAC,MAAM,IAAI,aAAa;QACvC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAA;SACrH,IAAI,YAAY,CAAC,MAAM,IAAI,MAAM;QACrC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAA;AAC/G,CAAC,CAAC,CAAA"}
@@ -1,16 +0,0 @@
1
- export declare const requireAuthUser: {
2
- cb: (req: import("..").Request<import("..").RouteDefToReqRes<import("..").RouteDef>>) => void | Promise<void>;
3
- onSetup: ((route: import("..").Route<import("..").RouteDef>) => void) | undefined;
4
- };
5
- export declare const requireAuthorizationUser: {
6
- cb: (req: import("..").Request<import("..").RouteDefToReqRes<import("..").RouteDef>>) => void | Promise<void>;
7
- onSetup: ((route: import("..").Route<import("..").RouteDef>) => void) | undefined;
8
- };
9
- export declare const requireApiKeyUser: {
10
- cb: (req: import("..").Request<import("..").RouteDefToReqRes<import("..").RouteDef>>) => void | Promise<void>;
11
- onSetup: ((route: import("..").Route<import("..").RouteDef>) => void) | undefined;
12
- };
13
- export declare const requireRefreshTokenUser: {
14
- cb: (req: import("..").Request<import("..").RouteDefToReqRes<import("..").RouteDef>>) => void | Promise<void>;
15
- onSetup: ((route: import("..").Route<import("..").RouteDef>) => void) | undefined;
16
- };
@@ -1,57 +0,0 @@
1
- import { NotAuthenticatedError, NotAuthorizedError } from '../../errors';
2
- import { Instance } from '../../instance';
3
- import { makeMiddleware } from '../types';
4
- export const requireAuthUser = makeMiddleware(async (request) => {
5
- const user = request.users.access.value || request.users.apiKey.value;
6
- const error = request.users.access.error || request.users.apiKey.error;
7
- if (!user && error)
8
- throw error;
9
- request.authUser = user;
10
- if (!request.authUser)
11
- throw new NotAuthenticatedError();
12
- }, (route) => {
13
- route.security ??= [];
14
- route.security.push({ Authorization: [] }, { ApiKey: [] });
15
- route.descriptions ??= [];
16
- route.descriptions.push('Requires a valid means of authentication.');
17
- });
18
- export const requireAuthorizationUser = makeMiddleware(async (request) => {
19
- if (request.users.access.error)
20
- throw request.users.access.error;
21
- request.authUser = request.users.access.value;
22
- if (!request.authUser)
23
- throw new NotAuthenticatedError();
24
- }, (route) => {
25
- route.security ??= [];
26
- route.security.push({ Authorization: [] });
27
- route.descriptions ??= [];
28
- route.descriptions.push('Requires a valid authorization header.');
29
- });
30
- export const requireApiKeyUser = makeMiddleware(async (request) => {
31
- if (request.users.apiKey.error)
32
- throw request.users.apiKey.error;
33
- request.authUser = request.users.apiKey.value;
34
- if (!request.authUser)
35
- throw new NotAuthenticatedError();
36
- }, (route) => {
37
- route.security ??= [];
38
- route.security.push({ ApiKey: [] });
39
- route.descriptions ??= [];
40
- route.descriptions.push('Requires a valid x-api-key header.');
41
- });
42
- export const requireRefreshTokenUser = makeMiddleware(async (request) => {
43
- if (request.users.refresh.error)
44
- throw request.users.refresh.error;
45
- const refreshToken = request.headers.RefreshToken;
46
- if (!refreshToken)
47
- throw new NotAuthorizedError('x-refresh-token header missing');
48
- request.users.refresh.value = await Instance.get().settings.server?.requestsAuth.tokens?.verifyRefreshToken(refreshToken);
49
- if (!request.users.refresh.value)
50
- throw new NotAuthorizedError();
51
- }, (route) => {
52
- route.security ??= [];
53
- route.security.push({ RefreshToken: [] });
54
- route.descriptions ??= [];
55
- route.descriptions.push('Requires a valid x-refresh-token header.');
56
- });
57
- //# sourceMappingURL=requireAuthUser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"requireAuthUser.js","sourceRoot":"","sources":["../../../src/server/middlewares/requireAuthUser.ts"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- import { JsonSchema } from 'valleyed';
2
- import { ServerConfig } from './pipes';
3
- import { Router } from './routes';
4
- import { Route } from './types';
5
- declare module 'openapi-types' {
6
- namespace OpenAPIV3 {
7
- interface Document {
8
- 'x-tagGroups': {
9
- name: string;
10
- tags: string[];
11
- }[];
12
- }
13
- interface TagObject {
14
- 'x-displayName': string;
15
- }
16
- }
17
- }
18
- export type OpenApiSchemaDef = {
19
- request: Partial<Record<'body' | 'query' | 'params' | 'headers' | 'response', JsonSchema>>;
20
- response: Partial<Record<'response' | 'responseHeaders', {
21
- status: number;
22
- schema: JsonSchema;
23
- contentType: string;
24
- }[]>>;
25
- };
26
- export declare class OpenApi {
27
- #private;
28
- private config;
29
- constructor(config: ServerConfig);
30
- cleanPath(path: string): string;
31
- register(route: Route<any>, def: OpenApiSchemaDef): Promise<void>;
32
- router(): Router<import("./types").RouteDef>;
33
- }
@@ -1,202 +0,0 @@
1
- import { convert } from '@openapi-contrib/json-schema-to-openapi-schema';
2
- import { capitalize } from 'valleyed';
3
- import { Router } from './routes';
4
- export class OpenApi {
5
- config;
6
- #registeredTags = {};
7
- #registeredTagGroups = {};
8
- #baseOpenapiDoc;
9
- constructor(config) {
10
- this.config = config;
11
- this.#baseOpenapiDoc = {
12
- openapi: '3.0.0',
13
- info: {
14
- title: `${config.app.name} ${config.app.id}`,
15
- version: config.config.openapi.docsVersion ?? '',
16
- },
17
- servers: config.config.openapi.docsBaseUrl?.map((url) => ({ url })),
18
- paths: {},
19
- components: {
20
- schemas: {},
21
- securitySchemes: {
22
- Authorization: {
23
- type: 'apiKey',
24
- name: 'authorization',
25
- in: 'header',
26
- },
27
- RefreshToken: {
28
- type: 'apiKey',
29
- name: 'x-refresh-token',
30
- in: 'header',
31
- },
32
- ApiKey: {
33
- type: 'apiKey',
34
- name: 'x-api-key',
35
- in: 'header',
36
- },
37
- },
38
- },
39
- tags: [],
40
- 'x-tagGroups': [],
41
- };
42
- }
43
- cleanPath(path) {
44
- let cleaned = path.replace(/(\/\s*)+/g, '/');
45
- if (!cleaned.startsWith('/'))
46
- cleaned = `/${cleaned}`;
47
- if (cleaned !== '/' && cleaned.endsWith('/'))
48
- cleaned = cleaned.slice(0, -1);
49
- return cleaned;
50
- }
51
- async register(route, def) {
52
- if (route.hide)
53
- return;
54
- const tag = this.#buildTag(route.groups ?? []);
55
- const cleanPath = this.cleanPath(route.path);
56
- const operationId = `(${route.method.toUpperCase()}) ${cleanPath}`;
57
- await this.#addRouteToOpenApiDoc(cleanPath, route.method.toLowerCase(), def, {
58
- operationId,
59
- summary: route.title ?? cleanPath,
60
- description: route.descriptions?.join('\n\n'),
61
- tags: tag ? [tag] : undefined,
62
- security: route.security,
63
- });
64
- }
65
- async #addRouteToOpenApiDoc(path, method, def, methodObj) {
66
- if (def.response.response?.length) {
67
- methodObj.responses ??= {};
68
- for (const resp of def.response.response) {
69
- methodObj.responses[resp.status] ??= { description: '', content: {} };
70
- const res = methodObj.responses[resp.status];
71
- res.content[resp.contentType] = { schema: await convert(this.#visit(resp.schema)) };
72
- }
73
- }
74
- if (def.response.responseHeaders?.length) {
75
- methodObj.responses ??= {};
76
- for (const resp of def.response.responseHeaders) {
77
- methodObj.responses[resp.status] ??= { description: '', content: {} };
78
- methodObj.responses[resp.status];
79
- const res = methodObj.responses[resp.status];
80
- res.headers = { schema: (await convert(this.#visit(resp.schema))) };
81
- }
82
- }
83
- if (def.request.body)
84
- methodObj.requestBody = {
85
- required: true,
86
- content: {
87
- 'application/json': { schema: await convert(this.#visit(def.request.body)) },
88
- },
89
- };
90
- const parameters = [];
91
- const addParams = async (location, schema) => {
92
- if (!schema)
93
- return;
94
- const flat = this.#flattenForParameters(schema);
95
- for (const schema of flat) {
96
- if (!schema.properties)
97
- continue;
98
- for (const [name, value] of Object.entries(schema.properties))
99
- parameters.push({
100
- name,
101
- in: location,
102
- schema: await convert(this.#visit(value)),
103
- required: (schema.required || []).includes(name),
104
- });
105
- }
106
- };
107
- await Promise.all([
108
- addParams('query', def.request.query),
109
- addParams('path', def.request.params),
110
- addParams('header', def.request.headers),
111
- ]);
112
- if (parameters.length)
113
- methodObj.parameters = parameters;
114
- const base = this.#baseOpenapiDoc;
115
- if (!base.paths)
116
- base.paths = {};
117
- if (!base.paths[path])
118
- base.paths[path] = {};
119
- base.paths[path][method] = methodObj;
120
- }
121
- router() {
122
- const jsonPath = '/openapi.json';
123
- const router = new Router({ path: this.config.config.openapi.docsPath ?? '/', hide: true });
124
- router.get('/')((req) => req.res({ body: this.#html(`.${jsonPath}`), contentType: 'text/html' }));
125
- router.get(jsonPath)((req) => req.res({ body: this.#baseOpenapiDoc }));
126
- return router;
127
- }
128
- #flattenForParameters(node) {
129
- const { allOf, oneOf, anyOf, ...schema } = node;
130
- if (allOf)
131
- return allOf.flatMap((n) => this.#flattenForParameters(n));
132
- return [schema];
133
- }
134
- #visit(node) {
135
- if (!node || typeof node !== 'object')
136
- return node;
137
- if (typeof node.$refId === 'string') {
138
- const { $refId: id, ...rest } = node;
139
- const res = this.#visit(rest);
140
- if (this.#baseOpenapiDoc.components?.schemas) {
141
- this.#baseOpenapiDoc.components.schemas[id] = res;
142
- return { $ref: `#/components/schemas/${id}` };
143
- }
144
- else
145
- return res;
146
- }
147
- if (Array.isArray(node))
148
- return node.map((n) => this.#visit(n));
149
- return Object.fromEntries(Object.entries(node).map(([key, value]) => [key, this.#visit(value)]));
150
- }
151
- #buildTag(groups) {
152
- if (!groups.length)
153
- return undefined;
154
- const parsed = groups.map((g) => (typeof g === 'string' ? { name: g } : g));
155
- const name = parsed.map((g) => g.name).join(' > ');
156
- const displayName = parsed.at(-1)?.name ?? '';
157
- const description = parsed
158
- .map((g) => g.description?.trim() ?? '')
159
- .filter(Boolean)
160
- .join('\n\n\n\n');
161
- if (!this.#registeredTags[name]) {
162
- this.#registeredTags[name] = true;
163
- this.#baseOpenapiDoc.tags.push({ name, 'x-displayName': displayName, description });
164
- const tagGroups = parsed.slice(0, -1);
165
- const groupName = tagGroups.map((g) => g.name).join(' > ') || 'default';
166
- if (!this.#registeredTagGroups[groupName]) {
167
- const group = { name: groupName, tags: [] };
168
- this.#baseOpenapiDoc['x-tagGroups'].push(group);
169
- this.#registeredTagGroups[groupName] = group;
170
- }
171
- this.#registeredTagGroups[groupName].tags = [...new Set([...this.#registeredTagGroups[groupName].tags, name])];
172
- }
173
- return name;
174
- }
175
- #html(jsonPath) {
176
- const title = capitalize(`${this.config.app.name} ${this.config.app.id}`);
177
- return `
178
- <!doctype html>
179
- <html>
180
- <head>
181
- <title>${title}</title>
182
- <meta charset="utf-8" />
183
- <meta name="viewport" content="width=device-width, initial-scale=1" />
184
- <style>
185
- .darklight-reference {
186
- display: none;
187
- }
188
- </style>
189
- </head>
190
- <body>
191
- <script id="api-reference" data-url="${jsonPath}"></script>
192
- <script>
193
- const configuration = { theme: 'purple' };
194
- document.getElementById('api-reference').dataset.configuration = JSON.stringify(configuration);
195
- </script>
196
- <script src="https://cdn.jsdelivr.net/npm/@scalar/api-reference@1.28.33"></script>
197
- </body>
198
- </html>
199
- `;
200
- }
201
- }
202
- //# sourceMappingURL=openapi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../src/server/openapi.ts"],"names":[],"mappings":"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"}
@@ -1,74 +0,0 @@
1
- import { PipeOutput, v } from 'valleyed';
2
- import { BaseApiKeysUtility, BaseTokensUtility } from './requests-auth';
3
- import { EventBus } from '../events';
4
- import { Instance } from '../instance';
5
- export declare const serverPipe: v.Pipe<{
6
- type: "fastify" | "express";
7
- port: number;
8
- publicPath: string | undefined;
9
- healthPath: string | undefined;
10
- openapi: {
11
- docsVersion: string | undefined;
12
- docsBaseUrl: string[] | undefined;
13
- docsPath: string | undefined;
14
- } | undefined;
15
- requests: {
16
- log: boolean | undefined;
17
- paginationDefaultLimit: number | undefined;
18
- maxFileUploadSizeInMb: number | undefined;
19
- rateLimit: {
20
- enabled: boolean | undefined;
21
- periodInMs: number | undefined;
22
- limit: number | undefined;
23
- } | undefined;
24
- slowdown: {
25
- enabled: boolean | undefined;
26
- periodInMs: number | undefined;
27
- delayAfter: number | undefined;
28
- delayInMs: number | undefined;
29
- } | undefined;
30
- } | undefined;
31
- requestsAuth: {
32
- tokens: BaseTokensUtility | undefined;
33
- apiKey: BaseApiKeysUtility | undefined;
34
- } | undefined;
35
- }, {
36
- type: "fastify" | "express";
37
- port: number;
38
- publicPath: string | undefined;
39
- healthPath: string | undefined;
40
- openapi: {
41
- docsVersion: string;
42
- docsBaseUrl: string[];
43
- docsPath: string;
44
- };
45
- requests: {
46
- log: boolean;
47
- paginationDefaultLimit: number;
48
- maxFileUploadSizeInMb: number;
49
- rateLimit: {
50
- enabled: boolean;
51
- periodInMs: number;
52
- limit: number;
53
- };
54
- slowdown: {
55
- enabled: boolean;
56
- periodInMs: number;
57
- delayAfter: number;
58
- delayInMs: number;
59
- };
60
- };
61
- requestsAuth: {
62
- tokens: BaseTokensUtility | undefined;
63
- apiKey: BaseApiKeysUtility | undefined;
64
- };
65
- }, any>;
66
- export type ServerConfig = {
67
- config: PipeOutput<typeof serverPipe>;
68
- app: {
69
- id: string;
70
- name: string;
71
- };
72
- log: Instance<any, any>['log'];
73
- eventBus?: EventBus;
74
- };
@@ -1,34 +0,0 @@
1
- import { v } from 'valleyed';
2
- import { BaseApiKeysUtility, BaseTokensUtility } from './requests-auth';
3
- export const serverPipe = v.object({
4
- type: v.in(['fastify', 'express']),
5
- port: v.number(),
6
- publicPath: v.optional(v.string()),
7
- healthPath: v.optional(v.string()),
8
- openapi: v.defaults(v.object({
9
- docsVersion: v.defaults(v.string(), '1.0.0'),
10
- docsBaseUrl: v.defaults(v.array(v.string()), ['/']),
11
- docsPath: v.defaults(v.string(), '/__docs'),
12
- }), {}),
13
- requests: v.defaults(v.object({
14
- log: v.defaults(v.boolean(), true),
15
- paginationDefaultLimit: v.defaults(v.number(), 100),
16
- maxFileUploadSizeInMb: v.defaults(v.number(), 500),
17
- rateLimit: v.defaults(v.object({
18
- enabled: v.defaults(v.boolean(), false),
19
- periodInMs: v.defaults(v.number(), 60 * 60 * 1000),
20
- limit: v.defaults(v.number(), 5000),
21
- }), {}),
22
- slowdown: v.defaults(v.object({
23
- enabled: v.defaults(v.boolean(), false),
24
- periodInMs: v.defaults(v.number(), 10 * 60 * 1000),
25
- delayAfter: v.defaults(v.number(), 2000),
26
- delayInMs: v.defaults(v.number(), 500),
27
- }), {}),
28
- }), {}),
29
- requestsAuth: v.defaults(v.object({
30
- tokens: v.optional(v.instanceOf(BaseTokensUtility)),
31
- apiKey: v.optional(v.instanceOf(BaseApiKeysUtility)),
32
- }), {}),
33
- });
34
- //# sourceMappingURL=pipes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pipes.js","sourceRoot":"","sources":["../../src/server/pipes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,CAAC,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAIvE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,SAAS,CAAU,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAClB,CAAC,CAAC,MAAM,CAAC;QACR,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC;QAC5C,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACnD,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,SAAS,CAAC;KAC3C,CAAC,EACF,EAAE,CACF;IACD,QAAQ,EAAE,CAAC,CAAC,QAAQ,CACnB,CAAC,CAAC,MAAM,CAAC;QACR,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC;QAClC,sBAAsB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC;QACnD,qBAAqB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC;QAClD,SAAS,EAAE,CAAC,CAAC,QAAQ,CACpB,CAAC,CAAC,MAAM,CAAC;YACR,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC;YACvC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YAClD,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC;SACnC,CAAC,EACF,EAAE,CACF;QACD,QAAQ,EAAE,CAAC,CAAC,QAAQ,CACnB,CAAC,CAAC,MAAM,CAAC;YACR,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC;YACvC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YAClD,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC;YACxC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC;SACtC,CAAC,EACF,EAAE,CACF;KACD,CAAC,EACF,EAAE,CACF;IACD,YAAY,EAAE,CAAC,CAAC,QAAQ,CACvB,CAAC,CAAC,MAAM,CAAC;QACR,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QACnD,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;KACpD,CAAC,EACF,EAAE,CACF;CACD,CAAC,CAAA"}
@@ -1,4 +0,0 @@
1
- import type { AuthUser } from '../../types';
2
- export declare abstract class BaseApiKeysUtility {
3
- abstract verifyApiKey(apiKey: string): Promise<AuthUser>;
4
- }
@@ -1,3 +0,0 @@
1
- export class BaseApiKeysUtility {
2
- }
3
- //# sourceMappingURL=apiKeys.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"apiKeys.js","sourceRoot":"","sources":["../../../src/server/requests-auth/apiKeys.ts"],"names":[],"mappings":"AAEA,MAAM,OAAgB,kBAAkB;CAEvC"}
@@ -1,2 +0,0 @@
1
- export * from './apiKeys';
2
- export * from './tokens';
@@ -1,3 +0,0 @@
1
- export * from './apiKeys';
2
- export * from './tokens';
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/requests-auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA"}
@@ -1,44 +0,0 @@
1
- import type { AuthUser, RefreshUser } from '../../types';
2
- export declare abstract class BaseTokensUtility {
3
- abstract createAccessToken(payload: AuthUser): Promise<string>;
4
- abstract createRefreshToken(payload: RefreshUser): Promise<string>;
5
- abstract verifyAccessToken(token: string): Promise<AuthUser>;
6
- abstract verifyRefreshToken(token: string): Promise<RefreshUser>;
7
- abstract retrieveAccessTokenFor(userId: string): Promise<string | null>;
8
- abstract retrieveRefreshTokenFor(userId: string): Promise<string | null>;
9
- abstract deleteAccessTokenFor(userId: string): Promise<void>;
10
- abstract deleteRefreshTokenFor(userId: string): Promise<void>;
11
- extractAccessTokenValue(headerValue: string): string;
12
- exchangeTokens(tokens: {
13
- accessToken: string;
14
- refreshToken: string;
15
- }, getPayload: (id: string) => Promise<{
16
- access: AuthUser;
17
- refresh: RefreshUser;
18
- }>): Promise<{
19
- accessToken: string;
20
- refreshToken: string;
21
- }>;
22
- }
23
- type CacheTokensUtilityOptions = {
24
- accessTokenKey: string;
25
- refreshTokenKey: string;
26
- accessTokenTTL: number;
27
- refreshTokenTTL: number;
28
- accessTokenPrefix: string;
29
- refreshTokenPrefix: string;
30
- };
31
- export declare class CacheTokensUtility extends BaseTokensUtility {
32
- #private;
33
- private options;
34
- constructor(options?: Partial<CacheTokensUtilityOptions>);
35
- createAccessToken(payload: AuthUser): Promise<string>;
36
- createRefreshToken(payload: RefreshUser): Promise<string>;
37
- verifyAccessToken(authHeader: string): Promise<AuthUser>;
38
- verifyRefreshToken(token: string): Promise<RefreshUser>;
39
- retrieveAccessTokenFor(userId: string): Promise<string | null>;
40
- retrieveRefreshTokenFor(userId: string): Promise<string | null>;
41
- deleteAccessTokenFor(userId: string): Promise<void>;
42
- deleteRefreshTokenFor(userId: string): Promise<void>;
43
- }
44
- export {};