@duplojs/http 0.6.2 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/getBody.cjs +1 -1
- package/dist/client/getBody.mjs +1 -1
- package/dist/client/hooks.d.ts +1 -25
- package/dist/client/httpClient.d.ts +29 -25
- package/dist/client/promiseRequest.cjs +3 -0
- package/dist/client/promiseRequest.d.ts +31 -39
- package/dist/client/promiseRequest.mjs +4 -1
- package/dist/client/queryToString.cjs +2 -2
- package/dist/client/queryToString.mjs +2 -2
- package/dist/client/types/clientRequestParams.d.ts +9 -3
- package/dist/client/types/clientResponse.d.ts +6 -6
- package/dist/client/types/hooks.d.ts +25 -0
- package/dist/client/types/index.cjs +2 -0
- package/dist/client/types/index.d.ts +2 -0
- package/dist/client/types/index.mjs +2 -0
- package/dist/client/types/promiseRequestParams.cjs +2 -0
- package/dist/client/types/promiseRequestParams.d.ts +9 -0
- package/dist/client/types/promiseRequestParams.mjs +1 -0
- package/dist/client/types/serverRoute.d.ts +28 -4
- package/dist/client/unexpectedResponseError.d.ts +1 -2
- package/dist/core/builders/preflight/route.cjs +1 -0
- package/dist/core/builders/preflight/route.d.ts +4 -2
- package/dist/core/builders/preflight/route.mjs +1 -0
- package/dist/core/builders/route/builder.cjs +1 -0
- package/dist/core/builders/route/builder.d.ts +4 -2
- package/dist/core/builders/route/builder.mjs +1 -0
- package/dist/core/clean/newType.d.ts +1 -1
- package/dist/core/clean/primitive.d.ts +1 -1
- package/dist/core/defaultHooks/index.cjs +50 -0
- package/dist/core/defaultHooks/index.d.ts +5 -0
- package/dist/core/defaultHooks/index.mjs +48 -0
- package/dist/{interfaces/node/error → core/errors}/bodyParseWrongChunkReceived.cjs +6 -4
- package/dist/core/errors/bodyParseWrongChunkReceived.d.ts +9 -0
- package/dist/core/errors/bodyParseWrongChunkReceived.mjs +14 -0
- package/dist/{interfaces/node/error → core/errors}/bodySizeExceedsLimitError.cjs +2 -2
- package/dist/{interfaces/node/error → core/errors}/bodySizeExceedsLimitError.d.ts +2 -2
- package/dist/{interfaces/node/error → core/errors}/bodySizeExceedsLimitError.mjs +2 -2
- package/dist/{interfaces/node/error → core/errors}/index.cjs +6 -4
- package/dist/{interfaces/node/error → core/errors}/index.d.ts +3 -2
- package/dist/{interfaces/node/error → core/errors}/index.mjs +3 -2
- package/dist/core/errors/parseJsonError.cjs +16 -0
- package/dist/core/errors/parseJsonError.d.ts +9 -0
- package/dist/core/errors/parseJsonError.mjs +14 -0
- package/dist/core/errors/wrongContentTypeError.cjs +16 -0
- package/dist/core/errors/wrongContentTypeError.d.ts +9 -0
- package/dist/core/errors/wrongContentTypeError.mjs +14 -0
- package/dist/core/functionsBuilders/route/create.d.ts +2 -2
- package/dist/core/functionsBuilders/route/default.cjs +0 -11
- package/dist/core/functionsBuilders/route/default.mjs +0 -11
- package/dist/core/functionsBuilders/route/hook.d.ts +2 -2
- package/dist/core/functionsBuilders/steps/create.d.ts +2 -2
- package/dist/core/functionsBuilders/steps/defaults/cutStep.cjs +15 -18
- package/dist/core/functionsBuilders/steps/defaults/cutStep.mjs +15 -18
- package/dist/core/functionsBuilders/steps/defaults/extractStep.cjs +43 -19
- package/dist/core/functionsBuilders/steps/defaults/extractStep.d.ts +2 -1
- package/dist/core/functionsBuilders/steps/defaults/extractStep.mjs +44 -20
- package/dist/core/functionsBuilders/steps/defaults/handlerStep.cjs +14 -8
- package/dist/core/functionsBuilders/steps/defaults/handlerStep.mjs +14 -8
- package/dist/core/hub/defaultBodyController.cjs +8 -0
- package/dist/core/hub/defaultBodyController.d.ts +1 -0
- package/dist/core/hub/defaultBodyController.mjs +6 -0
- package/dist/core/hub/hooks.cjs +3 -1
- package/dist/core/hub/hooks.d.ts +2 -3
- package/dist/core/hub/hooks.mjs +3 -1
- package/dist/core/hub/index.cjs +101 -127
- package/dist/core/hub/index.d.ts +33 -34
- package/dist/core/hub/index.mjs +100 -128
- package/dist/core/implementHttpServer.cjs +5 -5
- package/dist/core/implementHttpServer.d.ts +2 -1
- package/dist/core/implementHttpServer.mjs +5 -5
- package/dist/core/index.cjs +34 -10
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.mjs +13 -2
- package/dist/core/request/bodyController/base.cjs +36 -0
- package/dist/core/request/bodyController/base.d.ts +28 -0
- package/dist/core/request/bodyController/base.mjs +34 -0
- package/dist/core/request/bodyController/formData.cjs +28 -0
- package/dist/core/request/bodyController/formData.d.ts +22 -0
- package/dist/core/request/bodyController/formData.mjs +25 -0
- package/dist/core/request/bodyController/index.cjs +13 -0
- package/dist/core/request/bodyController/index.d.ts +3 -0
- package/dist/core/request/bodyController/index.mjs +3 -0
- package/dist/core/request/bodyController/text.cjs +14 -0
- package/dist/core/request/bodyController/text.d.ts +10 -0
- package/dist/core/request/bodyController/text.mjs +11 -0
- package/dist/core/{request.cjs → request/index.cjs} +21 -3
- package/dist/core/{request.d.ts → request/index.d.ts} +10 -3
- package/dist/core/request/index.mjs +50 -0
- package/dist/core/response/contract.d.ts +1 -1
- package/dist/core/route/hooks.d.ts +0 -2
- package/dist/core/route/index.d.ts +2 -1
- package/dist/core/router/index.cjs +27 -8
- package/dist/core/router/index.d.ts +2 -1
- package/dist/core/router/index.mjs +28 -10
- package/dist/core/router/notFoundBodyReaderImplementationError.cjs +16 -0
- package/dist/core/router/notFoundBodyReaderImplementationError.d.ts +11 -0
- package/dist/core/router/notFoundBodyReaderImplementationError.mjs +14 -0
- package/dist/core/router/types/buildedRouter.d.ts +3 -3
- package/dist/core/steps/extract.d.ts +3 -1
- package/dist/core/steps/types/steps.d.ts +1 -3
- package/dist/core/types/hosts.cjs +2 -0
- package/dist/core/types/hosts.d.ts +4 -0
- package/dist/core/types/hosts.mjs +1 -0
- package/dist/core/types/httpServerParams.cjs +2 -0
- package/dist/core/types/httpServerParams.d.ts +11 -0
- package/dist/core/types/httpServerParams.mjs +1 -0
- package/dist/core/types/index.cjs +2 -0
- package/dist/core/types/index.d.ts +2 -0
- package/dist/core/types/index.mjs +2 -0
- package/dist/interfaces/bun/types/request.cjs +1 -1
- package/dist/interfaces/bun/types/request.mjs +1 -1
- package/dist/interfaces/node/bodyReaders/formData/error.cjs +14 -0
- package/dist/interfaces/node/bodyReaders/formData/error.d.ts +8 -0
- package/dist/interfaces/node/bodyReaders/formData/error.mjs +12 -0
- package/dist/interfaces/node/bodyReaders/formData/index.cjs +94 -0
- package/dist/interfaces/node/bodyReaders/formData/index.d.ts +4 -0
- package/dist/interfaces/node/bodyReaders/formData/index.mjs +90 -0
- package/dist/interfaces/node/bodyReaders/formData/readRequestFormData.cjs +175 -0
- package/dist/interfaces/node/bodyReaders/formData/readRequestFormData.d.ts +21 -0
- package/dist/interfaces/node/bodyReaders/formData/readRequestFormData.mjs +173 -0
- package/dist/interfaces/node/bodyReaders/index.cjs +9 -0
- package/dist/interfaces/node/bodyReaders/index.d.ts +2 -0
- package/dist/interfaces/node/bodyReaders/index.mjs +2 -0
- package/dist/interfaces/node/bodyReaders/text/index.cjs +41 -0
- package/dist/interfaces/node/bodyReaders/text/index.d.ts +3 -0
- package/dist/interfaces/node/bodyReaders/text/index.mjs +38 -0
- package/dist/interfaces/node/bodyReaders/text/readRequestText.cjs +37 -0
- package/dist/interfaces/node/bodyReaders/text/readRequestText.d.ts +6 -0
- package/dist/interfaces/node/bodyReaders/text/readRequestText.mjs +35 -0
- package/dist/interfaces/node/createHttpServer.cjs +13 -5
- package/dist/interfaces/node/createHttpServer.d.ts +13 -12
- package/dist/interfaces/node/createHttpServer.mjs +13 -5
- package/dist/interfaces/node/hooks/index.cjs +47 -0
- package/dist/interfaces/node/hooks/index.d.ts +5 -0
- package/dist/interfaces/node/hooks/index.mjs +45 -0
- package/dist/interfaces/node/index.cjs +13 -9
- package/dist/interfaces/node/index.d.ts +1 -1
- package/dist/interfaces/node/index.mjs +7 -5
- package/dist/interfaces/node/types/index.cjs +0 -1
- package/dist/interfaces/node/types/index.d.ts +0 -1
- package/dist/interfaces/node/types/index.mjs +0 -1
- package/dist/interfaces/node/types/request.cjs +1 -1
- package/dist/interfaces/node/types/request.mjs +1 -1
- package/dist/plugins/codeGenerator/index.cjs +2 -0
- package/dist/plugins/codeGenerator/index.mjs +1 -1
- package/dist/plugins/codeGenerator/plugin.cjs +11 -4
- package/dist/plugins/codeGenerator/plugin.mjs +12 -5
- package/dist/plugins/codeGenerator/routeToDataParser.cjs +24 -1
- package/dist/plugins/codeGenerator/routeToDataParser.d.ts +34 -0
- package/dist/plugins/codeGenerator/routeToDataParser.mjs +24 -3
- package/dist/plugins/codeGenerator/typescriptTransfomer.cjs +28 -0
- package/dist/plugins/codeGenerator/typescriptTransfomer.d.ts +4 -0
- package/dist/plugins/codeGenerator/typescriptTransfomer.mjs +24 -0
- package/dist/plugins/openApiGenerator/makeOpenApiRoute.d.ts +3 -0
- package/dist/plugins/openApiGenerator/plugin.cjs +3 -3
- package/dist/plugins/openApiGenerator/plugin.mjs +4 -4
- package/dist/plugins/openApiGenerator/routeToOpenApi.cjs +16 -6
- package/dist/plugins/openApiGenerator/routeToOpenApi.d.ts +10 -1
- package/dist/plugins/openApiGenerator/routeToOpenApi.mjs +16 -6
- package/dist/plugins/openApiGenerator/types/entrypoint.d.ts +6 -1
- package/dist/plugins/openApiGenerator/types/openApiMethod.d.ts +1 -1
- package/package.json +5 -6
- package/dist/core/request.mjs +0 -32
- package/dist/interfaces/node/error/bodyParseUnknownError.cjs +0 -16
- package/dist/interfaces/node/error/bodyParseUnknownError.d.ts +0 -9
- package/dist/interfaces/node/error/bodyParseUnknownError.mjs +0 -14
- package/dist/interfaces/node/error/bodyParseWrongChunkReceived.d.ts +0 -8
- package/dist/interfaces/node/error/bodyParseWrongChunkReceived.mjs +0 -12
- package/dist/interfaces/node/hooks.cjs +0 -126
- package/dist/interfaces/node/hooks.d.ts +0 -8
- package/dist/interfaces/node/hooks.mjs +0 -124
- package/dist/interfaces/node/types/host.d.ts +0 -4
- /package/dist/{interfaces/node/types/host.cjs → client/types/hooks.cjs} +0 -0
- /package/dist/{interfaces/node/types/host.mjs → client/types/hooks.mjs} +0 -0
package/dist/core/hub/index.mjs
CHANGED
|
@@ -1,140 +1,112 @@
|
|
|
1
1
|
import { createCoreLibKind } from '../kind.mjs';
|
|
2
2
|
import { routeKind } from '../route/index.mjs';
|
|
3
|
-
import {
|
|
3
|
+
import { kindHeritage, pipe, P, A, isType, O } from '@duplojs/utils';
|
|
4
4
|
import '../steps/index.mjs';
|
|
5
|
-
import { Request } from '../request.mjs';
|
|
5
|
+
import { Request } from '../request/index.mjs';
|
|
6
6
|
import { defaultNotfoundHandler } from './defaultNotfoundHandler.mjs';
|
|
7
7
|
import { defaultExtractContract } from './defaultExtractContract.mjs';
|
|
8
|
+
import { defaultBodyController } from './defaultBodyController.mjs';
|
|
8
9
|
export { createHookHubLifeCycle, hookServerExitKind, hookServerNextKind, launchHookBeforeBuildRoute, launchHookServer, launchHookServerError, serverErrorExitHookFunction, serverErrorNextHookFunction } from './hooks.mjs';
|
|
9
10
|
import { createHandlerStep } from '../steps/handler.mjs';
|
|
10
11
|
|
|
11
12
|
const hubKind = createCoreLibKind("hub");
|
|
13
|
+
class Hub extends kindHeritage("hub", createCoreLibKind("hub")) {
|
|
14
|
+
config;
|
|
15
|
+
plugins = [];
|
|
16
|
+
hooksRouteLifeCycle = [];
|
|
17
|
+
hooksHubLifeCycle = [];
|
|
18
|
+
routes = new Set();
|
|
19
|
+
routeFunctionBuilders = [];
|
|
20
|
+
stepFunctionBuilders = [];
|
|
21
|
+
bodyReaderImplementations = [];
|
|
22
|
+
classRequest = Request;
|
|
23
|
+
notfoundHandler = defaultNotfoundHandler;
|
|
24
|
+
defaultExtractContract = defaultExtractContract;
|
|
25
|
+
defaultBodyController = defaultBodyController;
|
|
26
|
+
constructor(config) {
|
|
27
|
+
super({});
|
|
28
|
+
this.config = config;
|
|
29
|
+
}
|
|
30
|
+
register(routes) {
|
|
31
|
+
pipe(routes, P.when(routeKind.has, A.coalescing), P.when(isType("iterable"), A.from), P.otherwise(O.values), A.map((route) => this.routes.add(route)));
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
34
|
+
addRouteFunctionBuilder(functionBuilder) {
|
|
35
|
+
this.routeFunctionBuilders.push(...A.coalescing(functionBuilder));
|
|
36
|
+
return this;
|
|
37
|
+
}
|
|
38
|
+
addStepFunctionBuilder(functionBuilder) {
|
|
39
|
+
this.stepFunctionBuilders.push(...A.coalescing(functionBuilder));
|
|
40
|
+
return this;
|
|
41
|
+
}
|
|
42
|
+
addRouteHooks(hook) {
|
|
43
|
+
this.hooksRouteLifeCycle.push(...A.coalescing(hook));
|
|
44
|
+
return this;
|
|
45
|
+
}
|
|
46
|
+
addHubHooks(hook) {
|
|
47
|
+
this.hooksHubLifeCycle.push(...A.coalescing(hook));
|
|
48
|
+
return this;
|
|
49
|
+
}
|
|
50
|
+
addBodyReaderImplementation(bodyReaderImplementation) {
|
|
51
|
+
this.bodyReaderImplementations.push(...A.coalescing(bodyReaderImplementation));
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
plug(plugin) {
|
|
55
|
+
const pluginResult = typeof plugin === "function"
|
|
56
|
+
? plugin(this)
|
|
57
|
+
: plugin;
|
|
58
|
+
if (pluginResult.bodyReaderImplementations) {
|
|
59
|
+
this.addBodyReaderImplementation(pluginResult.bodyReaderImplementations);
|
|
60
|
+
}
|
|
61
|
+
if (pluginResult.hooksHubLifeCycle) {
|
|
62
|
+
this.addHubHooks(pluginResult.hooksHubLifeCycle);
|
|
63
|
+
}
|
|
64
|
+
if (pluginResult.hooksRouteLifeCycle) {
|
|
65
|
+
this.addRouteHooks(pluginResult.hooksRouteLifeCycle);
|
|
66
|
+
}
|
|
67
|
+
if (pluginResult.routeFunctionBuilders) {
|
|
68
|
+
this.addRouteFunctionBuilder(pluginResult.routeFunctionBuilders);
|
|
69
|
+
}
|
|
70
|
+
if (pluginResult.routes) {
|
|
71
|
+
this.register(pluginResult.routes);
|
|
72
|
+
}
|
|
73
|
+
if (pluginResult.stepFunctionBuilders) {
|
|
74
|
+
this.addStepFunctionBuilder(pluginResult.stepFunctionBuilders);
|
|
75
|
+
}
|
|
76
|
+
this.plugins.push(pluginResult);
|
|
77
|
+
return this;
|
|
78
|
+
}
|
|
79
|
+
setNotfoundHandler(responseContract, theFunction) {
|
|
80
|
+
this.notfoundHandler = createHandlerStep({
|
|
81
|
+
responseContract,
|
|
82
|
+
theFunction: (floor, params) => theFunction(params),
|
|
83
|
+
metadata: [],
|
|
84
|
+
});
|
|
85
|
+
return this;
|
|
86
|
+
}
|
|
87
|
+
setDefaultExtractContract(responseContract) {
|
|
88
|
+
this.defaultExtractContract = responseContract;
|
|
89
|
+
return this;
|
|
90
|
+
}
|
|
91
|
+
aggregatesHooksHubLifeCycle(hookName) {
|
|
92
|
+
return A.flatMap(this.hooksHubLifeCycle, (hooks) => hooks[hookName] ?? []);
|
|
93
|
+
}
|
|
94
|
+
setDefaultBodyController(bodyController) {
|
|
95
|
+
this.defaultBodyController = bodyController;
|
|
96
|
+
return this;
|
|
97
|
+
}
|
|
98
|
+
aggregatesHooksRouteLifeCycle(hookName) {
|
|
99
|
+
return A.flatMap(this.hooksRouteLifeCycle, (hooks) => hooks[hookName] ?? []);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* @internal
|
|
103
|
+
*/
|
|
104
|
+
static "new"(config) {
|
|
105
|
+
return new Hub(config);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
12
108
|
function createHub(config) {
|
|
13
|
-
return
|
|
14
|
-
...hubKind.addTo({}),
|
|
15
|
-
config,
|
|
16
|
-
plugins: [],
|
|
17
|
-
hooksHubLifeCycle: [],
|
|
18
|
-
hooksRouteLifeCycle: [],
|
|
19
|
-
routeFunctionBuilders: [],
|
|
20
|
-
routes: [],
|
|
21
|
-
stepFunctionBuilders: [],
|
|
22
|
-
notfoundHandler: defaultNotfoundHandler,
|
|
23
|
-
defaultExtractContract,
|
|
24
|
-
classRequest: Request,
|
|
25
|
-
addHubHooks(hook) {
|
|
26
|
-
return {
|
|
27
|
-
...this,
|
|
28
|
-
hooksHubLifeCycle: A.concat(this.hooksHubLifeCycle, A.coalescing(hook)),
|
|
29
|
-
};
|
|
30
|
-
},
|
|
31
|
-
addRouteFunctionBuilder(functionBuilder) {
|
|
32
|
-
return {
|
|
33
|
-
...this,
|
|
34
|
-
routeFunctionBuilders: A.concat(this.routeFunctionBuilders, A.coalescing(functionBuilder)),
|
|
35
|
-
};
|
|
36
|
-
},
|
|
37
|
-
addRouteHooks(hook) {
|
|
38
|
-
return {
|
|
39
|
-
...this,
|
|
40
|
-
hooksRouteLifeCycle: A.concat(this.hooksRouteLifeCycle, A.coalescing(hook)),
|
|
41
|
-
};
|
|
42
|
-
},
|
|
43
|
-
addStepFunctionBuilder(hook) {
|
|
44
|
-
return {
|
|
45
|
-
...this,
|
|
46
|
-
stepFunctionBuilders: A.concat(this.stepFunctionBuilders, A.coalescing(hook)),
|
|
47
|
-
};
|
|
48
|
-
},
|
|
49
|
-
plug(plugin) {
|
|
50
|
-
return {
|
|
51
|
-
...this,
|
|
52
|
-
plugins: A.push(this.plugins, typeof plugin === "function"
|
|
53
|
-
? plugin(this)
|
|
54
|
-
: plugin),
|
|
55
|
-
};
|
|
56
|
-
},
|
|
57
|
-
register(route) {
|
|
58
|
-
return {
|
|
59
|
-
...this,
|
|
60
|
-
routes: A.concat(this.routes, pipe(route, P.when(routeKind.has, A.coalescing), P.when(isType("iterable"), A.from), P.otherwise(O.values), A.filter((route) => !A.includes(this.routes, route)))),
|
|
61
|
-
};
|
|
62
|
-
},
|
|
63
|
-
setDefaultExtractContract(defaultExtractContract) {
|
|
64
|
-
return {
|
|
65
|
-
...this,
|
|
66
|
-
defaultExtractContract,
|
|
67
|
-
};
|
|
68
|
-
},
|
|
69
|
-
setNotfoundHandler(responseContract, theFunction) {
|
|
70
|
-
return {
|
|
71
|
-
...this,
|
|
72
|
-
notfoundHandler: createHandlerStep({
|
|
73
|
-
responseContract,
|
|
74
|
-
theFunction: (floor, params) => theFunction(params),
|
|
75
|
-
metadata: [],
|
|
76
|
-
}),
|
|
77
|
-
};
|
|
78
|
-
},
|
|
79
|
-
aggregates() {
|
|
80
|
-
return A.reduce(this.plugins, A.reduceFrom({
|
|
81
|
-
hooksRouteLifeCycle: this.hooksRouteLifeCycle,
|
|
82
|
-
routeFunctionBuilders: this.routeFunctionBuilders,
|
|
83
|
-
stepFunctionBuilders: this.stepFunctionBuilders,
|
|
84
|
-
routes: this.routes,
|
|
85
|
-
hooksHubLifeCycle: this.hooksHubLifeCycle,
|
|
86
|
-
}), ({ lastValue, element: plugin, next, }) => next({
|
|
87
|
-
hooksRouteLifeCycle: plugin.hooksRouteLifeCycle
|
|
88
|
-
? A.concat(lastValue.hooksRouteLifeCycle, plugin.hooksRouteLifeCycle)
|
|
89
|
-
: lastValue.hooksRouteLifeCycle,
|
|
90
|
-
routeFunctionBuilders: plugin.routeFunctionBuilders
|
|
91
|
-
? A.concat(lastValue.routeFunctionBuilders, plugin.routeFunctionBuilders)
|
|
92
|
-
: lastValue.routeFunctionBuilders,
|
|
93
|
-
stepFunctionBuilders: plugin.stepFunctionBuilders
|
|
94
|
-
? A.concat(lastValue.stepFunctionBuilders, plugin.stepFunctionBuilders)
|
|
95
|
-
: lastValue.stepFunctionBuilders,
|
|
96
|
-
routes: plugin.routes
|
|
97
|
-
? A.concat(lastValue.routes, plugin.routes)
|
|
98
|
-
: lastValue.routes,
|
|
99
|
-
hooksHubLifeCycle: plugin.hooksHubLifeCycle
|
|
100
|
-
? A.concat(lastValue.hooksHubLifeCycle, plugin.hooksHubLifeCycle)
|
|
101
|
-
: lastValue.hooksHubLifeCycle,
|
|
102
|
-
}));
|
|
103
|
-
},
|
|
104
|
-
aggregatesRoutes() {
|
|
105
|
-
return A.reduce(this.plugins, A.reduceFrom(this.routes), ({ lastValue, element: { routes }, next, }) => routes
|
|
106
|
-
? next(A.concat(lastValue, routes))
|
|
107
|
-
: next(lastValue));
|
|
108
|
-
},
|
|
109
|
-
aggregatesRouteFunctionBuilders() {
|
|
110
|
-
return A.reduce(this.plugins, A.reduceFrom(this.routeFunctionBuilders), ({ lastValue, element: { routeFunctionBuilders }, next, }) => routeFunctionBuilders
|
|
111
|
-
? next(A.concat(lastValue, routeFunctionBuilders))
|
|
112
|
-
: next(lastValue));
|
|
113
|
-
},
|
|
114
|
-
aggregatesStepFunctionBuilders() {
|
|
115
|
-
return A.reduce(this.plugins, A.reduceFrom(this.stepFunctionBuilders), ({ lastValue, element: { stepFunctionBuilders }, next, }) => stepFunctionBuilders
|
|
116
|
-
? next(A.concat(lastValue, stepFunctionBuilders))
|
|
117
|
-
: next(lastValue));
|
|
118
|
-
},
|
|
119
|
-
aggregatesHooksHubLifeCycle(hookName) {
|
|
120
|
-
const hooks = A.flatMap(this.hooksHubLifeCycle, (hooks) => hooks[hookName] ?? []);
|
|
121
|
-
return A.reduce(this.plugins, A.reduceFrom(hooks), ({ lastValue, element: { hooksHubLifeCycle }, next, }) => {
|
|
122
|
-
if (!hooksHubLifeCycle) {
|
|
123
|
-
return next(lastValue);
|
|
124
|
-
}
|
|
125
|
-
return next(A.concat(lastValue, A.flatMap(hooksHubLifeCycle, (hooks) => hooks[hookName] ?? [])));
|
|
126
|
-
});
|
|
127
|
-
},
|
|
128
|
-
aggregatesHooksRouteLifeCycle(hookName) {
|
|
129
|
-
const hooks = A.flatMap(this.hooksRouteLifeCycle, (hooks) => hooks[hookName] ?? []);
|
|
130
|
-
return A.reduce(this.plugins, A.reduceFrom(hooks), ({ lastValue, element: { hooksRouteLifeCycle }, next, }) => {
|
|
131
|
-
if (!hooksRouteLifeCycle) {
|
|
132
|
-
return next(lastValue);
|
|
133
|
-
}
|
|
134
|
-
return next(A.concat(lastValue, A.flatMap(hooksRouteLifeCycle, (hooks) => hooks[hookName] ?? [])));
|
|
135
|
-
});
|
|
136
|
-
},
|
|
137
|
-
};
|
|
109
|
+
return Hub.new(config);
|
|
138
110
|
}
|
|
139
111
|
|
|
140
|
-
export { createHub, defaultExtractContract, defaultNotfoundHandler, hubKind };
|
|
112
|
+
export { Hub, createHub, defaultBodyController, defaultExtractContract, defaultNotfoundHandler, hubKind };
|
|
@@ -6,10 +6,10 @@ var utils = require('@duplojs/utils');
|
|
|
6
6
|
var hooks = require('./hub/hooks.cjs');
|
|
7
7
|
|
|
8
8
|
async function implementHttpServer(params, initHttpServer) {
|
|
9
|
-
|
|
10
|
-
const router = await index.buildRouter(
|
|
11
|
-
|
|
12
|
-
const serverErrorHooks =
|
|
9
|
+
await hooks.launchHookServer(params.hub.aggregatesHooksHubLifeCycle("beforeServerBuildRoutes"), params.hub, params.httpServerParams);
|
|
10
|
+
const router = await index.buildRouter(params.hub);
|
|
11
|
+
await hooks.launchHookServer(params.hub.aggregatesHooksHubLifeCycle("beforeStartServer"), params.hub, params.httpServerParams);
|
|
12
|
+
const serverErrorHooks = params.hub.aggregatesHooksHubLifeCycle("serverError");
|
|
13
13
|
function catchCriticalError(error) {
|
|
14
14
|
console.error("Critical Error :", error);
|
|
15
15
|
}
|
|
@@ -29,7 +29,7 @@ async function implementHttpServer(params, initHttpServer) {
|
|
|
29
29
|
execRouteSystem: execRouteSystem,
|
|
30
30
|
httpServerParams: params.httpServerParams,
|
|
31
31
|
});
|
|
32
|
-
await hooks.launchHookServer(
|
|
32
|
+
await hooks.launchHookServer(params.hub.aggregatesHooksHubLifeCycle("afterStartServer"), params.hub, params.httpServerParams);
|
|
33
33
|
return result;
|
|
34
34
|
}
|
|
35
35
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { type Hub
|
|
1
|
+
import { type Hub } from "./hub";
|
|
2
2
|
import { type RouterInitializationData } from "./router";
|
|
3
3
|
import { type MaybePromise } from "@duplojs/utils";
|
|
4
|
+
import { type HttpServerParams } from "./types";
|
|
4
5
|
export interface ImplementHttpServerParams {
|
|
5
6
|
readonly hub: Hub;
|
|
6
7
|
readonly httpServerParams: HttpServerParams;
|
|
@@ -4,10 +4,10 @@ import { forward } from '@duplojs/utils';
|
|
|
4
4
|
import { launchHookServer, launchHookServerError, serverErrorNextHookFunction, serverErrorExitHookFunction } from './hub/hooks.mjs';
|
|
5
5
|
|
|
6
6
|
async function implementHttpServer(params, initHttpServer) {
|
|
7
|
-
|
|
8
|
-
const router = await buildRouter(
|
|
9
|
-
|
|
10
|
-
const serverErrorHooks =
|
|
7
|
+
await launchHookServer(params.hub.aggregatesHooksHubLifeCycle("beforeServerBuildRoutes"), params.hub, params.httpServerParams);
|
|
8
|
+
const router = await buildRouter(params.hub);
|
|
9
|
+
await launchHookServer(params.hub.aggregatesHooksHubLifeCycle("beforeStartServer"), params.hub, params.httpServerParams);
|
|
10
|
+
const serverErrorHooks = params.hub.aggregatesHooksHubLifeCycle("serverError");
|
|
11
11
|
function catchCriticalError(error) {
|
|
12
12
|
console.error("Critical Error :", error);
|
|
13
13
|
}
|
|
@@ -27,7 +27,7 @@ async function implementHttpServer(params, initHttpServer) {
|
|
|
27
27
|
execRouteSystem: execRouteSystem,
|
|
28
28
|
httpServerParams: params.httpServerParams,
|
|
29
29
|
});
|
|
30
|
-
await launchHookServer(
|
|
30
|
+
await launchHookServer(params.hub.aggregatesHooksHubLifeCycle("afterStartServer"), params.hub, params.httpServerParams);
|
|
31
31
|
return result;
|
|
32
32
|
}
|
|
33
33
|
|
package/dist/core/index.cjs
CHANGED
|
@@ -9,16 +9,18 @@ var checker$2 = require('./checker.cjs');
|
|
|
9
9
|
require('./floor.cjs');
|
|
10
10
|
var kind$1 = require('./kind.cjs');
|
|
11
11
|
var index$1 = require('./process/index.cjs');
|
|
12
|
-
var
|
|
12
|
+
var index$2 = require('./request/index.cjs');
|
|
13
13
|
var presetChecker$1 = require('./presetChecker.cjs');
|
|
14
|
-
var index$
|
|
14
|
+
var index$3 = require('./hub/index.cjs');
|
|
15
15
|
require('./functionsBuilders/index.cjs');
|
|
16
|
-
var index$
|
|
16
|
+
var index$4 = require('./router/index.cjs');
|
|
17
17
|
var stringIdentifier = require('./stringIdentifier.cjs');
|
|
18
18
|
require('./metadata/index.cjs');
|
|
19
19
|
var implementHttpServer = require('./implementHttpServer.cjs');
|
|
20
20
|
var narrowingInput = require('./narrowingInput.cjs');
|
|
21
21
|
require('./clean/index.cjs');
|
|
22
|
+
var index$5 = require('./defaultHooks/index.cjs');
|
|
23
|
+
require('./errors/index.cjs');
|
|
22
24
|
var checker = require('./builders/checker.cjs');
|
|
23
25
|
var builder = require('./builders/route/builder.cjs');
|
|
24
26
|
var store = require('./builders/route/store.cjs');
|
|
@@ -37,9 +39,13 @@ var cut = require('./steps/cut.cjs');
|
|
|
37
39
|
var handler = require('./steps/handler.cjs');
|
|
38
40
|
var process = require('./steps/process.cjs');
|
|
39
41
|
var presetChecker = require('./steps/presetChecker.cjs');
|
|
42
|
+
var base$1 = require('./request/bodyController/base.cjs');
|
|
43
|
+
var formData = require('./request/bodyController/formData.cjs');
|
|
44
|
+
var text = require('./request/bodyController/text.cjs');
|
|
40
45
|
var hooks$1 = require('./hub/hooks.cjs');
|
|
41
46
|
var defaultNotfoundHandler = require('./hub/defaultNotfoundHandler.cjs');
|
|
42
47
|
var defaultExtractContract = require('./hub/defaultExtractContract.cjs');
|
|
48
|
+
var defaultBodyController = require('./hub/defaultBodyController.cjs');
|
|
43
49
|
var build = require('./functionsBuilders/route/build.cjs');
|
|
44
50
|
var create = require('./functionsBuilders/route/create.cjs');
|
|
45
51
|
var _default = require('./functionsBuilders/route/default.cjs');
|
|
@@ -54,8 +60,13 @@ var build$1 = require('./functionsBuilders/steps/build.cjs');
|
|
|
54
60
|
var pathToRegExp = require('./router/pathToRegExp.cjs');
|
|
55
61
|
var buildError = require('./router/buildError.cjs');
|
|
56
62
|
var decodeUrl = require('./router/decodeUrl.cjs');
|
|
57
|
-
var
|
|
63
|
+
var notFoundBodyReaderImplementationError = require('./router/notFoundBodyReaderImplementationError.cjs');
|
|
64
|
+
var base$2 = require('./metadata/base.cjs');
|
|
58
65
|
var ignoreByRouteStore = require('./metadata/ignoreByRouteStore.cjs');
|
|
66
|
+
var wrongContentTypeError = require('./errors/wrongContentTypeError.cjs');
|
|
67
|
+
var bodyParseWrongChunkReceived = require('./errors/bodyParseWrongChunkReceived.cjs');
|
|
68
|
+
var bodySizeExceedsLimitError = require('./errors/bodySizeExceedsLimitError.cjs');
|
|
69
|
+
var parseJsonError = require('./errors/parseJsonError.cjs');
|
|
59
70
|
|
|
60
71
|
|
|
61
72
|
|
|
@@ -67,15 +78,17 @@ exports.createChecker = checker$2.createChecker;
|
|
|
67
78
|
exports.createCoreLibKind = kind$1.createCoreLibKind;
|
|
68
79
|
exports.createProcess = index$1.createProcess;
|
|
69
80
|
exports.processKind = index$1.processKind;
|
|
70
|
-
exports.Request =
|
|
81
|
+
exports.Request = index$2.Request;
|
|
71
82
|
exports.createPresetChecker = presetChecker$1.createPresetChecker;
|
|
72
83
|
exports.presetCheckerKind = presetChecker$1.presetCheckerKind;
|
|
73
|
-
exports.
|
|
74
|
-
exports.
|
|
75
|
-
exports.
|
|
84
|
+
exports.Hub = index$3.Hub;
|
|
85
|
+
exports.createHub = index$3.createHub;
|
|
86
|
+
exports.hubKind = index$3.hubKind;
|
|
87
|
+
exports.buildRouter = index$4.buildRouter;
|
|
76
88
|
exports.createCoreLibStringIdentifier = stringIdentifier.createCoreLibStringIdentifier;
|
|
77
89
|
exports.implementHttpServer = implementHttpServer.implementHttpServer;
|
|
78
90
|
exports.createNarrowingInput = narrowingInput.createNarrowingInput;
|
|
91
|
+
exports.initDefaultHook = index$5.initDefaultHook;
|
|
79
92
|
exports.checkerBuilder = checker.checkerBuilder;
|
|
80
93
|
exports.useCheckerBuilder = checker.useCheckerBuilder;
|
|
81
94
|
exports.routeBuilderHandler = builder.routeBuilderHandler;
|
|
@@ -110,6 +123,11 @@ exports.createProcessStep = process.createProcessStep;
|
|
|
110
123
|
exports.processStepKind = process.processStepKind;
|
|
111
124
|
exports.createPresetCheckerStep = presetChecker.createPresetCheckerStep;
|
|
112
125
|
exports.presetCheckerStepKind = presetChecker.presetCheckerStepKind;
|
|
126
|
+
exports.createBodyController = base$1.createBodyController;
|
|
127
|
+
exports.FormDataBodyController = formData.FormDataBodyController;
|
|
128
|
+
exports.controlBodyAsFormData = formData.controlBodyAsFormData;
|
|
129
|
+
exports.TextBodyController = text.TextBodyController;
|
|
130
|
+
exports.controlBodyAsText = text.controlBodyAsText;
|
|
113
131
|
exports.createHookHubLifeCycle = hooks$1.createHookHubLifeCycle;
|
|
114
132
|
exports.hookServerExitKind = hooks$1.hookServerExitKind;
|
|
115
133
|
exports.hookServerNextKind = hooks$1.hookServerNextKind;
|
|
@@ -120,6 +138,7 @@ exports.serverErrorExitHookFunction = hooks$1.serverErrorExitHookFunction;
|
|
|
120
138
|
exports.serverErrorNextHookFunction = hooks$1.serverErrorNextHookFunction;
|
|
121
139
|
exports.defaultNotfoundHandler = defaultNotfoundHandler.defaultNotfoundHandler;
|
|
122
140
|
exports.defaultExtractContract = defaultExtractContract.defaultExtractContract;
|
|
141
|
+
exports.defaultBodyController = defaultBodyController.defaultBodyController;
|
|
123
142
|
exports.buildRouteFunction = build.buildRouteFunction;
|
|
124
143
|
exports.createRouteFunctionBuilder = create.createRouteFunctionBuilder;
|
|
125
144
|
exports.defaultRouteFunctionBuilder = _default.defaultRouteFunctionBuilder;
|
|
@@ -142,6 +161,11 @@ exports.RouterBuildError = buildError.RouterBuildError;
|
|
|
142
161
|
exports.decodeUrl = decodeUrl.decodeUrl;
|
|
143
162
|
exports.regexQueryAnalyser = decodeUrl.regexQueryAnalyser;
|
|
144
163
|
exports.regexUrlAnalyser = decodeUrl.regexUrlAnalyser;
|
|
145
|
-
exports.
|
|
146
|
-
exports.
|
|
164
|
+
exports.NotFoundBodyReaderImplementationError = notFoundBodyReaderImplementationError.NotFoundBodyReaderImplementationError;
|
|
165
|
+
exports.createMetadata = base$2.createMetadata;
|
|
166
|
+
exports.metadataKind = base$2.metadataKind;
|
|
147
167
|
exports.IgnoreByRouteStoreMetadata = ignoreByRouteStore.IgnoreByRouteStoreMetadata;
|
|
168
|
+
exports.WrongContentTypeError = wrongContentTypeError.WrongContentTypeError;
|
|
169
|
+
exports.BodyParseWrongChunkReceived = bodyParseWrongChunkReceived.BodyParseWrongChunkReceived;
|
|
170
|
+
exports.BodySizeExceedsLimitError = bodySizeExceedsLimitError.BodySizeExceedsLimitError;
|
|
171
|
+
exports.ParseJsonError = parseJsonError.ParseJsonError;
|
package/dist/core/index.d.ts
CHANGED
package/dist/core/index.mjs
CHANGED
|
@@ -7,9 +7,9 @@ export { checkerKind, checkerOutputKind, createChecker } from './checker.mjs';
|
|
|
7
7
|
import './floor.mjs';
|
|
8
8
|
export { createCoreLibKind } from './kind.mjs';
|
|
9
9
|
export { createProcess, processKind } from './process/index.mjs';
|
|
10
|
-
export { Request } from './request.mjs';
|
|
10
|
+
export { Request } from './request/index.mjs';
|
|
11
11
|
export { createPresetChecker, presetCheckerKind } from './presetChecker.mjs';
|
|
12
|
-
export { createHub, hubKind } from './hub/index.mjs';
|
|
12
|
+
export { Hub, createHub, hubKind } from './hub/index.mjs';
|
|
13
13
|
import './functionsBuilders/index.mjs';
|
|
14
14
|
export { buildRouter } from './router/index.mjs';
|
|
15
15
|
export { createCoreLibStringIdentifier } from './stringIdentifier.mjs';
|
|
@@ -17,6 +17,8 @@ import './metadata/index.mjs';
|
|
|
17
17
|
export { implementHttpServer } from './implementHttpServer.mjs';
|
|
18
18
|
export { createNarrowingInput } from './narrowingInput.mjs';
|
|
19
19
|
import './clean/index.mjs';
|
|
20
|
+
export { initDefaultHook } from './defaultHooks/index.mjs';
|
|
21
|
+
import './errors/index.mjs';
|
|
20
22
|
export { checkerBuilder, useCheckerBuilder } from './builders/checker.mjs';
|
|
21
23
|
export { routeBuilderHandler, useRouteBuilder } from './builders/route/builder.mjs';
|
|
22
24
|
export { routeStore } from './builders/route/store.mjs';
|
|
@@ -35,9 +37,13 @@ export { createCutStep, cutStepKind, cutStepOutputKind } from './steps/cut.mjs';
|
|
|
35
37
|
export { createHandlerStep, handlerStepKind } from './steps/handler.mjs';
|
|
36
38
|
export { createProcessStep, processStepKind } from './steps/process.mjs';
|
|
37
39
|
export { createPresetCheckerStep, presetCheckerStepKind } from './steps/presetChecker.mjs';
|
|
40
|
+
export { createBodyController } from './request/bodyController/base.mjs';
|
|
41
|
+
export { FormDataBodyController, controlBodyAsFormData } from './request/bodyController/formData.mjs';
|
|
42
|
+
export { TextBodyController, controlBodyAsText } from './request/bodyController/text.mjs';
|
|
38
43
|
export { createHookHubLifeCycle, hookServerExitKind, hookServerNextKind, launchHookBeforeBuildRoute, launchHookServer, launchHookServerError, serverErrorExitHookFunction, serverErrorNextHookFunction } from './hub/hooks.mjs';
|
|
39
44
|
export { defaultNotfoundHandler } from './hub/defaultNotfoundHandler.mjs';
|
|
40
45
|
export { defaultExtractContract } from './hub/defaultExtractContract.mjs';
|
|
46
|
+
export { defaultBodyController } from './hub/defaultBodyController.mjs';
|
|
41
47
|
export { buildRouteFunction } from './functionsBuilders/route/build.mjs';
|
|
42
48
|
export { createRouteFunctionBuilder } from './functionsBuilders/route/create.mjs';
|
|
43
49
|
export { defaultRouteFunctionBuilder } from './functionsBuilders/route/default.mjs';
|
|
@@ -52,5 +58,10 @@ export { buildStepFunction } from './functionsBuilders/steps/build.mjs';
|
|
|
52
58
|
export { pathToRegExp } from './router/pathToRegExp.mjs';
|
|
53
59
|
export { RouterBuildError } from './router/buildError.mjs';
|
|
54
60
|
export { decodeUrl, regexQueryAnalyser, regexUrlAnalyser } from './router/decodeUrl.mjs';
|
|
61
|
+
export { NotFoundBodyReaderImplementationError } from './router/notFoundBodyReaderImplementationError.mjs';
|
|
55
62
|
export { createMetadata, metadataKind } from './metadata/base.mjs';
|
|
56
63
|
export { IgnoreByRouteStoreMetadata } from './metadata/ignoreByRouteStore.mjs';
|
|
64
|
+
export { WrongContentTypeError } from './errors/wrongContentTypeError.mjs';
|
|
65
|
+
export { BodyParseWrongChunkReceived } from './errors/bodyParseWrongChunkReceived.mjs';
|
|
66
|
+
export { BodySizeExceedsLimitError } from './errors/bodySizeExceedsLimitError.mjs';
|
|
67
|
+
export { ParseJsonError } from './errors/parseJsonError.mjs';
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var kind = require('../../kind.cjs');
|
|
4
|
+
var utils = require('@duplojs/utils');
|
|
5
|
+
|
|
6
|
+
const bodyReaderKind = kind.createCoreLibKind("body-reader");
|
|
7
|
+
const bodyReaderImplementationKind = kind.createCoreLibKind("body-reader-implementation");
|
|
8
|
+
const bodyControllerKind = kind.createCoreLibKind("body-controller");
|
|
9
|
+
const bodyControllerHandlerKind = kind.createCoreLibKind("body-controller-handler");
|
|
10
|
+
function createBodyController(name) {
|
|
11
|
+
return bodyControllerHandlerKind.setTo({
|
|
12
|
+
name,
|
|
13
|
+
create(params) {
|
|
14
|
+
return bodyControllerKind.setTo({
|
|
15
|
+
name,
|
|
16
|
+
params,
|
|
17
|
+
tryToCreateReader(readerImplementation) {
|
|
18
|
+
if (bodyReaderImplementationKind.getValue(readerImplementation) !== name) {
|
|
19
|
+
return utils.E.fail();
|
|
20
|
+
}
|
|
21
|
+
return utils.E.success(bodyReaderKind.setTo({
|
|
22
|
+
read: (request) => readerImplementation.read(request, params),
|
|
23
|
+
}, name));
|
|
24
|
+
},
|
|
25
|
+
}, name);
|
|
26
|
+
},
|
|
27
|
+
createReaderImplementation(read) {
|
|
28
|
+
return bodyReaderImplementationKind.setTo({ read }, name);
|
|
29
|
+
},
|
|
30
|
+
is(input) {
|
|
31
|
+
return bodyControllerKind.has(input) && bodyControllerKind.getValue(input) === name;
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
exports.createBodyController = createBodyController;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type Request } from "../../request";
|
|
2
|
+
import { E, type Kind } from "@duplojs/utils";
|
|
3
|
+
export interface BodyControllerParams {
|
|
4
|
+
bodyMaxSize?: number;
|
|
5
|
+
}
|
|
6
|
+
declare const bodyReaderKind: import("@duplojs/utils").KindHandler<import("@duplojs/utils").KindDefinition<"@DuplojsHttpCore/body-reader", string>>;
|
|
7
|
+
export interface BodyReader<GenericName extends string = string> extends Kind<typeof bodyReaderKind.definition, GenericName> {
|
|
8
|
+
read(request: Request): Promise<E.Success | E.Error<Error>>;
|
|
9
|
+
}
|
|
10
|
+
declare const bodyReaderImplementationKind: import("@duplojs/utils").KindHandler<import("@duplojs/utils").KindDefinition<"@DuplojsHttpCore/body-reader-implementation", string>>;
|
|
11
|
+
export interface BodyReaderImplementation<GenericName extends string = string, GenericParams extends BodyControllerParams = BodyControllerParams> extends Kind<typeof bodyReaderImplementationKind.definition, GenericName> {
|
|
12
|
+
read(request: Request, params: GenericParams): Promise<E.Success | E.Error<Error>>;
|
|
13
|
+
}
|
|
14
|
+
declare const bodyControllerKind: import("@duplojs/utils").KindHandler<import("@duplojs/utils").KindDefinition<"@DuplojsHttpCore/body-controller", string>>;
|
|
15
|
+
export interface BodyController<GenericName extends string = string, GenericParams extends BodyControllerParams = BodyControllerParams> extends Kind<typeof bodyControllerKind.definition, GenericName> {
|
|
16
|
+
readonly name: GenericName;
|
|
17
|
+
readonly params: GenericParams;
|
|
18
|
+
tryToCreateReader(readerImplementation: BodyReaderImplementation): E.Success<BodyReader<GenericName>> | E.Fail;
|
|
19
|
+
}
|
|
20
|
+
declare const bodyControllerHandlerKind: import("@duplojs/utils").KindHandler<import("@duplojs/utils").KindDefinition<"@DuplojsHttpCore/body-controller-handler", unknown>>;
|
|
21
|
+
export interface BodyControllerHandler<GenericName extends string = string, GenericParams extends BodyControllerParams = BodyControllerParams> extends Kind<typeof bodyControllerHandlerKind.definition> {
|
|
22
|
+
readonly name: GenericName;
|
|
23
|
+
create(params: GenericParams): BodyController<GenericName, GenericParams>;
|
|
24
|
+
createReaderImplementation(read: BodyReaderImplementation<GenericName, GenericParams>["read"]): BodyReaderImplementation<GenericName, GenericParams>;
|
|
25
|
+
is(input: unknown): input is BodyController<GenericName, GenericParams>;
|
|
26
|
+
}
|
|
27
|
+
export declare function createBodyController<GenericName extends string, GenericParams extends BodyControllerParams>(name: GenericName): BodyControllerHandler<GenericName, GenericParams>;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { createCoreLibKind } from '../../kind.mjs';
|
|
2
|
+
import { E } from '@duplojs/utils';
|
|
3
|
+
|
|
4
|
+
const bodyReaderKind = createCoreLibKind("body-reader");
|
|
5
|
+
const bodyReaderImplementationKind = createCoreLibKind("body-reader-implementation");
|
|
6
|
+
const bodyControllerKind = createCoreLibKind("body-controller");
|
|
7
|
+
const bodyControllerHandlerKind = createCoreLibKind("body-controller-handler");
|
|
8
|
+
function createBodyController(name) {
|
|
9
|
+
return bodyControllerHandlerKind.setTo({
|
|
10
|
+
name,
|
|
11
|
+
create(params) {
|
|
12
|
+
return bodyControllerKind.setTo({
|
|
13
|
+
name,
|
|
14
|
+
params,
|
|
15
|
+
tryToCreateReader(readerImplementation) {
|
|
16
|
+
if (bodyReaderImplementationKind.getValue(readerImplementation) !== name) {
|
|
17
|
+
return E.fail();
|
|
18
|
+
}
|
|
19
|
+
return E.success(bodyReaderKind.setTo({
|
|
20
|
+
read: (request) => readerImplementation.read(request, params),
|
|
21
|
+
}, name));
|
|
22
|
+
},
|
|
23
|
+
}, name);
|
|
24
|
+
},
|
|
25
|
+
createReaderImplementation(read) {
|
|
26
|
+
return bodyReaderImplementationKind.setTo({ read }, name);
|
|
27
|
+
},
|
|
28
|
+
is(input) {
|
|
29
|
+
return bodyControllerKind.has(input) && bodyControllerKind.getValue(input) === name;
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export { createBodyController };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@duplojs/utils');
|
|
4
|
+
var base = require('./base.cjs');
|
|
5
|
+
|
|
6
|
+
const FormDataBodyController = base.createBodyController("formData");
|
|
7
|
+
function controlBodyAsFormData(params) {
|
|
8
|
+
return FormDataBodyController.create({
|
|
9
|
+
maxFileQuantity: params.maxFileQuantity,
|
|
10
|
+
bodyMaxSize: params.bodyMaxSize && utils.stringToBytes(params.bodyMaxSize),
|
|
11
|
+
fileMaxSize: params.fileMaxSize && utils.stringToBytes(params.fileMaxSize),
|
|
12
|
+
mimeType: params.mimeType !== undefined
|
|
13
|
+
? utils.toRegExp(params.mimeType)
|
|
14
|
+
: undefined,
|
|
15
|
+
maxBufferSize: params.maxBufferSize !== undefined
|
|
16
|
+
? utils.stringToBytes(params.maxBufferSize)
|
|
17
|
+
: utils.stringToBytes("128kb"),
|
|
18
|
+
maxIndexArray: params.maxIndexArray !== undefined
|
|
19
|
+
? params.maxIndexArray
|
|
20
|
+
: 500,
|
|
21
|
+
maxKeyLength: params.maxKeyLength !== undefined
|
|
22
|
+
? params.maxKeyLength
|
|
23
|
+
: 500,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
exports.FormDataBodyController = FormDataBodyController;
|
|
28
|
+
exports.controlBodyAsFormData = controlBodyAsFormData;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type BytesInString } from "@duplojs/utils";
|
|
2
|
+
import { type BodyControllerParams } from "./base";
|
|
3
|
+
export interface FormDataBodyReaderParams extends BodyControllerParams {
|
|
4
|
+
maxFileQuantity: number;
|
|
5
|
+
mimeType?: RegExp;
|
|
6
|
+
fileMaxSize?: number;
|
|
7
|
+
maxBufferSize: number;
|
|
8
|
+
maxIndexArray: number;
|
|
9
|
+
maxKeyLength: number;
|
|
10
|
+
}
|
|
11
|
+
export declare const FormDataBodyController: import("./base").BodyControllerHandler<"formData", FormDataBodyReaderParams>;
|
|
12
|
+
export type FormDataBodyController = typeof FormDataBodyController;
|
|
13
|
+
export interface ControlBodyAsFormDataParams {
|
|
14
|
+
maxFileQuantity: number;
|
|
15
|
+
mimeType?: string | string[] | RegExp;
|
|
16
|
+
bodyMaxSize?: number | BytesInString;
|
|
17
|
+
fileMaxSize?: number | BytesInString;
|
|
18
|
+
maxBufferSize?: number | BytesInString;
|
|
19
|
+
maxIndexArray?: number;
|
|
20
|
+
maxKeyLength?: number;
|
|
21
|
+
}
|
|
22
|
+
export declare function controlBodyAsFormData(params: ControlBodyAsFormDataParams): import("./base").BodyController<"formData", FormDataBodyReaderParams>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { stringToBytes, toRegExp } from '@duplojs/utils';
|
|
2
|
+
import { createBodyController } from './base.mjs';
|
|
3
|
+
|
|
4
|
+
const FormDataBodyController = createBodyController("formData");
|
|
5
|
+
function controlBodyAsFormData(params) {
|
|
6
|
+
return FormDataBodyController.create({
|
|
7
|
+
maxFileQuantity: params.maxFileQuantity,
|
|
8
|
+
bodyMaxSize: params.bodyMaxSize && stringToBytes(params.bodyMaxSize),
|
|
9
|
+
fileMaxSize: params.fileMaxSize && stringToBytes(params.fileMaxSize),
|
|
10
|
+
mimeType: params.mimeType !== undefined
|
|
11
|
+
? toRegExp(params.mimeType)
|
|
12
|
+
: undefined,
|
|
13
|
+
maxBufferSize: params.maxBufferSize !== undefined
|
|
14
|
+
? stringToBytes(params.maxBufferSize)
|
|
15
|
+
: stringToBytes("128kb"),
|
|
16
|
+
maxIndexArray: params.maxIndexArray !== undefined
|
|
17
|
+
? params.maxIndexArray
|
|
18
|
+
: 500,
|
|
19
|
+
maxKeyLength: params.maxKeyLength !== undefined
|
|
20
|
+
? params.maxKeyLength
|
|
21
|
+
: 500,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export { FormDataBodyController, controlBodyAsFormData };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var base = require('./base.cjs');
|
|
4
|
+
var formData = require('./formData.cjs');
|
|
5
|
+
var text = require('./text.cjs');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
exports.createBodyController = base.createBodyController;
|
|
10
|
+
exports.FormDataBodyController = formData.FormDataBodyController;
|
|
11
|
+
exports.controlBodyAsFormData = formData.controlBodyAsFormData;
|
|
12
|
+
exports.TextBodyController = text.TextBodyController;
|
|
13
|
+
exports.controlBodyAsText = text.controlBodyAsText;
|