@bleedingdev/modern-js-bff-core 3.2.0-ultramodern.0
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/LICENSE +21 -0
- package/README.md +26 -0
- package/dist/cjs/api.js +88 -0
- package/dist/cjs/client/generateClient.js +136 -0
- package/dist/cjs/client/index.js +58 -0
- package/dist/cjs/client/result.js +56 -0
- package/dist/cjs/compatible.js +18 -0
- package/dist/cjs/contracts/eventContracts.js +68 -0
- package/dist/cjs/errors/http.js +50 -0
- package/dist/cjs/index.js +229 -0
- package/dist/cjs/operators/http.js +220 -0
- package/dist/cjs/router/constants.js +68 -0
- package/dist/cjs/router/index.js +284 -0
- package/dist/cjs/router/types.js +18 -0
- package/dist/cjs/router/utils.js +97 -0
- package/dist/cjs/security/crossProjectPolicy.js +137 -0
- package/dist/cjs/security/operationContracts.js +100 -0
- package/dist/cjs/types.js +88 -0
- package/dist/cjs/utils/alias.js +108 -0
- package/dist/cjs/utils/debug.js +37 -0
- package/dist/cjs/utils/index.js +101 -0
- package/dist/cjs/utils/meta.js +48 -0
- package/dist/cjs/utils/storage.js +64 -0
- package/dist/cjs/utils/validate.js +82 -0
- package/dist/esm/api.mjs +44 -0
- package/dist/esm/client/generateClient.mjs +99 -0
- package/dist/esm/client/index.mjs +1 -0
- package/dist/esm/client/result.mjs +19 -0
- package/dist/esm/compatible.mjs +0 -0
- package/dist/esm/contracts/eventContracts.mjs +28 -0
- package/dist/esm/errors/http.mjs +13 -0
- package/dist/esm/index.mjs +10 -0
- package/dist/esm/operators/http.mjs +135 -0
- package/dist/esm/router/constants.mjs +19 -0
- package/dist/esm/router/index.mjs +192 -0
- package/dist/esm/router/types.mjs +0 -0
- package/dist/esm/router/utils.mjs +41 -0
- package/dist/esm/security/crossProjectPolicy.mjs +94 -0
- package/dist/esm/security/operationContracts.mjs +57 -0
- package/dist/esm/types.mjs +39 -0
- package/dist/esm/utils/alias.mjs +57 -0
- package/dist/esm/utils/debug.mjs +3 -0
- package/dist/esm/utils/index.mjs +5 -0
- package/dist/esm/utils/meta.mjs +5 -0
- package/dist/esm/utils/storage.mjs +30 -0
- package/dist/esm/utils/validate.mjs +32 -0
- package/dist/esm-node/api.mjs +45 -0
- package/dist/esm-node/client/generateClient.mjs +101 -0
- package/dist/esm-node/client/index.mjs +2 -0
- package/dist/esm-node/client/result.mjs +20 -0
- package/dist/esm-node/compatible.mjs +1 -0
- package/dist/esm-node/contracts/eventContracts.mjs +29 -0
- package/dist/esm-node/errors/http.mjs +14 -0
- package/dist/esm-node/index.mjs +11 -0
- package/dist/esm-node/operators/http.mjs +136 -0
- package/dist/esm-node/router/constants.mjs +20 -0
- package/dist/esm-node/router/index.mjs +193 -0
- package/dist/esm-node/router/types.mjs +1 -0
- package/dist/esm-node/router/utils.mjs +42 -0
- package/dist/esm-node/security/crossProjectPolicy.mjs +95 -0
- package/dist/esm-node/security/operationContracts.mjs +58 -0
- package/dist/esm-node/types.mjs +40 -0
- package/dist/esm-node/utils/alias.mjs +58 -0
- package/dist/esm-node/utils/debug.mjs +4 -0
- package/dist/esm-node/utils/index.mjs +6 -0
- package/dist/esm-node/utils/meta.mjs +6 -0
- package/dist/esm-node/utils/storage.mjs +31 -0
- package/dist/esm-node/utils/validate.mjs +33 -0
- package/dist/types/api.d.ts +6 -0
- package/dist/types/client/generateClient.d.ts +21 -0
- package/dist/types/client/index.d.ts +1 -0
- package/dist/types/client/result.d.ts +15 -0
- package/dist/types/compatible.d.ts +9 -0
- package/dist/types/contracts/eventContracts.d.ts +22 -0
- package/dist/types/errors/http.d.ts +8 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/operators/http.d.ts +44 -0
- package/dist/types/router/constants.d.ts +6 -0
- package/dist/types/router/index.d.ts +49 -0
- package/dist/types/router/types.d.ts +18 -0
- package/dist/types/router/utils.d.ts +10 -0
- package/dist/types/security/crossProjectPolicy.d.ts +30 -0
- package/dist/types/security/operationContracts.d.ts +28 -0
- package/dist/types/types.d.ts +64 -0
- package/dist/types/utils/alias.d.ts +7 -0
- package/dist/types/utils/debug.d.ts +1 -0
- package/dist/types/utils/index.d.ts +5 -0
- package/dist/types/utils/meta.d.ts +4 -0
- package/dist/types/utils/storage.d.ts +5 -0
- package/dist/types/utils/validate.d.ts +5 -0
- package/package.json +68 -0
- package/rslib.config.mts +4 -0
- package/rstest.config.mts +10 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
HttpMetadata: ()=>HttpMetadata,
|
|
28
|
+
HttpMethod: ()=>HttpMethod,
|
|
29
|
+
OperatorType: ()=>OperatorType,
|
|
30
|
+
ResponseMetaType: ()=>ResponseMetaType,
|
|
31
|
+
TriggerType: ()=>TriggerType,
|
|
32
|
+
httpMethods: ()=>httpMethods
|
|
33
|
+
});
|
|
34
|
+
var OperatorType = /*#__PURE__*/ function(OperatorType) {
|
|
35
|
+
OperatorType[OperatorType["Trigger"] = 0] = "Trigger";
|
|
36
|
+
OperatorType[OperatorType["Middleware"] = 1] = "Middleware";
|
|
37
|
+
return OperatorType;
|
|
38
|
+
}({});
|
|
39
|
+
var TriggerType = /*#__PURE__*/ function(TriggerType) {
|
|
40
|
+
TriggerType[TriggerType["Http"] = 0] = "Http";
|
|
41
|
+
return TriggerType;
|
|
42
|
+
}({});
|
|
43
|
+
var HttpMetadata = /*#__PURE__*/ function(HttpMetadata) {
|
|
44
|
+
HttpMetadata["Method"] = "METHOD";
|
|
45
|
+
HttpMetadata["Data"] = "DATA";
|
|
46
|
+
HttpMetadata["Query"] = "QUERY";
|
|
47
|
+
HttpMetadata["Params"] = "PARAMS";
|
|
48
|
+
HttpMetadata["Headers"] = "HEADERS";
|
|
49
|
+
HttpMetadata["Response"] = "RESPONSE";
|
|
50
|
+
HttpMetadata["Files"] = "Files";
|
|
51
|
+
return HttpMetadata;
|
|
52
|
+
}({});
|
|
53
|
+
var ResponseMetaType = /*#__PURE__*/ function(ResponseMetaType) {
|
|
54
|
+
ResponseMetaType[ResponseMetaType["StatusCode"] = 0] = "StatusCode";
|
|
55
|
+
ResponseMetaType[ResponseMetaType["Redirect"] = 1] = "Redirect";
|
|
56
|
+
ResponseMetaType[ResponseMetaType["Headers"] = 2] = "Headers";
|
|
57
|
+
return ResponseMetaType;
|
|
58
|
+
}({});
|
|
59
|
+
var HttpMethod = /*#__PURE__*/ function(HttpMethod) {
|
|
60
|
+
HttpMethod["Get"] = "GET";
|
|
61
|
+
HttpMethod["Post"] = "POST";
|
|
62
|
+
HttpMethod["Put"] = "PUT";
|
|
63
|
+
HttpMethod["Delete"] = "DELETE";
|
|
64
|
+
HttpMethod["Connect"] = "CONNECT";
|
|
65
|
+
HttpMethod["Trace"] = "TRACE";
|
|
66
|
+
HttpMethod["Patch"] = "PATCH";
|
|
67
|
+
HttpMethod["Options"] = "OPTIONS";
|
|
68
|
+
HttpMethod["Head"] = "HEAD";
|
|
69
|
+
return HttpMethod;
|
|
70
|
+
}({});
|
|
71
|
+
const httpMethods = Object.values(HttpMethod);
|
|
72
|
+
exports.HttpMetadata = __webpack_exports__.HttpMetadata;
|
|
73
|
+
exports.HttpMethod = __webpack_exports__.HttpMethod;
|
|
74
|
+
exports.OperatorType = __webpack_exports__.OperatorType;
|
|
75
|
+
exports.ResponseMetaType = __webpack_exports__.ResponseMetaType;
|
|
76
|
+
exports.TriggerType = __webpack_exports__.TriggerType;
|
|
77
|
+
exports.httpMethods = __webpack_exports__.httpMethods;
|
|
78
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
79
|
+
"HttpMetadata",
|
|
80
|
+
"HttpMethod",
|
|
81
|
+
"OperatorType",
|
|
82
|
+
"ResponseMetaType",
|
|
83
|
+
"TriggerType",
|
|
84
|
+
"httpMethods"
|
|
85
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
86
|
+
Object.defineProperty(exports, '__esModule', {
|
|
87
|
+
value: true
|
|
88
|
+
});
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.n = (module)=>{
|
|
5
|
+
var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
|
|
6
|
+
__webpack_require__.d(getter, {
|
|
7
|
+
a: getter
|
|
8
|
+
});
|
|
9
|
+
return getter;
|
|
10
|
+
};
|
|
11
|
+
})();
|
|
12
|
+
(()=>{
|
|
13
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
14
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: definition[key]
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
})();
|
|
20
|
+
(()=>{
|
|
21
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
22
|
+
})();
|
|
23
|
+
(()=>{
|
|
24
|
+
__webpack_require__.r = (exports1)=>{
|
|
25
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
26
|
+
value: 'Module'
|
|
27
|
+
});
|
|
28
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
29
|
+
value: true
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
})();
|
|
33
|
+
var __webpack_exports__ = {};
|
|
34
|
+
__webpack_require__.r(__webpack_exports__);
|
|
35
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
36
|
+
createMatchPath: ()=>createMatchPath,
|
|
37
|
+
getRelativeRuntimePath: ()=>getRelativeRuntimePath,
|
|
38
|
+
registerPaths: ()=>registerPaths
|
|
39
|
+
});
|
|
40
|
+
const external_fs_namespaceObject = require("fs");
|
|
41
|
+
var external_fs_default = /*#__PURE__*/ __webpack_require__.n(external_fs_namespaceObject);
|
|
42
|
+
const external_module_namespaceObject = require("module");
|
|
43
|
+
var external_module_default = /*#__PURE__*/ __webpack_require__.n(external_module_namespaceObject);
|
|
44
|
+
const external_os_namespaceObject = require("os");
|
|
45
|
+
const external_path_namespaceObject = require("path");
|
|
46
|
+
const getRelativeRuntimePath = (appDirectory, serverRuntimePath)=>{
|
|
47
|
+
let relativeRuntimePath = '';
|
|
48
|
+
relativeRuntimePath = 'win32' === external_os_namespaceObject.platform() ? `../${external_path_namespaceObject.relative(appDirectory, serverRuntimePath)}` : external_path_namespaceObject.join('../', external_path_namespaceObject.relative(appDirectory, serverRuntimePath));
|
|
49
|
+
if ('development' === process.env.NODE_ENV || 'test' === process.env.NODE_ENV) relativeRuntimePath = `./${external_path_namespaceObject.relative(appDirectory, serverRuntimePath)}`;
|
|
50
|
+
return relativeRuntimePath;
|
|
51
|
+
};
|
|
52
|
+
const sortByLongestPrefix = (arr)=>arr.concat().sort((a, b)=>b.length - a.length);
|
|
53
|
+
const createMatchPath = (paths)=>{
|
|
54
|
+
const sortedKeys = sortByLongestPrefix(Object.keys(paths));
|
|
55
|
+
const sortedPaths = {};
|
|
56
|
+
sortedKeys.forEach((key)=>{
|
|
57
|
+
sortedPaths[key] = paths[key];
|
|
58
|
+
});
|
|
59
|
+
return (request)=>{
|
|
60
|
+
const found = Object.keys(sortedPaths).find((key)=>request.startsWith(key));
|
|
61
|
+
if (found) {
|
|
62
|
+
let foundPaths = sortedPaths[found];
|
|
63
|
+
if (!Array.isArray(foundPaths)) foundPaths = [
|
|
64
|
+
foundPaths
|
|
65
|
+
];
|
|
66
|
+
foundPaths = foundPaths.filter((foundPath)=>external_path_namespaceObject.isAbsolute(foundPath));
|
|
67
|
+
for (const p of foundPaths){
|
|
68
|
+
const foundPath = request.replace(found, p);
|
|
69
|
+
if (external_fs_default().existsSync(foundPath)) return foundPath;
|
|
70
|
+
}
|
|
71
|
+
return request.replace(found, foundPaths[0]);
|
|
72
|
+
}
|
|
73
|
+
return null;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
const registerPaths = (paths)=>{
|
|
77
|
+
const originalResolveFilename = external_module_default()._resolveFilename;
|
|
78
|
+
const { builtinModules } = external_module_default();
|
|
79
|
+
const matchPath = createMatchPath(paths);
|
|
80
|
+
external_module_default()._resolveFilename = function(request, _parent) {
|
|
81
|
+
const isCoreModule = builtinModules.includes(request);
|
|
82
|
+
if (!isCoreModule) {
|
|
83
|
+
const matched = matchPath(request);
|
|
84
|
+
if (matched) {
|
|
85
|
+
const modifiedArguments = [
|
|
86
|
+
matched,
|
|
87
|
+
...[].slice.call(arguments, 1)
|
|
88
|
+
];
|
|
89
|
+
return originalResolveFilename.apply(this, modifiedArguments);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return originalResolveFilename.apply(this, arguments);
|
|
93
|
+
};
|
|
94
|
+
return ()=>{
|
|
95
|
+
external_module_default()._resolveFilename = originalResolveFilename;
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
exports.createMatchPath = __webpack_exports__.createMatchPath;
|
|
99
|
+
exports.getRelativeRuntimePath = __webpack_exports__.getRelativeRuntimePath;
|
|
100
|
+
exports.registerPaths = __webpack_exports__.registerPaths;
|
|
101
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
102
|
+
"createMatchPath",
|
|
103
|
+
"getRelativeRuntimePath",
|
|
104
|
+
"registerPaths"
|
|
105
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
106
|
+
Object.defineProperty(exports, '__esModule', {
|
|
107
|
+
value: true
|
|
108
|
+
});
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
debug: ()=>debug
|
|
28
|
+
});
|
|
29
|
+
const utils_namespaceObject = require("@modern-js/utils");
|
|
30
|
+
const debug = (0, utils_namespaceObject.createDebugger)('bff');
|
|
31
|
+
exports.debug = __webpack_exports__.debug;
|
|
32
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
33
|
+
"debug"
|
|
34
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
35
|
+
Object.defineProperty(exports, '__esModule', {
|
|
36
|
+
value: true
|
|
37
|
+
});
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_modules__ = {
|
|
3
|
+
"./alias" (module) {
|
|
4
|
+
module.exports = require("./alias.js");
|
|
5
|
+
},
|
|
6
|
+
"./debug" (module) {
|
|
7
|
+
module.exports = require("./debug.js");
|
|
8
|
+
},
|
|
9
|
+
"./meta" (module) {
|
|
10
|
+
module.exports = require("./meta.js");
|
|
11
|
+
},
|
|
12
|
+
"./storage" (module) {
|
|
13
|
+
module.exports = require("./storage.js");
|
|
14
|
+
},
|
|
15
|
+
"./validate" (module) {
|
|
16
|
+
module.exports = require("./validate.js");
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
var __webpack_module_cache__ = {};
|
|
20
|
+
function __webpack_require__(moduleId) {
|
|
21
|
+
var cachedModule = __webpack_module_cache__[moduleId];
|
|
22
|
+
if (void 0 !== cachedModule) return cachedModule.exports;
|
|
23
|
+
var module = __webpack_module_cache__[moduleId] = {
|
|
24
|
+
exports: {}
|
|
25
|
+
};
|
|
26
|
+
__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
|
27
|
+
return module.exports;
|
|
28
|
+
}
|
|
29
|
+
(()=>{
|
|
30
|
+
__webpack_require__.n = (module)=>{
|
|
31
|
+
var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
|
|
32
|
+
__webpack_require__.d(getter, {
|
|
33
|
+
a: getter
|
|
34
|
+
});
|
|
35
|
+
return getter;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
(()=>{
|
|
39
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
40
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
41
|
+
enumerable: true,
|
|
42
|
+
get: definition[key]
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
})();
|
|
46
|
+
(()=>{
|
|
47
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
48
|
+
})();
|
|
49
|
+
(()=>{
|
|
50
|
+
__webpack_require__.r = (exports1)=>{
|
|
51
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
52
|
+
value: 'Module'
|
|
53
|
+
});
|
|
54
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
55
|
+
value: true
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
})();
|
|
59
|
+
var __webpack_exports__ = {};
|
|
60
|
+
(()=>{
|
|
61
|
+
__webpack_require__.r(__webpack_exports__);
|
|
62
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
63
|
+
debug: ()=>_debug__rspack_import_1.debug
|
|
64
|
+
});
|
|
65
|
+
var _alias__rspack_import_0 = __webpack_require__("./alias");
|
|
66
|
+
var __rspack_reexport = {};
|
|
67
|
+
for(const __rspack_import_key in _alias__rspack_import_0)if ([
|
|
68
|
+
"debug",
|
|
69
|
+
"default"
|
|
70
|
+
].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_alias__rspack_import_0[__rspack_import_key];
|
|
71
|
+
__webpack_require__.d(__webpack_exports__, __rspack_reexport);
|
|
72
|
+
var _debug__rspack_import_1 = __webpack_require__("./debug");
|
|
73
|
+
var _meta__rspack_import_2 = __webpack_require__("./meta");
|
|
74
|
+
var __rspack_reexport = {};
|
|
75
|
+
for(const __rspack_import_key in _meta__rspack_import_2)if ([
|
|
76
|
+
"debug",
|
|
77
|
+
"default"
|
|
78
|
+
].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_meta__rspack_import_2[__rspack_import_key];
|
|
79
|
+
__webpack_require__.d(__webpack_exports__, __rspack_reexport);
|
|
80
|
+
var _storage__rspack_import_3 = __webpack_require__("./storage");
|
|
81
|
+
var __rspack_reexport = {};
|
|
82
|
+
for(const __rspack_import_key in _storage__rspack_import_3)if ([
|
|
83
|
+
"debug",
|
|
84
|
+
"default"
|
|
85
|
+
].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_storage__rspack_import_3[__rspack_import_key];
|
|
86
|
+
__webpack_require__.d(__webpack_exports__, __rspack_reexport);
|
|
87
|
+
var _validate__rspack_import_4 = __webpack_require__("./validate");
|
|
88
|
+
var __rspack_reexport = {};
|
|
89
|
+
for(const __rspack_import_key in _validate__rspack_import_4)if ([
|
|
90
|
+
"debug",
|
|
91
|
+
"default"
|
|
92
|
+
].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_validate__rspack_import_4[__rspack_import_key];
|
|
93
|
+
__webpack_require__.d(__webpack_exports__, __rspack_reexport);
|
|
94
|
+
})();
|
|
95
|
+
exports.debug = __webpack_exports__.debug;
|
|
96
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
97
|
+
"debug"
|
|
98
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
99
|
+
Object.defineProperty(exports, '__esModule', {
|
|
100
|
+
value: true
|
|
101
|
+
});
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
HANDLER_WITH_META: ()=>HANDLER_WITH_META,
|
|
28
|
+
INPUT_PARAMS_DECIDER: ()=>INPUT_PARAMS_DECIDER,
|
|
29
|
+
isInputParamsDeciderHandler: ()=>isInputParamsDeciderHandler,
|
|
30
|
+
isWithMetaHandler: ()=>isWithMetaHandler
|
|
31
|
+
});
|
|
32
|
+
const HANDLER_WITH_META = 'HANDLER_WITH_META';
|
|
33
|
+
const INPUT_PARAMS_DECIDER = 'INPUT_PARAMS_DECIDER';
|
|
34
|
+
const isWithMetaHandler = (handler)=>'function' == typeof handler && handler[HANDLER_WITH_META];
|
|
35
|
+
const isInputParamsDeciderHandler = (handler)=>'function' == typeof handler && handler[INPUT_PARAMS_DECIDER];
|
|
36
|
+
exports.HANDLER_WITH_META = __webpack_exports__.HANDLER_WITH_META;
|
|
37
|
+
exports.INPUT_PARAMS_DECIDER = __webpack_exports__.INPUT_PARAMS_DECIDER;
|
|
38
|
+
exports.isInputParamsDeciderHandler = __webpack_exports__.isInputParamsDeciderHandler;
|
|
39
|
+
exports.isWithMetaHandler = __webpack_exports__.isWithMetaHandler;
|
|
40
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
41
|
+
"HANDLER_WITH_META",
|
|
42
|
+
"INPUT_PARAMS_DECIDER",
|
|
43
|
+
"isInputParamsDeciderHandler",
|
|
44
|
+
"isWithMetaHandler"
|
|
45
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
46
|
+
Object.defineProperty(exports, '__esModule', {
|
|
47
|
+
value: true
|
|
48
|
+
});
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
createStorage: ()=>createStorage
|
|
28
|
+
});
|
|
29
|
+
const external_async_hooks_namespaceObject = require("async_hooks");
|
|
30
|
+
const createStorage = ()=>{
|
|
31
|
+
let storage;
|
|
32
|
+
if (void 0 !== external_async_hooks_namespaceObject.AsyncLocalStorage) storage = new external_async_hooks_namespaceObject.AsyncLocalStorage();
|
|
33
|
+
const run = (context, cb)=>{
|
|
34
|
+
if (!storage) throw new Error(`Unable to use async_hook, please confirm the node version >= 12.17
|
|
35
|
+
`);
|
|
36
|
+
return new Promise((resolve, reject)=>{
|
|
37
|
+
storage.run(context, ()=>{
|
|
38
|
+
try {
|
|
39
|
+
return resolve(cb());
|
|
40
|
+
} catch (error) {
|
|
41
|
+
return reject(error);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
const useContext = ()=>{
|
|
47
|
+
if (!storage) throw new Error(`Unable to use async_hook, please confirm the node version >= 12.17
|
|
48
|
+
`);
|
|
49
|
+
const context = storage.getStore();
|
|
50
|
+
if (!context) throw new Error("Can't call useContext out of scope, it should be placed in the bff function");
|
|
51
|
+
return context;
|
|
52
|
+
};
|
|
53
|
+
return {
|
|
54
|
+
run,
|
|
55
|
+
useContext
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
exports.createStorage = __webpack_exports__.createStorage;
|
|
59
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
60
|
+
"createStorage"
|
|
61
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
62
|
+
Object.defineProperty(exports, '__esModule', {
|
|
63
|
+
value: true
|
|
64
|
+
});
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.n = (module)=>{
|
|
5
|
+
var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
|
|
6
|
+
__webpack_require__.d(getter, {
|
|
7
|
+
a: getter
|
|
8
|
+
});
|
|
9
|
+
return getter;
|
|
10
|
+
};
|
|
11
|
+
})();
|
|
12
|
+
(()=>{
|
|
13
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
14
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: definition[key]
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
})();
|
|
20
|
+
(()=>{
|
|
21
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
22
|
+
})();
|
|
23
|
+
(()=>{
|
|
24
|
+
__webpack_require__.r = (exports1)=>{
|
|
25
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
26
|
+
value: 'Module'
|
|
27
|
+
});
|
|
28
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
29
|
+
value: true
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
})();
|
|
33
|
+
var __webpack_exports__ = {};
|
|
34
|
+
__webpack_require__.r(__webpack_exports__);
|
|
35
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
36
|
+
ERR_INVALID_ARG_TYPE: ()=>ERR_INVALID_ARG_TYPE,
|
|
37
|
+
getTypeErrorMessage: ()=>getTypeErrorMessage,
|
|
38
|
+
validateFunction: ()=>validateFunction
|
|
39
|
+
});
|
|
40
|
+
const external_util_namespaceObject = require("util");
|
|
41
|
+
var external_util_default = /*#__PURE__*/ __webpack_require__.n(external_util_namespaceObject);
|
|
42
|
+
const getTypeErrorMessage = (actual)=>{
|
|
43
|
+
let msg = '';
|
|
44
|
+
if (null == actual) msg += `. Received ${actual}`;
|
|
45
|
+
else if ('function' == typeof actual && actual.name) msg += `. Received function ${actual.name}`;
|
|
46
|
+
else if ('object' == typeof actual) if (actual.constructor?.name) msg += `. Received an instance of ${actual.constructor.name}`;
|
|
47
|
+
else {
|
|
48
|
+
const inspected = external_util_default().inspect(actual, {
|
|
49
|
+
depth: -1
|
|
50
|
+
});
|
|
51
|
+
msg += `. Received ${inspected}`;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
let inspected = external_util_default().inspect(actual, {
|
|
55
|
+
colors: false
|
|
56
|
+
});
|
|
57
|
+
if (inspected.length > 25) inspected = `${inspected.slice(0, 25)}...`;
|
|
58
|
+
msg += `. Received type ${typeof actual} (${inspected})`;
|
|
59
|
+
}
|
|
60
|
+
return msg;
|
|
61
|
+
};
|
|
62
|
+
class ERR_INVALID_ARG_TYPE extends Error {
|
|
63
|
+
constructor(funcName, expectedType, actual){
|
|
64
|
+
const message = `[ERR_INVALID_ARG_TYPE]: The '${funcName}' argument must be of type ${expectedType}${getTypeErrorMessage(actual)}`;
|
|
65
|
+
super(message);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
const validateFunction = (maybeFunc, name)=>{
|
|
69
|
+
if ('function' != typeof maybeFunc) throw new ERR_INVALID_ARG_TYPE(name, 'function', maybeFunc);
|
|
70
|
+
return true;
|
|
71
|
+
};
|
|
72
|
+
exports.ERR_INVALID_ARG_TYPE = __webpack_exports__.ERR_INVALID_ARG_TYPE;
|
|
73
|
+
exports.getTypeErrorMessage = __webpack_exports__.getTypeErrorMessage;
|
|
74
|
+
exports.validateFunction = __webpack_exports__.validateFunction;
|
|
75
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
76
|
+
"ERR_INVALID_ARG_TYPE",
|
|
77
|
+
"getTypeErrorMessage",
|
|
78
|
+
"validateFunction"
|
|
79
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
80
|
+
Object.defineProperty(exports, '__esModule', {
|
|
81
|
+
value: true
|
|
82
|
+
});
|
package/dist/esm/api.mjs
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
import koa_compose from "koa-compose";
|
|
3
|
+
import { HANDLER_WITH_META, validateFunction } from "./utils/index.mjs";
|
|
4
|
+
function Api(...args) {
|
|
5
|
+
const handler = args.pop();
|
|
6
|
+
validateFunction(handler, 'Apihandler');
|
|
7
|
+
const operators = args;
|
|
8
|
+
const metadataHelper = {
|
|
9
|
+
getMetadata (key) {
|
|
10
|
+
return Reflect.getMetadata(key, runner);
|
|
11
|
+
},
|
|
12
|
+
setMetadata (key, value) {
|
|
13
|
+
return Reflect.defineMetadata(key, value, runner);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
for (const operator of operators)if (operator.metadata) operator.metadata(metadataHelper);
|
|
17
|
+
const validateHandlers = operators.filter((operator)=>operator.validate).map((operator)=>operator.validate);
|
|
18
|
+
const pipeHandlers = operators.filter((operator)=>operator.execute).map((operator)=>operator.execute);
|
|
19
|
+
async function runner(inputs) {
|
|
20
|
+
const executeHelper = {
|
|
21
|
+
result: null,
|
|
22
|
+
get inputs () {
|
|
23
|
+
return inputs;
|
|
24
|
+
},
|
|
25
|
+
set inputs (val){
|
|
26
|
+
inputs = val;
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
const stack = [
|
|
30
|
+
...validateHandlers,
|
|
31
|
+
...pipeHandlers
|
|
32
|
+
];
|
|
33
|
+
stack.push(async (helper, next)=>{
|
|
34
|
+
const res = await handler(helper.inputs);
|
|
35
|
+
helper.result = res;
|
|
36
|
+
return next();
|
|
37
|
+
});
|
|
38
|
+
await koa_compose(stack)(executeHelper);
|
|
39
|
+
return executeHelper.result;
|
|
40
|
+
}
|
|
41
|
+
runner[HANDLER_WITH_META] = true;
|
|
42
|
+
return runner;
|
|
43
|
+
}
|
|
44
|
+
export { Api };
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import "path";
|
|
2
|
+
import { ApiRouter } from "../router/index.mjs";
|
|
3
|
+
import { createOperationEntries, createOperationSchemaHash } from "../security/operationContracts.mjs";
|
|
4
|
+
import { Err, Ok } from "./result.mjs";
|
|
5
|
+
const INNER_CLIENT_REQUEST_CREATOR = '@modern-js/plugin-bff/client';
|
|
6
|
+
const generateClient = async ({ appDir, resourcePath, apiDir, lambdaDir, prefix, port, target, requestCreator, fetcher, requireResolve = require.resolve, httpMethodDecider, domain, requestId })=>{
|
|
7
|
+
requestCreator = requestCreator || INNER_CLIENT_REQUEST_CREATOR;
|
|
8
|
+
const apiRouter = new ApiRouter({
|
|
9
|
+
appDir,
|
|
10
|
+
apiDir,
|
|
11
|
+
lambdaDir,
|
|
12
|
+
prefix,
|
|
13
|
+
httpMethodDecider
|
|
14
|
+
});
|
|
15
|
+
const handlerInfos = await apiRouter.getSingleModuleHandlers(resourcePath);
|
|
16
|
+
if (!handlerInfos) return Err(`generate client error: Cannot require module ${resourcePath}`);
|
|
17
|
+
const operationEntries = createOperationEntries(handlerInfos);
|
|
18
|
+
const operationVersion = 1;
|
|
19
|
+
const schemaHash = createOperationSchemaHash(operationEntries, requestId || 'default');
|
|
20
|
+
let handlersCode = '';
|
|
21
|
+
for (const handlerInfo of handlerInfos){
|
|
22
|
+
const { name, httpMethod, routePath, action } = handlerInfo;
|
|
23
|
+
let exportStatement = `var ${name} =`;
|
|
24
|
+
if ('default' === name.toLowerCase()) exportStatement = 'default';
|
|
25
|
+
const upperHttpMethod = httpMethod.toUpperCase();
|
|
26
|
+
const serializedRouteName = JSON.stringify(routePath);
|
|
27
|
+
const serializedMethod = JSON.stringify(upperHttpMethod);
|
|
28
|
+
const serializedMethodDecider = JSON.stringify(httpMethodDecider ? httpMethodDecider : 'functionName');
|
|
29
|
+
const serializedOperationContext = JSON.stringify({
|
|
30
|
+
operationId: name,
|
|
31
|
+
routePath,
|
|
32
|
+
method: upperHttpMethod,
|
|
33
|
+
schemaHash,
|
|
34
|
+
operationVersion
|
|
35
|
+
});
|
|
36
|
+
const tailArgs = `, ${fetcher ? 'fetch' : 'undefined'}, ${requestId ? JSON.stringify(requestId) : 'undefined'}, ${serializedOperationContext}`;
|
|
37
|
+
if ('server' === target) handlersCode += `export ${exportStatement} createRequest(${serializedRouteName}, ${serializedMethod}, process.env.PORT || ${String(port)}, ${serializedMethodDecider}${tailArgs});
|
|
38
|
+
`;
|
|
39
|
+
else handlersCode += `export ${exportStatement} createRequest(${serializedRouteName}, ${serializedMethod}, ${String(port)}, ${serializedMethodDecider}${tailArgs});
|
|
40
|
+
`;
|
|
41
|
+
}
|
|
42
|
+
const serializedRequestCreator = JSON.stringify(requestCreator);
|
|
43
|
+
const serializedFetcher = fetcher ? JSON.stringify(fetcher) : void 0;
|
|
44
|
+
const importCode = requestId ? `import * as requestRuntime from ${serializedRequestCreator};
|
|
45
|
+
const { createRequest } = requestRuntime;
|
|
46
|
+
${serializedFetcher ? `import { fetch } from ${serializedFetcher};\n` : ''}` : `import { createRequest } from ${serializedRequestCreator};
|
|
47
|
+
${serializedFetcher ? `import { fetch } from ${serializedFetcher};\n` : ''}`;
|
|
48
|
+
const bootstrapCode = requestId ? `export const initProducerClient = (options = {}) => {
|
|
49
|
+
const configure = requestRuntime.configure;
|
|
50
|
+
if (typeof configure !== 'function') {
|
|
51
|
+
console.warn('[modernjs] Compatibility request creator path does not expose configure(); use default @modern-js/create-request or migrate the compatibility path.');
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
const defaultSecureOptions = {
|
|
55
|
+
requestId: ${JSON.stringify(requestId)},
|
|
56
|
+
requireEnvelope: true,
|
|
57
|
+
identityBinding: {
|
|
58
|
+
enabled: true,
|
|
59
|
+
strict: true,
|
|
60
|
+
},
|
|
61
|
+
operationContract: {
|
|
62
|
+
enabled: true,
|
|
63
|
+
strict: true,
|
|
64
|
+
requireSchemaHash: true,
|
|
65
|
+
requireOperationVersion: true,
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
return configure({
|
|
69
|
+
...defaultSecureOptions,
|
|
70
|
+
...options,
|
|
71
|
+
identityBinding: {
|
|
72
|
+
...defaultSecureOptions.identityBinding,
|
|
73
|
+
...(options && options.identityBinding ? options.identityBinding : {}),
|
|
74
|
+
},
|
|
75
|
+
operationContract: {
|
|
76
|
+
...defaultSecureOptions.operationContract,
|
|
77
|
+
...(options && options.operationContract ? options.operationContract : {}),
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
` : '';
|
|
82
|
+
const manifestCode = `export const operationVersion = ${String(operationVersion)};
|
|
83
|
+
export const operationSchemaHash = '${schemaHash}';
|
|
84
|
+
export const operationManifest = ${JSON.stringify({
|
|
85
|
+
operationVersion,
|
|
86
|
+
schemaHash,
|
|
87
|
+
operations: operationEntries
|
|
88
|
+
}, null, 2)};
|
|
89
|
+
`;
|
|
90
|
+
const generatedParts = [
|
|
91
|
+
importCode.trimEnd(),
|
|
92
|
+
bootstrapCode.trimEnd(),
|
|
93
|
+
manifestCode.trimEnd(),
|
|
94
|
+
handlersCode.trimEnd()
|
|
95
|
+
].filter(Boolean);
|
|
96
|
+
return Ok(`${generatedParts.join('\n\n')}
|
|
97
|
+
`);
|
|
98
|
+
};
|
|
99
|
+
export { INNER_CLIENT_REQUEST_CREATOR, generateClient };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./generateClient.mjs";
|