@forklaunch/core 0.1.1 → 0.1.2

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 (87) hide show
  1. package/.prettierignore +2 -0
  2. package/.prettierrc +6 -0
  3. package/dist/cache/index.d.ts +3 -0
  4. package/dist/cache/index.js +20 -0
  5. package/dist/cache/index.js.map +1 -0
  6. package/dist/cache/interfaces/ttlCache.interface.d.ts +1 -1
  7. package/dist/cache/redisTtlCache.d.ts +3 -2
  8. package/dist/cache/redisTtlCache.js +2 -2
  9. package/dist/cache/redisTtlCache.js.map +1 -1
  10. package/dist/cache/types/{ttlCacheRecord.js → ttlCacheRecord.types.js} +1 -1
  11. package/dist/cache/types/ttlCacheRecord.types.js.map +1 -0
  12. package/dist/controllers/index.d.ts +1 -0
  13. package/dist/controllers/index.js +18 -0
  14. package/dist/controllers/index.js.map +1 -0
  15. package/dist/database/index.d.ts +1 -0
  16. package/dist/database/index.js +18 -0
  17. package/dist/database/index.js.map +1 -0
  18. package/dist/database/mikro/models/entities/base.entity.js +1 -1
  19. package/dist/entityMapper/index.d.ts +2 -0
  20. package/dist/entityMapper/index.js +19 -0
  21. package/dist/entityMapper/index.js.map +1 -0
  22. package/dist/entityMapper/interfaces/entityMapper.interface.d.ts +3 -3
  23. package/dist/entityMapper/models/baseEntityMapper.model.d.ts +23 -23
  24. package/dist/entityMapper/models/baseEntityMapper.model.js +15 -15
  25. package/dist/entityMapper/models/baseEntityMapper.model.js.map +1 -1
  26. package/dist/entityMapper/models/requestEntityMapper.model.d.ts +17 -23
  27. package/dist/entityMapper/models/requestEntityMapper.model.js +13 -19
  28. package/dist/entityMapper/models/requestEntityMapper.model.js.map +1 -1
  29. package/dist/entityMapper/models/responseEntityMapper.model.d.ts +15 -16
  30. package/dist/entityMapper/models/responseEntityMapper.model.js +8 -8
  31. package/dist/entityMapper/models/responseEntityMapper.model.js.map +1 -1
  32. package/dist/entityMapper/types/entityMapper.types.d.ts +3 -22
  33. package/dist/http/index.d.ts +2 -0
  34. package/dist/http/index.js +19 -0
  35. package/dist/http/index.js.map +1 -0
  36. package/dist/http/middlewares/index.d.ts +2 -0
  37. package/dist/http/middlewares/index.js +19 -0
  38. package/dist/http/middlewares/index.js.map +1 -0
  39. package/dist/http/middlewares/request.middleware.d.ts +11 -11
  40. package/dist/http/middlewares/request.middleware.js +23 -21
  41. package/dist/http/middlewares/request.middleware.js.map +1 -1
  42. package/dist/http/middlewares/response.middleware.d.ts +3 -3
  43. package/dist/http/middlewares/response.middleware.js +7 -3
  44. package/dist/http/middlewares/response.middleware.js.map +1 -1
  45. package/dist/http/types/api.types.d.ts +16 -12
  46. package/dist/http/types/index.d.ts +2 -0
  47. package/dist/http/types/index.js +19 -0
  48. package/dist/http/types/index.js.map +1 -0
  49. package/dist/http/types/primitive.types.d.ts +14 -13
  50. package/dist/index.d.ts +6 -1
  51. package/dist/index.js +20 -5
  52. package/dist/index.js.map +1 -1
  53. package/dist/services/index.d.ts +1 -0
  54. package/dist/services/index.js +18 -0
  55. package/dist/services/index.js.map +1 -0
  56. package/dist/services/interfaces/baseService.d.ts +1 -1
  57. package/dist/tests/{dto.test.js → entityMapper.test.js} +10 -32
  58. package/dist/tests/entityMapper.test.js.map +1 -0
  59. package/dist/tests/http.middleware.test.d.ts +1 -0
  60. package/dist/tests/http.middleware.test.js +79 -0
  61. package/dist/tests/http.middleware.test.js.map +1 -0
  62. package/dist/tests/redisTtlCache.test.js +32 -15
  63. package/dist/tests/redisTtlCache.test.js.map +1 -1
  64. package/entityMapper/index.ts +2 -0
  65. package/entityMapper/interfaces/entityMapper.interface.ts +11 -11
  66. package/entityMapper/models/baseEntityMapper.model.ts +90 -73
  67. package/entityMapper/models/requestEntityMapper.model.ts +96 -75
  68. package/entityMapper/models/responseEntityMapper.model.ts +83 -62
  69. package/entityMapper/types/entityMapper.types.ts +6 -23
  70. package/http/index.ts +2 -0
  71. package/http/middlewares/index.ts +2 -0
  72. package/http/middlewares/request.middleware.ts +103 -55
  73. package/http/middlewares/response.middleware.ts +56 -31
  74. package/http/types/api.types.ts +43 -25
  75. package/http/types/index.ts +2 -0
  76. package/http/types/primitive.types.ts +65 -44
  77. package/index.ts +6 -5
  78. package/jest.config.ts +2 -2
  79. package/package.json +13 -4
  80. package/tests/entityMapper.test.ts +219 -0
  81. package/tests/http.middleware.test.ts +99 -0
  82. package/tests/redisTtlCache.test.ts +49 -29
  83. package/dist/cache/types/ttlCacheRecord.js.map +0 -1
  84. package/dist/tests/dto.test.js.map +0 -1
  85. package/tests/dto.test.ts +0 -235
  86. /package/dist/cache/types/{ttlCacheRecord.d.ts → ttlCacheRecord.types.d.ts} +0 -0
  87. /package/dist/tests/{dto.test.d.ts → entityMapper.test.d.ts} +0 -0
