@forklaunch/core 0.1.3 → 0.1.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 (55) hide show
  1. package/dist/cache/redisTtlCache.d.ts +1 -0
  2. package/dist/cache/redisTtlCache.js +1 -0
  3. package/dist/cache/redisTtlCache.js.map +1 -1
  4. package/dist/entityMapper/interfaces/entityMapper.interface.d.ts +1 -0
  5. package/dist/entityMapper/models/baseEntityMapper.model.d.ts +7 -7
  6. package/dist/entityMapper/models/baseEntityMapper.model.js +7 -7
  7. package/dist/entityMapper/models/baseEntityMapper.model.js.map +1 -1
  8. package/dist/entityMapper/models/requestEntityMapper.model.d.ts +13 -9
  9. package/dist/entityMapper/models/requestEntityMapper.model.js +13 -9
  10. package/dist/entityMapper/models/requestEntityMapper.model.js.map +1 -1
  11. package/dist/entityMapper/models/responseEntityMapper.model.d.ts +14 -7
  12. package/dist/entityMapper/models/responseEntityMapper.model.js +12 -6
  13. package/dist/entityMapper/models/responseEntityMapper.model.js.map +1 -1
  14. package/dist/entityMapper/types/entityMapper.types.d.ts +2 -2
  15. package/dist/http/httpStatusCodes.d.ts +74 -0
  16. package/dist/http/httpStatusCodes.js +1050 -0
  17. package/dist/http/httpStatusCodes.js.map +1 -0
  18. package/dist/http/index.d.ts +4 -1
  19. package/dist/http/index.js +4 -1
  20. package/dist/http/index.js.map +1 -1
  21. package/dist/http/middleware/index.js.map +1 -0
  22. package/dist/http/middleware/request.middleware.d.ts +95 -0
  23. package/dist/http/{middlewares → middleware}/request.middleware.js +105 -2
  24. package/dist/http/middleware/request.middleware.js.map +1 -0
  25. package/dist/http/middleware/response.middleware.d.ts +14 -0
  26. package/dist/http/middleware/response.middleware.js +53 -0
  27. package/dist/http/middleware/response.middleware.js.map +1 -0
  28. package/dist/http/openApiV3Generator.d.ts +13 -0
  29. package/dist/http/openApiV3Generator.js +177 -0
  30. package/dist/http/openApiV3Generator.js.map +1 -0
  31. package/dist/http/regex.d.ts +8 -0
  32. package/dist/http/regex.js +115 -0
  33. package/dist/http/regex.js.map +1 -0
  34. package/dist/http/types/api.types.d.ts +71 -0
  35. package/dist/http/types/forklaunch.types.d.ts +30 -0
  36. package/dist/http/types/forklaunch.types.js +3 -0
  37. package/dist/http/types/forklaunch.types.js.map +1 -0
  38. package/dist/http/types/index.d.ts +1 -0
  39. package/dist/http/types/index.js +1 -0
  40. package/dist/http/types/index.js.map +1 -1
  41. package/dist/http/types/primitive.types.d.ts +73 -0
  42. package/dist/tests/http.middleware.test.js +1 -1
  43. package/dist/tests/http.middleware.test.js.map +1 -1
  44. package/dist/tests/openApiV3Generator.test.d.ts +1 -0
  45. package/dist/tests/openApiV3Generator.test.js +71 -0
  46. package/dist/tests/openApiV3Generator.test.js.map +1 -0
  47. package/package.json +3 -2
  48. package/dist/http/middlewares/index.js.map +0 -1
  49. package/dist/http/middlewares/request.middleware.d.ts +0 -11
  50. package/dist/http/middlewares/request.middleware.js.map +0 -1
  51. package/dist/http/middlewares/response.middleware.d.ts +0 -3
  52. package/dist/http/middlewares/response.middleware.js +0 -33
  53. package/dist/http/middlewares/response.middleware.js.map +0 -1
  54. /package/dist/http/{middlewares → middleware}/index.d.ts +0 -0
  55. /package/dist/http/{middlewares → middleware}/index.js +0 -0
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateStringFromRegex = generateStringFromRegex;
4
+ /**
5
+ * Generates a string from a given regular expression or string representation of a regex.
6
+ *
7
+ * @param {RegExp | string} regex - The regular expression or string representation of a regex.
8
+ * @returns {string} - The generated string based on the regex pattern.
9
+ * @throws {Error} - Throws an error if there are unmatched brackets or groups.
10
+ */
11
+ function generateStringFromRegex(regex) {
12
+ let regexStr = typeof regex === 'object' ? regex.source : regex;
13
+ // Remove leading and trailing slashes if present
14
+ if (regexStr.startsWith('/'))
15
+ regexStr = regexStr.slice(1);
16
+ if (regexStr.endsWith('/g'))
17
+ regexStr = regexStr.slice(0, -2); // Remove the global flag
18
+ if (regexStr.endsWith('/'))
19
+ regexStr = regexStr.slice(0, -1);
20
+ let result = '';
21
+ let i = 0;
22
+ while (i < regexStr.length) {
23
+ const char = regexStr[i];
24
+ switch (char) {
25
+ case '\\': {
26
+ // Handle escaped characters
27
+ const nextChar = regexStr[i + 1];
28
+ switch (nextChar) {
29
+ case 'b':
30
+ // Word boundary, ensure we start a new word
31
+ if (result.length > 0 && /\w/.test(result[result.length - 1])) {
32
+ result += ' ';
33
+ }
34
+ break;
35
+ case 'd':
36
+ result += '0'; // Match a digit
37
+ break;
38
+ case 'w':
39
+ result += 'a'; // Match a word character
40
+ break;
41
+ case 's':
42
+ result += ' '; // Match a whitespace character
43
+ break;
44
+ default:
45
+ result += nextChar;
46
+ }
47
+ i += 2;
48
+ break;
49
+ }
50
+ case '.':
51
+ // Match any character (using 'a' for simplicity)
52
+ result += 'a';
53
+ i++;
54
+ break;
55
+ case '[': {
56
+ // Handle character classes
57
+ const endIdx = regexStr.indexOf(']', i);
58
+ if (endIdx === -1) {
59
+ throw new Error('Unmatched [');
60
+ }
61
+ const charClass = regexStr.slice(i + 1, endIdx);
62
+ result += charClass[0]; // Use the first character in the class
63
+ i = endIdx + 1;
64
+ break;
65
+ }
66
+ case '(': {
67
+ // Handle groups (non-capturing groups (?:...) are simplified to normal groups)
68
+ const endGroupIdx = regexStr.indexOf(')', i);
69
+ if (endGroupIdx === -1) {
70
+ throw new Error('Unmatched (');
71
+ }
72
+ const groupContent = regexStr.slice(i + 1, endGroupIdx);
73
+ result += generateStringFromRegex(groupContent); // Recursively handle group content
74
+ i = endGroupIdx + 1;
75
+ break;
76
+ }
77
+ case '{': {
78
+ // Handle quantifiers {n} or {n,m}
79
+ const endQuantIdx = regexStr.indexOf('}', i);
80
+ if (endQuantIdx === -1) {
81
+ throw new Error('Unmatched {');
82
+ }
83
+ const quantifier = regexStr.slice(i + 1, endQuantIdx);
84
+ const min = parseInt(quantifier.split(',')[0], 10) || 1;
85
+ const lastChar = result[result.length - 1];
86
+ result += lastChar.repeat(min - 1);
87
+ i = endQuantIdx + 1;
88
+ break;
89
+ }
90
+ case '*':
91
+ case '+':
92
+ case '?': {
93
+ // Handle *, +, and ? quantifiers (simplified handling)
94
+ const prevChar = result[result.length - 1];
95
+ if (char === '*') {
96
+ // Match zero or more (using one for simplicity)
97
+ result += prevChar;
98
+ }
99
+ else if (char === '+') {
100
+ // Match one or more (already have one, so add one more)
101
+ result += prevChar;
102
+ }
103
+ i++;
104
+ break;
105
+ }
106
+ default:
107
+ // Default case: add character to result
108
+ result += char;
109
+ i++;
110
+ break;
111
+ }
112
+ }
113
+ return result;
114
+ }
115
+ //# sourceMappingURL=regex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex.js","sourceRoot":"","sources":["../../http/regex.ts"],"names":[],"mappings":"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"}
@@ -4,50 +4,121 @@ import { IdiomaticSchema, SchemaValidator } from '@forklaunch/validator/types';
4
4
  import { IncomingHttpHeaders, OutgoingHttpHeader } from 'http';
