@modern-js/bff-core 2.5.0 → 2.5.1-alpha.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.
Files changed (51) hide show
  1. package/dist/cjs/client/generate-client.js +5 -3
  2. package/dist/cjs/index.js +4 -0
  3. package/dist/cjs/operators/http.js +7 -1
  4. package/dist/cjs/router/index.js +51 -27
  5. package/dist/cjs/utils/meta.js +8 -0
  6. package/dist/esm/client/generate-client.js +5 -3
  7. package/dist/esm/index.js +4 -0
  8. package/dist/esm/operators/http.js +1 -1
  9. package/dist/esm/router/index.js +52 -28
  10. package/dist/esm/utils/meta.js +6 -0
  11. package/dist/js/modern/api.js +69 -0
  12. package/dist/js/modern/client/generate-client.js +79 -0
  13. package/dist/js/modern/client/index.js +1 -0
  14. package/dist/js/modern/client/result.js +22 -0
  15. package/dist/js/modern/errors/http.js +16 -0
  16. package/dist/js/modern/index.js +23 -0
  17. package/dist/js/modern/operators/http.js +210 -0
  18. package/dist/js/modern/router/constants.js +32 -0
  19. package/dist/js/modern/router/index.js +236 -0
  20. package/dist/js/modern/router/types.js +0 -0
  21. package/dist/js/modern/router/utils.js +83 -0
  22. package/dist/js/modern/types.js +45 -0
  23. package/dist/js/modern/utils/alias.js +76 -0
  24. package/dist/js/modern/utils/debug.js +5 -0
  25. package/dist/js/modern/utils/index.js +8 -0
  26. package/dist/js/modern/utils/meta.js +8 -0
  27. package/dist/js/modern/utils/storage.js +42 -0
  28. package/dist/js/modern/utils/validate.js +43 -0
  29. package/dist/js/node/api.js +98 -0
  30. package/dist/js/node/client/generate-client.js +109 -0
  31. package/dist/js/node/client/index.js +17 -0
  32. package/dist/js/node/client/result.js +46 -0
  33. package/dist/js/node/errors/http.js +40 -0
  34. package/dist/js/node/index.js +48 -0
  35. package/dist/js/node/operators/http.js +241 -0
  36. package/dist/js/node/router/constants.js +61 -0
  37. package/dist/js/node/router/index.js +256 -0
  38. package/dist/js/node/router/types.js +15 -0
  39. package/dist/js/node/router/utils.js +116 -0
  40. package/dist/js/node/types.js +73 -0
  41. package/dist/js/node/utils/alias.js +107 -0
  42. package/dist/js/node/utils/debug.js +28 -0
  43. package/dist/js/node/utils/index.js +32 -0
  44. package/dist/js/node/utils/meta.js +32 -0
  45. package/dist/js/node/utils/storage.js +71 -0
  46. package/dist/js/node/utils/validate.js +74 -0
  47. package/dist/types/client/generate-client.d.ts +4 -1
  48. package/dist/types/index.d.ts +1 -1
  49. package/dist/types/router/index.d.ts +5 -1
  50. package/dist/types/utils/meta.d.ts +3 -1
  51. package/package.json +8 -7
