@modern-js/bff-core 1.0.1-beta.0 → 1.0.1-beta.1
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/js/modern/operators/http.js +16 -13
- package/dist/js/modern/router/index.js +7 -3
- package/dist/js/modern/router/utils.js +10 -0
- package/dist/js/modern/types.js +8 -3
- package/dist/js/modern/utils.js +3 -1
- package/dist/js/node/operators/http.js +14 -12
- package/dist/js/node/router/index.js +7 -2
- package/dist/js/node/router/utils.js +15 -2
- package/dist/js/node/types.js +10 -4
- package/dist/js/node/utils.js +7 -3
- package/dist/types/operators/http.d.ts +5 -1
- package/dist/types/router/utils.d.ts +3 -1
- package/dist/types/types.d.ts +5 -3
- package/dist/types/utils.d.ts +2 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { HttpMetadata, OperatorType, HttpMethod, TriggerType } from "../types";
|
|
2
|
+
import { HttpMetadata, OperatorType, HttpMethod, TriggerType, ResponseMetaType } from "../types";
|
|
3
3
|
import { ValidationError } from "../errors/http";
|
|
4
4
|
|
|
5
5
|
const validateInput = async (schema, input) => {
|
|
@@ -133,14 +133,21 @@ export const Headers = schema => {
|
|
|
133
133
|
|
|
134
134
|
};
|
|
135
135
|
};
|
|
136
|
+
|
|
137
|
+
const setResponseMeta = (helper, type, value) => {
|
|
138
|
+
const responseMetaData = helper.getMetadata(HttpMetadata.Response) || [];
|
|
139
|
+
helper.setMetadata(HttpMetadata.Response, [...responseMetaData, {
|
|
140
|
+
type,
|
|
141
|
+
value
|
|
142
|
+
}]);
|
|
143
|
+
};
|
|
144
|
+
|
|
136
145
|
export const HttpCode = statusCode => {
|
|
137
146
|
return {
|
|
138
147
|
name: 'HttpCode',
|
|
139
148
|
|
|
140
|
-
metadata({
|
|
141
|
-
|
|
142
|
-
}) {
|
|
143
|
-
setMetadata(HttpMetadata.StatusCode, statusCode);
|
|
149
|
+
metadata(helper) {
|
|
150
|
+
setResponseMeta(helper, ResponseMetaType.StatusCode, statusCode);
|
|
144
151
|
}
|
|
145
152
|
|
|
146
153
|
};
|
|
@@ -149,10 +156,8 @@ export const SetHeaders = headers => {
|
|
|
149
156
|
return {
|
|
150
157
|
name: 'SetHeaders',
|
|
151
158
|
|
|
152
|
-
metadata({
|
|
153
|
-
|
|
154
|
-
}) {
|
|
155
|
-
setMetadata(HttpMetadata.ResponseHeaders, headers);
|
|
159
|
+
metadata(helper) {
|
|
160
|
+
setResponseMeta(helper, ResponseMetaType.Headers, headers);
|
|
156
161
|
}
|
|
157
162
|
|
|
158
163
|
};
|
|
@@ -161,10 +166,8 @@ export const Redirect = url => {
|
|
|
161
166
|
return {
|
|
162
167
|
name: 'Redirect',
|
|
163
168
|
|
|
164
|
-
metadata({
|
|
165
|
-
|
|
166
|
-
}) {
|
|
167
|
-
setMetadata(HttpMetadata.Redirect, url);
|
|
169
|
+
metadata(helper) {
|
|
170
|
+
setResponseMeta(helper, ResponseMetaType.Redirect, url);
|
|
168
171
|
}
|
|
169
172
|
|
|
170
173
|
};
|
|
@@ -6,7 +6,8 @@ import 'reflect-metadata';
|
|
|
6
6
|
import 'esbuild-register';
|
|
7
7
|
import { HttpMethod, httpMethods, OperatorType, TriggerType } from "../types";
|
|
8
8
|
import { APIMode, FRAMEWORK_MODE_LAMBDA_DIR, API_FILE_RULES } from "./constants";
|
|
9
|
-
import { getFiles, getPathFromFilename, requireHandlerModule } from "./utils";
|
|
9
|
+
import { getFiles, getPathFromFilename, requireHandlerModule, sortRoutes } from "./utils";
|
|
10
|
+
import { debug } from 'console';
|
|
10
11
|
export * from "./types";
|
|
11
12
|
export * from "./constants";
|
|
12
13
|
export class ApiRouter {
|
|
@@ -109,7 +110,8 @@ export class ApiRouter {
|
|
|
109
110
|
apiHandlers = apiHandlers.concat(handlerInfos);
|
|
110
111
|
}
|
|
111
112
|
});
|
|
112
|
-
|
|
113
|
+
const sortedHandlers = sortRoutes(apiHandlers);
|
|
114
|
+
return sortedHandlers;
|
|
113
115
|
}
|
|
114
116
|
|
|
115
117
|
getModuleHandlerInfos(moduleInfo) {
|
|
@@ -265,7 +267,9 @@ export class ApiRouter {
|
|
|
265
267
|
getApiHandlers() {
|
|
266
268
|
const filenames = this.getApiFiles();
|
|
267
269
|
const moduleInfos = this.getModuleInfos(filenames);
|
|
268
|
-
|
|
270
|
+
const apiHandlers = this.getHandlerInfos(moduleInfos);
|
|
271
|
+
debug('apiHandlers', apiHandlers);
|
|
272
|
+
return apiHandlers;
|
|
269
273
|
}
|
|
270
274
|
|
|
271
275
|
}
|
|
@@ -50,4 +50,14 @@ export const requireHandlerModule = modulePath => {
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
return module;
|
|
53
|
+
};
|
|
54
|
+
export const sortRoutes = apiHandlers => {
|
|
55
|
+
const sortedHandlers = apiHandlers.slice();
|
|
56
|
+
sortedHandlers.forEach((apiHandler, handlerIndex) => {
|
|
57
|
+
if (apiHandler.routeName.includes(':')) {
|
|
58
|
+
sortedHandlers.splice(handlerIndex, 1);
|
|
59
|
+
sortedHandlers.push(apiHandler);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
return sortedHandlers;
|
|
53
63
|
};
|
package/dist/js/modern/types.js
CHANGED
|
@@ -20,11 +20,16 @@ export let HttpMetadata;
|
|
|
20
20
|
HttpMetadata["Params"] = "PARAMS";
|
|
21
21
|
HttpMetadata["Headers"] = "HEADERS";
|
|
22
22
|
HttpMetadata["Response"] = "RESPONSE";
|
|
23
|
-
HttpMetadata["StatusCode"] = "STATUS_CODE";
|
|
24
|
-
HttpMetadata["Redirect"] = "REDIRECT";
|
|
25
|
-
HttpMetadata["ResponseHeaders"] = "RESPONSE_HEADERS";
|
|
26
23
|
})(HttpMetadata || (HttpMetadata = {}));
|
|
27
24
|
|
|
25
|
+
export let ResponseMetaType;
|
|
26
|
+
|
|
27
|
+
(function (ResponseMetaType) {
|
|
28
|
+
ResponseMetaType[ResponseMetaType["StatusCode"] = 0] = "StatusCode";
|
|
29
|
+
ResponseMetaType[ResponseMetaType["Redirect"] = 1] = "Redirect";
|
|
30
|
+
ResponseMetaType[ResponseMetaType["Headers"] = 2] = "Headers";
|
|
31
|
+
})(ResponseMetaType || (ResponseMetaType = {}));
|
|
32
|
+
|
|
28
33
|
export let HttpMethod;
|
|
29
34
|
|
|
30
35
|
(function (HttpMethod) {
|
package/dist/js/modern/utils.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import util from 'util';
|
|
2
|
-
|
|
2
|
+
import { createDebugger } from '@modern-js/utils';
|
|
3
|
+
export const HANDLER_WITH_META = 'HANDLER_WITH_META';
|
|
4
|
+
export const debug = createDebugger('bff'); // export const pick = <T extends Record<string, unknown>, K extends keyof T>(
|
|
3
5
|
// obj: T,
|
|
4
6
|
// keys: readonly K[],
|
|
5
7
|
// ) => {
|
|
@@ -166,14 +166,20 @@ const Headers = schema => {
|
|
|
166
166
|
|
|
167
167
|
exports.Headers = Headers;
|
|
168
168
|
|
|
169
|
+
const setResponseMeta = (helper, type, value) => {
|
|
170
|
+
const responseMetaData = helper.getMetadata(_types.HttpMetadata.Response) || [];
|
|
171
|
+
helper.setMetadata(_types.HttpMetadata.Response, [...responseMetaData, {
|
|
172
|
+
type,
|
|
173
|
+
value
|
|
174
|
+
}]);
|
|
175
|
+
};
|
|
176
|
+
|
|
169
177
|
const HttpCode = statusCode => {
|
|
170
178
|
return {
|
|
171
179
|
name: 'HttpCode',
|
|
172
180
|
|
|
173
|
-
metadata({
|
|
174
|
-
|
|
175
|
-
}) {
|
|
176
|
-
setMetadata(_types.HttpMetadata.StatusCode, statusCode);
|
|
181
|
+
metadata(helper) {
|
|
182
|
+
setResponseMeta(helper, _types.ResponseMetaType.StatusCode, statusCode);
|
|
177
183
|
}
|
|
178
184
|
|
|
179
185
|
};
|
|
@@ -185,10 +191,8 @@ const SetHeaders = headers => {
|
|
|
185
191
|
return {
|
|
186
192
|
name: 'SetHeaders',
|
|
187
193
|
|
|
188
|
-
metadata({
|
|
189
|
-
|
|
190
|
-
}) {
|
|
191
|
-
setMetadata(_types.HttpMetadata.ResponseHeaders, headers);
|
|
194
|
+
metadata(helper) {
|
|
195
|
+
setResponseMeta(helper, _types.ResponseMetaType.Headers, headers);
|
|
192
196
|
}
|
|
193
197
|
|
|
194
198
|
};
|
|
@@ -200,10 +204,8 @@ const Redirect = url => {
|
|
|
200
204
|
return {
|
|
201
205
|
name: 'Redirect',
|
|
202
206
|
|
|
203
|
-
metadata({
|
|
204
|
-
|
|
205
|
-
}) {
|
|
206
|
-
setMetadata(_types.HttpMetadata.Redirect, url);
|
|
207
|
+
metadata(helper) {
|
|
208
|
+
setResponseMeta(helper, _types.ResponseMetaType.Redirect, url);
|
|
207
209
|
}
|
|
208
210
|
|
|
209
211
|
};
|
|
@@ -34,6 +34,8 @@ Object.keys(_constants).forEach(function (key) {
|
|
|
34
34
|
|
|
35
35
|
var _utils2 = require("./utils");
|
|
36
36
|
|
|
37
|
+
var _console = require("console");
|
|
38
|
+
|
|
37
39
|
var _types2 = require("./types");
|
|
38
40
|
|
|
39
41
|
Object.keys(_types2).forEach(function (key) {
|
|
@@ -152,7 +154,8 @@ class ApiRouter {
|
|
|
152
154
|
apiHandlers = apiHandlers.concat(handlerInfos);
|
|
153
155
|
}
|
|
154
156
|
});
|
|
155
|
-
|
|
157
|
+
const sortedHandlers = (0, _utils2.sortRoutes)(apiHandlers);
|
|
158
|
+
return sortedHandlers;
|
|
156
159
|
}
|
|
157
160
|
|
|
158
161
|
getModuleHandlerInfos(moduleInfo) {
|
|
@@ -309,7 +312,9 @@ class ApiRouter {
|
|
|
309
312
|
getApiHandlers() {
|
|
310
313
|
const filenames = this.getApiFiles();
|
|
311
314
|
const moduleInfos = this.getModuleInfos(filenames);
|
|
312
|
-
|
|
315
|
+
const apiHandlers = this.getHandlerInfos(moduleInfos);
|
|
316
|
+
(0, _console.debug)('apiHandlers', apiHandlers);
|
|
317
|
+
return apiHandlers;
|
|
313
318
|
}
|
|
314
319
|
|
|
315
320
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.requireHandlerModule = exports.isHandler = exports.getPathFromFilename = exports.getFiles = void 0;
|
|
6
|
+
exports.sortRoutes = exports.requireHandlerModule = exports.isHandler = exports.getPathFromFilename = exports.getFiles = void 0;
|
|
7
7
|
|
|
8
8
|
var _path = _interopRequireDefault(require("path"));
|
|
9
9
|
|
|
@@ -71,4 +71,17 @@ const requireHandlerModule = modulePath => {
|
|
|
71
71
|
return module;
|
|
72
72
|
};
|
|
73
73
|
|
|
74
|
-
exports.requireHandlerModule = requireHandlerModule;
|
|
74
|
+
exports.requireHandlerModule = requireHandlerModule;
|
|
75
|
+
|
|
76
|
+
const sortRoutes = apiHandlers => {
|
|
77
|
+
const sortedHandlers = apiHandlers.slice();
|
|
78
|
+
sortedHandlers.forEach((apiHandler, handlerIndex) => {
|
|
79
|
+
if (apiHandler.routeName.includes(':')) {
|
|
80
|
+
sortedHandlers.splice(handlerIndex, 1);
|
|
81
|
+
sortedHandlers.push(apiHandler);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
return sortedHandlers;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
exports.sortRoutes = sortRoutes;
|
package/dist/js/node/types.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.httpMethods = exports.TriggerType = exports.OperatorType = exports.HttpMethod = exports.HttpMetadata = void 0;
|
|
6
|
+
exports.httpMethods = exports.TriggerType = exports.ResponseMetaType = exports.OperatorType = exports.HttpMethod = exports.HttpMetadata = void 0;
|
|
7
7
|
let OperatorType;
|
|
8
8
|
exports.OperatorType = OperatorType;
|
|
9
9
|
|
|
@@ -29,11 +29,17 @@ exports.HttpMetadata = HttpMetadata;
|
|
|
29
29
|
HttpMetadata["Params"] = "PARAMS";
|
|
30
30
|
HttpMetadata["Headers"] = "HEADERS";
|
|
31
31
|
HttpMetadata["Response"] = "RESPONSE";
|
|
32
|
-
HttpMetadata["StatusCode"] = "STATUS_CODE";
|
|
33
|
-
HttpMetadata["Redirect"] = "REDIRECT";
|
|
34
|
-
HttpMetadata["ResponseHeaders"] = "RESPONSE_HEADERS";
|
|
35
32
|
})(HttpMetadata || (exports.HttpMetadata = HttpMetadata = {}));
|
|
36
33
|
|
|
34
|
+
let ResponseMetaType;
|
|
35
|
+
exports.ResponseMetaType = ResponseMetaType;
|
|
36
|
+
|
|
37
|
+
(function (ResponseMetaType) {
|
|
38
|
+
ResponseMetaType[ResponseMetaType["StatusCode"] = 0] = "StatusCode";
|
|
39
|
+
ResponseMetaType[ResponseMetaType["Redirect"] = 1] = "Redirect";
|
|
40
|
+
ResponseMetaType[ResponseMetaType["Headers"] = 2] = "Headers";
|
|
41
|
+
})(ResponseMetaType || (exports.ResponseMetaType = ResponseMetaType = {}));
|
|
42
|
+
|
|
37
43
|
let HttpMethod;
|
|
38
44
|
exports.HttpMethod = HttpMethod;
|
|
39
45
|
|
package/dist/js/node/utils.js
CHANGED
|
@@ -3,13 +3,17 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.validateFunction = exports.isWithMetaHandler = exports.getTypeErrorMessage = exports.HANDLER_WITH_META = exports.ERR_INVALID_ARG_TYPE = void 0;
|
|
6
|
+
exports.validateFunction = exports.isWithMetaHandler = exports.getTypeErrorMessage = exports.debug = exports.HANDLER_WITH_META = exports.ERR_INVALID_ARG_TYPE = void 0;
|
|
7
7
|
|
|
8
8
|
var _util = _interopRequireDefault(require("util"));
|
|
9
9
|
|
|
10
|
+
var _utils = require("@modern-js/utils");
|
|
11
|
+
|
|
10
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
13
|
|
|
12
|
-
const HANDLER_WITH_META = '
|
|
14
|
+
const HANDLER_WITH_META = 'HANDLER_WITH_META';
|
|
15
|
+
exports.HANDLER_WITH_META = HANDLER_WITH_META;
|
|
16
|
+
const debug = (0, _utils.createDebugger)('bff'); // export const pick = <T extends Record<string, unknown>, K extends keyof T>(
|
|
13
17
|
// obj: T,
|
|
14
18
|
// keys: readonly K[],
|
|
15
19
|
// ) => {
|
|
@@ -19,7 +23,7 @@ const HANDLER_WITH_META = 'HANDLER_WITH_SCHEMA'; // export const pick = <T exten
|
|
|
19
23
|
// };
|
|
20
24
|
// fork from https://github.com/nodejs/node/blob/master/lib/internal/errors.js
|
|
21
25
|
|
|
22
|
-
exports.
|
|
26
|
+
exports.debug = debug;
|
|
23
27
|
|
|
24
28
|
const getTypeErrorMessage = actual => {
|
|
25
29
|
let msg = '';
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { Operator, HttpMethod, ApiMiddleware } from '../types';
|
|
2
|
+
import { Operator, HttpMethod, ApiMiddleware, ResponseMetaType } from '../types';
|
|
3
|
+
export interface ResponseMeta {
|
|
4
|
+
type: ResponseMetaType;
|
|
5
|
+
value: unknown;
|
|
6
|
+
}
|
|
3
7
|
export declare const createHttpOperator: (method: HttpMethod) => (urlPath: string) => Operator<void>;
|
|
4
8
|
export declare const Get: (urlPath: string) => Operator<void>;
|
|
5
9
|
export declare const Post: (urlPath: string) => Operator<void>;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { MaybeAsync } from '@modern-js/bff-runtime';
|
|
2
|
+
import { APIHandlerInfo } from './types';
|
|
2
3
|
export declare type NormalHandler = (...args: any[]) => any;
|
|
3
4
|
export declare type Handler<I, O> = (input: I) => MaybeAsync<O>;
|
|
4
5
|
export declare const getFiles: (lambdaDir: string, rules: string | string[]) => string[];
|
|
5
6
|
export declare const getPathFromFilename: (baseDir: string, filename: string) => string;
|
|
6
7
|
export declare const isHandler: (input: any) => input is Handler<any, any>;
|
|
7
|
-
export declare const requireHandlerModule: (modulePath: string) => any;
|
|
8
|
+
export declare const requireHandlerModule: (modulePath: string) => any;
|
|
9
|
+
export declare const sortRoutes: (apiHandlers: APIHandlerInfo[]) => APIHandlerInfo[];
|
package/dist/types/types.d.ts
CHANGED
|
@@ -13,9 +13,11 @@ export declare enum HttpMetadata {
|
|
|
13
13
|
Params = "PARAMS",
|
|
14
14
|
Headers = "HEADERS",
|
|
15
15
|
Response = "RESPONSE",
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
}
|
|
17
|
+
export declare enum ResponseMetaType {
|
|
18
|
+
StatusCode = 0,
|
|
19
|
+
Redirect = 1,
|
|
20
|
+
Headers = 2,
|
|
19
21
|
}
|
|
20
22
|
export declare enum HttpMethod {
|
|
21
23
|
Get = "GET",
|
package/dist/types/utils.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export declare const HANDLER_WITH_META = "
|
|
1
|
+
export declare const HANDLER_WITH_META = "HANDLER_WITH_META";
|
|
2
|
+
export declare const debug: import("@modern-js/utils/compiled/debug").Debugger;
|
|
2
3
|
export declare const getTypeErrorMessage: (actual: unknown) => string;
|
|
3
4
|
export declare class ERR_INVALID_ARG_TYPE extends Error {
|
|
4
5
|
constructor(funcName: string, expectedType: string, actual: unknown);
|