5
5
  import { ParsedQs } from 'qs';
6
6
  import { HttpContractDetails, ParamsDictionary, PathParamHttpContractDetails } from './primitive.types';
7
+ /**
8
+ * Interface representing the context of a request.
9
+ */
7
10
  export interface RequestContext {
11
+ /** Correlation ID for tracking requests */
8
12
  correlationId: string;
13
+ /** Optional idempotency key for ensuring idempotent requests */
9
14
  idempotencyKey?: string;
10
15
  }
16
+ /**
17
+ * Interface representing a Forklaunch request.
18
+ *
19
+ * @template SV - A type that extends AnySchemaValidator.
20
+ * @template P - A type for request parameters, defaulting to ParamsDictionary.
21
+ * @template ReqBody - A type for the request body, defaulting to unknown.
22
+ * @template ReqQuery - A type for the request query, defaulting to ParsedQs.
23
+ * @template Headers - A type for the request headers, defaulting to IncomingHttpHeaders.
24
+ */
11
25
  export interface ForklaunchRequest<SV extends AnySchemaValidator, P = ParamsDictionary, ReqBody = unknown, ReqQuery = ParsedQs, Headers = IncomingHttpHeaders> {
26
+ /** Context of the request */
12
27
  context: Prettify<RequestContext>;
28
+ /** Contract details for the request */
13
29
  contractDetails: HttpContractDetails<SV> | PathParamHttpContractDetails<SV>;
30
+ /** Schema validator */
14
31
  schemaValidator: SchemaValidator;
32
+ /** Request parameters */
15
33
  params: P;
34
+ /** Request headers */
16
35
  headers: Headers;
36
+ /** Request body */
17
37
  body: ReqBody;
38
+ /** Request query */
18
39
  query: ReqQuery;
19
40
  }