@@ -0,0 +1,8 @@
1
+ const HANDLER_WITH_META = "HANDLER_WITH_META";
2
+ const isWithMetaHandler = (handler) => {
3
+ return typeof handler === "function" && handler[HANDLER_WITH_META];
4
+ };
5
+ export {
6
+ HANDLER_WITH_META,
7
+ isWithMetaHandler
8
+ };
@@ -0,0 +1,42 @@
1
+ import * as ah from "async_hooks";
2
+ const createStorage = () => {
3
+ let storage;
4
+ if (typeof ah.AsyncLocalStorage !== "undefined") {
5
+ storage = new ah.AsyncLocalStorage();
6
+ }
7
+ const run = (context, cb) => {
8
+ if (!storage) {
9
+ throw new Error(`Unable to use async_hook, please confirm the node version >= 12.17
10
+ `);
11
+ }
12
+ return new Promise((resolve, reject) => {
13
+ storage.run(context, () => {
14
+ try {
15
+ return resolve(cb());
16
+ } catch (error) {
17
+ return reject(error);
18
+ }
19
+ });
20
+ });
21
+ };
22
+ const useContext = () => {
23
+ if (!storage) {
24
+ throw new Error(`Unable to use async_hook, please confirm the node version >= 12.17
25
+ `);
26
+ }
27
+ const context = storage.getStore();
28
+ if (!context) {
29
+ throw new Error(
30
+ `Can't call useContext out of scope, it should be placed in the bff function`
31
+ );
32
+ }
33
+ return context;
34
+ };
35
+ return {
36
+ run,
37
+ useContext
38
+ };
39
+ };
40
+ export {
41
+ createStorage
42
+ };
@@ -0,0 +1,43 @@
1
+ import util from "util";
2
+ const getTypeErrorMessage = (actual) => {
3
+ var _a;
4
+ let msg = "";
5
+ if (actual == null) {
6
+ msg += `. Received ${actual}`;
7
+ } else if (typeof actual === "function" && actual.name) {
8
+ msg += `. Received function ${actual.name}`;
9
+ } else if (typeof actual === "object") {
10
+ if ((_a = actual.constructor) == null ? void 0 : _a.name) {
11
+ msg += `. Received an instance of ${actual.constructor.name}`;
12
+ } else {
13
+ const inspected = util.inspect(actual, { depth: -1 });
14
+ msg += `. Received ${inspected}`;
15
+ }
16
+ } else {
17
+ let inspected = util.inspect(actual, { colors: false });
18
+ if (inspected.length > 25) {
19
+ inspected = `${inspected.slice(0, 25)}...`;
20
+ }
21
+ msg += `. Received type ${typeof actual} (${inspected})`;
22
+ }
23
+ return msg;
24
+ };
25
+ class ERR_INVALID_ARG_TYPE extends Error {
26
+ constructor(funcName, expectedType, actual) {
27
+ const message = `[ERR_INVALID_ARG_TYPE]: The '${funcName}' argument must be of type ${expectedType}${getTypeErrorMessage(
28
+ actual
29
+ )}`;
30
+ super(message);
31
+ }
32
+ }
33
+ const validateFunction = (maybeFunc, name) => {
34
+ if (typeof maybeFunc !== "function") {
35
+ throw new ERR_INVALID_ARG_TYPE(name, "function", maybeFunc);
36
+ }
37
+ return true;
38
+ };
39
+ export {
40
+ ERR_INVALID_ARG_TYPE,
41
+ getTypeErrorMessage,
42
+ validateFunction
43
+ };
@@ -0,0 +1,98 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
21
+ mod
22
+ ));
23
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
24
+ var __async = (__this, __arguments, generator) => {
25
+ return new Promise((resolve, reject) => {
26
+ var fulfilled = (value) => {
27
+ try {
28
+ step(generator.next(value));
29
+ } catch (e) {
30
+ reject(e);
31
+ }
32
+ };
33
+ var rejected = (value) => {
34
+ try {
35
+ step(generator.throw(value));
36
+ } catch (e) {
37
+ reject(e);
38
+ }
39
+ };
40
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
41
+ step((generator = generator.apply(__this, __arguments)).next());
42
+ });
43
+ };
44
+ var api_exports = {};
45
+ __export(api_exports, {
46
+ Api: () => Api
47
+ });
48
+ module.exports = __toCommonJS(api_exports);
49
+ var import_reflect_metadata = require("reflect-metadata");
50
+ var import_koa_compose = __toESM(require("koa-compose"));
51
+ var import_utils = require("./utils");
52
+ function Api(...args) {
53
+ const handler = args.pop();
54
+ (0, import_utils.validateFunction)(handler, "Apihandler");
55
+ const operators = args;
56
+ const metadataHelper = {
57
+ getMetadata(key) {
58
+ return Reflect.getMetadata(key, runner);
59
+ },
60
+ setMetadata(key, value) {
61
+ return Reflect.defineMetadata(key, value, runner);
62
+ }
63
+ };
64
+ for (const operator of operators) {
65
+ if (operator.metadata) {
66
+ operator.metadata(metadataHelper);
67
+ }
68
+ }
69
+ const validateHandlers = operators.filter((operator) => operator.validate).map((operator) => operator.validate);
70
+ const pipeHandlers = operators.filter((operator) => operator.execute).map((operator) => operator.execute);
71
+ function runner(inputs) {
72
+ return __async(this, null, function* () {
73
+ const executeHelper = {
74
+ result: null,
75
+ get inputs() {
76
+ return inputs;
77
+ },
78
+ set inputs(val) {
79
+ inputs = val;
80
+ }
81
+ };
82
+ const stack = [...validateHandlers, ...pipeHandlers];
83
+ stack.push((helper, next) => __async(this, null, function* () {
84
+ const res = yield handler(helper.inputs);
85
+ helper.result = res;
86
+ return next();
87
+ }));
88
+ yield (0, import_koa_compose.default)(stack)(executeHelper);
89
+ return executeHelper.result;
90
+ });
91
+ }
92
+ runner[import_utils.HANDLER_WITH_META] = true;
93
+ return runner;
94
+ }
95
+ // Annotate the CommonJS export names for ESM import in node:
96
+ 0 && (module.exports = {
97
+ Api
98
+ });
@@ -0,0 +1,109 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
21
+ mod
22
+ ));
23
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
24
+ var __async = (__this, __arguments, generator) => {
25
+ return new Promise((resolve, reject) => {
26
+ var fulfilled = (value) => {
27
+ try {
28
+ step(generator.next(value));
29
+ } catch (e) {
30
+ reject(e);
31
+ }
32
+ };
33
+ var rejected = (value) => {
34
+ try {
35
+ step(generator.throw(value));
36
+ } catch (e) {
37
+ reject(e);
38
+ }
39
+ };
40
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
41
+ step((generator = generator.apply(__this, __arguments)).next());
42
+ });
43
+ };
44
+ var generate_client_exports = {};
45
+ __export(generate_client_exports, {
46
+ DEFAULT_CLIENT_REQUEST_CREATOR: () => DEFAULT_CLIENT_REQUEST_CREATOR,
47
+ generateClient: () => generateClient
48
+ });
49
+ module.exports = __toCommonJS(generate_client_exports);
50
+ var path = __toESM(require("path"));
51
+ var import_router = require("../router");
52
+ var import_result = require("./result");
53
+ const DEFAULT_CLIENT_REQUEST_CREATOR = "@modern-js/create-request";
54
+ const generateClient = (_0) => __async(void 0, [_0], function* ({
55
+ resourcePath,
56
+ apiDir,
57
+ prefix,
58
+ port,
59
+ target,
60
+ requestCreator,
61
+ fetcher,
62
+ requireResolve = require.resolve
63
+ }) {
64
+ if (!requestCreator) {
65
+ requestCreator = requireResolve(
66
+ `${DEFAULT_CLIENT_REQUEST_CREATOR}${target ? `/${target}` : ""}`
67
+ ).replace(/\\/g, "/");
68
+ } else {
69
+ let resolvedPath = requestCreator;
70
+ try {
71
+ resolvedPath = path.dirname(requireResolve(requestCreator));
72
+ } catch (error) {
73
+ }
74
+ requestCreator = `${resolvedPath}${target ? `/${target}` : ""}`.replace(
75
+ /\\/g,
76
+ "/"
77
+ );
78
+ }
79
+ const apiRouter = new import_router.ApiRouter({
80
+ apiDir,
81
+ prefix
82
+ });
83
+ const handlerInfos = apiRouter.getSingleModuleHandlers(resourcePath);
84
+ if (!handlerInfos) {
85
+ return (0, import_result.Err)(`generate client error: Cannot require module ${resourcePath}`);
86
+ }
87
+ let handlersCode = "";
88
+ for (const handlerInfo of handlerInfos) {
89
+ const { name, httpMethod, routePath } = handlerInfo;
90
+ let exportStatement = `const ${name} =`;
91
+ if (name.toLowerCase() === "default") {
92
+ exportStatement = "default";
93
+ }
94
+ const upperHttpMethod = httpMethod.toUpperCase();
95
+ const routeName = routePath;
96
+ handlersCode += `export ${exportStatement} createRequest('${routeName}', '${upperHttpMethod}', ${process.env.PORT || String(port)}${fetcher ? `, fetch` : ""});
97
+ `;
98
+ }
99
+ const importCode = `import { createRequest } from '${requestCreator}';
100
+ ${fetcher ? `import { fetch } from '${fetcher}';
101
+ ` : ""}`;
102
+ return (0, import_result.Ok)(`${importCode}
103
+ ${handlersCode}`);
104
+ });
105
+ // Annotate the CommonJS export names for ESM import in node:
106
+ 0 && (module.exports = {
107
+ DEFAULT_CLIENT_REQUEST_CREATOR,
108
+ generateClient
109
+ });
@@ -0,0 +1,17 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __copyProps = (to, from, except, desc) => {
6
+ if (from && typeof from === "object" || typeof from === "function") {
7
+ for (let key of __getOwnPropNames(from))
8
+ if (!__hasOwnProp.call(to, key) && key !== except)
9
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
+ }
11
+ return to;
12
+ };
13
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var client_exports = {};
16
+ module.exports = __toCommonJS(client_exports);
17
+ __reExport(client_exports, require("./generate-client"), module.exports);
@@ -0,0 +1,46 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var result_exports = {};
19
+ __export(result_exports, {
20
+ Err: () => Err,
21
+ Ok: () => Ok
22
+ });
23
+ module.exports = __toCommonJS(result_exports);
24
+ const Err = (value) => {
25
+ const err = {
26
+ kind: "Err",
27
+ value,
28
+ isErr: true,
29
+ isOk: false
30
+ };
31
+ return err;
32
+ };
33
+ const Ok = (value) => {
34
+ const ok = {
35
+ kind: "Ok",
36
+ value,
37
+ isErr: false,
38
+ isOk: true
39
+ };
40
+ return ok;
41
+ };
42
+ // Annotate the CommonJS export names for ESM import in node:
43
+ 0 && (module.exports = {
44
+ Err,
45
+ Ok
46
+ });
@@ -0,0 +1,40 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var http_exports = {};
19
+ __export(http_exports, {
20
+ HttpError: () => HttpError,
21
+ ValidationError: () => ValidationError
22
+ });
23
+ module.exports = __toCommonJS(http_exports);
24
+ class HttpError extends Error {
25
+ constructor(status, message) {
26
+ super(message);
27
+ this.status = status;
28
+ }
29
+ }
30
+ class ValidationError extends HttpError {
31
+ constructor(status, message) {
32
+ super(status, message);
33
+ this.code = "VALIDATION_ERROR";
34
+ }
35
+ }
36
+ // Annotate the CommonJS export names for ESM import in node:
37
+ 0 && (module.exports = {
38
+ HttpError,
39
+ ValidationError
40
+ });
@@ -0,0 +1,48 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var src_exports = {};
20
+ __export(src_exports, {
21
+ Api: () => import_api.Api,
22
+ HANDLER_WITH_META: () => import_utils.HANDLER_WITH_META,
23
+ HttpError: () => import_http.HttpError,
24
+ ValidationError: () => import_http.ValidationError,
25
+ createStorage: () => import_utils.createStorage,
26
+ getRelativeRuntimePath: () => import_utils.getRelativeRuntimePath,
27
+ isWithMetaHandler: () => import_utils.isWithMetaHandler,
28
+ registerPaths: () => import_utils.registerPaths
29
+ });
30
+ module.exports = __toCommonJS(src_exports);
31
+ var import_api = require("./api");
32
+ var import_http = require("./errors/http");
33
+ __reExport(src_exports, require("./router"), module.exports);
34
+ __reExport(src_exports, require("./types"), module.exports);
35
+ __reExport(src_exports, require("./client"), module.exports);
36
+ __reExport(src_exports, require("./operators/http"), module.exports);
37
+ var import_utils = require("./utils");
38
+ // Annotate the CommonJS export names for ESM import in node:
39
+ 0 && (module.exports = {
40
+ Api,
41
+ HANDLER_WITH_META,
42
+ HttpError,
43
+ ValidationError,
44
+ createStorage,
45
+ getRelativeRuntimePath,
46
+ isWithMetaHandler,
47
+ registerPaths
48
+ });
@@ -0,0 +1,241 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
9
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __spreadValues = (a, b) => {
11
+ for (var prop in b || (b = {}))
12
+ if (__hasOwnProp.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ if (__getOwnPropSymbols)
15
+ for (var prop of __getOwnPropSymbols(b)) {
16
+ if (__propIsEnum.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ }
19
+ return a;
20
+ };
21
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
22
+ var __export = (target, all) => {
23
+ for (var name in all)
24
+ __defProp(target, name, { get: all[name], enumerable: true });
25
+ };
26
+ var __copyProps = (to, from, except, desc) => {
27
+ if (from && typeof from === "object" || typeof from === "function") {
28
+ for (let key of __getOwnPropNames(from))
29
+ if (!__hasOwnProp.call(to, key) && key !== except)
30
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
31
+ }
32
+ return to;
33
+ };
34
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
35
+ var __async = (__this, __arguments, generator) => {
36
+ return new Promise((resolve, reject) => {
37
+ var fulfilled = (value) => {
38
+ try {
39
+ step(generator.next(value));
40
+ } catch (e) {
41
+ reject(e);
42
+ }
43
+ };
44
+ var rejected = (value) => {
45
+ try {
46
+ step(generator.throw(value));
47
+ } catch (e) {
48
+ reject(e);
49
+ }
50
+ };
51
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
52
+ step((generator = generator.apply(__this, __arguments)).next());
53
+ });
54
+ };
55
+ var http_exports = {};
56
+ __export(http_exports, {
57
+ Connect: () => Connect,
58
+ Data: () => Data,
59
+ Delete: () => Delete,
60
+ Get: () => Get,
61
+ Head: () => Head,
62
+ Headers: () => Headers,
63
+ HttpCode: () => HttpCode,
64
+ Option: () => Option,
65
+ Params: () => Params,
66
+ Patch: () => Patch,
67
+ Post: () => Post,
68
+ Put: () => Put,
69
+ Query: () => Query,
70
+ Redirect: () => Redirect,
71
+ SetHeaders: () => SetHeaders,
72
+ Trace: () => Trace,
73
+ createHttpOperator: () => createHttpOperator
74
+ });
75
+ module.exports = __toCommonJS(http_exports);
76
+ var import_types = require("../types");
77
+ var import_http = require("../errors/http");
78
+ const validateInput = (schema, input) => __async(void 0, null, function* () {
79
+ try {
80
+ return yield schema.parseAsync(input);
81
+ } catch (error) {
82
+ const { z: zod } = require("zod");
83
+ if (error instanceof zod.ZodError) {
84
+ throw new import_http.ValidationError(400, error.message);
85
+ }
86
+ throw error;
87
+ }
88
+ });
89
+ const createHttpOperator = (method) => {
90
+ return (urlPath) => {
91
+ return {
92
+ name: method,
93
+ metadata({ setMetadata }) {
94
+ setMetadata(import_types.OperatorType.Trigger, {
95
+ type: import_types.TriggerType.Http,
96
+ path: urlPath,
97
+ method
98
+ });
99
+ }
100
+ };
101
+ };
102
+ };
103
+ const Get = createHttpOperator(import_types.HttpMethod.Get);
104
+ const Post = createHttpOperator(import_types.HttpMethod.Post);
105
+ const Put = createHttpOperator(import_types.HttpMethod.Put);
106
+ const Delete = createHttpOperator(import_types.HttpMethod.Delete);
107
+ const Connect = createHttpOperator(import_types.HttpMethod.Connect);
108
+ const Trace = createHttpOperator(import_types.HttpMethod.Trace);
109
+ const Patch = createHttpOperator(import_types.HttpMethod.Patch);
110
+ const Option = createHttpOperator(import_types.HttpMethod.Option);
111
+ const Head = createHttpOperator(import_types.HttpMethod.Head);
112
+ const Data = (schema) => {
113
+ return {
114
+ name: import_types.HttpMetadata.Data,
115
+ metadata({ setMetadata }) {
116
+ setMetadata(import_types.HttpMetadata.Data, schema);
117
+ },
118
+ validate(helper, next) {
119
+ return __async(this, null, function* () {
120
+ const {
121
+ inputs: { data }
122
+ } = helper;
123
+ helper.inputs = __spreadProps(__spreadValues({}, helper.inputs), {
124
+ data: yield validateInput(schema, data)
125
+ });
126
+ return next();
127
+ });
128
+ }
129
+ };
130
+ };
131
+ const Query = (schema) => {
132
+ return {
133
+ name: import_types.HttpMetadata.Query,
134
+ metadata({ setMetadata }) {
135
+ setMetadata(import_types.HttpMetadata.Query, schema);
136
+ },
137
+ validate(helper, next) {
138
+ return __async(this, null, function* () {
139
+ const {
140
+ inputs: { query }
141
+ } = helper;
142
+ helper.inputs = __spreadProps(__spreadValues({}, helper.inputs), {
143
+ query: yield validateInput(schema, query)
144
+ });
145
+ return next();
146
+ });
147
+ }
148
+ };
149
+ };
150
+ const Params = (schema) => {
151
+ return {
152
+ name: import_types.HttpMetadata.Params,
153
+ metadata({ setMetadata }) {
154
+ setMetadata(import_types.HttpMetadata.Params, schema);
155
+ },
156
+ validate(helper, next) {
157
+ return __async(this, null, function* () {
158
+ const {
159
+ inputs: { params }
160
+ } = helper;
161
+ helper.inputs = __spreadProps(__spreadValues({}, helper.inputs), {
162
+ params: yield validateInput(schema, params)
163
+ });
164
+ return next();
165
+ });
166
+ }
167
+ };
168
+ };
169
+ const Headers = (schema) => {
170
+ return {
171
+ name: import_types.HttpMetadata.Headers,
172
+ metadata({ setMetadata }) {
173
+ setMetadata(import_types.HttpMetadata.Headers, schema);
174
+ },
175
+ validate(helper, next) {
176
+ return __async(this, null, function* () {
177
+ const {
178
+ inputs: { headers }
179
+ } = helper;
180
+ helper.inputs = __spreadProps(__spreadValues({}, helper.inputs), {
181
+ headers: yield validateInput(schema, headers)
182
+ });
183
+ return next();
184
+ });
185
+ }
186
+ };
187
+ };
188
+ const setResponseMeta = (helper, type, value) => {
189
+ const responseMetaData = helper.getMetadata(import_types.HttpMetadata.Response) || [];
190
+ helper.setMetadata(import_types.HttpMetadata.Response, [
191
+ ...responseMetaData,
192
+ {
193
+ type,
194
+ value
195
+ }
196
+ ]);
197
+ };
198
+ const HttpCode = (statusCode) => {
199
+ return {
200
+ name: "HttpCode",
201
+ metadata(helper) {
202
+ setResponseMeta(helper, import_types.ResponseMetaType.StatusCode, statusCode);
203
+ }
204
+ };
205
+ };
206
+ const SetHeaders = (headers) => {
207
+ return {
208
+ name: "SetHeaders",
209
+ metadata(helper) {
210
+ setResponseMeta(helper, import_types.ResponseMetaType.Headers, headers);
211
+ }
212
+ };
213
+ };
214
+ const Redirect = (url) => {
215
+ return {
216
+ name: "Redirect",
217
+ metadata(helper) {
218
+ setResponseMeta(helper, import_types.ResponseMetaType.Redirect, url);
219
+ }
220
+ };
221
+ };
222
+ // Annotate the CommonJS export names for ESM import in node:
223
+ 0 && (module.exports = {
224
+ Connect,
225
+ Data,
226
+ Delete,
227
+ Get,
228
+ Head,
229
+ Headers,
230
+ HttpCode,
231
+ Option,
232
+ Params,
233
+ Patch,
234
+ Post,
235
+ Put,
236
+ Query,
237
+ Redirect,
238
+ SetHeaders,
239
+ Trace,
240
+ createHttpOperator
241
+ });