@modern-js/bff-core 2.0.0-beta.3 → 2.0.0-beta.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/CHANGELOG.md +75 -0
- package/dist/js/modern/api.js +49 -25
- package/dist/js/modern/client/generate-client.js +51 -24
- package/dist/js/modern/client/index.js +1 -1
- package/dist/js/modern/client/result.js +9 -8
- package/dist/js/modern/errors/http.js +8 -7
- package/dist/js/modern/index.js +19 -3
- package/dist/js/modern/operators/http.js +139 -87
- package/dist/js/modern/router/constants.js +31 -11
- package/dist/js/modern/router/index.js +66 -69
- package/dist/js/modern/router/types.js +0 -1
- package/dist/js/modern/router/utils.js +36 -37
- package/dist/js/modern/types.js +45 -37
- package/dist/js/modern/utils/alias.js +32 -30
- package/dist/js/modern/utils/debug.js +5 -2
- package/dist/js/modern/utils/index.js +5 -2
- package/dist/js/modern/utils/meta.js +8 -4
- package/dist/js/modern/utils/storage.js +8 -4
- package/dist/js/modern/utils/validate.js +22 -23
- package/dist/js/node/api.js +78 -32
- package/dist/js/node/client/generate-client.js +84 -37
- package/dist/js/node/client/index.js +17 -16
- package/dist/js/node/client/result.js +31 -14
- package/dist/js/node/errors/http.js +28 -11
- package/dist/js/node/index.js +45 -111
- package/dist/js/node/operators/http.js +184 -124
- package/dist/js/node/router/constants.js +60 -24
- package/dist/js/node/router/index.js +110 -125
- package/dist/js/node/router/types.js +15 -5
- package/dist/js/node/router/utils.js +71 -51
- package/dist/js/node/types.js +71 -47
- package/dist/js/node/utils/alias.js +63 -42
- package/dist/js/node/utils/debug.js +27 -8
- package/dist/js/node/utils/index.js +28 -59
- package/dist/js/node/utils/meta.js +30 -10
- package/dist/js/node/utils/storage.js +36 -11
- package/dist/js/node/utils/validate.js +49 -28
- package/dist/types/router/constants.d.ts +1 -0
- package/dist/types/router/index.d.ts +1 -0
- package/package.json +5 -10
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,80 @@
|
|
|
1
1
|
# @modern-js/bff-core
|
|
2
2
|
|
|
3
|
+
## 2.0.0-beta.6
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- dda38c9c3e: chore: v2
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- 2344eb26ed: fix: esbuild should not handle js files
|
|
12
|
+
fix: esbuild 不应该处理非 js 文件
|
|
13
|
+
- a2509bfbdb: feat: bump esbuild from 0.14.38 to 0.15.7
|
|
14
|
+
|
|
15
|
+
feat: 将 esbuild 从 0.14.38 版本升级至 0.15.7 版本
|
|
16
|
+
|
|
17
|
+
- Updated dependencies [7879e8f711]
|
|
18
|
+
- Updated dependencies [6aca875011]
|
|
19
|
+
- Updated dependencies [2e6031955e]
|
|
20
|
+
- Updated dependencies [7b7d12cf8f]
|
|
21
|
+
- Updated dependencies [7efeed4]
|
|
22
|
+
- Updated dependencies [92f0eade39]
|
|
23
|
+
- Updated dependencies [edd1cfb1af]
|
|
24
|
+
- Updated dependencies [cc971eabfc]
|
|
25
|
+
- Updated dependencies [5b9049f2e9]
|
|
26
|
+
- Updated dependencies [92004d1906]
|
|
27
|
+
- Updated dependencies [b8bbe036c7]
|
|
28
|
+
- Updated dependencies [d5a31df781]
|
|
29
|
+
- Updated dependencies [dda38c9c3e]
|
|
30
|
+
- Updated dependencies [3bbea92b2a]
|
|
31
|
+
- Updated dependencies [b710adb843]
|
|
32
|
+
- Updated dependencies [ea7cf06257]
|
|
33
|
+
- Updated dependencies [bbe4c4ab64]
|
|
34
|
+
- Updated dependencies [e4558a0bc4]
|
|
35
|
+
- Updated dependencies [abf3421a75]
|
|
36
|
+
- Updated dependencies [543be9558e]
|
|
37
|
+
- Updated dependencies [14b712da84]
|
|
38
|
+
- @modern-js/utils@2.0.0-beta.6
|
|
39
|
+
- @modern-js/bff-runtime@2.0.0-beta.6
|
|
40
|
+
|
|
41
|
+
## 2.0.0-beta.4
|
|
42
|
+
|
|
43
|
+
### Major Changes
|
|
44
|
+
|
|
45
|
+
- dda38c9c3e: chore: v2
|
|
46
|
+
|
|
47
|
+
### Patch Changes
|
|
48
|
+
|
|
49
|
+
- 2344eb26ed: fix: esbuild should not handle js files
|
|
50
|
+
fix: esbuild 不应该处理非 js 文件
|
|
51
|
+
- a2509bfbdb: feat: bump esbuild from 0.14.38 to 0.15.7
|
|
52
|
+
|
|
53
|
+
feat: 将 esbuild 从 0.14.38 版本升级至 0.15.7 版本
|
|
54
|
+
|
|
55
|
+
- Updated dependencies [7879e8f]
|
|
56
|
+
- Updated dependencies [6aca875]
|
|
57
|
+
- Updated dependencies [2e6031955e]
|
|
58
|
+
- Updated dependencies [7b7d12c]
|
|
59
|
+
- Updated dependencies [92f0eade39]
|
|
60
|
+
- Updated dependencies [edd1cfb1af]
|
|
61
|
+
- Updated dependencies [cc971eabfc]
|
|
62
|
+
- Updated dependencies [5b9049f2e9]
|
|
63
|
+
- Updated dependencies [92004d1906]
|
|
64
|
+
- Updated dependencies [b8bbe036c7]
|
|
65
|
+
- Updated dependencies [d5a31df781]
|
|
66
|
+
- Updated dependencies [dda38c9c3e]
|
|
67
|
+
- Updated dependencies [3bbea92b2a]
|
|
68
|
+
- Updated dependencies [b710adb843]
|
|
69
|
+
- Updated dependencies [ea7cf06]
|
|
70
|
+
- Updated dependencies [bbe4c4a]
|
|
71
|
+
- Updated dependencies [e4558a0]
|
|
72
|
+
- Updated dependencies [abf3421a75]
|
|
73
|
+
- Updated dependencies [543be9558e]
|
|
74
|
+
- Updated dependencies [14b712da84]
|
|
75
|
+
- @modern-js/utils@2.0.0-beta.4
|
|
76
|
+
- @modern-js/bff-runtime@2.0.0-beta.4
|
|
77
|
+
|
|
3
78
|
## 2.0.0-beta.3
|
|
4
79
|
|
|
5
80
|
### Major Changes
|
package/dist/js/modern/api.js
CHANGED
|
@@ -1,9 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
var __async = (__this, __arguments, generator) => {
|
|
2
|
+
return new Promise((resolve, reject) => {
|
|
3
|
+
var fulfilled = (value) => {
|
|
4
|
+
try {
|
|
5
|
+
step(generator.next(value));
|
|
6
|
+
} catch (e) {
|
|
7
|
+
reject(e);
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
var rejected = (value) => {
|
|
11
|
+
try {
|
|
12
|
+
step(generator.throw(value));
|
|
13
|
+
} catch (e) {
|
|
14
|
+
reject(e);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
18
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
import "reflect-metadata";
|
|
22
|
+
import compose from "koa-compose";
|
|
3
23
|
import { validateFunction, HANDLER_WITH_META } from "./utils";
|
|
4
|
-
|
|
24
|
+
function Api(...args) {
|
|
5
25
|
const handler = args.pop();
|
|
6
|
-
validateFunction(handler,
|
|
26
|
+
validateFunction(handler, "Apihandler");
|
|
7
27
|
const operators = args;
|
|
8
28
|
const metadataHelper = {
|
|
9
29
|
getMetadata(key) {
|
|
@@ -18,28 +38,32 @@ export function Api(...args) {
|
|
|
18
38
|
operator.metadata(metadataHelper);
|
|
19
39
|
}
|
|
20
40
|
}
|
|
21
|
-
const validateHandlers = operators.filter(operator => operator.validate).map(operator => operator.validate);
|
|
22
|
-
const pipeHandlers = operators.filter(operator => operator.execute).map(operator => operator.execute);
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
41
|
+
const validateHandlers = operators.filter((operator) => operator.validate).map((operator) => operator.validate);
|
|
42
|
+
const pipeHandlers = operators.filter((operator) => operator.execute).map((operator) => operator.execute);
|
|
43
|
+
function runner(inputs) {
|
|
44
|
+
return __async(this, null, function* () {
|
|
45
|
+
const executeHelper = {
|
|
46
|
+
result: null,
|
|
47
|
+
get inputs() {
|
|
48
|
+
return inputs;
|
|
49
|
+
},
|
|
50
|
+
set inputs(val) {
|
|
51
|
+
inputs = val;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
const stack = [...validateHandlers, ...pipeHandlers];
|
|
55
|
+
stack.push((helper, next) => __async(this, null, function* () {
|
|
56
|
+
const res = yield handler(helper.inputs);
|
|
57
|
+
helper.result = res;
|
|
58
|
+
return next();
|
|
59
|
+
}));
|
|
60
|
+
yield compose(stack)(executeHelper);
|
|
61
|
+
return executeHelper.result;
|
|
39
62
|
});
|
|
40
|
-
await compose(stack)(executeHelper);
|
|
41
|
-
return executeHelper.result;
|
|
42
63
|
}
|
|
43
64
|
runner[HANDLER_WITH_META] = true;
|
|
44
65
|
return runner;
|
|
45
|
-
}
|
|
66
|
+
}
|
|
67
|
+
export {
|
|
68
|
+
Api
|
|
69
|
+
};
|
|
@@ -1,8 +1,28 @@
|
|
|
1
|
-
|
|
1
|
+
var __async = (__this, __arguments, generator) => {
|
|
2
|
+
return new Promise((resolve, reject) => {
|
|
3
|
+
var fulfilled = (value) => {
|
|
4
|
+
try {
|
|
5
|
+
step(generator.next(value));
|
|
6
|
+
} catch (e) {
|
|
7
|
+
reject(e);
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
var rejected = (value) => {
|
|
11
|
+
try {
|
|
12
|
+
step(generator.throw(value));
|
|
13
|
+
} catch (e) {
|
|
14
|
+
reject(e);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
18
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
import * as path from "path";
|
|
2
22
|
import { ApiRouter } from "../router";
|
|
3
23
|
import { Ok, Err } from "./result";
|
|
4
|
-
|
|
5
|
-
|
|
24
|
+
const DEFAULT_CLIENT_REQUEST_CREATOR = "@modern-js/create-request";
|
|
25
|
+
const generateClient = (_0) => __async(void 0, [_0], function* ({
|
|
6
26
|
resourcePath,
|
|
7
27
|
apiDir,
|
|
8
28
|
prefix,
|
|
@@ -10,19 +30,22 @@ export const generateClient = async ({
|
|
|
10
30
|
target,
|
|
11
31
|
requestCreator,
|
|
12
32
|
fetcher,
|
|
13
|
-
requireResolve
|
|
14
|
-
})
|
|
33
|
+
requireResolve = require.resolve
|
|
34
|
+
}) {
|
|
15
35
|
if (!requestCreator) {
|
|
16
|
-
|
|
17
|
-
|
|
36
|
+
requestCreator = requireResolve(
|
|
37
|
+
`${DEFAULT_CLIENT_REQUEST_CREATOR}${target ? `/${target}` : ""}`
|
|
38
|
+
).replace(/\\/g, "/");
|
|
18
39
|
} else {
|
|
19
|
-
// 这里约束传入的 requestCreator 包也必须有两个导出 client 和 server,因为目前的机制 client 和 server 要导出不同的 configure 函数;该 api 不对使用者暴露,后续可优化
|
|
20
40
|
let resolvedPath = requestCreator;
|
|
21
41
|
try {
|
|
22
|
-
resolvedPath = path.dirname(
|
|
23
|
-
} catch (error) {
|
|
24
|
-
|
|
25
|
-
requestCreator = `${resolvedPath}${target ? `/${target}` :
|
|
42
|
+
resolvedPath = path.dirname(requireResolve(requestCreator));
|
|
43
|
+
} catch (error) {
|
|
44
|
+
}
|
|
45
|
+
requestCreator = `${resolvedPath}${target ? `/${target}` : ""}`.replace(
|
|
46
|
+
/\\/g,
|
|
47
|
+
"/"
|
|
48
|
+
);
|
|
26
49
|
}
|
|
27
50
|
const apiRouter = new ApiRouter({
|
|
28
51
|
apiDir,
|
|
@@ -32,23 +55,27 @@ export const generateClient = async ({
|
|
|
32
55
|
if (!handlerInfos) {
|
|
33
56
|
return Err(`generate client error: Cannot require module ${resourcePath}`);
|
|
34
57
|
}
|
|
35
|
-
let handlersCode =
|
|
58
|
+
let handlersCode = "";
|
|
36
59
|
for (const handlerInfo of handlerInfos) {
|
|
37
|
-
const {
|
|
38
|
-
name,
|
|
39
|
-
httpMethod,
|
|
40
|
-
routePath
|
|
41
|
-
} = handlerInfo;
|
|
60
|
+
const { name, httpMethod, routePath } = handlerInfo;
|
|
42
61
|
let exportStatement = `const ${name} =`;
|
|
43
|
-
if (name.toLowerCase() ===
|
|
44
|
-
exportStatement =
|
|
62
|
+
if (name.toLowerCase() === "default") {
|
|
63
|
+
exportStatement = "default";
|
|
45
64
|
}
|
|
46
65
|
const upperHttpMethod = httpMethod.toUpperCase();
|
|
47
66
|
const routeName = routePath;
|
|
48
|
-
handlersCode += `export ${exportStatement} createRequest('${routeName}', '${upperHttpMethod}', process.env.PORT || ${String(
|
|
67
|
+
handlersCode += `export ${exportStatement} createRequest('${routeName}', '${upperHttpMethod}', process.env.PORT || ${String(
|
|
68
|
+
port
|
|
69
|
+
)}${fetcher ? `, fetch` : ""});
|
|
49
70
|
`;
|
|
50
71
|
}
|
|
51
72
|
const importCode = `import { createRequest } from '${requestCreator}';
|
|
52
|
-
${fetcher ? `import { fetch } from '${fetcher}'
|
|
53
|
-
|
|
54
|
-
}
|
|
73
|
+
${fetcher ? `import { fetch } from '${fetcher}';
|
|
74
|
+
` : ""}`;
|
|
75
|
+
return Ok(`${importCode}
|
|
76
|
+
${handlersCode}`);
|
|
77
|
+
});
|
|
78
|
+
export {
|
|
79
|
+
DEFAULT_CLIENT_REQUEST_CREATOR,
|
|
80
|
+
generateClient
|
|
81
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from "./generate-client";
|
|
1
|
+
export * from "./generate-client";
|
|
@@ -1,21 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
export const Err = value => {
|
|
1
|
+
const Err = (value) => {
|
|
3
2
|
const err = {
|
|
4
|
-
kind:
|
|
3
|
+
kind: "Err",
|
|
5
4
|
value,
|
|
6
5
|
isErr: true,
|
|
7
6
|
isOk: false
|
|
8
7
|
};
|
|
9
8
|
return err;
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
13
|
-
export const Ok = value => {
|
|
10
|
+
const Ok = (value) => {
|
|
14
11
|
const ok = {
|
|
15
|
-
kind:
|
|
12
|
+
kind: "Ok",
|
|
16
13
|
value,
|
|
17
14
|
isErr: false,
|
|
18
15
|
isOk: true
|
|
19
16
|
};
|
|
20
17
|
return ok;
|
|
21
|
-
};
|
|
18
|
+
};
|
|
19
|
+
export {
|
|
20
|
+
Err,
|
|
21
|
+
Ok
|
|
22
|
+
};
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
export class HttpError extends Error {
|
|
1
|
+
class HttpError extends Error {
|
|
3
2
|
constructor(status, message) {
|
|
4
3
|
super(message);
|
|
5
|
-
_defineProperty(this, "status", void 0);
|
|
6
4
|
this.status = status;
|
|
7
5
|
}
|
|
8
6
|
}
|
|
9
|
-
|
|
7
|
+
class ValidationError extends HttpError {
|
|
10
8
|
constructor(status, message) {
|
|
11
9
|
super(status, message);
|
|
12
|
-
|
|
13
|
-
this.code = 'VALIDATION_ERROR';
|
|
10
|
+
this.code = "VALIDATION_ERROR";
|
|
14
11
|
}
|
|
15
|
-
}
|
|
12
|
+
}
|
|
13
|
+
export {
|
|
14
|
+
HttpError,
|
|
15
|
+
ValidationError
|
|
16
|
+
};
|
package/dist/js/modern/index.js
CHANGED
|
@@ -1,7 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { Api } from "./api";
|
|
2
|
+
import { HttpError, ValidationError } from "./errors/http";
|
|
3
3
|
export * from "./router";
|
|
4
4
|
export * from "./types";
|
|
5
5
|
export * from "./client";
|
|
6
6
|
export * from "./operators/http";
|
|
7
|
-
|
|
7
|
+
import {
|
|
8
|
+
getRelativeRuntimePath,
|
|
9
|
+
HANDLER_WITH_META,
|
|
10
|
+
isWithMetaHandler,
|
|
11
|
+
createStorage,
|
|
12
|
+
registerPaths
|
|
13
|
+
} from "./utils";
|
|
14
|
+
export {
|
|
15
|
+
Api,
|
|
16
|
+
HANDLER_WITH_META,
|
|
17
|
+
HttpError,
|
|
18
|
+
ValidationError,
|
|
19
|
+
createStorage,
|
|
20
|
+
getRelativeRuntimePath,
|
|
21
|
+
isWithMetaHandler,
|
|
22
|
+
registerPaths
|
|
23
|
+
};
|
|
@@ -1,28 +1,66 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
var __async = (__this, __arguments, generator) => {
|
|
21
|
+
return new Promise((resolve, reject) => {
|
|
22
|
+
var fulfilled = (value) => {
|
|
23
|
+
try {
|
|
24
|
+
step(generator.next(value));
|
|
25
|
+
} catch (e) {
|
|
26
|
+
reject(e);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
var rejected = (value) => {
|
|
30
|
+
try {
|
|
31
|
+
step(generator.throw(value));
|
|
32
|
+
} catch (e) {
|
|
33
|
+
reject(e);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
37
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
import {
|
|
41
|
+
HttpMetadata,
|
|
42
|
+
OperatorType,
|
|
43
|
+
HttpMethod,
|
|
44
|
+
TriggerType,
|
|
45
|
+
ResponseMetaType
|
|
46
|
+
} from "../types";
|
|
5
47
|
import { ValidationError } from "../errors/http";
|
|
6
|
-
const validateInput =
|
|
48
|
+
const validateInput = (schema, input) => __async(void 0, null, function* () {
|
|
7
49
|
try {
|
|
8
|
-
return
|
|
50
|
+
return yield schema.parseAsync(input);
|
|
9
51
|
} catch (error) {
|
|
10
|
-
const {
|
|
11
|
-
z: zod
|
|
12
|
-
} = require('zod');
|
|
52
|
+
const { z: zod } = require("zod");
|
|
13
53
|
if (error instanceof zod.ZodError) {
|
|
14
54
|
throw new ValidationError(400, error.message);
|
|
15
55
|
}
|
|
16
56
|
throw error;
|
|
17
57
|
}
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
return urlPath => {
|
|
58
|
+
});
|
|
59
|
+
const createHttpOperator = (method) => {
|
|
60
|
+
return (urlPath) => {
|
|
21
61
|
return {
|
|
22
62
|
name: method,
|
|
23
|
-
metadata({
|
|
24
|
-
setMetadata
|
|
25
|
-
}) {
|
|
63
|
+
metadata({ setMetadata }) {
|
|
26
64
|
setMetadata(OperatorType.Trigger, {
|
|
27
65
|
type: TriggerType.Http,
|
|
28
66
|
path: urlPath,
|
|
@@ -32,127 +70,141 @@ export const createHttpOperator = method => {
|
|
|
32
70
|
};
|
|
33
71
|
};
|
|
34
72
|
};
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
73
|
+
const Get = createHttpOperator(HttpMethod.Get);
|
|
74
|
+
const Post = createHttpOperator(HttpMethod.Post);
|
|
75
|
+
const Put = createHttpOperator(HttpMethod.Put);
|
|
76
|
+
const Delete = createHttpOperator(HttpMethod.Delete);
|
|
77
|
+
const Connect = createHttpOperator(HttpMethod.Connect);
|
|
78
|
+
const Trace = createHttpOperator(HttpMethod.Trace);
|
|
79
|
+
const Patch = createHttpOperator(HttpMethod.Patch);
|
|
80
|
+
const Option = createHttpOperator(HttpMethod.Option);
|
|
81
|
+
const Head = createHttpOperator(HttpMethod.Head);
|
|
82
|
+
const Data = (schema) => {
|
|
45
83
|
return {
|
|
46
84
|
name: HttpMetadata.Data,
|
|
47
|
-
metadata({
|
|
48
|
-
setMetadata
|
|
49
|
-
}) {
|
|
85
|
+
metadata({ setMetadata }) {
|
|
50
86
|
setMetadata(HttpMetadata.Data, schema);
|
|
51
87
|
},
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
data
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
88
|
+
validate(helper, next) {
|
|
89
|
+
return __async(this, null, function* () {
|
|
90
|
+
const {
|
|
91
|
+
inputs: { data }
|
|
92
|
+
} = helper;
|
|
93
|
+
helper.inputs = __spreadProps(__spreadValues({}, helper.inputs), {
|
|
94
|
+
data: yield validateInput(schema, data)
|
|
95
|
+
});
|
|
96
|
+
return next();
|
|
60
97
|
});
|
|
61
|
-
return next();
|
|
62
98
|
}
|
|
63
99
|
};
|
|
64
100
|
};
|
|
65
|
-
|
|
101
|
+
const Query = (schema) => {
|
|
66
102
|
return {
|
|
67
103
|
name: HttpMetadata.Query,
|
|
68
|
-
metadata({
|
|
69
|
-
setMetadata
|
|
70
|
-
}) {
|
|
104
|
+
metadata({ setMetadata }) {
|
|
71
105
|
setMetadata(HttpMetadata.Query, schema);
|
|
72
106
|
},
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
query
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
107
|
+
validate(helper, next) {
|
|
108
|
+
return __async(this, null, function* () {
|
|
109
|
+
const {
|
|
110
|
+
inputs: { query }
|
|
111
|
+
} = helper;
|
|
112
|
+
helper.inputs = __spreadProps(__spreadValues({}, helper.inputs), {
|
|
113
|
+
query: yield validateInput(schema, query)
|
|
114
|
+
});
|
|
115
|
+
return next();
|
|
81
116
|
});
|
|
82
|
-
return next();
|
|
83
117
|
}
|
|
84
118
|
};
|
|
85
119
|
};
|
|
86
|
-
|
|
120
|
+
const Params = (schema) => {
|
|
87
121
|
return {
|
|
88
122
|
name: HttpMetadata.Params,
|
|
89
|
-
metadata({
|
|
90
|
-
setMetadata
|
|
91
|
-
}) {
|
|
123
|
+
metadata({ setMetadata }) {
|
|
92
124
|
setMetadata(HttpMetadata.Params, schema);
|
|
93
125
|
},
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
params
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
126
|
+
validate(helper, next) {
|
|
127
|
+
return __async(this, null, function* () {
|
|
128
|
+
const {
|
|
129
|
+
inputs: { params }
|
|
130
|
+
} = helper;
|
|
131
|
+
helper.inputs = __spreadProps(__spreadValues({}, helper.inputs), {
|
|
132
|
+
params: yield validateInput(schema, params)
|
|
133
|
+
});
|
|
134
|
+
return next();
|
|
102
135
|
});
|
|
103
|
-
return next();
|
|
104
136
|
}
|
|
105
137
|
};
|
|
106
138
|
};
|
|
107
|
-
|
|
139
|
+
const Headers = (schema) => {
|
|
108
140
|
return {
|
|
109
141
|
name: HttpMetadata.Headers,
|
|
110
|
-
metadata({
|
|
111
|
-
setMetadata
|
|
112
|
-
}) {
|
|
142
|
+
metadata({ setMetadata }) {
|
|
113
143
|
setMetadata(HttpMetadata.Headers, schema);
|
|
114
144
|
},
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
headers
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
145
|
+
validate(helper, next) {
|
|
146
|
+
return __async(this, null, function* () {
|
|
147
|
+
const {
|
|
148
|
+
inputs: { headers }
|
|
149
|
+
} = helper;
|
|
150
|
+
helper.inputs = __spreadProps(__spreadValues({}, helper.inputs), {
|
|
151
|
+
headers: yield validateInput(schema, headers)
|
|
152
|
+
});
|
|
153
|
+
return next();
|
|
123
154
|
});
|
|
124
|
-
return next();
|
|
125
155
|
}
|
|
126
156
|
};
|
|
127
157
|
};
|
|
128
158
|
const setResponseMeta = (helper, type, value) => {
|
|
129
159
|
const responseMetaData = helper.getMetadata(HttpMetadata.Response) || [];
|
|
130
|
-
helper.setMetadata(HttpMetadata.Response, [
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
160
|
+
helper.setMetadata(HttpMetadata.Response, [
|
|
161
|
+
...responseMetaData,
|
|
162
|
+
{
|
|
163
|
+
type,
|
|
164
|
+
value
|
|
165
|
+
}
|
|
166
|
+
]);
|
|
134
167
|
};
|
|
135
|
-
|
|
168
|
+
const HttpCode = (statusCode) => {
|
|
136
169
|
return {
|
|
137
|
-
name:
|
|
170
|
+
name: "HttpCode",
|
|
138
171
|
metadata(helper) {
|
|
139
172
|
setResponseMeta(helper, ResponseMetaType.StatusCode, statusCode);
|
|
140
173
|
}
|
|
141
174
|
};
|
|
142
175
|
};
|
|
143
|
-
|
|
176
|
+
const SetHeaders = (headers) => {
|
|
144
177
|
return {
|
|
145
|
-
name:
|
|
178
|
+
name: "SetHeaders",
|
|
146
179
|
metadata(helper) {
|
|
147
180
|
setResponseMeta(helper, ResponseMetaType.Headers, headers);
|
|
148
181
|
}
|
|
149
182
|
};
|
|
150
183
|
};
|
|
151
|
-
|
|
184
|
+
const Redirect = (url) => {
|
|
152
185
|
return {
|
|
153
|
-
name:
|
|
186
|
+
name: "Redirect",
|
|
154
187
|
metadata(helper) {
|
|
155
188
|
setResponseMeta(helper, ResponseMetaType.Redirect, url);
|
|
156
189
|
}
|
|
157
190
|
};
|
|
158
|
-
};
|
|
191
|
+
};
|
|
192
|
+
export {
|
|
193
|
+
Connect,
|
|
194
|
+
Data,
|
|
195
|
+
Delete,
|
|
196
|
+
Get,
|
|
197
|
+
Head,
|
|
198
|
+
Headers,
|
|
199
|
+
HttpCode,
|
|
200
|
+
Option,
|
|
201
|
+
Params,
|
|
202
|
+
Patch,
|
|
203
|
+
Post,
|
|
204
|
+
Put,
|
|
205
|
+
Query,
|
|
206
|
+
Redirect,
|
|
207
|
+
SetHeaders,
|
|
208
|
+
Trace,
|
|
209
|
+
createHttpOperator
|
|
210
|
+
};
|