41
+ /**
42
+ * Interface representing a Forklaunch response.
43
+ *
44
+ * @template ResBody - A type for the response body, defaulting to common status code responses.
45
+ * @template StatusCode - A type for the status code, defaulting to number.
46
+ */
20
47
  export interface ForklaunchResponse<ResBody = {
21
48
  400: unknown;
22
49
  401: unknown;
23
50
  403: unknown;
24
51
  500: unknown;
25
52
  }, StatusCode = number> {
53
+ /** Data of the response body */
26
54
  bodyData: unknown;
55
+ /** Status code of the response */
27
56
  statusCode: StatusCode;
57
+ /** Whether the response is corked */
28
58
  corked: boolean;
59
+ /**
60
+ * Gets the headers of the response.
61
+ * @returns {OutgoingHttpHeader} - The headers of the response.
62
+ */
29
63
  getHeaders: () => OutgoingHttpHeader;
64
+ /**
65
+ * Sets a header for the response.
66
+ * @param {string} key - The header key.
67
+ * @param {string} value - The header value.
68
+ */
30
69
  setHeader: (key: string, value: string) => void;
70
+ /**
71
+ * Sets the status of the response.
72
+ * @param {U} code - The status code.
73
+ * @param {string} [message] - Optional message.
74
+ * @returns {ForklaunchResponse<ResBody[U], U>} - The response with the given status.
75
+ */
31
76
  status: {
32
77
  <U extends keyof ResBody>(code: U): ForklaunchResponse<ResBody[U], U>;
33
78
  <U extends keyof ResBody>(code: U, message?: string): ForklaunchResponse<ResBody[U], U>;
34
79
  <U extends 500>(code: U): ForklaunchResponse<string, U>;
35
80
  <U extends 500>(code: U, message?: string): ForklaunchResponse<string, U>;
36
81
  };
82
+ /**
83
+ * Sends the response.
84
+ * @param {ResBody} [body] - The response body.
85
+ * @param {boolean} [close_connection] - Whether to close the connection.
86
+ * @returns {T} - The sent response.
87
+ */
37
88
  send: {
38
89
  <T>(body?: ResBody, close_connection?: boolean): T;
39
90
  <T>(body?: ResBody): T;
40
91
  };
92
+ /**
93
+ * Sends a JSON response.
94
+ * @param {ResBody} [body] - The response body.
95
+ * @returns {boolean|T} - The JSON response.
96
+ */
41
97
  json: {
42
98
  (body?: ResBody): boolean;
43
99
  <T>(body?: ResBody): T;
44
100
  };
101
+ /**
102
+ * Sends a JSONP response.
103
+ * @param {ResBody} [body] - The response body.
104
+ * @returns {boolean|T} - The JSONP response.
105
+ */
45
106
  jsonp: {
46
107
  (body?: ResBody): boolean;
47
108
  <T>(body?: ResBody): T;
48
109
  };
49
110
  }
