@mionjs/router 0.8.0-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.
- package/.dist/cjs/index.cjs +154 -0
- package/.dist/cjs/index.cjs.map +1 -0
- package/.dist/cjs/index.d.ts +19 -0
- package/.dist/cjs/package.json +1 -0
- package/.dist/cjs/src/callContext.cjs +125 -0
- package/.dist/cjs/src/callContext.cjs.map +1 -0
- package/.dist/cjs/src/callContext.d.ts +10 -0
- package/.dist/cjs/src/constants.cjs +45 -0
- package/.dist/cjs/src/constants.cjs.map +1 -0
- package/.dist/cjs/src/constants.d.ts +10 -0
- package/.dist/cjs/src/defaultRoutes.cjs +16 -0
- package/.dist/cjs/src/defaultRoutes.cjs.map +1 -0
- package/.dist/cjs/src/defaultRoutes.d.ts +3 -0
- package/.dist/cjs/src/dispatch.cjs +141 -0
- package/.dist/cjs/src/dispatch.cjs.map +1 -0
- package/.dist/cjs/src/dispatch.d.ts +3 -0
- package/.dist/cjs/src/lib/aotCacheLoader.cjs +13 -0
- package/.dist/cjs/src/lib/aotCacheLoader.cjs.map +1 -0
- package/.dist/cjs/src/lib/aotCacheLoader.d.ts +1 -0
- package/.dist/cjs/src/lib/aotEmitter.cjs +70 -0
- package/.dist/cjs/src/lib/aotEmitter.cjs.map +1 -0
- package/.dist/cjs/src/lib/aotEmitter.d.ts +17 -0
- package/.dist/cjs/src/lib/dispatchError.cjs +39 -0
- package/.dist/cjs/src/lib/dispatchError.cjs.map +1 -0
- package/.dist/cjs/src/lib/dispatchError.d.ts +5 -0
- package/.dist/cjs/src/lib/handlers.cjs +52 -0
- package/.dist/cjs/src/lib/handlers.cjs.map +1 -0
- package/.dist/cjs/src/lib/handlers.d.ts +9 -0
- package/.dist/cjs/src/lib/headers.cjs +64 -0
- package/.dist/cjs/src/lib/headers.cjs.map +1 -0
- package/.dist/cjs/src/lib/headers.d.ts +2 -0
- package/.dist/cjs/src/lib/methodsCache.cjs +55 -0
- package/.dist/cjs/src/lib/methodsCache.cjs.map +1 -0
- package/.dist/cjs/src/lib/methodsCache.d.ts +11 -0
- package/.dist/cjs/src/lib/queryBody.cjs +34 -0
- package/.dist/cjs/src/lib/queryBody.cjs.map +1 -0
- package/.dist/cjs/src/lib/queryBody.d.ts +7 -0
- package/.dist/cjs/src/lib/reflection.cjs +342 -0
- package/.dist/cjs/src/lib/reflection.cjs.map +1 -0
- package/.dist/cjs/src/lib/reflection.d.ts +12 -0
- package/.dist/cjs/src/lib/remoteMethods.cjs +109 -0
- package/.dist/cjs/src/lib/remoteMethods.cjs.map +1 -0
- package/.dist/cjs/src/lib/remoteMethods.d.ts +10 -0
- package/.dist/cjs/src/lib/test/aotEmitter-test-router.cjs +24 -0
- package/.dist/cjs/src/lib/test/aotEmitter-test-router.cjs.map +1 -0
- package/.dist/cjs/src/lib/test/aotEmitter-test-router.d.ts +4 -0
- package/.dist/cjs/src/router.cjs +429 -0
- package/.dist/cjs/src/router.cjs.map +1 -0
- package/.dist/cjs/src/router.d.ts +30 -0
- package/.dist/cjs/src/routes/client.routes.cjs +76 -0
- package/.dist/cjs/src/routes/client.routes.cjs.map +1 -0
- package/.dist/cjs/src/routes/client.routes.d.ts +16 -0
- package/.dist/cjs/src/routes/errors.routes.cjs +49 -0
- package/.dist/cjs/src/routes/errors.routes.cjs.map +1 -0
- package/.dist/cjs/src/routes/errors.routes.d.ts +7 -0
- package/.dist/cjs/src/routes/mion.routes.cjs +13 -0
- package/.dist/cjs/src/routes/mion.routes.cjs.map +1 -0
- package/.dist/cjs/src/routes/mion.routes.d.ts +10 -0
- package/.dist/cjs/src/routes/serializer.routes.cjs +191 -0
- package/.dist/cjs/src/routes/serializer.routes.cjs.map +1 -0
- package/.dist/cjs/src/routes/serializer.routes.d.ts +9 -0
- package/.dist/cjs/src/routesFlow.cjs +227 -0
- package/.dist/cjs/src/routesFlow.cjs.map +1 -0
- package/.dist/cjs/src/routesFlow.d.ts +7 -0
- package/.dist/cjs/src/types/context.cjs +31 -0
- package/.dist/cjs/src/types/context.cjs.map +1 -0
- package/.dist/cjs/src/types/context.d.ts +57 -0
- package/.dist/cjs/src/types/definitions.cjs +15 -0
- package/.dist/cjs/src/types/definitions.cjs.map +1 -0
- package/.dist/cjs/src/types/definitions.d.ts +20 -0
- package/.dist/cjs/src/types/general.cjs +14 -0
- package/.dist/cjs/src/types/general.cjs.map +1 -0
- package/.dist/cjs/src/types/general.d.ts +27 -0
- package/.dist/cjs/src/types/guards.cjs +66 -0
- package/.dist/cjs/src/types/guards.cjs.map +1 -0
- package/.dist/cjs/src/types/guards.d.ts +17 -0
- package/.dist/cjs/src/types/handlers.cjs +13 -0
- package/.dist/cjs/src/types/handlers.cjs.map +1 -0
- package/.dist/cjs/src/types/handlers.d.ts +12 -0
- package/.dist/cjs/src/types/publicMethods.cjs +24 -0
- package/.dist/cjs/src/types/publicMethods.cjs.map +1 -0
- package/.dist/cjs/src/types/publicMethods.d.ts +45 -0
- package/.dist/cjs/src/types/remoteMethods.cjs +25 -0
- package/.dist/cjs/src/types/remoteMethods.cjs.map +1 -0
- package/.dist/cjs/src/types/remoteMethods.d.ts +44 -0
- package/.dist/esm/index.d.ts +19 -0
- package/.dist/esm/index.js +145 -0
- package/.dist/esm/index.js.map +1 -0
- package/.dist/esm/src/callContext.d.ts +10 -0
- package/.dist/esm/src/callContext.js +125 -0
- package/.dist/esm/src/callContext.js.map +1 -0
- package/.dist/esm/src/constants.d.ts +10 -0
- package/.dist/esm/src/constants.js +45 -0
- package/.dist/esm/src/constants.js.map +1 -0
- package/.dist/esm/src/defaultRoutes.d.ts +3 -0
- package/.dist/esm/src/defaultRoutes.js +16 -0
- package/.dist/esm/src/defaultRoutes.js.map +1 -0
- package/.dist/esm/src/dispatch.d.ts +3 -0
- package/.dist/esm/src/dispatch.js +141 -0
- package/.dist/esm/src/dispatch.js.map +1 -0
- package/.dist/esm/src/lib/aotCacheLoader.d.ts +1 -0
- package/.dist/esm/src/lib/aotCacheLoader.js +13 -0
- package/.dist/esm/src/lib/aotCacheLoader.js.map +1 -0
- package/.dist/esm/src/lib/aotEmitter.d.ts +17 -0
- package/.dist/esm/src/lib/aotEmitter.js +70 -0
- package/.dist/esm/src/lib/aotEmitter.js.map +1 -0
- package/.dist/esm/src/lib/dispatchError.d.ts +5 -0
- package/.dist/esm/src/lib/dispatchError.js +39 -0
- package/.dist/esm/src/lib/dispatchError.js.map +1 -0
- package/.dist/esm/src/lib/handlers.d.ts +9 -0
- package/.dist/esm/src/lib/handlers.js +52 -0
- package/.dist/esm/src/lib/handlers.js.map +1 -0
- package/.dist/esm/src/lib/headers.d.ts +2 -0
- package/.dist/esm/src/lib/headers.js +64 -0
- package/.dist/esm/src/lib/headers.js.map +1 -0
- package/.dist/esm/src/lib/methodsCache.d.ts +11 -0
- package/.dist/esm/src/lib/methodsCache.js +56 -0
- package/.dist/esm/src/lib/methodsCache.js.map +1 -0
- package/.dist/esm/src/lib/queryBody.d.ts +7 -0
- package/.dist/esm/src/lib/queryBody.js +34 -0
- package/.dist/esm/src/lib/queryBody.js.map +1 -0
- package/.dist/esm/src/lib/reflection.d.ts +12 -0
- package/.dist/esm/src/lib/reflection.js +320 -0
- package/.dist/esm/src/lib/reflection.js.map +1 -0
- package/.dist/esm/src/lib/remoteMethods.d.ts +10 -0
- package/.dist/esm/src/lib/remoteMethods.js +109 -0
- package/.dist/esm/src/lib/remoteMethods.js.map +1 -0
- package/.dist/esm/src/lib/test/aotEmitter-test-router.d.ts +4 -0
- package/.dist/esm/src/lib/test/aotEmitter-test-router.js +24 -0
- package/.dist/esm/src/lib/test/aotEmitter-test-router.js.map +1 -0
- package/.dist/esm/src/router.d.ts +30 -0
- package/.dist/esm/src/router.js +431 -0
- package/.dist/esm/src/router.js.map +1 -0
- package/.dist/esm/src/routes/client.routes.d.ts +16 -0
- package/.dist/esm/src/routes/client.routes.js +76 -0
- package/.dist/esm/src/routes/client.routes.js.map +1 -0
- package/.dist/esm/src/routes/errors.routes.d.ts +7 -0
- package/.dist/esm/src/routes/errors.routes.js +49 -0
- package/.dist/esm/src/routes/errors.routes.js.map +1 -0
- package/.dist/esm/src/routes/mion.routes.d.ts +10 -0
- package/.dist/esm/src/routes/mion.routes.js +13 -0
- package/.dist/esm/src/routes/mion.routes.js.map +1 -0
- package/.dist/esm/src/routes/serializer.routes.d.ts +9 -0
- package/.dist/esm/src/routes/serializer.routes.js +191 -0
- package/.dist/esm/src/routes/serializer.routes.js.map +1 -0
- package/.dist/esm/src/routesFlow.d.ts +7 -0
- package/.dist/esm/src/routesFlow.js +227 -0
- package/.dist/esm/src/routesFlow.js.map +1 -0
- package/.dist/esm/src/types/context.d.ts +57 -0
- package/.dist/esm/src/types/context.js +31 -0
- package/.dist/esm/src/types/context.js.map +1 -0
- package/.dist/esm/src/types/definitions.d.ts +20 -0
- package/.dist/esm/src/types/definitions.js +15 -0
- package/.dist/esm/src/types/definitions.js.map +1 -0
- package/.dist/esm/src/types/general.d.ts +27 -0
- package/.dist/esm/src/types/general.js +14 -0
- package/.dist/esm/src/types/general.js.map +1 -0
- package/.dist/esm/src/types/guards.d.ts +17 -0
- package/.dist/esm/src/types/guards.js +66 -0
- package/.dist/esm/src/types/guards.js.map +1 -0
- package/.dist/esm/src/types/handlers.d.ts +12 -0
- package/.dist/esm/src/types/handlers.js +13 -0
- package/.dist/esm/src/types/handlers.js.map +1 -0
- package/.dist/esm/src/types/publicMethods.d.ts +45 -0
- package/.dist/esm/src/types/publicMethods.js +24 -0
- package/.dist/esm/src/types/publicMethods.js.map +1 -0
- package/.dist/esm/src/types/remoteMethods.d.ts +44 -0
- package/.dist/esm/src/types/remoteMethods.js +25 -0
- package/.dist/esm/src/types/remoteMethods.js.map +1 -0
- package/LICENSE +21 -0
- package/README.md +34 -0
- package/package.json +67 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const src_types_context = require("./src/types/context.cjs");
|
|
4
|
+
const src_types_definitions = require("./src/types/definitions.cjs");
|
|
5
|
+
const src_types_remoteMethods = require("./src/types/remoteMethods.cjs");
|
|
6
|
+
const src_types_general = require("./src/types/general.cjs");
|
|
7
|
+
const src_types_guards = require("./src/types/guards.cjs");
|
|
8
|
+
const src_types_handlers = require("./src/types/handlers.cjs");
|
|
9
|
+
const src_types_publicMethods = require("./src/types/publicMethods.cjs");
|
|
10
|
+
const src_constants = require("./src/constants.cjs");
|
|
11
|
+
const src_router = require("./src/router.cjs");
|
|
12
|
+
const src_dispatch = require("./src/dispatch.cjs");
|
|
13
|
+
const src_callContext = require("./src/callContext.cjs");
|
|
14
|
+
const src_lib_dispatchError = require("./src/lib/dispatchError.cjs");
|
|
15
|
+
const src_lib_headers = require("./src/lib/headers.cjs");
|
|
16
|
+
const src_lib_remoteMethods = require("./src/lib/remoteMethods.cjs");
|
|
17
|
+
const src_lib_handlers = require("./src/lib/handlers.cjs");
|
|
18
|
+
const src_lib_queryBody = require("./src/lib/queryBody.cjs");
|
|
19
|
+
const src_lib_methodsCache = require("./src/lib/methodsCache.cjs");
|
|
20
|
+
const src_routes_errors_routes = require("./src/routes/errors.routes.cjs");
|
|
21
|
+
const src_routes_mion_routes = require("./src/routes/mion.routes.cjs");
|
|
22
|
+
exports.__ΩCallContext = src_types_context.__ΩCallContext;
|
|
23
|
+
exports.__ΩContextDataFactory = src_types_context.__ΩContextDataFactory;
|
|
24
|
+
exports.__ΩMionHeaders = src_types_context.__ΩMionHeaders;
|
|
25
|
+
exports.__ΩMionRequest = src_types_context.__ΩMionRequest;
|
|
26
|
+
exports.__ΩMionResponse = src_types_context.__ΩMionResponse;
|
|
27
|
+
exports.__ΩRawRequestBody = src_types_context.__ΩRawRequestBody;
|
|
28
|
+
exports.__ΩRawResponseBody = src_types_context.__ΩRawResponseBody;
|
|
29
|
+
exports.__ΩResponseBody = src_types_context.__ΩResponseBody;
|
|
30
|
+
exports.__ΩRoutesFlowExecutionResult = src_types_context.__ΩRoutesFlowExecutionResult;
|
|
31
|
+
exports.__ΩAnyHandlerDef = src_types_definitions.__ΩAnyHandlerDef;
|
|
32
|
+
exports.__ΩHeadersMiddleFnDef = src_types_definitions.__ΩHeadersMiddleFnDef;
|
|
33
|
+
exports.__ΩMiddleFnDef = src_types_definitions.__ΩMiddleFnDef;
|
|
34
|
+
exports.__ΩRawMiddleFnDef = src_types_definitions.__ΩRawMiddleFnDef;
|
|
35
|
+
exports.__ΩRouteDef = src_types_definitions.__ΩRouteDef;
|
|
36
|
+
exports.__ΩHeadersMethod = src_types_remoteMethods.__ΩHeadersMethod;
|
|
37
|
+
exports.__ΩHeadersMiddleFnOptions = src_types_remoteMethods.__ΩHeadersMiddleFnOptions;
|
|
38
|
+
exports.__ΩMethodsExecutionChain = src_types_remoteMethods.__ΩMethodsExecutionChain;
|
|
39
|
+
exports.__ΩMiddleFnMethod = src_types_remoteMethods.__ΩMiddleFnMethod;
|
|
40
|
+
exports.__ΩMiddleFnOptions = src_types_remoteMethods.__ΩMiddleFnOptions;
|
|
41
|
+
exports.__ΩRawMethod = src_types_remoteMethods.__ΩRawMethod;
|
|
42
|
+
exports.__ΩRawMiddleFnOptions = src_types_remoteMethods.__ΩRawMiddleFnOptions;
|
|
43
|
+
exports.__ΩRemoteMethod = src_types_remoteMethods.__ΩRemoteMethod;
|
|
44
|
+
exports.__ΩRouteMethod = src_types_remoteMethods.__ΩRouteMethod;
|
|
45
|
+
exports.__ΩRouteOptions = src_types_remoteMethods.__ΩRouteOptions;
|
|
46
|
+
exports.__ΩRoute = src_types_general.__ΩRoute;
|
|
47
|
+
exports.__ΩRouterEntry = src_types_general.__ΩRouterEntry;
|
|
48
|
+
exports.__ΩRouterOptions = src_types_general.__ΩRouterOptions;
|
|
49
|
+
exports.__ΩRoutes = src_types_general.__ΩRoutes;
|
|
50
|
+
exports.isAnyMiddleFnDef = src_types_guards.isAnyMiddleFnDef;
|
|
51
|
+
exports.isExecutable = src_types_guards.isExecutable;
|
|
52
|
+
exports.isHeaderExecutable = src_types_guards.isHeaderExecutable;
|
|
53
|
+
exports.isHeadersMiddleFnDef = src_types_guards.isHeadersMiddleFnDef;
|
|
54
|
+
exports.isMiddleFnDef = src_types_guards.isMiddleFnDef;
|
|
55
|
+
exports.isPublicExecutable = src_types_guards.isPublicExecutable;
|
|
56
|
+
exports.isRawExecutable = src_types_guards.isRawExecutable;
|
|
57
|
+
exports.isRawMiddleFnDef = src_types_guards.isRawMiddleFnDef;
|
|
58
|
+
exports.isRoute = src_types_guards.isRoute;
|
|
59
|
+
exports.isRouteDef = src_types_guards.isRouteDef;
|
|
60
|
+
exports.isRouteExecutable = src_types_guards.isRouteExecutable;
|
|
61
|
+
exports.isRoutes = src_types_guards.isRoutes;
|
|
62
|
+
exports.__ΩAnyHandler = src_types_handlers.__ΩAnyHandler;
|
|
63
|
+
exports.__ΩHandler = src_types_handlers.__ΩHandler;
|
|
64
|
+
exports.__ΩHeaderHandler = src_types_handlers.__ΩHeaderHandler;
|
|
65
|
+
exports.__ΩRawMiddleFnHandler = src_types_handlers.__ΩRawMiddleFnHandler;
|
|
66
|
+
exports.__ΩMayReturnError = src_types_publicMethods.__ΩMayReturnError;
|
|
67
|
+
exports.__ΩMiddleFnsCollection = src_types_publicMethods.__ΩMiddleFnsCollection;
|
|
68
|
+
exports.__ΩPrivateDef = src_types_publicMethods.__ΩPrivateDef;
|
|
69
|
+
exports.__ΩPrivateMiddleFnDef = src_types_publicMethods.__ΩPrivateMiddleFnDef;
|
|
70
|
+
exports.__ΩPublicApi = src_types_publicMethods.__ΩPublicApi;
|
|
71
|
+
exports.__ΩPublicHandler = src_types_publicMethods.__ΩPublicHandler;
|
|
72
|
+
exports.__ΩPublicHeadersFn = src_types_publicMethods.__ΩPublicHeadersFn;
|
|
73
|
+
exports.__ΩPublicMiddleFn = src_types_publicMethods.__ΩPublicMiddleFn;
|
|
74
|
+
exports.__ΩPublicRoute = src_types_publicMethods.__ΩPublicRoute;
|
|
75
|
+
exports.__ΩRemoteApi = src_types_publicMethods.__ΩRemoteApi;
|
|
76
|
+
exports.DEFAULT_ROUTE_OPTIONS = src_constants.DEFAULT_ROUTE_OPTIONS;
|
|
77
|
+
exports.HEADER_HOOK_DEFAULT_PARAMS = src_constants.HEADER_HOOK_DEFAULT_PARAMS;
|
|
78
|
+
exports.IS_TEST_ENV = src_constants.IS_TEST_ENV;
|
|
79
|
+
exports.MAX_ROUTE_NESTING = src_constants.MAX_ROUTE_NESTING;
|
|
80
|
+
exports.NOT_FOUND_HOOK_NAME = src_constants.NOT_FOUND_HOOK_NAME;
|
|
81
|
+
exports.NOT_FOUND_PATH = src_constants.NOT_FOUND_PATH;
|
|
82
|
+
exports.ROUTE_DEFAULT_PARAMS = src_constants.ROUTE_DEFAULT_PARAMS;
|
|
83
|
+
exports.WORKFLOW_KEY = src_constants.WORKFLOW_KEY;
|
|
84
|
+
exports.WORKFLOW_PATH = src_constants.WORKFLOW_PATH;
|
|
85
|
+
exports.addEndMiddleFns = src_router.addEndMiddleFns;
|
|
86
|
+
exports.addStartMiddleFns = src_router.addStartMiddleFns;
|
|
87
|
+
Object.defineProperty(exports, "endMiddleFns", {
|
|
88
|
+
enumerable: true,
|
|
89
|
+
get: () => src_router.endMiddleFns
|
|
90
|
+
});
|
|
91
|
+
exports.geMiddleFnsSize = src_router.geMiddleFnsSize;
|
|
92
|
+
exports.geRoutesSize = src_router.geRoutesSize;
|
|
93
|
+
exports.getAllExecutablesIds = src_router.getAllExecutablesIds;
|
|
94
|
+
exports.getAnyExecutable = src_router.getAnyExecutable;
|
|
95
|
+
exports.getComplexity = src_router.getComplexity;
|
|
96
|
+
exports.getExecutableFromMiddleFn = src_router.getExecutableFromMiddleFn;
|
|
97
|
+
exports.getExecutableFromRawMiddleFn = src_router.getExecutableFromRawMiddleFn;
|
|
98
|
+
exports.getExecutableFromRoute = src_router.getExecutableFromRoute;
|
|
99
|
+
exports.getMiddleFnExecutable = src_router.getMiddleFnExecutable;
|
|
100
|
+
exports.getRouteEntries = src_router.getRouteEntries;
|
|
101
|
+
exports.getRouteExecutable = src_router.getRouteExecutable;
|
|
102
|
+
exports.getRouteExecutableFromPath = src_router.getRouteExecutableFromPath;
|
|
103
|
+
exports.getRouteExecutionChain = src_router.getRouteExecutionChain;
|
|
104
|
+
exports.getRouterOptions = src_router.getRouterOptions;
|
|
105
|
+
exports.getTotalExecutables = src_router.getTotalExecutables;
|
|
106
|
+
exports.initMionRouter = src_router.initMionRouter;
|
|
107
|
+
exports.initRouter = src_router.initRouter;
|
|
108
|
+
exports.isPrivateDefinition = src_router.isPrivateDefinition;
|
|
109
|
+
exports.isPrivateExecutable = src_router.isPrivateExecutable;
|
|
110
|
+
exports.registerRoutes = src_router.registerRoutes;
|
|
111
|
+
exports.resetRouter = src_router.resetRouter;
|
|
112
|
+
exports.shouldFullGenerateSpec = src_router.shouldFullGenerateSpec;
|
|
113
|
+
Object.defineProperty(exports, "startMiddleFns", {
|
|
114
|
+
enumerable: true,
|
|
115
|
+
get: () => src_router.startMiddleFns
|
|
116
|
+
});
|
|
117
|
+
exports.dispatchRoute = src_dispatch.dispatchRoute;
|
|
118
|
+
exports.acquireCallContext = src_callContext.acquireCallContext;
|
|
119
|
+
exports.clearContextPool = src_callContext.clearContextPool;
|
|
120
|
+
exports.createCallContext = src_callContext.createCallContext;
|
|
121
|
+
exports.getContextPoolStats = src_callContext.getContextPoolStats;
|
|
122
|
+
exports.releaseCallContext = src_callContext.releaseCallContext;
|
|
123
|
+
exports.getRouterFatalErrorResponse = src_lib_dispatchError.getRouterFatalErrorResponse;
|
|
124
|
+
exports.onExecutableError = src_lib_dispatchError.onExecutableError;
|
|
125
|
+
exports.headersFromRecord = src_lib_headers.headersFromRecord;
|
|
126
|
+
exports.getPublicApi = src_lib_remoteMethods.getPublicApi;
|
|
127
|
+
exports.getSerializableMethod = src_lib_remoteMethods.getSerializableMethod;
|
|
128
|
+
exports.resetRemoteMethodsMetadata = src_lib_remoteMethods.resetRemoteMethodsMetadata;
|
|
129
|
+
exports.serializeJitFn = src_lib_remoteMethods.serializeJitFn;
|
|
130
|
+
exports.serializeMethodDeps = src_lib_remoteMethods.serializeMethodDeps;
|
|
131
|
+
exports.serializePureDeps = src_lib_remoteMethods.serializePureDeps;
|
|
132
|
+
exports.headersFn = src_lib_handlers.headersFn;
|
|
133
|
+
exports.middleFn = src_lib_handlers.middleFn;
|
|
134
|
+
exports.mutation = src_lib_handlers.mutation;
|
|
135
|
+
exports.query = src_lib_handlers.query;
|
|
136
|
+
exports.rawMiddleFn = src_lib_handlers.rawMiddleFn;
|
|
137
|
+
exports.route = src_lib_handlers.route;
|
|
138
|
+
exports.__ΩQueryBodyResult = src_lib_queryBody.__ΩQueryBodyResult;
|
|
139
|
+
exports.decodeQueryBody = src_lib_queryBody.decodeQueryBody;
|
|
140
|
+
exports.addToPersistedMethods = src_lib_methodsCache.addToPersistedMethods;
|
|
141
|
+
exports.getPersistedMethod = src_lib_methodsCache.getPersistedMethod;
|
|
142
|
+
exports.getPersistedMethodMetadata = src_lib_methodsCache.getPersistedMethodMetadata;
|
|
143
|
+
exports.getPersistedMethods = src_lib_methodsCache.getPersistedMethods;
|
|
144
|
+
exports.loadCompiledMethods = src_lib_methodsCache.loadCompiledMethods;
|
|
145
|
+
Object.defineProperty(exports, "persistedMethods", {
|
|
146
|
+
enumerable: true,
|
|
147
|
+
get: () => src_lib_methodsCache.persistedMethods
|
|
148
|
+
});
|
|
149
|
+
exports.resetPersistedMethods = src_lib_methodsCache.resetPersistedMethods;
|
|
150
|
+
exports.setPersistedMethods = src_lib_methodsCache.setPersistedMethods;
|
|
151
|
+
exports.mionErrorsRoutes = src_routes_errors_routes.mionErrorsRoutes;
|
|
152
|
+
exports.__ΩMionRoutes = src_routes_mion_routes.__ΩMionRoutes;
|
|
153
|
+
exports.mionRoutes = src_routes_mion_routes.mionRoutes;
|
|
154
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export * from './src/types/context.ts';
|
|
2
|
+
export * from './src/types/definitions.ts';
|
|
3
|
+
export * from './src/types/remoteMethods.ts';
|
|
4
|
+
export * from './src/types/general.ts';
|
|
5
|
+
export * from './src/types/guards.ts';
|
|
6
|
+
export * from './src/types/handlers.ts';
|
|
7
|
+
export * from './src/types/publicMethods.ts';
|
|
8
|
+
export * from './src/constants.ts';
|
|
9
|
+
export * from './src/router.ts';
|
|
10
|
+
export * from './src/dispatch.ts';
|
|
11
|
+
export * from './src/callContext.ts';
|
|
12
|
+
export * from './src/lib/dispatchError.ts';
|
|
13
|
+
export * from './src/lib/headers.ts';
|
|
14
|
+
export * from './src/lib/remoteMethods.ts';
|
|
15
|
+
export * from './src/lib/handlers.ts';
|
|
16
|
+
export * from './src/lib/queryBody.ts';
|
|
17
|
+
export * from './src/lib/methodsCache.ts';
|
|
18
|
+
export * from './src/routes/errors.routes.ts';
|
|
19
|
+
export * from './src/routes/mion.routes.ts';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"commonjs"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const src_constants = require("./constants.cjs");
|
|
4
|
+
const src_router = require("./router.cjs");
|
|
5
|
+
const core = require("@mionjs/core");
|
|
6
|
+
const src_routesFlow = require("./routesFlow.cjs");
|
|
7
|
+
let contextPool = [];
|
|
8
|
+
function getContextPoolStats() {
|
|
9
|
+
return {
|
|
10
|
+
poolSize: contextPool.length
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function clearContextPool() {
|
|
14
|
+
contextPool = [];
|
|
15
|
+
}
|
|
16
|
+
function createCallContext(path, opts, reqRawBody, rawRequest, reqHeaders, respHeaders, reqBodyType, urlQuery) {
|
|
17
|
+
const transformedPath = opts.pathTransform?.(rawRequest, path) || path;
|
|
18
|
+
const { executionChain, routesFlowRouteIds } = getExecutionChain(path, transformedPath, urlQuery, rawRequest, opts);
|
|
19
|
+
return {
|
|
20
|
+
path: transformedPath,
|
|
21
|
+
request: {
|
|
22
|
+
headers: reqHeaders,
|
|
23
|
+
rawBody: reqRawBody,
|
|
24
|
+
bodyType: reqBodyType ?? getRequestBodyType(reqRawBody),
|
|
25
|
+
body: {},
|
|
26
|
+
thrownErrors: void 0
|
|
27
|
+
},
|
|
28
|
+
response: {
|
|
29
|
+
statusCode: core.StatusCodes.OK,
|
|
30
|
+
hasErrors: false,
|
|
31
|
+
headers: respHeaders,
|
|
32
|
+
body: {},
|
|
33
|
+
rawBody: "",
|
|
34
|
+
serializer: core.SerializerModes.json,
|
|
35
|
+
binSerializer: void 0
|
|
36
|
+
},
|
|
37
|
+
executionChain,
|
|
38
|
+
shared: opts.contextDataFactory ? opts.contextDataFactory() : {},
|
|
39
|
+
urlQuery,
|
|
40
|
+
routesFlowRouteIds
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function acquireCallContext(usePooling, path, opts, reqRawBody, rawRequest, reqHeaders, respHeaders, reqBodyType, urlQuery) {
|
|
44
|
+
if (!usePooling) return createCallContext(path, opts, reqRawBody, rawRequest, reqHeaders, respHeaders, reqBodyType, urlQuery);
|
|
45
|
+
const pooledContext = contextPool.pop();
|
|
46
|
+
const transformedPath = opts.pathTransform?.(rawRequest, path) || path;
|
|
47
|
+
if (pooledContext) {
|
|
48
|
+
const ctx = pooledContext;
|
|
49
|
+
ctx.path = transformedPath;
|
|
50
|
+
const req = ctx.request;
|
|
51
|
+
req.headers = reqHeaders;
|
|
52
|
+
req.rawBody = reqRawBody;
|
|
53
|
+
req.bodyType = reqBodyType ?? getRequestBodyType(reqRawBody);
|
|
54
|
+
req.body = {};
|
|
55
|
+
req.thrownErrors = void 0;
|
|
56
|
+
const resp = ctx.response;
|
|
57
|
+
resp.statusCode = core.StatusCodes.OK;
|
|
58
|
+
resp.hasErrors = false;
|
|
59
|
+
resp.headers = respHeaders;
|
|
60
|
+
resp.body = {};
|
|
61
|
+
resp.rawBody = "";
|
|
62
|
+
resp.serializer = core.SerializerModes.json;
|
|
63
|
+
resp.binSerializer = void 0;
|
|
64
|
+
const { executionChain, routesFlowRouteIds } = getExecutionChain(path, transformedPath, urlQuery, rawRequest, opts);
|
|
65
|
+
ctx.executionChain = executionChain;
|
|
66
|
+
ctx.routesFlowRouteIds = routesFlowRouteIds;
|
|
67
|
+
ctx.shared = opts.contextDataFactory ? opts.contextDataFactory() : {};
|
|
68
|
+
ctx.urlQuery = urlQuery;
|
|
69
|
+
return ctx;
|
|
70
|
+
}
|
|
71
|
+
return createCallContext(path, opts, reqRawBody, rawRequest, reqHeaders, respHeaders, reqBodyType, urlQuery);
|
|
72
|
+
}
|
|
73
|
+
function releaseCallContext(ctx, maxPoolSize) {
|
|
74
|
+
if (contextPool.length < maxPoolSize) {
|
|
75
|
+
const mutableCtx = ctx;
|
|
76
|
+
const req = mutableCtx.request;
|
|
77
|
+
req.rawBody = "";
|
|
78
|
+
req.body = null;
|
|
79
|
+
req.thrownErrors = void 0;
|
|
80
|
+
mutableCtx.response = {
|
|
81
|
+
statusCode: core.StatusCodes.OK,
|
|
82
|
+
hasErrors: false,
|
|
83
|
+
headers: null,
|
|
84
|
+
// Will be set when context is acquired
|
|
85
|
+
body: null,
|
|
86
|
+
// Will be set when context is acquired
|
|
87
|
+
rawBody: "",
|
|
88
|
+
serializer: core.SerializerModes.json,
|
|
89
|
+
binSerializer: void 0
|
|
90
|
+
};
|
|
91
|
+
mutableCtx.shared = null;
|
|
92
|
+
mutableCtx.executionChain = null;
|
|
93
|
+
mutableCtx.routesFlowRouteIds = void 0;
|
|
94
|
+
contextPool.push(ctx);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function getRequestBodyType(rawBody) {
|
|
98
|
+
if (typeof rawBody === "string") return core.SerializerModes.stringifyJson;
|
|
99
|
+
if (rawBody instanceof ArrayBuffer || rawBody instanceof Uint8Array) return core.SerializerModes.binary;
|
|
100
|
+
return core.SerializerModes.json;
|
|
101
|
+
}
|
|
102
|
+
function getExecutionChain(originalPath, transformedPath, urlQuery, rawRequest, opts) {
|
|
103
|
+
const hasPrefix = !!opts.basePath;
|
|
104
|
+
const isRoutesFlowPath = hasPrefix ? originalPath.endsWith(src_constants.WORKFLOW_PATH) : originalPath === src_constants.WORKFLOW_PATH;
|
|
105
|
+
if (isRoutesFlowPath) return src_routesFlow.getRoutesFlowExecutionChain(rawRequest, opts, urlQuery);
|
|
106
|
+
let executionChain = src_router.getRouteExecutionChain(transformedPath);
|
|
107
|
+
if (!executionChain) {
|
|
108
|
+
const notFoundPath = core.getRoutePath([core.MION_ROUTES.notFound], opts);
|
|
109
|
+
executionChain = src_router.getRouteExecutionChain(notFoundPath);
|
|
110
|
+
if (!executionChain) {
|
|
111
|
+
throw new core.RpcError({
|
|
112
|
+
statusCode: core.StatusCodes.UNEXPECTED_ERROR,
|
|
113
|
+
type: "not-found",
|
|
114
|
+
publicMessage: "Not-found route is not registered. This should never happen."
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return { executionChain };
|
|
119
|
+
}
|
|
120
|
+
exports.acquireCallContext = acquireCallContext;
|
|
121
|
+
exports.clearContextPool = clearContextPool;
|
|
122
|
+
exports.createCallContext = createCallContext;
|
|
123
|
+
exports.getContextPoolStats = getContextPoolStats;
|
|
124
|
+
exports.releaseCallContext = releaseCallContext;
|
|
125
|
+
//# sourceMappingURL=callContext.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"callContext.cjs","sources":["../../../src/callContext.ts"],"sourcesContent":["/* ########\n * 2026 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\n\nimport {WORKFLOW_PATH} from './constants.ts';\nimport {getRouteExecutionChain} from './router.ts';\nimport type {\n CallContext,\n MionResponse,\n MionRequest,\n MionHeaders,\n RawRequestBody,\n RoutesFlowExecutionResult,\n} from './types/context.ts';\nimport type {RouterOptions} from './types/general.ts';\nimport {Mutable, StatusCodes, SerializerModes, SerializerCode, RpcError, MION_ROUTES, getRoutePath} from '@mionjs/core';\nimport {getRoutesFlowExecutionChain} from './routesFlow.ts';\n\n// ############# POOL STATE #############\n\nlet contextPool: CallContext[] = [];\n\n/** Get current pool statistics for monitoring */\nexport function getContextPoolStats(): {poolSize: number} {\n return {\n poolSize: contextPool.length,\n };\n}\n\n/** Clear the context pool - useful for testing */\nexport function clearContextPool(): void {\n contextPool = [];\n}\n\n// ############# CONTEXT CREATION #############\n\n/** Creates a new CallContext without pooling (original behavior) */\nexport function createCallContext(\n path: string,\n opts: RouterOptions,\n reqRawBody: RawRequestBody,\n rawRequest: unknown,\n reqHeaders: MionHeaders,\n respHeaders: MionHeaders,\n reqBodyType?: SerializerCode,\n urlQuery?: string\n): CallContext {\n const transformedPath = opts.pathTransform?.(rawRequest, path) || path;\n const {executionChain, routesFlowRouteIds} = getExecutionChain(path, transformedPath, urlQuery, rawRequest, opts);\n return {\n path: transformedPath,\n request: {\n headers: reqHeaders,\n rawBody: reqRawBody,\n bodyType: reqBodyType ?? getRequestBodyType(reqRawBody),\n body: {},\n thrownErrors: undefined,\n },\n response: {\n statusCode: StatusCodes.OK,\n hasErrors: false,\n headers: respHeaders,\n body: {},\n rawBody: '',\n serializer: SerializerModes.json,\n binSerializer: undefined,\n },\n executionChain,\n shared: opts.contextDataFactory ? opts.contextDataFactory() : {},\n urlQuery,\n routesFlowRouteIds,\n } as CallContext;\n}\n\n/** Acquires a CallContext from the pool or creates a new one */\nexport function acquireCallContext(\n usePooling: boolean,\n path: string,\n opts: RouterOptions,\n reqRawBody: RawRequestBody,\n rawRequest: unknown,\n reqHeaders: MionHeaders,\n respHeaders: MionHeaders,\n reqBodyType?: SerializerCode,\n urlQuery?: string\n): CallContext {\n if (!usePooling) return createCallContext(path, opts, reqRawBody, rawRequest, reqHeaders, respHeaders, reqBodyType, urlQuery);\n const pooledContext = contextPool.pop();\n const transformedPath = opts.pathTransform?.(rawRequest, path) || path;\n\n if (pooledContext) {\n // Reuse the pooled context shell, but create fresh body objects\n const ctx = pooledContext as Mutable<CallContext>;\n ctx.path = transformedPath;\n // Reset request - reuse the request object shell\n const req = ctx.request as Mutable<MionRequest>;\n req.headers = reqHeaders;\n req.rawBody = reqRawBody;\n req.bodyType = reqBodyType ?? getRequestBodyType(reqRawBody);\n req.body = {}; // Must be fresh - handlers write to this\n req.thrownErrors = undefined;\n // Reset response - reuse the response object shell\n const resp = ctx.response as Mutable<MionResponse>;\n resp.statusCode = StatusCodes.OK;\n resp.hasErrors = false;\n resp.headers = respHeaders;\n resp.body = {}; // Must be fresh - handlers write to this\n resp.rawBody = '';\n resp.serializer = SerializerModes.json;\n resp.binSerializer = undefined;\n // Reset execution chain and routesFlow route IDs\n const {executionChain, routesFlowRouteIds} = getExecutionChain(path, transformedPath, urlQuery, rawRequest, opts);\n ctx.executionChain = executionChain;\n ctx.routesFlowRouteIds = routesFlowRouteIds;\n // Reset shared data\n ctx.shared = opts.contextDataFactory ? opts.contextDataFactory() : {};\n // Reset urlQuery\n ctx.urlQuery = urlQuery;\n return ctx;\n }\n // No pooled context available, create new one\n return createCallContext(path, opts, reqRawBody, rawRequest, reqHeaders, respHeaders, reqBodyType, urlQuery);\n}\n\n/** Releases a CallContext back to the pool for reuse */\nexport function releaseCallContext(ctx: CallContext, maxPoolSize: number): void {\n if (contextPool.length < maxPoolSize) {\n const mutableCtx = ctx as Mutable<CallContext>;\n const req = mutableCtx.request as Mutable<MionRequest>;\n // Clear request data - safe to mutate since request is not returned to caller\n req.rawBody = '';\n req.body = null as any; // Will be set when context is acquired\n req.thrownErrors = undefined;\n // Create fresh response object - the old one may still be referenced by the caller\n // IMPORTANT: We must NOT mutate the existing response object because it's returned\n // to the platform wrapper (e.g., HTTP handler) which may still be using it\n mutableCtx.response = {\n statusCode: StatusCodes.OK,\n hasErrors: false,\n headers: null as any, // Will be set when context is acquired\n body: null as any, // Will be set when context is acquired\n rawBody: '',\n serializer: SerializerModes.json,\n binSerializer: undefined,\n };\n mutableCtx.shared = null as any;\n mutableCtx.executionChain = null as any;\n mutableCtx.routesFlowRouteIds = undefined;\n contextPool.push(ctx);\n }\n // If pool is full, let the context be garbage collected\n}\n\n// ############# HELPER FUNCTIONS #############\n\nfunction getRequestBodyType(rawBody: RawRequestBody): SerializerCode {\n if (typeof rawBody === 'string') return SerializerModes.stringifyJson;\n if (rawBody instanceof ArrayBuffer || rawBody instanceof Uint8Array) return SerializerModes.binary;\n return SerializerModes.json;\n}\n\n/** Gets the execution chain for a path, handling routesFlow paths specially */\nfunction getExecutionChain(\n originalPath: string,\n transformedPath: string,\n urlQuery: string | undefined,\n rawRequest: unknown,\n opts: RouterOptions\n): RoutesFlowExecutionResult {\n const hasPrefix = !!opts.basePath;\n // Handle routesFlow path - check if the original path ends with the workflow key\n // This works with any prefix (e.g., /mion-routes-flow, /api/v1/mion-routes-flow)\n const isRoutesFlowPath = hasPrefix ? originalPath.endsWith(WORKFLOW_PATH) : originalPath === WORKFLOW_PATH;\n if (isRoutesFlowPath) return getRoutesFlowExecutionChain(rawRequest, opts, urlQuery);\n\n // Normal path - get execution chain from router using transformed path\n let executionChain = getRouteExecutionChain(transformedPath);\n if (!executionChain) {\n const notFoundPath = getRoutePath([MION_ROUTES.notFound], opts);\n executionChain = getRouteExecutionChain(notFoundPath);\n if (!executionChain) {\n throw new RpcError({\n statusCode: StatusCodes.UNEXPECTED_ERROR,\n type: 'not-found',\n publicMessage: 'Not-found route is not registered. This should never happen.',\n });\n }\n }\n return {executionChain};\n}\n"],"names":["StatusCodes","SerializerModes","WORKFLOW_PATH","getRoutesFlowExecutionChain","getRouteExecutionChain","getRoutePath","MION_ROUTES","RpcError"],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { CallContext, MionHeaders, RawRequestBody } from './types/context.ts';
|
|
2
|
+
import { RouterOptions } from './types/general.ts';
|
|
3
|
+
import { SerializerCode } from '@mionjs/core';
|
|
4
|
+
export declare function getContextPoolStats(): {
|
|
5
|
+
poolSize: number;
|
|
6
|
+
};
|
|
7
|
+
export declare function clearContextPool(): void;
|
|
8
|
+
export declare function createCallContext(path: string, opts: RouterOptions, reqRawBody: RawRequestBody, rawRequest: unknown, reqHeaders: MionHeaders, respHeaders: MionHeaders, reqBodyType?: SerializerCode, urlQuery?: string): CallContext;
|
|
9
|
+
export declare function acquireCallContext(usePooling: boolean, path: string, opts: RouterOptions, reqRawBody: RawRequestBody, rawRequest: unknown, reqHeaders: MionHeaders, respHeaders: MionHeaders, reqBodyType?: SerializerCode, urlQuery?: string): CallContext;
|
|
10
|
+
export declare function releaseCallContext(ctx: CallContext, maxPoolSize: number): void;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const core = require("@mionjs/core");
|
|
4
|
+
const IS_TEST_ENV = core.getENV("JEST_WORKER_ID") !== void 0 || core.getENV("NODE_ENV") === "test";
|
|
5
|
+
const ROUTE_DEFAULT_PARAMS = ["context"];
|
|
6
|
+
const HEADER_HOOK_DEFAULT_PARAMS = ["context", "headers"];
|
|
7
|
+
const DEFAULT_ROUTE_OPTIONS = {
|
|
8
|
+
/** Prefix for all routes, i.e: api/v1. Path separator is added between the prefix and the route */
|
|
9
|
+
basePath: "",
|
|
10
|
+
/** Suffix for all routes, i.e: .json. No path separator is added between the route and the suffix */
|
|
11
|
+
suffix: "",
|
|
12
|
+
/** Function that transforms the path before finding a route */
|
|
13
|
+
pathTransform: void 0,
|
|
14
|
+
/** Default serializer mode - json as default native serializer, and minimum overhead to transform just required fields */
|
|
15
|
+
serializer: "json",
|
|
16
|
+
/** Default run type compiling options for routes and middleFns, can't be configured by the user as would break functionality */
|
|
17
|
+
runTypeOptions: {},
|
|
18
|
+
/** set to true to generate router spec for clients. */
|
|
19
|
+
getPublicRoutesData: process.env.GENERATE_ROUTER_SPEC === "true",
|
|
20
|
+
/** Set true to automatically generate and id for every error. */
|
|
21
|
+
autoGenerateErrorId: false,
|
|
22
|
+
/** client routes are initialized by default */
|
|
23
|
+
skipClientRoutes: IS_TEST_ENV,
|
|
24
|
+
/** AOT mode is disabled by default */
|
|
25
|
+
aot: false,
|
|
26
|
+
/** Context pooling size == 100 by default */
|
|
27
|
+
maxContextPoolSize: 100,
|
|
28
|
+
/** RoutesFlow cache size == 100 by default */
|
|
29
|
+
maxRoutesFlowsCacheSize: 100
|
|
30
|
+
};
|
|
31
|
+
const MAX_ROUTE_NESTING = 10;
|
|
32
|
+
const NOT_FOUND_HOOK_NAME = "_miΦn404NΦtfΦundHΦΦk_";
|
|
33
|
+
const NOT_FOUND_PATH = `${core.PATH_SEPARATOR}${core.MION_ROUTES.notFound}`;
|
|
34
|
+
const WORKFLOW_KEY = `mion-routes-flow`;
|
|
35
|
+
const WORKFLOW_PATH = `${core.PATH_SEPARATOR}${WORKFLOW_KEY}`;
|
|
36
|
+
exports.DEFAULT_ROUTE_OPTIONS = DEFAULT_ROUTE_OPTIONS;
|
|
37
|
+
exports.HEADER_HOOK_DEFAULT_PARAMS = HEADER_HOOK_DEFAULT_PARAMS;
|
|
38
|
+
exports.IS_TEST_ENV = IS_TEST_ENV;
|
|
39
|
+
exports.MAX_ROUTE_NESTING = MAX_ROUTE_NESTING;
|
|
40
|
+
exports.NOT_FOUND_HOOK_NAME = NOT_FOUND_HOOK_NAME;
|
|
41
|
+
exports.NOT_FOUND_PATH = NOT_FOUND_PATH;
|
|
42
|
+
exports.ROUTE_DEFAULT_PARAMS = ROUTE_DEFAULT_PARAMS;
|
|
43
|
+
exports.WORKFLOW_KEY = WORKFLOW_KEY;
|
|
44
|
+
exports.WORKFLOW_PATH = WORKFLOW_PATH;
|
|
45
|
+
//# sourceMappingURL=constants.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.cjs","sources":["../../../src/constants.ts"],"sourcesContent":["/* ########\n * 2022 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\n\nimport {RouterOptions} from './types/general.ts';\nimport {getENV, MION_ROUTES, PATH_SEPARATOR} from '@mionjs/core';\n\nexport const IS_TEST_ENV = getENV('JEST_WORKER_ID') !== undefined || getENV('NODE_ENV') === 'test';\n\nexport const ROUTE_DEFAULT_PARAMS = ['context'];\nexport const HEADER_HOOK_DEFAULT_PARAMS = ['context', 'headers'];\n\nexport const DEFAULT_ROUTE_OPTIONS = {\n /** Prefix for all routes, i.e: api/v1. Path separator is added between the prefix and the route */\n basePath: '',\n /** Suffix for all routes, i.e: .json. No path separator is added between the route and the suffix */\n suffix: '',\n /** Function that transforms the path before finding a route */\n pathTransform: undefined,\n /** Default serializer mode - json as default native serializer, and minimum overhead to transform just required fields */\n serializer: 'json',\n /** Default run type compiling options for routes and middleFns, can't be configured by the user as would break functionality */\n runTypeOptions: {},\n /** set to true to generate router spec for clients. */\n getPublicRoutesData: process.env.GENERATE_ROUTER_SPEC === 'true',\n /** Set true to automatically generate and id for every error. */\n autoGenerateErrorId: false,\n /** client routes are initialized by default */\n skipClientRoutes: IS_TEST_ENV,\n /** AOT mode is disabled by default */\n aot: false,\n /** Context pooling size == 100 by default */\n maxContextPoolSize: 100,\n /** RoutesFlow cache size == 100 by default */\n maxRoutesFlowsCacheSize: 100,\n} as Readonly<RouterOptions>;\n\nexport const MAX_ROUTE_NESTING = 10;\nexport const NOT_FOUND_HOOK_NAME = '_miΦn404NΦtfΦundHΦΦk_';\nexport const NOT_FOUND_PATH = `${PATH_SEPARATOR}${MION_ROUTES.notFound}`;\nexport const WORKFLOW_KEY = `mion-routes-flow`;\nexport const WORKFLOW_PATH = `${PATH_SEPARATOR}${WORKFLOW_KEY}`;\n"],"names":["getENV","PATH_SEPARATOR","MION_ROUTES"],"mappings":";;;AAUO,MAAM,cAAcA,KAAAA,OAAO,gBAAgB,MAAM,UAAaA,KAAAA,OAAO,UAAU,MAAM;AAErF,MAAM,uBAAuB,CAAC,SAAS;AACvC,MAAM,6BAA6B,CAAC,WAAW,SAAS;AAExD,MAAM,wBAAwB;AAAA;AAAA,EAEjC,UAAU;AAAA;AAAA,EAEV,QAAQ;AAAA;AAAA,EAER,eAAe;AAAA;AAAA,EAEf,YAAY;AAAA;AAAA,EAEZ,gBAAgB,CAAA;AAAA;AAAA,EAEhB,qBAAqB,QAAQ,IAAI,yBAAyB;AAAA;AAAA,EAE1D,qBAAqB;AAAA;AAAA,EAErB,kBAAkB;AAAA;AAAA,EAElB,KAAK;AAAA;AAAA,EAEL,oBAAoB;AAAA;AAAA,EAEpB,yBAAyB;;AAGtB,MAAM,oBAAoB;AAC1B,MAAM,sBAAsB;AAC5B,MAAM,iBAAiB,GAAGC,KAAAA,cAAc,GAAGC,KAAAA,YAAY,QAAQ;AAC/D,MAAM,eAAe;AACrB,MAAM,gBAAgB,GAAGD,mBAAc,GAAG,YAAY;;;;;;;;;;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { RouterOptions } from './types/general.ts';
|
|
2
|
+
export declare const IS_TEST_ENV: boolean;
|
|
3
|
+
export declare const ROUTE_DEFAULT_PARAMS: string[];
|
|
4
|
+
export declare const HEADER_HOOK_DEFAULT_PARAMS: string[];
|
|
5
|
+
export declare const DEFAULT_ROUTE_OPTIONS: Readonly<RouterOptions>;
|
|
6
|
+
export declare const MAX_ROUTE_NESTING = 10;
|
|
7
|
+
export declare const NOT_FOUND_HOOK_NAME = "_mi\u03A6n404N\u03A6tf\u03A6undH\u03A6\u03A6k_";
|
|
8
|
+
export declare const NOT_FOUND_PATH: string;
|
|
9
|
+
export declare const WORKFLOW_KEY = "mion-routes-flow";
|
|
10
|
+
export declare const WORKFLOW_PATH = "/mion-routes-flow";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const router = require("@mionjs/router");
|
|
4
|
+
function __assignType(fn, args) {
|
|
5
|
+
fn.__type = args;
|
|
6
|
+
return fn;
|
|
7
|
+
}
|
|
8
|
+
const routes = {
|
|
9
|
+
// Only required as initMionRouter needs at least one route/middleFn
|
|
10
|
+
"mion@mionEmptyMiddleFn": router.middleFn(__assignType(() => void 0, ["", "P$/!"]))
|
|
11
|
+
};
|
|
12
|
+
const defaultApi = router.initMionRouter(routes, { skipClientRoutes: false });
|
|
13
|
+
const __ΩDefaultApi = [() => defaultApi, "DefaultApi", 'i!w"y'];
|
|
14
|
+
exports.__ΩDefaultApi = __ΩDefaultApi;
|
|
15
|
+
exports.defaultApi = defaultApi;
|
|
16
|
+
//# sourceMappingURL=defaultRoutes.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultRoutes.cjs","sources":["../../../src/defaultRoutes.ts"],"sourcesContent":["/* ########\n * 2025 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\n\n/**\n * Default routes script for AOT cache generation.\n *\n * This script initializes the mion router with only the built-in internal routes\n * (error routes, metadata routes, etc.). It is used by the Vite plugin as a fallback\n * when no user-provided startServerScript is configured.\n *\n * When run with MION_COMPILE=true, the router's emitAOTCaches() will automatically\n * collect and send the serialized caches for these internal routes via IPC.\n *\n * Internal routes included:\n * - @thrownErrors: Error serialization route\n * - mion@notFound: Not-found handler\n * - mion@platformError: Platform error handler\n * - mion@methodsMetadataById: Remote methods metadata by ID\n * - mion@methodsMetadataByPath: Remote methods metadata by path\n */\n\nimport {middleFn, initMionRouter} from '@mionjs/router';\nimport type {Routes} from '@mionjs/router';\n\nconst routes = {\n // Only required as initMionRouter needs at least one route/middleFn\n 'mion@mionEmptyMiddleFn': middleFn((): void => undefined),\n} satisfies Routes;\n\n// Initialize the router — this registers all internal routes and emits AOT caches\n// skipClientRoutes must be false to ensure metadata routes are included in AOT caches\nexport const defaultApi = initMionRouter(routes, {skipClientRoutes: false});\nexport type DefaultApi = typeof defaultApi;\n"],"names":["middleFn","initMionRouter"],"mappings":";;;;;;;AA4BA,MAAM,SAAS;AAAA;AAAA,EAEX,0BAA0BA,OAAAA,SAAQ,aAAC,MAAY,QAAS,CAAA,IAAA,MAAA,CAAA,CAAA;;AAKrD,MAAM,aAAaC,OAAAA,eAAe,QAAQ,EAAC,kBAAkB,OAAM;;;;"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const src_router = require("./router.cjs");
|
|
4
|
+
const core = require("@mionjs/core");
|
|
5
|
+
const src_lib_dispatchError = require("./lib/dispatchError.cjs");
|
|
6
|
+
const src_callContext = require("./callContext.cjs");
|
|
7
|
+
async function dispatchRoute(path, reqRawBody, reqHeaders, respHeaders, rawRequest, rawResponse, reqBodyType, urlQuery) {
|
|
8
|
+
const opts = src_router.getRouterOptions();
|
|
9
|
+
const usePooling = opts.maxContextPoolSize > 0;
|
|
10
|
+
const context = src_callContext.acquireCallContext(
|
|
11
|
+
usePooling,
|
|
12
|
+
path,
|
|
13
|
+
opts,
|
|
14
|
+
reqRawBody,
|
|
15
|
+
rawRequest,
|
|
16
|
+
reqHeaders,
|
|
17
|
+
respHeaders,
|
|
18
|
+
reqBodyType,
|
|
19
|
+
urlQuery
|
|
20
|
+
);
|
|
21
|
+
try {
|
|
22
|
+
await runExecutionChain(context, rawRequest, rawResponse, opts);
|
|
23
|
+
return context.response;
|
|
24
|
+
} catch (err) {
|
|
25
|
+
return Promise.reject(err);
|
|
26
|
+
} finally {
|
|
27
|
+
if (usePooling) {
|
|
28
|
+
src_callContext.releaseCallContext(context, opts.maxContextPoolSize);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
async function runExecutionChain(context, rawRequest, rawResponse, opts) {
|
|
33
|
+
const { response, request } = context;
|
|
34
|
+
const executionList = context.executionChain.methods;
|
|
35
|
+
response.serializer = context.executionChain.serializer;
|
|
36
|
+
for (let i = 0; i < executionList.length; i++) {
|
|
37
|
+
const executable = executionList[i];
|
|
38
|
+
if (response.hasErrors && !executable.options.runOnError) continue;
|
|
39
|
+
try {
|
|
40
|
+
const methodCaller = executable.methodCaller || getMethodCaller(executable);
|
|
41
|
+
const result = await methodCaller(context, executable, request, response, opts, rawRequest, rawResponse);
|
|
42
|
+
if (result === void 0 || !executable.hasReturnData) continue;
|
|
43
|
+
if (executable.headersReturn && result instanceof core.HeadersSubset) {
|
|
44
|
+
const headersMap = result.headers;
|
|
45
|
+
for (const name in headersMap) {
|
|
46
|
+
const value = headersMap[name];
|
|
47
|
+
if (value !== void 0 && value !== null) {
|
|
48
|
+
response.headers.set(name, value);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
response.body[executable.id] = result;
|
|
54
|
+
} catch (err) {
|
|
55
|
+
src_lib_dispatchError.onExecutableError(context, executable, err);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return context.response;
|
|
59
|
+
}
|
|
60
|
+
async function runRawMiddleFn(context, executable, req, resp, opts, rawRequest, rawResponse) {
|
|
61
|
+
const result = await executable.handler(context, rawRequest, rawResponse, opts);
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
async function runHeadersMiddleFn(context, executable, request) {
|
|
65
|
+
const headerNames = executable.headersParam.headerNames;
|
|
66
|
+
const params = deserializeBodyParamsOrThrow(request, executable);
|
|
67
|
+
const headersMap = {};
|
|
68
|
+
headerNames.forEach((name) => {
|
|
69
|
+
const value = request.headers.get(name);
|
|
70
|
+
if (value) headersMap[name] = value;
|
|
71
|
+
});
|
|
72
|
+
const headersSubset = new core.HeadersSubset(headersMap);
|
|
73
|
+
validateHeaderParamsOrThrow(headersSubset, executable);
|
|
74
|
+
if (executable.options.validateParams) validateParametersOrThrow(params, executable);
|
|
75
|
+
const result = await executable.handler(context, headersSubset, ...params);
|
|
76
|
+
return result;
|
|
77
|
+
}
|
|
78
|
+
async function runRouteOrMiddleFn(context, executable, request) {
|
|
79
|
+
const params = deserializeBodyParamsOrThrow(request, executable);
|
|
80
|
+
if (executable.options.validateParams) validateParametersOrThrow(params, executable);
|
|
81
|
+
const result = await executable.handler(context, ...params);
|
|
82
|
+
return result;
|
|
83
|
+
}
|
|
84
|
+
function getMethodCaller(executable) {
|
|
85
|
+
if (executable.type === core.HandlerType.rawMiddleFn) {
|
|
86
|
+
executable.methodCaller = runRawMiddleFn;
|
|
87
|
+
} else if (executable.type === core.HandlerType.headersMiddleFn) {
|
|
88
|
+
executable.methodCaller = runHeadersMiddleFn;
|
|
89
|
+
} else {
|
|
90
|
+
executable.methodCaller = runRouteOrMiddleFn;
|
|
91
|
+
}
|
|
92
|
+
return executable.methodCaller;
|
|
93
|
+
}
|
|
94
|
+
function deserializeBodyParamsOrThrow(request, executable) {
|
|
95
|
+
const params = request.body[executable.id] || [];
|
|
96
|
+
if (request.bodyType === core.SerializerModes.binary) return params;
|
|
97
|
+
if (executable.paramsJitFns.restoreFromJson.isNoop) return params;
|
|
98
|
+
try {
|
|
99
|
+
request.body[executable.id] = executable.paramsJitFns.restoreFromJson.fn(params);
|
|
100
|
+
return request.body[executable.id];
|
|
101
|
+
} catch (e) {
|
|
102
|
+
throw new core.RpcError({
|
|
103
|
+
statusCode: core.StatusCodes.UNEXPECTED_ERROR,
|
|
104
|
+
type: "serialization-error",
|
|
105
|
+
publicMessage: `Invalid params '${executable.id}', can not deserialize. Parameters might be of the wrong type.`,
|
|
106
|
+
originalError: e,
|
|
107
|
+
errorData: {
|
|
108
|
+
deserializeError: e?.message || "Unknown error"
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
function validateParametersOrThrow(params, executable) {
|
|
114
|
+
if (executable.paramsJitFns.isType.isNoop) return;
|
|
115
|
+
if (!executable.paramsJitFns.isType.fn(params)) {
|
|
116
|
+
const validationError = new core.RpcError({
|
|
117
|
+
statusCode: core.StatusCodes.UNEXPECTED_ERROR,
|
|
118
|
+
type: "validation-error",
|
|
119
|
+
publicMessage: `Invalid params in '${executable.id}', validation failed.`,
|
|
120
|
+
errorData: {
|
|
121
|
+
typeErrors: executable.paramsJitFns.typeErrors.fn(params)
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
throw validationError;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
function validateHeaderParamsOrThrow(headers, executable) {
|
|
128
|
+
if (!executable.headersParam.jitFns.isType.fn(headers)) {
|
|
129
|
+
const validationError = new core.RpcError({
|
|
130
|
+
statusCode: core.StatusCodes.UNEXPECTED_ERROR,
|
|
131
|
+
type: "validation-error",
|
|
132
|
+
publicMessage: `Invalid params in '${executable.id}', validation failed.`,
|
|
133
|
+
errorData: {
|
|
134
|
+
typeErrors: executable.headersParam.jitFns.typeErrors.fn(headers)
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
throw validationError;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
exports.dispatchRoute = dispatchRoute;
|
|
141
|
+
//# sourceMappingURL=dispatch.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch.cjs","sources":["../../../src/dispatch.ts"],"sourcesContent":["/* ########\n * 2022 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\n\nimport type {CallContext, MionResponse, MionRequest, MionHeaders, RawRequestBody} from './types/context.ts';\nimport {type RouterOptions} from './types/general.ts';\nimport {HeadersMethod, RemoteMethod, RawMethod} from './types/remoteMethods.ts';\nimport {getRouterOptions} from './router.ts';\nimport {Mutable, AnyObject, StatusCodes, HeadersSubset, SerializerModes, SerializerCode} from '@mionjs/core';\nimport {RpcError, HandlerType, ValidationError} from '@mionjs/core';\nimport {onExecutableError} from './lib/dispatchError.ts';\nimport {acquireCallContext, releaseCallContext} from './callContext.ts';\n\n/*\n * PERFORMANCE PROFILING NOTE:\n * different options has been tested to improve performance but were discarded due to worst or no noticeable improvements\n * - using promisify(setImmediate): worst or no improvement\n * - using queueMicrotask instead of setImmediate: definitely worst\n * - using callback instead promises: seems to be more slow but use less memory in some scenarios.\n */\n\n// ############# PUBLIC METHODS #############\n\nexport async function dispatchRoute<Req, Resp>(\n path: string,\n reqRawBody: RawRequestBody,\n reqHeaders: MionHeaders,\n respHeaders: MionHeaders,\n rawRequest: Req,\n rawResponse?: Resp,\n reqBodyType?: SerializerCode,\n urlQuery?: string\n): Promise<MionResponse> {\n const opts = getRouterOptions();\n const usePooling = opts.maxContextPoolSize > 0;\n const context = acquireCallContext(\n usePooling,\n path,\n opts,\n reqRawBody,\n rawRequest,\n reqHeaders,\n respHeaders,\n reqBodyType,\n urlQuery\n );\n\n try {\n await runExecutionChain(context, rawRequest, rawResponse, opts);\n return context.response;\n } catch (err: any | RpcError<string> | Error) {\n // this should never happen, exceptions should be handled inside runExecutionChain\n return Promise.reject(err);\n } finally {\n // Release context back to pool if pooling is enabled\n if (usePooling) {\n releaseCallContext(context, opts.maxContextPoolSize);\n }\n }\n}\n\n// ############# PRIVATE METHODS #############\n\n// runs the ExecutionChain of a route\nasync function runExecutionChain(\n context: CallContext,\n rawRequest: unknown,\n rawResponse: unknown,\n opts: RouterOptions\n): Promise<MionResponse> {\n const {response, request} = context;\n const executionList = context.executionChain.methods;\n (response as Mutable<MionResponse>).serializer = context.executionChain.serializer;\n for (let i = 0; i < executionList.length; i++) {\n const executable = executionList[i];\n if (response.hasErrors && !executable.options.runOnError) continue;\n\n try {\n const methodCaller = executable.methodCaller || getMethodCaller(executable);\n // runRawMiddleFn , runHeadersMiddleFn & runRouteOrMiddleFn must always accept the same parameters in the same order\n const result = await methodCaller(context, executable, request, response, opts, rawRequest, rawResponse);\n\n if (result === undefined || !executable.hasReturnData) continue;\n if (executable.headersReturn && result instanceof HeadersSubset) {\n const headersMap = result.headers;\n for (const name in headersMap) {\n const value = headersMap[name];\n if (value !== undefined && value !== null) {\n response.headers.set(name, value);\n }\n }\n continue;\n }\n (response.body as Mutable<AnyObject>)[executable.id] = result;\n } catch (err: any | RpcError<string> | Error) {\n // All thrown errors are unexpected\n onExecutableError(context, executable, err);\n }\n }\n return context.response;\n}\n\nasync function runRawMiddleFn(\n context: CallContext,\n executable: RawMethod,\n req,\n resp,\n opts: RouterOptions,\n rawRequest: unknown,\n rawResponse: unknown\n) {\n const result = await executable.handler(context, rawRequest, rawResponse, opts);\n return result;\n}\n\nasync function runHeadersMiddleFn(context: CallContext, executable: HeadersMethod, request: MionRequest) {\n const headerNames = executable.headersParam.headerNames;\n const params = deserializeBodyParamsOrThrow(request, executable as RemoteMethod);\n const headersMap: Record<string, string> = {};\n headerNames.forEach((name) => {\n const value = request.headers.get(name);\n if (value) headersMap[name] = value;\n });\n const headersSubset = new HeadersSubset(headersMap);\n validateHeaderParamsOrThrow(headersSubset, executable as HeadersMethod);\n if (executable.options.validateParams) validateParametersOrThrow(params, executable as HeadersMethod);\n\n const result = await executable.handler(context, headersSubset, ...params);\n return result;\n}\n\nasync function runRouteOrMiddleFn(context: CallContext, executable: HeadersMethod, request: MionRequest) {\n const params = deserializeBodyParamsOrThrow(request, executable as RemoteMethod);\n if (executable.options.validateParams) validateParametersOrThrow(params, executable as RemoteMethod);\n const result = await executable.handler(context, ...params);\n return result;\n}\n\nfunction getMethodCaller(executable: RemoteMethod) {\n if (executable.type === HandlerType.rawMiddleFn) {\n executable.methodCaller = runRawMiddleFn;\n } else if (executable.type === HandlerType.headersMiddleFn) {\n executable.methodCaller = runHeadersMiddleFn;\n } else {\n executable.methodCaller = runRouteOrMiddleFn;\n }\n return executable.methodCaller;\n}\n\nfunction deserializeBodyParamsOrThrow(request: MionRequest, executable: RemoteMethod): any[] {\n const params: any[] = (request.body[executable.id] as any[]) || [];\n // For binary requests, params are already deserialized in the serializer middleFn\n // (deserializeBinaryRequestBody in serializer.routes.ts)\n if (request.bodyType === SerializerModes.binary) return params;\n\n // For JSON requests, use restoreFromJson to deserialize\n if (executable.paramsJitFns.restoreFromJson.isNoop) return params;\n try {\n (request.body as Mutable<MionRequest['body']>)[executable.id] = executable.paramsJitFns.restoreFromJson.fn(params);\n return request.body[executable.id] as any[];\n } catch (e: any) {\n throw new RpcError({\n statusCode: StatusCodes.UNEXPECTED_ERROR,\n type: 'serialization-error',\n publicMessage: `Invalid params '${executable.id}', can not deserialize. Parameters might be of the wrong type.`,\n originalError: e,\n errorData: {\n deserializeError: e?.message || 'Unknown error',\n },\n });\n }\n}\n\nfunction validateParametersOrThrow(params: any[], executable: RemoteMethod): void {\n if (executable.paramsJitFns.isType.isNoop) return;\n if (!executable.paramsJitFns.isType.fn(params)) {\n const validationError: ValidationError = new RpcError({\n statusCode: StatusCodes.UNEXPECTED_ERROR,\n type: 'validation-error',\n publicMessage: `Invalid params in '${executable.id}', validation failed.`,\n errorData: {\n typeErrors: executable.paramsJitFns.typeErrors.fn(params),\n },\n });\n throw validationError;\n }\n}\n\nfunction validateHeaderParamsOrThrow(headers: HeadersSubset<string, string>, executable: HeadersMethod): void {\n if (!executable.headersParam.jitFns.isType.fn(headers)) {\n const validationError: ValidationError = new RpcError({\n statusCode: StatusCodes.UNEXPECTED_ERROR,\n type: 'validation-error',\n publicMessage: `Invalid params in '${executable.id}', validation failed.`,\n errorData: {\n typeErrors: executable.headersParam.jitFns.typeErrors.fn(headers),\n },\n });\n throw validationError;\n }\n}\n"],"names":["getRouterOptions","acquireCallContext","releaseCallContext","HeadersSubset","onExecutableError","HandlerType","SerializerModes","RpcError","StatusCodes"],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { MionResponse, MionHeaders, RawRequestBody } from './types/context.ts';
|
|
2
|
+
import { SerializerCode } from '@mionjs/core';
|
|
3
|
+
export declare function dispatchRoute<Req, Resp>(path: string, reqRawBody: RawRequestBody, reqHeaders: MionHeaders, respHeaders: MionHeaders, rawRequest: Req, rawResponse?: Resp, reqBodyType?: SerializerCode, urlQuery?: string): Promise<MionResponse>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const caches = require("virtual:mion-aot/caches");
|
|
4
|
+
const core = require("@mionjs/core");
|
|
5
|
+
const src_lib_methodsCache = require("./methodsCache.cjs");
|
|
6
|
+
function loadAOTCaches() {
|
|
7
|
+
core.addAOTCaches(caches.jitFnsCache, caches.pureFnsCache);
|
|
8
|
+
core.addRoutesToCache(caches.routerCache);
|
|
9
|
+
src_lib_methodsCache.loadCompiledMethods(caches.routerCache);
|
|
10
|
+
}
|
|
11
|
+
loadAOTCaches.__type = ["loadAOTCaches", "P$/!"];
|
|
12
|
+
exports.loadAOTCaches = loadAOTCaches;
|
|
13
|
+
//# sourceMappingURL=aotCacheLoader.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aotCacheLoader.cjs","sources":["../../../../src/lib/aotCacheLoader.ts"],"sourcesContent":["/* ########\n * 2026 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\n\nimport {jitFnsCache, pureFnsCache, routerCache} from 'virtual:mion-aot/caches';\nimport {addAOTCaches, addRoutesToCache} from '@mionjs/core';\nimport {loadCompiledMethods} from './methodsCache.ts';\n\n/** Loads pre-compiled AOT caches from virtual modules and registers them in the global caches. */\nexport function loadAOTCaches(): void {\n addAOTCaches(jitFnsCache, pureFnsCache);\n addRoutesToCache(routerCache);\n loadCompiledMethods(routerCache);\n}\n"],"names":["addAOTCaches","jitFnsCache","pureFnsCache","addRoutesToCache","routerCache","loadCompiledMethods"],"mappings":";;;;;SAYgB,gBAAa;AACzBA,OAAAA,aAAaC,OAAAA,aAAaC,mBAAY;AACtCC,OAAAA,iBAAiBC,OAAAA,WAAW;AAC5BC,uBAAAA,oBAAoBD,OAAAA,WAAW;AACnC;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function loadAOTCaches(): void;
|