@@ -1,28 +1,9 @@
1
- import { Schema, SchemaCatchall, ValidSchemaObject } from "@forklaunch/validator/";
2
- import { SchemaValidator } from "@forklaunch/validator/interfaces";
3
- import { UnboxedObjectSchema } from "@forklaunch/validator/types";
4
- import { BaseEntityMapper } from "../models/baseEntityMapper.model";
1
+ import { AnySchemaValidator } from '@forklaunch/validator';
2
+ import { UnboxedObjectSchema } from '@forklaunch/validator/types';
5
3
  /**
6
4
  * Type representing a schema validator object for an entity mapper.
7
5
  *
8
6
  * @template SV - A type that extends SchemaValidator.
9
7
  * @typedef {ValidSchemaObject<SV> | UnboxedObjectSchema<SchemaCatchall<SV>> & {}} EntityMapperSchemaValidatorObject
10
8
  */
11
- export type EntityMapperSchemaValidatorObject<SV extends SchemaValidator> = ValidSchemaObject<SV> | UnboxedObjectSchema<SchemaCatchall<SV>>;
12
- /**
13
- * Type representing the static schema of an entity mapper.
14
- *
15
- * @template T - A type that extends BaseEntityMapper with a schema property.
16
- * @typedef {Schema<T['schema'], T['_SV']> & {}} EntityMapperStaticSchema
17
- */
18
- export type EntityMapperStaticSchema<T extends BaseEntityMapper<any> & {
19
- schema: any;
20
- }> = Schema<T['schema'], T['_SV']>;
21
- /**
22
- * Type representing the schema of an entity mapper.
23
- *
24
- * @template T - A type that extends ValidSchemaObject or UnboxedObjectSchema with SchemaCatchall.
25
- * @template SV - A type that extends SchemaValidator.
26
- * @typedef {Schema<T, SV> & {}} EntityMapperSchema
27
- */
28
- export type EntityMapperSchema<T extends ValidSchemaObject<SV> | UnboxedObjectSchema<SchemaCatchall<SV>>, SV extends SchemaValidator> = Schema<T, SV>;
9
+ export type EntityMapperSchemaValidatorObject<SV extends AnySchemaValidator> = SV['_ValidSchemaObject'] | UnboxedObjectSchema<SV>;
@@ -0,0 +1,2 @@
1
+ export * from './middlewares';
2
+ export * from './types';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./middlewares"), exports);
18
+ __exportStar(require("./types"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../http/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,0CAAwB"}
@@ -0,0 +1,2 @@
1
+ export * from './request.middleware';
2
+ export * from './response.middleware';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./request.middleware"), exports);
18
+ __exportStar(require("./response.middleware"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../http/middlewares/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,wDAAsC"}
@@ -1,11 +1,11 @@
1
- import { SchemaValidator } from "@forklaunch/validator/interfaces";
2
- import { ForklaunchNextFunction, ForklaunchRequest, ForklaunchResponse } from "../types/api.types";
3
- import { HttpContractDetails, PathParamHttpContractDetails, StringOnlyObject } from "../types/primitive.types";
4
- export declare function createRequestContext<SV extends SchemaValidator, Request extends ForklaunchRequest<SV>, Response extends ForklaunchResponse, NextFunction extends ForklaunchNextFunction>(schemaValidator: SV): (req: Request, res: Response, next?: NextFunction) => void;
5
- export declare function enrichRequestDetails<SV extends SchemaValidator, Request extends ForklaunchRequest<SV>, Response extends ForklaunchResponse, NextFunction extends ForklaunchNextFunction>(contractDetails: PathParamHttpContractDetails<SV> | HttpContractDetails<SV>): (req: Request, _res: Response, next?: NextFunction) => void;
6
- export declare function preHandlerParse<SV extends SchemaValidator>(schemaValidator: SV, object: unknown, schemaInput?: StringOnlyObject<SV>): 400 | undefined;
7
- export declare function parseRequestParams<SV extends SchemaValidator, Request extends ForklaunchRequest<SV>, Response extends ForklaunchResponse, NextFunction extends ForklaunchNextFunction>(req: Request, res: Response, next?: NextFunction): void;
8
- export declare function parseRequestBody<SV extends SchemaValidator, Request extends ForklaunchRequest<SV>, Response extends ForklaunchResponse, NextFunction extends ForklaunchNextFunction>(req: Request, res: Response, next?: NextFunction): void;
9
- export declare function parseRequestHeaders<SV extends SchemaValidator, Request extends ForklaunchRequest<SV>, Response extends ForklaunchResponse, NextFunction extends ForklaunchNextFunction>(req: Request, res: Response, next?: NextFunction): void;
10
- export declare function parseRequestQuery<SV extends SchemaValidator, Request extends ForklaunchRequest<SV>, Response extends ForklaunchResponse, NextFunction extends ForklaunchNextFunction>(req: Request, res: Response, next?: NextFunction): void;
11
- export declare function parseRequestAuth<SV extends SchemaValidator, Request extends ForklaunchRequest<SV>, Response extends ForklaunchResponse, NextFunction extends ForklaunchNextFunction>(req: Request, res: Response, next?: NextFunction): Promise<void>;
1
+ import { AnySchemaValidator, SchemaValidator } from '@forklaunch/validator';
2
+ import { ForklaunchNextFunction, ForklaunchRequest, ForklaunchResponse } from '../types/api.types';
3
+ import { HttpContractDetails, PathParamHttpContractDetails, StringOnlyObject } from '../types/primitive.types';
4
+ export declare function createRequestContext<SV extends AnySchemaValidator, Request extends ForklaunchRequest<SV>, Response extends ForklaunchResponse, NextFunction extends ForklaunchNextFunction>(schemaValidator: SV): (req: Request, res: Response, next?: NextFunction) => void;
5
+ export declare function enrichRequestDetails<SV extends AnySchemaValidator, Request extends ForklaunchRequest<SV>, Response extends ForklaunchResponse, NextFunction extends ForklaunchNextFunction>(contractDetails: PathParamHttpContractDetails<SV> | HttpContractDetails<SV>): (req: Request, _res: Response, next?: NextFunction) => void;
6
+ export declare function preHandlerParse<SV extends AnySchemaValidator>(schemaValidator: SchemaValidator, object: unknown, schemaInput?: StringOnlyObject<SV>): 400 | undefined;
7
+ export declare function parseRequestParams<SV extends AnySchemaValidator, Request extends ForklaunchRequest<SV>, Response extends ForklaunchResponse, NextFunction extends ForklaunchNextFunction>(req: Request, res: Response, next?: NextFunction): void;
8
+ export declare function parseRequestBody<SV extends AnySchemaValidator, Request extends ForklaunchRequest<SV>, Response extends ForklaunchResponse, NextFunction extends ForklaunchNextFunction>(req: Request, res: Response, next?: NextFunction): void;
9
+ export declare function parseRequestHeaders<SV extends AnySchemaValidator, Request extends ForklaunchRequest<SV>, Response extends ForklaunchResponse, NextFunction extends ForklaunchNextFunction>(req: Request, res: Response, next?: NextFunction): void;
10
+ export declare function parseRequestQuery<SV extends AnySchemaValidator, Request extends ForklaunchRequest<SV>, Response extends ForklaunchResponse, NextFunction extends ForklaunchNextFunction>(req: Request, res: Response, next?: NextFunction): void;
11
+ export declare function parseRequestAuth<SV extends AnySchemaValidator, Request extends ForklaunchRequest<SV>, Response extends ForklaunchResponse, NextFunction extends ForklaunchNextFunction>(req: Request, res: Response, next?: NextFunction): Promise<void>;
@@ -69,23 +69,23 @@ function preHandlerParse(schemaValidator, object, schemaInput) {
69
69
  function parseRequestParams(req, res, next) {
70
70
  const params = req.contractDetails.params;
71
71
  if (preHandlerParse(req.schemaValidator, req.params, params) === 400) {
72
- res.status(400).send("Invalid request parameters.");
72
+ res.status(400).send('Invalid request parameters.');
73
73
  if (next) {
74
- next(new Error("Invalid request parameters."));
74
+ next(new Error('Invalid request parameters.'));
75
75
  }
76
76
  }
77
- ;
78
77
  if (next) {
79
78
  next();
80
79
  }
81
80
  }
82
81
  function parseRequestBody(req, res, next) {
83
82
  if (req.headers['content-type'] === 'application/json') {
84
- const body = (req.schemaValidator, req.contractDetails).body;
85
- if (preHandlerParse(req.body, body) === 400) {
86
- res.status(400).send("Invalid request body.");
83
+ const body = (req.schemaValidator,
84
+ req.contractDetails).body;
85
+ if (preHandlerParse(req.schemaValidator, req.body, body) === 400) {
86
+ res.status(400).send('Invalid request body.');
87
87
  if (next) {
88
- next(new Error("Invalid request body."));
88
+ next(new Error('Invalid request body.'));
89
89
  }
90
90
  }
91
91
  }
@@ -96,9 +96,9 @@ function parseRequestBody(req, res, next) {
96
96
  function parseRequestHeaders(req, res, next) {
97
97
  const headers = req.contractDetails.requestHeaders;
98
98
  if (preHandlerParse(req.schemaValidator, req.headers, headers) === 400) {
99
- res.status(400).send("Invalid request headers.");
99
+ res.status(400).send('Invalid request headers.');
100
100
  if (next) {
101
- next(new Error("Invalid request headers."));
101
+ next(new Error('Invalid request headers.'));
102
102
  }
103
103
  }
104
104
  if (next) {
@@ -108,9 +108,9 @@ function parseRequestHeaders(req, res, next) {
108
108
  function parseRequestQuery(req, res, next) {
109
109
  const query = req.contractDetails.query;
110
110
  if (preHandlerParse(req.schemaValidator, req.query, query) === 400) {
111
- res.status(400).send("Invalid request query.");
111
+ res.status(400).send('Invalid request query.');
112
112
  if (next) {
113
- next(new Error("Invalid request query."));
113
+ next(new Error('Invalid request query.'));
114
114
  }
115
115
  }
116
116
  if (next) {
@@ -119,12 +119,12 @@ function parseRequestQuery(req, res, next) {
119
119
  }
120
120
  async function checkAuthorizationToken(authorizationMethod, authorizationString) {
121
121
  if (!authorizationString) {
122
- return [401, "No Authorization token provided."];
122
+ return [401, 'No Authorization token provided.'];
123
123
  }
124
124
  switch (authorizationMethod) {
125
125
  case 'jwt': {
126
126
  if (!authorizationString.startsWith('Bearer ')) {
127
- return [401, "Invalid Authorization token format."];
127
+ return [401, 'Invalid Authorization token format.'];
128
128
  }
129
129
  try {
130
130
  const decodedJwt = await jose.jwtVerify(authorizationString.split(' ')[1], new TextEncoder().encode(process.env.JWT_SECRET || 'your-256-bit-secret'));
@@ -132,11 +132,11 @@ async function checkAuthorizationToken(authorizationMethod, authorizationString)
132
132
  }
133
133
  catch (error) {
134
134
  console.error(error);
135
- return [403, "Invalid Authorization token."];
135
+ return [403, 'Invalid Authorization token.'];
136
136
  }
137
137
  }
138
138
  default:
139
- return [401, "Invalid Authorization method."];
139
+ return [401, 'Invalid Authorization method.'];
140
140
  }
141
141
  }
142
142
  function mapRoles(authorizationType, authorizationToken) {
@@ -158,20 +158,22 @@ async function parseRequestAuth(req, res, next) {
158
158
  // TODO: Implement role and permission checking
159
159
  const permissionSlugs = mapPermissions(auth.method, req.headers.authorization);
160
160
  const roles = mapRoles(auth.method, req.headers.authorization);
161
- const permissionErrorMessage = "User does not have sufficient permissions to perform action.";
162
- const roleErrorMessage = "User does not have correct role to perform action.";
161
+ const permissionErrorMessage = 'User does not have sufficient permissions to perform action.';
162
+ const roleErrorMessage = 'User does not have correct role to perform action.';
163
163
  // this is wrong, we need to check if any of the user's permissions are in the allowed permissions, while checking that any of the permissions is not in the forbidden slugs
164
164
  // currently this is checking if any of the user's permissions are NOT in the allowed permissions
165
- permissionSlugs.forEach(permissionSlug => {
166
- if (!req.contractDetails.auth?.allowedSlugs?.has(permissionSlug) || req.contractDetails.auth?.forbiddenSlugs?.has(permissionSlug)) {
165
+ permissionSlugs.forEach((permissionSlug) => {
166
+ if (!req.contractDetails.auth?.allowedSlugs?.has(permissionSlug) ||
167
+ req.contractDetails.auth?.forbiddenSlugs?.has(permissionSlug)) {
167
168
  res.status(403).send(permissionErrorMessage);
168
169
  if (next) {
169
170
  next(new Error(permissionErrorMessage));
170
171
  }
171
172
  }
172
173
  });
173
- roles.forEach(role => {
174
- if (!req.contractDetails.auth?.allowedRoles?.has(role) || req.contractDetails.auth?.forbiddenRoles?.has(role)) {
174
+ roles.forEach((role) => {
175
+ if (!req.contractDetails.auth?.allowedRoles?.has(role) ||
176
+ req.contractDetails.auth?.forbiddenRoles?.has(role)) {
175
177
  res.status(403).send(roleErrorMessage);
176
178
  if (next) {
177
179
  next(new Error(roleErrorMessage));
@@ -1 +1 @@
1
- {"version":3,"file":"request.middleware.js","sourceRoot":"","sources":["../../../http/middlewares/request.middleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request.middleware.js","sourceRoot":"","sources":["../../../http/middlewares/request.middleware.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { SchemaValidator } from "@forklaunch/validator/interfaces";
2
- import { ForklaunchNextFunction, ForklaunchRequest, ForklaunchResponse } from "../types/api.types";
3
- export declare function parseResponse<SV extends SchemaValidator, Request extends ForklaunchRequest<SV>, Response extends ForklaunchResponse, NextFunction extends ForklaunchNextFunction>(req: Request, res: Response, next?: NextFunction): void;
1
+ import { AnySchemaValidator } from '@forklaunch/validator';
2
+ import { ForklaunchNextFunction, ForklaunchRequest, ForklaunchResponse } from '../types/api.types';
3
+ export declare function parseResponse<SV extends AnySchemaValidator, Request extends ForklaunchRequest<SV>, Response extends ForklaunchResponse, NextFunction extends ForklaunchNextFunction>(req: Request, res: Response, next?: NextFunction): void;
@@ -2,7 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseResponse = parseResponse;
4
4
  function checkAnyValidation(contractDetails) {
5
- return contractDetails.body || contractDetails.params || contractDetails.requestHeaders || contractDetails.query;
5
+ return (contractDetails.body ||
6
+ contractDetails.params ||
7
+ contractDetails.requestHeaders ||
8
+ contractDetails.query);
6
9
  }
7
10
  function parseResponse(req, res, next) {
8
11
  if (req.contractDetails.responseHeaders) {
@@ -11,14 +14,15 @@ function parseResponse(req, res, next) {
11
14
  }
12
15
  if (res.statusCode === 500 ||
13
16
  (checkAnyValidation(req.contractDetails) && res.statusCode === 400) ||
14
- (req.contractDetails.auth && (res.statusCode === 401 || res.statusCode === 403))) {
17
+ (req.contractDetails.auth &&
18
+ (res.statusCode === 401 || res.statusCode === 403))) {
19
+ req.schemaValidator.validate(req.schemaValidator.string, res.bodyData);
15
20
  return;
16
21
  }
17
22
  if (Object.prototype.hasOwnProperty.call(!req.contractDetails.responses, res.statusCode)) {
18
23
  if (next) {
19
24
  next(new Error(`Response code ${res.statusCode} not defined in contract.`));
20
25
  }
21
- ;
22
26
  }
23
27
  const schema = req.schemaValidator.schemify(req.contractDetails.responses[res.statusCode]);
24
28
  req.schemaValidator.validate(schema, res.bodyData);
@@ -1 +1 @@
1
- {"version":3,"file":"response.middleware.js","sourceRoot":"","sources":["../../../http/middlewares/response.middleware.ts"],"names":[],"mappings":";;AAQA,sCA6BC;AAjCD,SAAS,kBAAkB,CAA6B,eAAwC;IAC5F,OAAO,eAAe,CAAC,IAAI,IAAI,eAAe,CAAC,MAAM,IAAI,eAAe,CAAC,cAAc,IAAI,eAAe,CAAC,KAAK,CAAC;AACrH,CAAC;AAED,SAAgB,aAAa,CAK1B,GAAY,EAAE,GAAa,EAAE,IAAmB;IAC/C,IAAI,GAAG,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;QACjF,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG;QACtB,CAAC,kBAAkB,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC;QACnE,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,KAAK,GAAG,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,EAClF,CAAC;QACC,OAAO;IACX,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACvF,IAAI,IAAI,EAAE,CAAC;YACP,IAAI,CAAC,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC,UAAU,2BAA2B,CAAC,CAAC,CAAC;QAChF,CAAC;QAAA,CAAC;IACN,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3F,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEnD,IAAI,IAAI,EAAE,CAAC;QACP,IAAI,EAAE,CAAC;IACX,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"response.middleware.js","sourceRoot":"","sources":["../../../http/middlewares/response.middleware.ts"],"names":[],"mappings":";;AAmBA,sCA2CC;AAtDD,SAAS,kBAAkB,CACzB,eAAwC;IAExC,OAAO,CACL,eAAe,CAAC,IAAI;QACpB,eAAe,CAAC,MAAM;QACtB,eAAe,CAAC,cAAc;QAC9B,eAAe,CAAC,KAAK,CACtB,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAK3B,GAAY,EAAE,GAAa,EAAE,IAAmB;IAChD,IAAI,GAAG,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,GAAG,CAAC,eAAe,CAAC,QAAQ,CACzC,GAAG,CAAC,eAAe,CAAC,eAAe,CACpC,CAAC;QACF,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,IACE,GAAG,CAAC,UAAU,KAAK,GAAG;QACtB,CAAC,kBAAkB,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC;QACnE,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI;YACvB,CAAC,GAAG,CAAC,UAAU,KAAK,GAAG,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,EACrD,CAAC;QACD,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvE,OAAO;IACT,CAAC;IACD,IACE,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAClC,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,EAC9B,GAAG,CAAC,UAAU,CACf,EACD,CAAC;QACD,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CACF,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC,UAAU,2BAA2B,CAAC,CACtE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,eAAe,CAAC,QAAQ,CACzC,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAC9C,CAAC;IACF,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEnD,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,EAAE,CAAC;IACT,CAAC;AACH,CAAC"}
@@ -1,24 +1,28 @@
1
- import { Prettify } from "@forklaunch/common";
2
- import { Schema, SchemaCatchall, ValidSchemaObject } from "@forklaunch/validator";
3
- import { SchemaValidator } from "@forklaunch/validator/interfaces";
4
- import { IdiomaticSchema } from "@forklaunch/validator/types";
5
- import { IncomingHttpHeaders, OutgoingHttpHeader } from "http";
6
- import { ParsedQs } from "qs";
7
- import { HttpContractDetails, ParamsDictionary, PathParamHttpContractDetails } from "./primitive.types";
1
+ import { Prettify } from '@forklaunch/common';
2
+ import { AnySchemaValidator, Schema } from '@forklaunch/validator';
3
+ import { IdiomaticSchema, SchemaValidator } from '@forklaunch/validator/types';
4
+ import { IncomingHttpHeaders, OutgoingHttpHeader } from 'http';
5
+ import { ParsedQs } from 'qs';
6
+ import { HttpContractDetails, ParamsDictionary, PathParamHttpContractDetails } from './primitive.types';
8
7
  export interface RequestContext {
9
8
  correlationId: string;
10
9
  idempotencyKey?: string;
11
10
  }
12
- export interface ForklaunchRequest<SV extends SchemaValidator, P = ParamsDictionary, ReqBody = any, ReqQuery = ParsedQs, Headers = IncomingHttpHeaders> {
11
+ export interface ForklaunchRequest<SV extends AnySchemaValidator, P = ParamsDictionary, ReqBody = unknown, ReqQuery = ParsedQs, Headers = IncomingHttpHeaders> {
13
12
  context: Prettify<RequestContext>;
14
13
  contractDetails: HttpContractDetails<SV> | PathParamHttpContractDetails<SV>;
15
- schemaValidator: SV;
14
+ schemaValidator: SchemaValidator;
16
15
  params: P;
17
16
  headers: Headers;
18
17
  body: ReqBody;
19
18
  query: ReqQuery;
20
19
  }
21
- export interface ForklaunchResponse<ResBody = any, StatusCode = number> {
20
+ export interface ForklaunchResponse<ResBody = {
21
+ 400: unknown;
22
+ 401: unknown;
23
+ 403: unknown;
24
+ 500: unknown;
25
+ }, StatusCode = number> {
22
26
  bodyData: unknown;
23
27
  statusCode: StatusCode;
24
28
  corked: boolean;
@@ -43,7 +47,7 @@ export interface ForklaunchResponse<ResBody = any, StatusCode = number> {
43
47
  <T>(body?: ResBody): T;
44
48
  };
45
49
  }
46
- export type MapSchema<SV extends SchemaValidator, T extends IdiomaticSchema<SchemaCatchall<SV>> | ValidSchemaObject<SV>> = Schema<T, SV> extends infer U ? {
50
+ export type MapSchema<SV extends AnySchemaValidator, T extends IdiomaticSchema<SV> | SV['_ValidSchemaObject']> = Schema<T, SV> extends infer U ? {
47
51
  [key: string]: unknown;
48
52
  } extends U ? never : U : never;
49
- export type ForklaunchNextFunction = (err?: any) => void;
53
+ export type ForklaunchNextFunction = (err?: unknown) => void;
@@ -0,0 +1,2 @@
1
+ export * from './api.types';
2
+ export * from './primitive.types';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./api.types"), exports);
18
+ __exportStar(require("./primitive.types"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../http/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,oDAAkC"}
@@ -1,19 +1,20 @@
1
- import { SchemaCatchall, ValidSchemaObject } from "@forklaunch/validator";
2
- import { SchemaValidator } from "@forklaunch/validator/interfaces";
3
- import { UnboxedObjectSchema } from "@forklaunch/validator/types";
1
+ import { AnySchemaValidator } from '@forklaunch/validator';
2
+ import { UnboxedObjectSchema } from '@forklaunch/validator/types';
4
3
  export type ParamsDictionary = {
5
4
  [key: string]: string;
6
5
  };
7
- export type StringOnlyObject<SV extends SchemaValidator> = Omit<UnboxedObjectSchema<SchemaCatchall<SV>>, number | symbol>;
8
- export type NumberOnlyObject<SV extends SchemaValidator> = Omit<UnboxedObjectSchema<SchemaCatchall<SV>>, string | symbol>;
9
- export type BodyObject<SV extends SchemaValidator> = StringOnlyObject<SV> & unknown;
10
- export type ParamsObject<SV extends SchemaValidator> = StringOnlyObject<SV> & unknown;
11
- export type QueryObject<SV extends SchemaValidator> = StringOnlyObject<SV> & unknown;
12
- export type HeadersObject<SV extends SchemaValidator> = StringOnlyObject<SV> & unknown;
13
- export type ResponsesObject<SV extends SchemaValidator> = NumberOnlyObject<SV> & unknown;
14
- export type Body<SV extends SchemaValidator> = BodyObject<SV> | ValidSchemaObject<SV> | SchemaCatchall<SV>;
6
+ export type StringOnlyObject<SV extends AnySchemaValidator> = Omit<UnboxedObjectSchema<SV>, number | symbol>;
7
+ export type NumberOnlyObject<SV extends AnySchemaValidator> = Omit<UnboxedObjectSchema<SV>, string | symbol>;
8
+ export type BodyObject<SV extends AnySchemaValidator> = StringOnlyObject<SV> & unknown;
9
+ export type ParamsObject<SV extends AnySchemaValidator> = StringOnlyObject<SV> & unknown;
10
+ export type QueryObject<SV extends AnySchemaValidator> = StringOnlyObject<SV> & unknown;
11
+ export type HeadersObject<SV extends AnySchemaValidator> = StringOnlyObject<SV> & unknown;
12
+ export type ResponsesObject<SV extends AnySchemaValidator> = {
13
+ [key: number]: SV['_ValidSchemaObject'] | UnboxedObjectSchema<SV> | string | SV['string'];
14
+ } & unknown;
15
+ export type Body<SV extends AnySchemaValidator> = BodyObject<SV> | SV['_ValidSchemaObject'] | SV['_SchemaCatchall'];
15
16
  export type AuthMethod = 'jwt' | 'session';
16
- export interface PathParamHttpContractDetails<SV extends SchemaValidator, ParamSchemas extends ParamsObject<SV> = ParamsObject<SV>, ResponseSchemas extends ResponsesObject<SV> = ResponsesObject<SV>, QuerySchemas extends QueryObject<SV> = QueryObject<SV>> {
17
+ export interface PathParamHttpContractDetails<SV extends AnySchemaValidator, ParamSchemas extends ParamsObject<SV> = ParamsObject<SV>, ResponseSchemas extends ResponsesObject<SV> = ResponsesObject<SV>, QuerySchemas extends QueryObject<SV> = QueryObject<SV>> {
17
18
  name: string;
18
19
  summary: string;
19
20
  responses: ResponseSchemas;
@@ -29,7 +30,7 @@ export interface PathParamHttpContractDetails<SV extends SchemaValidator, ParamS
29
30
  forbiddenRoles?: Set<string>;
30
31
  };
31
32
  }
32
- export interface HttpContractDetails<SV extends SchemaValidator, ParamSchemas extends ParamsObject<SV> = ParamsObject<SV>, ResponseSchemas extends ResponsesObject<SV> = ResponsesObject<SV>, BodySchema extends Body<SV> = Body<SV>, QuerySchemas extends QueryObject<SV> = QueryObject<SV>> extends PathParamHttpContractDetails<SV, ParamSchemas, ResponseSchemas, QuerySchemas> {
33
+ export interface HttpContractDetails<SV extends AnySchemaValidator, ParamSchemas extends ParamsObject<SV> = ParamsObject<SV>, ResponseSchemas extends ResponsesObject<SV> = ResponsesObject<SV>, BodySchema extends Body<SV> = Body<SV>, QuerySchemas extends QueryObject<SV> = QueryObject<SV>> extends PathParamHttpContractDetails<SV, ParamSchemas, ResponseSchemas, QuerySchemas> {
33
34
  body?: BodySchema;
34
35
  contentType?: 'application/json' | 'multipart/form-data' | 'application/x-www-form-urlencoded';
35
36
  }
package/dist/index.d.ts CHANGED
@@ -1 +1,6 @@
1
- export {};
1
+ export * from './cache';
2
+ export * from './controllers';
3
+ export * from './database';
4
+ export * from './entityMapper';
5
+ export * from './http';
6
+ export * from './services';
package/dist/index.js CHANGED
@@ -1,8 +1,23 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
- // export * from './cache';
4
- // export * from './controllers';
5
- // export * from './database';
6
- // export * from './entityMapper';
7
- // export * from './services';
17
+ __exportStar(require("./cache"), exports);
18
+ __exportStar(require("./controllers"), exports);
19
+ __exportStar(require("./database"), exports);
20
+ __exportStar(require("./entityMapper"), exports);
21
+ __exportStar(require("./http"), exports);
22
+ __exportStar(require("./services"), exports);
8
23
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;AAAA,2BAA2B;AAC3B,iCAAiC;AACjC,8BAA8B;AAC9B,kCAAkC;AAClC,8BAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,gDAA8B;AAC9B,6CAA2B;AAC3B,iDAA+B;AAC/B,yCAAuB;AACvB,6CAA2B"}
@@ -0,0 +1 @@
1
+ export * from './interfaces/baseService';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./interfaces/baseService"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC"}
@@ -1,4 +1,4 @@
1
- import { EntityManager } from "@mikro-orm/core";
1
+ import { EntityManager } from '@mikro-orm/core';
2
2
  /**
3
3
  * Interface representing a base service.
4
4
  *
@@ -8,34 +8,11 @@ class TestEntity extends base_entity_1.BaseEntity {
8
8
  name;
9
9
  age;
10
10
  }
11
- class T extends requestEntityMapper_model_1.RequestEntityMapper {
12
- toEntity(...additionalArgs) {
13
- const entity = new TestEntity();
14
- entity.id = this.dto.id;
15
- entity.name = this.dto.name;
16
- entity.age = this.dto.age;
17
- return entity;
18
- }
19
- schema = {
20
- id: typebox_1.string,
21
- name: typebox_1.string,
22
- age: typebox_1.number
23
- };
24
- }
25
- const y = new T(new typebox_1.TypeboxSchemaValidator());
26
- y.fromJson({ id: '123', name: 'test', age: 1 });
27
- var x = { id: '123', name: 'test', age: 1 };
28
- T.fromJson(new typebox_1.TypeboxSchemaValidator(), x);
29
- T.fromJson(new typebox_1.TypeboxSchemaValidator(), {
30
- id: '123',
31
- name: 'test',
32
- age: 1
33
- });
34
11
  class TestRequestEntityMapper extends requestEntityMapper_model_1.RequestEntityMapper {
35
12
  schema = {
36
13
  id: typebox_1.string,
37
14
  name: typebox_1.string,
38
- age: typebox_1.number,
15
+ age: typebox_1.number
39
16
  };
40
17
  toEntity(...additionalArgs) {
41
18
  const entity = new TestEntity();
@@ -77,14 +54,14 @@ describe('Request Entity Mapper Test', () => {
77
54
  const json = {
78
55
  id: '123',
79
56
  name: 'test',
80
- age: 1,
57
+ age: 1
81
58
  };
82
59
  const responseEM = TestRequestEM.fromJson(json);
83
60
  const staticEM = TestRequestEntityMapper.fromJson(new typebox_1.TypeboxSchemaValidator(), json);
84
61
  const expectedDto = {
85
62
  id: '123',
86
63
  name: 'test',
87
- age: 1,
64
+ age: 1
88
65
  };
89
66
  expect(staticEM.dto).toEqual(expectedDto);
90
67
  expect(responseEM.dto).toEqual(expectedDto);
@@ -94,7 +71,7 @@ describe('Request Entity Mapper Test', () => {
94
71
  const json = {
95
72
  id: '123',
96
73
  name: 'test',
97
- age: 1,
74
+ age: 1
98
75
  };
99
76
  const entity = extractNonTimeBasedEntityFields(TestRequestEM.deserializeJsonToEntity(json));
100
77
  const objectEntity = extractNonTimeBasedEntityFields(TestRequestEM.fromJson(json).toEntity());
@@ -115,12 +92,13 @@ describe('Request Entity Mapper Test', () => {
115
92
  test('Serialization Failure', async () => {
116
93
  const json = {
117
94
  id: '123',
118
- name: 'test',
95
+ name: 'test'
119
96
  };
120
97
  // @ts-expect-error
121
98
  expect(() => TestRequestEM.fromJson(json)).toThrow();
99
+ expect(() =>
122
100
  // @ts-expect-error
123
- expect(() => TestRequestEntityMapper.fromJson(new typebox_1.TypeboxSchemaValidator(), json)).toThrow();
101
+ TestRequestEntityMapper.fromJson(new typebox_1.TypeboxSchemaValidator(), json)).toThrow();
124
102
  });
125
103
  });
126
104
  describe('Response Entity Mapper Test', () => {
@@ -141,7 +119,7 @@ describe('Response Entity Mapper Test', () => {
141
119
  const expectedDto = {
142
120
  id: '123',
143
121
  name: 'test',
144
- age: 1,
122
+ age: 1
145
123
  };
146
124
  expect(staticEM.dto).toEqual(expectedDto);
147
125
  expect(responseEM.dto).toEqual(expectedDto);
@@ -158,7 +136,7 @@ describe('Response Entity Mapper Test', () => {
158
136
  const expectedJson = {
159
137
  id: '123',
160
138
  name: 'test',
161
- age: 1,
139
+ age: 1
162
140
  };
163
141
  expect(json).toEqual(expectedJson);
164
142
  expect(objectJson).toEqual(expectedJson);
@@ -176,4 +154,4 @@ describe('Response Entity Mapper Test', () => {
176
154
  expect(() => TestResponseEntityMapper.fromEntity(new typebox_1.TypeboxSchemaValidator(), entity).toJson()).toThrow();
177
155
  });
178
156
  });
179
- //# sourceMappingURL=dto.test.js.map
157
+ //# sourceMappingURL=entityMapper.test.js.map