111
+ /**
112
+ * Type representing a mapped schema.
113
+ *
114
+ * @template SV - A type that extends AnySchemaValidator.
115
+ * @template T - A type that extends IdiomaticSchema or a valid schema object.
116
+ */
50
117
  export type MapSchema<SV extends AnySchemaValidator, T extends IdiomaticSchema<SV> | SV['_ValidSchemaObject']> = Schema<T, SV> extends infer U ? {
51
118
  [key: string]: unknown;
52
119
  } extends U ? never : U : never;
120
+ /**
121
+ * Type representing the next function in a middleware.
122
+ * @param {unknown} [err] - Optional error parameter.
123
+ */
53
124
  export type ForklaunchNextFunction = (err?: unknown) => void;
@@ -0,0 +1,30 @@
1
+ import { AnySchemaValidator } from '@forklaunch/validator';
2
+ import { HttpContractDetails, PathParamHttpContractDetails } from './primitive.types';
3
+ /**
4
+ * Interface representing a Forklaunch router.
5
+ *
6
+ * @template SV - A type that extends AnySchemaValidator.
7
+ */
8
+ export interface ForklaunchRouter<SV extends AnySchemaValidator> {
9
+ /** The base path for the router */
10
+ basePath: string;
11
+ /** The routes associated with the router */
12
+ routes: ForklaunchRoute<SV>[];
13
+ }
14
+ /**
15
+ * Interface representing a Forklaunch route.
16
+ *
17
+ * @template SV - A type that extends AnySchemaValidator.
18
+ */
19
+ export interface ForklaunchRoute<SV extends AnySchemaValidator> {
20
+ /** The base path for the route */
21
+ basePath: string;
22
+ /** The path for the route, which can be a string, RegExp, or an array of strings or RegExps */
23
+ path: string | RegExp | (string | RegExp)[];
24
+ /** The SDK path for the route */
25
+ sdkPath: string;
26
+ /** The HTTP method for the route */
27
+ method: 'get' | 'post' | 'put' | 'patch' | 'delete';
28
+ /** The contract details for the route */
29
+ contractDetails: PathParamHttpContractDetails<SV> | HttpContractDetails<SV>;
30
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=forklaunch.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forklaunch.types.js","sourceRoot":"","sources":["../../../http/types/forklaunch.types.ts"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
1
  export * from './api.types';
2
+ export * from './forklaunch.types';
2
3
  export * from './primitive.types';
@@ -15,5 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./api.types"), exports);
18
+ __exportStar(require("./forklaunch.types"), exports);
18
19
  __exportStar(require("./primitive.types"), exports);
19
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../http/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,oDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../http/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,qDAAmC;AACnC,oDAAkC"}
@@ -1,27 +1,89 @@
1
1
  import { AnySchemaValidator } from '@forklaunch/validator';
2
2
  import { UnboxedObjectSchema } from '@forklaunch/validator/types';
3
+ /**
4
+ * Dictionary type for URL parameters.
5
+ */
3
6
  export type ParamsDictionary = {
4
7
  [key: string]: string;
5
8
  };
9
+ /**
10
+ * Type representing an object with only string keys.
11
+ *
12
+ * @template SV - A type that extends AnySchemaValidator.
13
+ */
6
14
  export type StringOnlyObject<SV extends AnySchemaValidator> = Omit<UnboxedObjectSchema<SV>, number | symbol>;
15
+ /**
16
+ * Type representing an object with only number keys.
17
+ *
18
+ * @template SV - A type that extends AnySchemaValidator.
19
+ */
7
20
  export type NumberOnlyObject<SV extends AnySchemaValidator> = Omit<UnboxedObjectSchema<SV>, string | symbol>;
21
+ /**
22
+ * Type representing the body object in a request.
23
+ *
24
+ * @template SV - A type that extends AnySchemaValidator.
25
+ */
8
26
  export type BodyObject<SV extends AnySchemaValidator> = StringOnlyObject<SV> & unknown;
27
+ /**
28
+ * Type representing the parameters object in a request.
29
+ *
30
+ * @template SV - A type that extends AnySchemaValidator.
31
+ */
9
32
  export type ParamsObject<SV extends AnySchemaValidator> = StringOnlyObject<SV> & unknown;
33
+ /**
34
+ * Type representing the query object in a request.
35
+ *
36
+ * @template SV - A type that extends AnySchemaValidator.
37
+ */
10
38
  export type QueryObject<SV extends AnySchemaValidator> = StringOnlyObject<SV> & unknown;
39
+ /**
40
+ * Type representing the headers object in a request.
41
+ *
42
+ * @template SV - A type that extends AnySchemaValidator.
43
+ */
11
44
  export type HeadersObject<SV extends AnySchemaValidator> = StringOnlyObject<SV> & unknown;
45
+ /**
46
+ * Type representing the responses object in a request.
47
+ *
48
+ * @template SV - A type that extends AnySchemaValidator.
49
+ */
12
50
  export type ResponsesObject<SV extends AnySchemaValidator> = {
13
51
  [key: number]: SV['_ValidSchemaObject'] | UnboxedObjectSchema<SV> | string | SV['string'];
14
52
  } & unknown;
53
+ /**
54
+ * Type representing the body in a request.
55
+ *
56
+ * @template SV - A type that extends AnySchemaValidator.
57
+ */
15
58
  export type Body<SV extends AnySchemaValidator> = BodyObject<SV> | SV['_ValidSchemaObject'] | SV['_SchemaCatchall'];
59
+ /**
60
+ * Type representing the authentication method.
61
+ */
16
62
  export type AuthMethod = 'jwt' | 'session';
63
+ /**
64
+ * Interface representing HTTP contract details for path parameters.
65
+ *
66
+ * @template SV - A type that extends AnySchemaValidator.
67
+ * @template ParamSchemas - A type for parameter schemas, defaulting to ParamsObject.
68
+ * @template ResponseSchemas - A type for response schemas, defaulting to ResponsesObject.
69
+ * @template QuerySchemas - A type for query schemas, defaulting to QueryObject.
70
+ */
17
71
  export interface PathParamHttpContractDetails<SV extends AnySchemaValidator, ParamSchemas extends ParamsObject<SV> = ParamsObject<SV>, ResponseSchemas extends ResponsesObject<SV> = ResponsesObject<SV>, QuerySchemas extends QueryObject<SV> = QueryObject<SV>> {
72
+ /** Name of the contract */
18
73
  name: string;
74
+ /** Summary of the contract */
19
75
  summary: string;
76
+ /** Response schemas for the contract */
20
77
  responses: ResponseSchemas;
78
+ /** Optional request headers for the contract */
21
79
  requestHeaders?: HeadersObject<SV>;
80
+ /** Optional response headers for the contract */
22
81
  responseHeaders?: HeadersObject<SV>;
82
+ /** Optional parameter schemas for the contract */
23
83
  params?: ParamSchemas;
84
+ /** Optional query schemas for the contract */
24
85
  query?: QuerySchemas;
86
+ /** Optional authentication details for the contract */
25
87
  auth?: {
26
88
  method: AuthMethod;
27
89
  allowedSlugs?: Set<string>;
@@ -30,7 +92,18 @@ export interface PathParamHttpContractDetails<SV extends AnySchemaValidator, Par
30
92
  forbiddenRoles?: Set<string>;
31
93
  };
32
94
  }
95
+ /**
96
+ * Interface representing HTTP contract details.
97
+ *
98
+ * @template SV - A type that extends AnySchemaValidator.
99
+ * @template ParamSchemas - A type for parameter schemas, defaulting to ParamsObject.
100
+ * @template ResponseSchemas - A type for response schemas, defaulting to ResponsesObject.
101
+ * @template BodySchema - A type for the body schema, defaulting to Body.
102
+ * @template QuerySchemas - A type for query schemas, defaulting to QueryObject.
103
+ */
33
104
  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> {
105
+ /** Optional body schema for the contract */
34
106
  body?: BodySchema;
107
+ /** Optional content type for the contract */
35
108
  contentType?: 'application/json' | 'multipart/form-data' | 'application/x-www-form-urlencoded';
36
109
  }
@@ -42,7 +42,7 @@ describe('Http Middleware Tests', () => {
42
42
  status: jest.fn(),
43
43
  send: jest.fn(),
44
44
  json: jest.fn(),
45
- jsonp: jest.fn(),
45
+ jsonp: jest.fn()
46
46
  };
47
47
  });
