@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.
- package/dist/cache/redisTtlCache.d.ts +1 -0
- package/dist/cache/redisTtlCache.js +1 -0
- package/dist/cache/redisTtlCache.js.map +1 -1
- package/dist/entityMapper/interfaces/entityMapper.interface.d.ts +1 -0
- package/dist/entityMapper/models/baseEntityMapper.model.d.ts +7 -7
- package/dist/entityMapper/models/baseEntityMapper.model.js +7 -7
- package/dist/entityMapper/models/baseEntityMapper.model.js.map +1 -1
- package/dist/entityMapper/models/requestEntityMapper.model.d.ts +13 -9
- package/dist/entityMapper/models/requestEntityMapper.model.js +13 -9
- package/dist/entityMapper/models/requestEntityMapper.model.js.map +1 -1
- package/dist/entityMapper/models/responseEntityMapper.model.d.ts +14 -7
- package/dist/entityMapper/models/responseEntityMapper.model.js +12 -6
- package/dist/entityMapper/models/responseEntityMapper.model.js.map +1 -1
- package/dist/entityMapper/types/entityMapper.types.d.ts +2 -2
- package/dist/http/httpStatusCodes.d.ts +74 -0
- package/dist/http/httpStatusCodes.js +1050 -0
- package/dist/http/httpStatusCodes.js.map +1 -0
- package/dist/http/index.d.ts +4 -1
- package/dist/http/index.js +4 -1
- package/dist/http/index.js.map +1 -1
- package/dist/http/middleware/index.js.map +1 -0
- package/dist/http/middleware/request.middleware.d.ts +95 -0
- package/dist/http/{middlewares → middleware}/request.middleware.js +105 -2
- package/dist/http/middleware/request.middleware.js.map +1 -0
- package/dist/http/middleware/response.middleware.d.ts +14 -0
- package/dist/http/middleware/response.middleware.js +53 -0
- package/dist/http/middleware/response.middleware.js.map +1 -0
- package/dist/http/openApiV3Generator.d.ts +13 -0
- package/dist/http/openApiV3Generator.js +177 -0
- package/dist/http/openApiV3Generator.js.map +1 -0
- package/dist/http/regex.d.ts +8 -0
- package/dist/http/regex.js +115 -0
- package/dist/http/regex.js.map +1 -0
- package/dist/http/types/api.types.d.ts +71 -0
- package/dist/http/types/forklaunch.types.d.ts +30 -0
- package/dist/http/types/forklaunch.types.js +3 -0
- package/dist/http/types/forklaunch.types.js.map +1 -0
- package/dist/http/types/index.d.ts +1 -0
- package/dist/http/types/index.js +1 -0
- package/dist/http/types/index.js.map +1 -1
- package/dist/http/types/primitive.types.d.ts +73 -0
- package/dist/tests/http.middleware.test.js +1 -1
- package/dist/tests/http.middleware.test.js.map +1 -1
- package/dist/tests/openApiV3Generator.test.d.ts +1 -0
- package/dist/tests/openApiV3Generator.test.js +71 -0
- package/dist/tests/openApiV3Generator.test.js.map +1 -0
- package/package.json +3 -2
- package/dist/http/middlewares/index.js.map +0 -1
- package/dist/http/middlewares/request.middleware.d.ts +0 -11
- package/dist/http/middlewares/request.middleware.js.map +0 -1
- package/dist/http/middlewares/response.middleware.d.ts +0 -3
- package/dist/http/middlewares/response.middleware.js +0 -33
- package/dist/http/middlewares/response.middleware.js.map +0 -1
- /package/dist/http/{middlewares → middleware}/index.d.ts +0 -0
- /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 @@
|
|
1
|
+
{"version":3,"file":"forklaunch.types.js","sourceRoot":"","sources":["../../../http/types/forklaunch.types.ts"],"names":[],"mappings":""}
|
package/dist/http/types/index.js
CHANGED
@@ -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
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"http.middleware.test.js","sourceRoot":"","sources":["../../tests/http.middleware.test.ts"],"names":[],"mappings":";;AACA,yFAMyD;AACzD,
|
1
|
+
{"version":3,"file":"http.middleware.test.js","sourceRoot":"","sources":["../../tests/http.middleware.test.ts"],"names":[],"mappings":";;AACA,yFAMyD;AACzD,kCAYiB;AAEjB,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,eAAyD,CAAC;IAC9D,IAAI,GAA2C,CAAC;IAChD,IAAI,IAAwB,CAAC;IAE7B,MAAM,YAAY,GAAG,CAAC,GAAa,EAAE,EAAE;QACrC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC,CAAC;IAEF,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,SAAS,CAAC,GAAG,EAAE;QACb,eAAe,GAAG;YAChB,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,uBAAuB;YAChC,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,UAAU;YAClB,cAAc,EAAE,UAAU;YAC1B,KAAK,EAAE,UAAU;YACjB,SAAS,EAAE;gBACT,GAAG,EAAE,UAAU;aAChB;SACF,CAAC;QAEF,GAAG,GAAG;YACJ,OAAO,EAAE,EAAoB;YAC7B,eAAe,EAAE,EAA8C;YAC/D,eAAe,EAAE,EAAqB;YACtC,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,UAAU;YACnB,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,UAAU;SAClB,CAAC;QAEF,IAAI,GAAG;YACL,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,GAAG;YACf,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;YACrB,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE;YACpB,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;YACjB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;YACf,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;YACf,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;SACjB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACxC,GAAG,CAAC,OAAO,GAAG,EAAoB,CAAC;QACnC,GAAG,CAAC,eAAe,GAAG,EAAqB,CAAC;QAC5C,IAAA,2BAAoB,EAAC,yCAAmB,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QACnE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,yCAAmB,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACxC,GAAG,CAAC,eAAe,GAAG,EAA8C,CAAC;QACrE,IAAA,2BAAoB,EAAC,eAAe,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QAC/D,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACzC,IAAA,yBAAkB,EAAC,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QAC1C,IAAA,0BAAmB,EAAC,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACvC,IAAA,uBAAgB,EAAC,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC/C,IAAA,wBAAiB,EAAC,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACnC,IAAA,oBAAa,EAAC,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,oBAAoB;IACpB,sCAAsC;IACtC,MAAM;AACR,CAAC,CAAC,CAAC"}
|
@@ -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
|
+
"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.
|
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
|
File without changes
|