48
48
  test('Create Request Context', async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"http.middleware.test.js","sourceRoot":"","sources":["../../tests/http.middleware.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.middleware.test.js","sourceRoot":"","sources":["../../tests/http.middleware.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const mockSchemaValidator_1 = require("@forklaunch/validator/tests/mockSchemaValidator");
4
+ const openApiV3Generator_1 = require("../http/openApiV3Generator");
5
+ describe('OpenApiV3Generator Tests', () => {
6
+ const testSchema = {
7
+ test: (0, mockSchemaValidator_1.union)(['a', (0, mockSchemaValidator_1.optional)((0, mockSchemaValidator_1.literal)('test'))])
8
+ };
9
+ test('Generate OpenApiV3', async () => {
10
+ const generatedOpenApiSpec = (0, openApiV3Generator_1.generateSwaggerDocument)(mockSchemaValidator_1.mockSchemaValidator, 8000, [
11
+ {
12
+ basePath: '/api',
13
+ routes: [
14
+ {
15
+ basePath: '/test',
16
+ path: '/',
17
+ sdkPath: '/test',
18
+ method: 'get',
19
+ contractDetails: {
20
+ name: 'Test Contract',
21
+ summary: 'Test Contract Summary',
22
+ body: testSchema,
23
+ params: testSchema,
24
+ requestHeaders: testSchema,
25
+ query: testSchema,
26
+ responses: {
27
+ 200: testSchema
28
+ }
29
+ }
30
+ }
31
+ ]
32
+ }
33
+ ]);
34
+ console.log(generatedOpenApiSpec);
35
+ expect(generatedOpenApiSpec).toEqual({
36
+ openapi: '3.1.0',
37
+ info: { title: '', version: '1.0.0' },
38
+ components: {
39
+ securitySchemes: {
40
+ bearer: { type: 'http', scheme: 'bearer', bearerFormat: 'JWT' }
41
+ }
42
+ },
43
+ tags: [{ name: 'Api', description: 'Api Operations' }],
44
+ servers: [{ url: 'http://localhost:8000' }],
45
+ paths: {
46
+ '/api': {
47
+ get: {
48
+ tags: ['Api'],
49
+ summary: 'Test Contract: Test Contract Summary',
50
+ parameters: [
51
+ { name: 'test', in: 'path' },
52
+ { name: 'test', in: 'header' },
53
+ { name: 'test', in: 'query' }
54
+ ],
55
+ responses: {
56
+ '200': {
57
+ description: 'OK',
58
+ content: { 'application/json': { schema: {} } }
59
+ }
60
+ },
61
+ requestBody: {
62
+ required: true,
63
+ content: { 'application/json': { schema: {} } }
64
+ }
65
+ }
66
+ }
67
+ }
68
+ });
69
+ });
70
+ });
71
+ //# sourceMappingURL=openApiV3Generator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openApiV3Generator.test.js","sourceRoot":"","sources":["../../tests/openApiV3Generator.test.ts"],"names":[],"mappings":";;AAAA,yFAKyD;AACzD,mEAAqE;AAErE,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,MAAM,UAAU,GAAG;QACjB,IAAI,EAAE,IAAA,2BAAK,EAAC,CAAC,GAAG,EAAE,IAAA,8BAAQ,EAAC,IAAA,6BAAO,EAAC,MAAM,CAAC,CAAC,CAAU,CAAC;KACvD,CAAC;IAEF,IAAI,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,oBAAoB,GAAG,IAAA,4CAAuB,EAClD,yCAAmB,EACnB,IAAI,EACJ;YACE;gBACE,QAAQ,EAAE,MAAM;gBAChB,MAAM,EAAE;oBACN;wBACE,QAAQ,EAAE,OAAO;wBACjB,IAAI,EAAE,GAAG;wBACT,OAAO,EAAE,OAAO;wBAChB,MAAM,EAAE,KAAK;wBACb,eAAe,EAAE;4BACf,IAAI,EAAE,eAAe;4BACrB,OAAO,EAAE,uBAAuB;4BAChC,IAAI,EAAE,UAAU;4BAChB,MAAM,EAAE,UAAU;4BAClB,cAAc,EAAE,UAAU;4BAC1B,KAAK,EAAE,UAAU;4BACjB,SAAS,EAAE;gCACT,GAAG,EAAE,UAAU;6BAChB;yBACF;qBACF;iBACF;aACF;SACF,CACF,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,MAAM,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC;YACnC,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;YACrC,UAAU,EAAE;gBACV,eAAe,EAAE;oBACf,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE;iBAChE;aACF;YACD,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC;YACtD,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,uBAAuB,EAAE,CAAC;YAC3C,KAAK,EAAE;gBACL,MAAM,EAAE;oBACN,GAAG,EAAE;wBACH,IAAI,EAAE,CAAC,KAAK,CAAC;wBACb,OAAO,EAAE,sCAAsC;wBAC/C,UAAU,EAAE;4BACV,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE;4BAC5B,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE;4BAC9B,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE;yBAC9B;wBACD,SAAS,EAAE;4BACT,KAAK,EAAE;gCACL,WAAW,EAAE,IAAI;gCACjB,OAAO,EAAE,EAAE,kBAAkB,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE;6BAChD;yBACF;wBACD,WAAW,EAAE;4BACX,QAAQ,EAAE,IAAI;4BACd,OAAO,EAAE,EAAE,kBAAkB,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE;yBAChD;qBACF;iBACF;aACF;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@forklaunch/core",
3
- "version": "0.1.3",
3
+ "version": "0.1.6",
4
4
  "description": "forklaunch-js core package. Contains useful building blocks.",
5
5
  "files": [
6
6
  "dist"
7
7
  ],
8
+ "types": "dist/index.d.ts",
8
9
  "scripts": {
9
10
  "test": "jest",
10
11
  "build": "tsc",
@@ -24,7 +25,7 @@
24
25
  },
25
26
  "homepage": "https://github.com/forklaunch/forklaunch-js#readme",
26
27
  "dependencies": {
27
- "@forklaunch/validator": "^0.2.9",
28
+ "@forklaunch/validator": "^0.3.0",
28
29
  "@mikro-orm/core": "^6.2.9",
29
30
  "jose": "^5.6.2",
30
31
  "redis": "^4.6.14",
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../http/middlewares/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,wDAAsC"}
@@ -1,11 +0,0 @@
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>;
@@ -1 +0,0 @@
1
- {"version":3,"file":"request.middleware.js","sourceRoot":"","sources":["../../../http/middlewares/request.middleware.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
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;
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseResponse = parseResponse;
4
- function checkAnyValidation(contractDetails) {
5
- return (contractDetails.body ||
6
- contractDetails.params ||
7
- contractDetails.requestHeaders ||
8
- contractDetails.query);
9
- }
10
- function parseResponse(req, res, next) {
11
- if (req.contractDetails.responseHeaders) {
12
- const schema = req.schemaValidator.schemify(req.contractDetails.responseHeaders);
13
- req.schemaValidator.validate(schema, res.getHeaders());
14
- }
15
- if (res.statusCode === 500 ||
16
- (checkAnyValidation(req.contractDetails) && res.statusCode === 400) ||
17
- (req.contractDetails.auth &&
18
- (res.statusCode === 401 || res.statusCode === 403))) {
19
- req.schemaValidator.validate(req.schemaValidator.string, res.bodyData);
20
- return;
21
- }
22
- if (Object.prototype.hasOwnProperty.call(!req.contractDetails.responses, res.statusCode)) {
23
- if (next) {
24
- next(new Error(`Response code ${res.statusCode} not defined in contract.`));
25
- }
26
- }
27
- const schema = req.schemaValidator.schemify(req.contractDetails.responses[res.statusCode]);
28
- req.schemaValidator.validate(schema, res.bodyData);
29
- if (next) {
30
- next();
31
- }
32
- }
33
- //# sourceMappingURL=response.middleware.js.map
@@ -1 +0,0 @@
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"}
File without changes