@duplojs/http 0.7.4 → 0.8.5
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 +3 -3
- package/dist/client/getBody.mjs +3 -3
- package/dist/client/hooks.cjs +45 -0
- package/dist/client/hooks.d.ts +6 -1
- package/dist/client/hooks.mjs +41 -1
- package/dist/client/httpClient.cjs +25 -1
- package/dist/client/httpClient.d.ts +8 -3
- package/dist/client/httpClient.mjs +25 -1
- package/dist/client/index.cjs +7 -0
- package/dist/client/index.d.ts +1 -0
- package/dist/client/index.mjs +2 -1
- package/dist/client/insertParamsInPath.cjs +1 -1
- package/dist/client/insertParamsInPath.mjs +1 -1
- package/dist/client/promiseRequest.cjs +83 -26
- package/dist/client/promiseRequest.d.ts +46 -29
- package/dist/client/promiseRequest.mjs +83 -26
- package/dist/client/queryToString.cjs +1 -1
- package/dist/client/queryToString.mjs +1 -1
- package/dist/client/serverSentEvents.cjs +231 -0
- package/dist/client/serverSentEvents.d.ts +2 -0
- package/dist/client/serverSentEvents.mjs +208 -0
- package/dist/client/types/clientRequestParams.d.ts +2 -0
- package/dist/client/types/clientResponse.d.ts +34 -3
- package/dist/client/types/hooks.d.ts +17 -7
- package/dist/client/types/promiseRequestParams.d.ts +1 -0
- package/dist/client/types/serverRoute.d.ts +2 -0
- package/dist/core/builders/route/handler.d.ts +5 -2
- package/dist/core/defaultHooks/index.cjs +8 -0
- package/dist/core/defaultHooks/index.d.ts +1 -1
- package/dist/core/defaultHooks/index.mjs +8 -0
- package/dist/core/functionsBuilders/route/default.cjs +9 -13
- package/dist/core/functionsBuilders/route/default.mjs +2 -6
- package/dist/core/functionsBuilders/steps/create.d.ts +2 -2
- package/dist/core/functionsBuilders/steps/defaults/cutStep.cjs +1 -1
- package/dist/core/functionsBuilders/steps/defaults/cutStep.mjs +1 -1
- package/dist/core/functionsBuilders/steps/defaults/handlerStep.cjs +37 -17
- package/dist/core/functionsBuilders/steps/defaults/handlerStep.mjs +37 -17
- package/dist/core/functionsBuilders/steps/defaults/processStep.cjs +3 -3
- package/dist/core/functionsBuilders/steps/defaults/processStep.mjs +3 -3
- package/dist/core/hub/defaultEmptyReaderImplementation.cjs +9 -0
- package/dist/core/hub/defaultEmptyReaderImplementation.d.ts +1 -0
- package/dist/core/hub/defaultEmptyReaderImplementation.mjs +7 -0
- package/dist/core/hub/defaultMalformedUrlHandler.cjs +14 -0
- package/dist/core/hub/defaultMalformedUrlHandler.d.ts +10 -0
- package/dist/core/hub/defaultMalformedUrlHandler.mjs +12 -0
- package/dist/core/hub/defaultNotfoundHandler.d.ts +1 -1
- package/dist/core/hub/index.cjs +14 -1
- package/dist/core/hub/index.d.ts +4 -0
- package/dist/core/hub/index.mjs +13 -2
- package/dist/core/implementHttpServer.cjs +7 -2
- package/dist/core/implementHttpServer.d.ts +7 -1
- package/dist/core/implementHttpServer.mjs +5 -0
- package/dist/core/index.cjs +18 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.mjs +8 -2
- package/dist/core/request/bodyController/base.cjs +24 -6
- package/dist/core/request/bodyController/base.d.ts +9 -0
- package/dist/core/request/bodyController/base.mjs +25 -8
- package/dist/core/request/bodyController/empty.cjs +11 -0
- package/dist/core/request/bodyController/empty.d.ts +3 -0
- package/dist/core/request/bodyController/empty.mjs +8 -0
- package/dist/core/request/bodyController/formData.cjs +1 -0
- package/dist/core/request/bodyController/formData.d.ts +4 -2
- package/dist/core/request/bodyController/formData.mjs +1 -0
- package/dist/core/request/bodyController/index.cjs +4 -0
- package/dist/core/request/bodyController/index.d.ts +1 -0
- package/dist/core/request/bodyController/index.mjs +2 -1
- package/dist/core/request/index.cjs +5 -0
- package/dist/core/request/index.d.ts +1 -1
- package/dist/core/request/index.mjs +6 -1
- package/dist/core/response/contract.cjs +17 -4
- package/dist/core/response/contract.d.ts +19 -4
- package/dist/core/response/contract.mjs +17 -4
- package/dist/core/response/index.cjs +2 -0
- package/dist/core/response/index.d.ts +1 -0
- package/dist/core/response/index.mjs +1 -0
- package/dist/core/response/serverSentEventsPredicted.cjs +23 -0
- package/dist/core/response/serverSentEventsPredicted.d.ts +14 -0
- package/dist/core/response/serverSentEventsPredicted.mjs +21 -0
- package/dist/core/route/hooks.cjs +9 -0
- package/dist/core/route/hooks.d.ts +10 -9
- package/dist/core/route/hooks.mjs +9 -1
- package/dist/core/route/index.cjs +1 -0
- package/dist/core/route/index.mjs +1 -1
- package/dist/core/router/buildSystemRoute.cjs +33 -0
- package/dist/core/router/buildSystemRoute.d.ts +11 -0
- package/dist/core/router/buildSystemRoute.mjs +31 -0
- package/dist/core/router/decodeUrl.cjs +5 -4
- package/dist/core/router/decodeUrl.d.ts +1 -1
- package/dist/core/router/decodeUrl.mjs +5 -4
- package/dist/core/router/index.cjs +24 -23
- package/dist/core/router/index.d.ts +1 -0
- package/dist/core/router/index.mjs +25 -25
- package/dist/core/serverSentEvents.cjs +96 -0
- package/dist/core/serverSentEvents.d.ts +33 -0
- package/dist/core/serverSentEvents.mjs +96 -0
- package/dist/core/steps/cut.d.ts +2 -2
- package/dist/core/steps/handler.d.ts +10 -5
- package/dist/interfaces/node/bodyReaders/formData/index.cjs +34 -14
- package/dist/interfaces/node/bodyReaders/formData/index.mjs +35 -15
- package/dist/interfaces/node/bodyReaders/formData/readRequestFormData.cjs +18 -12
- package/dist/interfaces/node/bodyReaders/formData/readRequestFormData.d.ts +2 -1
- package/dist/interfaces/node/bodyReaders/formData/readRequestFormData.mjs +18 -12
- package/dist/interfaces/node/createHttpServer.cjs +2 -3
- package/dist/interfaces/node/createHttpServer.mjs +2 -3
- package/dist/interfaces/node/hooks/index.cjs +61 -38
- package/dist/interfaces/node/hooks/index.d.ts +6 -4
- package/dist/interfaces/node/hooks/index.mjs +61 -38
- package/dist/interfaces/node/index.cjs +1 -1
- package/dist/interfaces/node/index.mjs +1 -1
- package/dist/plugins/cacheController/createResponseHeader.cjs +43 -0
- package/dist/plugins/cacheController/createResponseHeader.d.ts +2 -0
- package/dist/plugins/cacheController/createResponseHeader.mjs +41 -0
- package/dist/plugins/cacheController/hooks.cjs +23 -0
- package/dist/plugins/cacheController/hooks.d.ts +4 -0
- package/dist/plugins/cacheController/hooks.mjs +21 -0
- package/dist/plugins/cacheController/index.cjs +10 -0
- package/dist/plugins/cacheController/index.d.ts +3 -0
- package/dist/plugins/cacheController/index.mjs +3 -0
- package/dist/plugins/cacheController/types/cacheControlDirectives.cjs +2 -0
- package/dist/plugins/cacheController/types/cacheControlDirectives.d.ts +16 -0
- package/dist/plugins/cacheController/types/cacheControlDirectives.mjs +1 -0
- package/dist/plugins/cacheController/types/index.cjs +4 -0
- package/dist/plugins/cacheController/types/index.d.ts +1 -0
- package/dist/plugins/cacheController/types/index.mjs +1 -0
- package/dist/plugins/codeGenerator/aggregateStepContract.cjs +9 -2
- package/dist/plugins/codeGenerator/aggregateStepContract.d.ts +1 -1
- package/dist/plugins/codeGenerator/aggregateStepContract.mjs +10 -3
- package/dist/plugins/codeGenerator/plugin.cjs +4 -4
- package/dist/plugins/codeGenerator/plugin.mjs +1 -1
- package/dist/plugins/openApiGenerator/aggregateStepContract.d.ts +2 -7
- package/dist/plugins/openApiGenerator/routeToOpenApi.cjs +46 -8
- package/dist/plugins/openApiGenerator/routeToOpenApi.d.ts +2 -2
- package/dist/plugins/openApiGenerator/routeToOpenApi.mjs +46 -8
- package/dist/plugins/openApiGenerator/types/endpointResponse.d.ts +7 -3
- package/dist/plugins/static/index.cjs +14 -0
- package/dist/plugins/static/index.d.ts +3 -0
- package/dist/plugins/static/index.mjs +3 -0
- package/dist/plugins/static/kind.cjs +9 -0
- package/dist/plugins/static/kind.d.ts +6 -0
- package/dist/plugins/static/kind.mjs +7 -0
- package/dist/plugins/static/makeRouteFile.cjs +62 -0
- package/dist/plugins/static/makeRouteFile.d.ts +48 -0
- package/dist/plugins/static/makeRouteFile.mjs +58 -0
- package/dist/plugins/static/makeRouteFolder.cjs +67 -0
- package/dist/plugins/static/makeRouteFolder.d.ts +39 -0
- package/dist/plugins/static/makeRouteFolder.mjs +65 -0
- package/dist/plugins/static/plugin.cjs +53 -0
- package/dist/plugins/static/plugin.d.ts +26 -0
- package/dist/plugins/static/plugin.mjs +50 -0
- package/package.json +18 -7
- /package/dist/plugins/codeGenerator/{typescriptTransfomer.cjs → typescriptTransformer.cjs} +0 -0
- /package/dist/plugins/codeGenerator/{typescriptTransfomer.d.ts → typescriptTransformer.d.ts} +0 -0
- /package/dist/plugins/codeGenerator/{typescriptTransfomer.mjs → typescriptTransformer.mjs} +0 -0
|
@@ -5,6 +5,7 @@ import '../../../response/index.mjs';
|
|
|
5
5
|
import { handlerStepKind } from '../../../steps/handler.mjs';
|
|
6
6
|
import { ResponseContract } from '../../../response/contract.mjs';
|
|
7
7
|
import { PredictedResponse } from '../../../response/predicted.mjs';
|
|
8
|
+
import { ServerSentEventsPredictedResponse } from '../../../response/serverSentEventsPredicted.mjs';
|
|
8
9
|
|
|
9
10
|
const defaultHandlerStepFunctionBuilder = createStepFunctionBuilder(handlerStepKind.has, (step, { success }) => {
|
|
10
11
|
const { responseContract, theFunction: handlerFunction, } = step.definition;
|
|
@@ -13,26 +14,45 @@ const defaultHandlerStepFunctionBuilder = createStepFunctionBuilder(handlerStepK
|
|
|
13
14
|
}));
|
|
14
15
|
const response = (information, body) => {
|
|
15
16
|
const currentContract = preparedContractResponse[information];
|
|
16
|
-
if (!currentContract
|
|
17
|
-
|
|
17
|
+
if (!currentContract
|
|
18
|
+
|| !ResponseContract.contractKind.has(currentContract)) {
|
|
19
|
+
throw new ResponseContract.Error(information, "Contract not found.");
|
|
18
20
|
}
|
|
19
|
-
|
|
21
|
+
const result = currentContract.body.parse(body);
|
|
22
|
+
if (E.isLeft(result)) {
|
|
23
|
+
throw new ResponseContract.Error(information, unwrap(result));
|
|
24
|
+
}
|
|
25
|
+
return new PredictedResponse(currentContract.code, information, body);
|
|
26
|
+
};
|
|
27
|
+
const serverSentEventsResponse = (information, startSendingEvents) => {
|
|
28
|
+
const currentContract = preparedContractResponse[information];
|
|
29
|
+
if (!currentContract
|
|
30
|
+
|| !ResponseContract.serverSentEventsContractKind.has(currentContract)) {
|
|
31
|
+
throw new ResponseContract.Error(information, "Contract not found.");
|
|
32
|
+
}
|
|
33
|
+
return new ServerSentEventsPredictedResponse(currentContract.code, information, (params) => startSendingEvents({
|
|
34
|
+
...params,
|
|
35
|
+
send: (event, data, sendParams) => {
|
|
36
|
+
const dataParser = currentContract.events[event];
|
|
37
|
+
if (!dataParser) {
|
|
38
|
+
console.error(new ResponseContract.Error(information, `Event '${event}' not found.`));
|
|
39
|
+
return Promise.resolve();
|
|
40
|
+
}
|
|
41
|
+
const result = dataParser.parse(data);
|
|
42
|
+
if (E.isLeft(result)) {
|
|
43
|
+
console.error(new ResponseContract.Error(information, unwrap(result)));
|
|
44
|
+
return Promise.resolve();
|
|
45
|
+
}
|
|
46
|
+
return params.send(event, data, sendParams);
|
|
47
|
+
},
|
|
48
|
+
}));
|
|
20
49
|
};
|
|
21
50
|
return success({
|
|
22
|
-
buildedFunction: async (request, floor) => {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const currentContract = preparedContractResponse[predictedResponse.information];
|
|
28
|
-
const result = currentContract.body.isAsynchronous()
|
|
29
|
-
? await currentContract.body.asyncParse(predictedResponse.body)
|
|
30
|
-
: currentContract.body.parse(predictedResponse.body);
|
|
31
|
-
if (E.isLeft(result)) {
|
|
32
|
-
throw new ResponseContract.Error(predictedResponse.information, unwrap(result));
|
|
33
|
-
}
|
|
34
|
-
return predictedResponse;
|
|
35
|
-
},
|
|
51
|
+
buildedFunction: async (request, floor) => handlerFunction(floor, {
|
|
52
|
+
request,
|
|
53
|
+
response,
|
|
54
|
+
serverSentEventsResponse,
|
|
55
|
+
}),
|
|
36
56
|
hooksRouteLifeCycle: [],
|
|
37
57
|
});
|
|
38
58
|
});
|
|
@@ -5,7 +5,7 @@ require('../../../response/index.cjs');
|
|
|
5
5
|
var create = require('../create.cjs');
|
|
6
6
|
var utils = require('@duplojs/utils');
|
|
7
7
|
var process = require('../../../steps/process.cjs');
|
|
8
|
-
var
|
|
8
|
+
var base = require('../../../response/base.cjs');
|
|
9
9
|
|
|
10
10
|
function buildStepsFunction(steps, buildStep) {
|
|
11
11
|
return utils.G.asyncReduce(steps, utils.G.reduceFrom([]), async ({ lastValue, element: step, next, exit }) => {
|
|
@@ -33,8 +33,8 @@ const defaultProcessStepFunctionBuilder = create.createStepFunctionBuilder(proce
|
|
|
33
33
|
let processFloor = { options: getOptions(floor) };
|
|
34
34
|
// eslint-disable-next-line @typescript-eslint/prefer-for-of
|
|
35
35
|
for (let index = 0; index < buildedSteps.length; index++) {
|
|
36
|
-
const result = await buildedSteps[index].buildedFunction(request,
|
|
37
|
-
if (result instanceof
|
|
36
|
+
const result = await buildedSteps[index].buildedFunction(request, processFloor);
|
|
37
|
+
if (result instanceof base.Response) {
|
|
38
38
|
return result;
|
|
39
39
|
}
|
|
40
40
|
processFloor = result;
|
|
@@ -3,7 +3,7 @@ import '../../../response/index.mjs';
|
|
|
3
3
|
import { createStepFunctionBuilder } from '../create.mjs';
|
|
4
4
|
import { G, E, A, unwrap, pipe, P, or, isType, forward } from '@duplojs/utils';
|
|
5
5
|
import { processStepKind } from '../../../steps/process.mjs';
|
|
6
|
-
import {
|
|
6
|
+
import { Response } from '../../../response/base.mjs';
|
|
7
7
|
|
|
8
8
|
function buildStepsFunction(steps, buildStep) {
|
|
9
9
|
return G.asyncReduce(steps, G.reduceFrom([]), async ({ lastValue, element: step, next, exit }) => {
|
|
@@ -31,8 +31,8 @@ const defaultProcessStepFunctionBuilder = createStepFunctionBuilder(processStepK
|
|
|
31
31
|
let processFloor = { options: getOptions(floor) };
|
|
32
32
|
// eslint-disable-next-line @typescript-eslint/prefer-for-of
|
|
33
33
|
for (let index = 0; index < buildedSteps.length; index++) {
|
|
34
|
-
const result = await buildedSteps[index].buildedFunction(request,
|
|
35
|
-
if (result instanceof
|
|
34
|
+
const result = await buildedSteps[index].buildedFunction(request, processFloor);
|
|
35
|
+
if (result instanceof Response) {
|
|
36
36
|
return result;
|
|
37
37
|
}
|
|
38
38
|
processFloor = result;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@duplojs/utils');
|
|
4
|
+
require('../request/index.cjs');
|
|
5
|
+
var empty = require('../request/bodyController/empty.cjs');
|
|
6
|
+
|
|
7
|
+
const defaultEmptyReaderImplementation = empty.EmptyBodyController.createReaderImplementation(() => Promise.resolve(utils.E.success(undefined)));
|
|
8
|
+
|
|
9
|
+
exports.defaultEmptyReaderImplementation = defaultEmptyReaderImplementation;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const defaultEmptyReaderImplementation: import("../request").BodyReaderImplementation<"empty", {}>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { E } from '@duplojs/utils';
|
|
2
|
+
import '../request/index.mjs';
|
|
3
|
+
import { EmptyBodyController } from '../request/bodyController/empty.mjs';
|
|
4
|
+
|
|
5
|
+
const defaultEmptyReaderImplementation = EmptyBodyController.createReaderImplementation(() => Promise.resolve(E.success(undefined)));
|
|
6
|
+
|
|
7
|
+
export { defaultEmptyReaderImplementation };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
require('../response/index.cjs');
|
|
4
|
+
require('../steps/index.cjs');
|
|
5
|
+
var handler = require('../steps/handler.cjs');
|
|
6
|
+
var contract = require('../response/contract.cjs');
|
|
7
|
+
|
|
8
|
+
const defaultMalformedUrlHandler = handler.createHandlerStep({
|
|
9
|
+
responseContract: contract.ResponseContract.badRequest("malformed-url"),
|
|
10
|
+
theFunction: (__, { response }) => response("malformed-url", undefined),
|
|
11
|
+
metadata: [],
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
exports.defaultMalformedUrlHandler = defaultMalformedUrlHandler;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ResponseContract } from "../response";
|
|
2
|
+
export declare const defaultMalformedUrlHandler: import("../steps").HandlerStep<{
|
|
3
|
+
responseContract: NoInfer<ResponseContract.Contract<"400", "malformed-url", import("@duplojs/utils/dataParser").DataParserEmpty<{
|
|
4
|
+
readonly errorMessage?: string | undefined;
|
|
5
|
+
readonly coerce: boolean;
|
|
6
|
+
readonly checkers: readonly [];
|
|
7
|
+
}>>>;
|
|
8
|
+
theFunction: (__: import("..").Floor, { response }: import("../steps").HandlerStepFunctionParams<import("..").Request, import("../response").ServerSentEventsPredictedResponse<"200" | "201" | "202" | "203" | "204" | "205" | "206" | "207" | "208" | "209" | "210" | "211" | "212" | "213" | "214" | "215" | "216" | "217" | "218" | "219" | "220" | "221" | "222" | "223" | "224" | "225" | "226" | "227" | "228" | "229" | "230" | "231" | "232" | "233" | "234" | "235" | "236" | "237" | "238" | "239" | "240" | "241" | "242" | "243" | "244" | "245" | "246" | "247" | "248" | "249" | "250" | "251" | "252" | "253" | "254" | "255" | "256" | "257" | "258" | "259" | "260" | "261" | "262" | "263" | "264" | "265" | "266" | "267" | "268" | "269" | "270" | "271" | "272" | "273" | "274" | "275" | "276" | "277" | "278" | "279" | "280" | "281" | "282" | "283" | "284" | "285" | "286" | "287" | "288" | "289" | "290" | "291" | "292" | "293" | "294" | "295" | "296" | "297" | "298" | "299", string, import("..").ServerSentEvents.DefinitionShape> | import("../response").PredictedResponse<import("../response").ResponseCode, string, unknown>>) => never;
|
|
9
|
+
metadata: never[];
|
|
10
|
+
}>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import '../response/index.mjs';
|
|
2
|
+
import '../steps/index.mjs';
|
|
3
|
+
import { createHandlerStep } from '../steps/handler.mjs';
|
|
4
|
+
import { ResponseContract } from '../response/contract.mjs';
|
|
5
|
+
|
|
6
|
+
const defaultMalformedUrlHandler = createHandlerStep({
|
|
7
|
+
responseContract: ResponseContract.badRequest("malformed-url"),
|
|
8
|
+
theFunction: (__, { response }) => response("malformed-url", undefined),
|
|
9
|
+
metadata: [],
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
export { defaultMalformedUrlHandler };
|
|
@@ -6,6 +6,6 @@ export declare const defaultNotfoundHandler: import("../steps").HandlerStep<{
|
|
|
6
6
|
readonly coerce: boolean;
|
|
7
7
|
readonly checkers: readonly [];
|
|
8
8
|
}>>>;
|
|
9
|
-
theFunction: (floor: import("..").Floor, { request, response }: import("../steps").HandlerStepFunctionParams<import("..").Request, import("../response").PredictedResponse<import("../response").ResponseCode, string, unknown>>) => never;
|
|
9
|
+
theFunction: (floor: import("..").Floor, { request, response }: import("../steps").HandlerStepFunctionParams<import("..").Request, import("../response").ServerSentEventsPredictedResponse<"200" | "201" | "202" | "203" | "204" | "205" | "206" | "207" | "208" | "209" | "210" | "211" | "212" | "213" | "214" | "215" | "216" | "217" | "218" | "219" | "220" | "221" | "222" | "223" | "224" | "225" | "226" | "227" | "228" | "229" | "230" | "231" | "232" | "233" | "234" | "235" | "236" | "237" | "238" | "239" | "240" | "241" | "242" | "243" | "244" | "245" | "246" | "247" | "248" | "249" | "250" | "251" | "252" | "253" | "254" | "255" | "256" | "257" | "258" | "259" | "260" | "261" | "262" | "263" | "264" | "265" | "266" | "267" | "268" | "269" | "270" | "271" | "272" | "273" | "274" | "275" | "276" | "277" | "278" | "279" | "280" | "281" | "282" | "283" | "284" | "285" | "286" | "287" | "288" | "289" | "290" | "291" | "292" | "293" | "294" | "295" | "296" | "297" | "298" | "299", string, import("..").ServerSentEvents.DefinitionShape> | import("../response").PredictedResponse<import("../response").ResponseCode, string, unknown>>) => never;
|
|
10
10
|
metadata: never[];
|
|
11
11
|
}>;
|
package/dist/core/hub/index.cjs
CHANGED
|
@@ -8,6 +8,8 @@ var index = require('../request/index.cjs');
|
|
|
8
8
|
var defaultNotfoundHandler = require('./defaultNotfoundHandler.cjs');
|
|
9
9
|
var defaultExtractContract = require('./defaultExtractContract.cjs');
|
|
10
10
|
var defaultBodyController = require('./defaultBodyController.cjs');
|
|
11
|
+
var defaultMalformedUrlHandler = require('./defaultMalformedUrlHandler.cjs');
|
|
12
|
+
var defaultEmptyReaderImplementation = require('./defaultEmptyReaderImplementation.cjs');
|
|
11
13
|
var hooks = require('./hooks.cjs');
|
|
12
14
|
var handler = require('../steps/handler.cjs');
|
|
13
15
|
|
|
@@ -20,11 +22,12 @@ class Hub extends utils.kindHeritage("hub", kind.createCoreLibKind("hub")) {
|
|
|
20
22
|
routes = new Set();
|
|
21
23
|
routeFunctionBuilders = [];
|
|
22
24
|
stepFunctionBuilders = [];
|
|
23
|
-
bodyReaderImplementations = [];
|
|
25
|
+
bodyReaderImplementations = [defaultEmptyReaderImplementation.defaultEmptyReaderImplementation];
|
|
24
26
|
classRequest = index.Request;
|
|
25
27
|
notfoundHandler = defaultNotfoundHandler.defaultNotfoundHandler;
|
|
26
28
|
defaultExtractContract = defaultExtractContract.defaultExtractContract;
|
|
27
29
|
defaultBodyController = defaultBodyController.defaultBodyController;
|
|
30
|
+
malformedUrlHandler = defaultMalformedUrlHandler.defaultMalformedUrlHandler;
|
|
28
31
|
constructor(config) {
|
|
29
32
|
super({});
|
|
30
33
|
this.config = config;
|
|
@@ -100,6 +103,14 @@ class Hub extends utils.kindHeritage("hub", kind.createCoreLibKind("hub")) {
|
|
|
100
103
|
aggregatesHooksRouteLifeCycle(hookName) {
|
|
101
104
|
return utils.A.flatMap(this.hooksRouteLifeCycle, (hooks) => hooks[hookName] ?? []);
|
|
102
105
|
}
|
|
106
|
+
setMalformedUrlHandler(responseContract, theFunction) {
|
|
107
|
+
this.malformedUrlHandler = handler.createHandlerStep({
|
|
108
|
+
responseContract,
|
|
109
|
+
theFunction: (__, params) => theFunction(params),
|
|
110
|
+
metadata: [],
|
|
111
|
+
});
|
|
112
|
+
return this;
|
|
113
|
+
}
|
|
103
114
|
/**
|
|
104
115
|
* @internal
|
|
105
116
|
*/
|
|
@@ -114,6 +125,8 @@ function createHub(config) {
|
|
|
114
125
|
exports.defaultNotfoundHandler = defaultNotfoundHandler.defaultNotfoundHandler;
|
|
115
126
|
exports.defaultExtractContract = defaultExtractContract.defaultExtractContract;
|
|
116
127
|
exports.defaultBodyController = defaultBodyController.defaultBodyController;
|
|
128
|
+
exports.defaultMalformedUrlHandler = defaultMalformedUrlHandler.defaultMalformedUrlHandler;
|
|
129
|
+
exports.defaultEmptyReaderImplementation = defaultEmptyReaderImplementation.defaultEmptyReaderImplementation;
|
|
117
130
|
exports.createHookHubLifeCycle = hooks.createHookHubLifeCycle;
|
|
118
131
|
exports.hookServerExitKind = hooks.hookServerExitKind;
|
|
119
132
|
exports.hookServerNextKind = hooks.hookServerNextKind;
|
package/dist/core/hub/index.d.ts
CHANGED
|
@@ -11,6 +11,8 @@ export * from "./hooks";
|
|
|
11
11
|
export * from "./defaultNotfoundHandler";
|
|
12
12
|
export * from "./defaultExtractContract";
|
|
13
13
|
export * from "./defaultBodyController";
|
|
14
|
+
export * from "./defaultMalformedUrlHandler";
|
|
15
|
+
export * from "./defaultEmptyReaderImplementation";
|
|
14
16
|
export declare const hubKind: import("@duplojs/utils").KindHandler<import("@duplojs/utils").KindDefinition<"@DuplojsHttpCore/hub", unknown>>;
|
|
15
17
|
export interface HubConfig {
|
|
16
18
|
readonly environment: Environment;
|
|
@@ -40,6 +42,7 @@ export declare class Hub<GenericConfig extends HubConfig = HubConfig> extends Hu
|
|
|
40
42
|
notfoundHandler: HandlerStep;
|
|
41
43
|
defaultExtractContract: ResponseContract.Contract<ClientErrorResponseCode, string, DP.DataParserEmpty>;
|
|
42
44
|
defaultBodyController: BodyController;
|
|
45
|
+
malformedUrlHandler: HandlerStep;
|
|
43
46
|
private constructor();
|
|
44
47
|
register(routes: Route | Iterable<Route> | Record<string, Route>): this;
|
|
45
48
|
addRouteFunctionBuilder(functionBuilder: MaybeArray<ReturnType<typeof createRouteFunctionBuilder>>): this;
|
|
@@ -53,5 +56,6 @@ export declare class Hub<GenericConfig extends HubConfig = HubConfig> extends Hu
|
|
|
53
56
|
aggregatesHooksHubLifeCycle<GenericHookName extends keyof HookHubLifeCycle>(hookName: GenericHookName): (NonNullable<HookHubLifeCycle[GenericHookName]> extends infer T ? T extends NonNullable<HookHubLifeCycle[GenericHookName]> ? T extends readonly (infer InnerArr)[] ? InnerArr extends readonly (infer InnerArr)[] ? InnerArr : InnerArr : T : never : never)[];
|
|
54
57
|
setDefaultBodyController(bodyController: BodyController): this;
|
|
55
58
|
aggregatesHooksRouteLifeCycle<GenericHookName extends keyof HookRouteLifeCycle>(hookName: GenericHookName): (NonNullable<HookRouteLifeCycle<Request>[GenericHookName]> extends infer T ? T extends NonNullable<HookRouteLifeCycle<Request>[GenericHookName]> ? T extends readonly (infer InnerArr)[] ? InnerArr extends readonly (infer InnerArr)[] ? InnerArr : InnerArr : T : never : never)[];
|
|
59
|
+
setMalformedUrlHandler<GenericResponseContract extends ResponseContract.Contract, GenericResponse extends ResponseContract.Convert<GenericResponseContract>>(responseContract: GenericResponseContract, theFunction: (param: HandlerStepFunctionParams<Request, GenericResponse>) => MaybePromise<GenericResponse>): this;
|
|
56
60
|
}
|
|
57
61
|
export declare function createHub<const GenericConfig extends HubConfig>(config: GenericConfig): Hub<GenericConfig>;
|
package/dist/core/hub/index.mjs
CHANGED
|
@@ -6,6 +6,8 @@ import { Request } from '../request/index.mjs';
|
|
|
6
6
|
import { defaultNotfoundHandler } from './defaultNotfoundHandler.mjs';
|
|
7
7
|
import { defaultExtractContract } from './defaultExtractContract.mjs';
|
|
8
8
|
import { defaultBodyController } from './defaultBodyController.mjs';
|
|
9
|
+
import { defaultMalformedUrlHandler } from './defaultMalformedUrlHandler.mjs';
|
|
10
|
+
import { defaultEmptyReaderImplementation } from './defaultEmptyReaderImplementation.mjs';
|
|
9
11
|
export { createHookHubLifeCycle, hookServerExitKind, hookServerNextKind, launchHookBeforeBuildRoute, launchHookServer, launchHookServerError, serverErrorExitHookFunction, serverErrorNextHookFunction } from './hooks.mjs';
|
|
10
12
|
import { createHandlerStep } from '../steps/handler.mjs';
|
|
11
13
|
|
|
@@ -18,11 +20,12 @@ class Hub extends kindHeritage("hub", createCoreLibKind("hub")) {
|
|
|
18
20
|
routes = new Set();
|
|
19
21
|
routeFunctionBuilders = [];
|
|
20
22
|
stepFunctionBuilders = [];
|
|
21
|
-
bodyReaderImplementations = [];
|
|
23
|
+
bodyReaderImplementations = [defaultEmptyReaderImplementation];
|
|
22
24
|
classRequest = Request;
|
|
23
25
|
notfoundHandler = defaultNotfoundHandler;
|
|
24
26
|
defaultExtractContract = defaultExtractContract;
|
|
25
27
|
defaultBodyController = defaultBodyController;
|
|
28
|
+
malformedUrlHandler = defaultMalformedUrlHandler;
|
|
26
29
|
constructor(config) {
|
|
27
30
|
super({});
|
|
28
31
|
this.config = config;
|
|
@@ -98,6 +101,14 @@ class Hub extends kindHeritage("hub", createCoreLibKind("hub")) {
|
|
|
98
101
|
aggregatesHooksRouteLifeCycle(hookName) {
|
|
99
102
|
return A.flatMap(this.hooksRouteLifeCycle, (hooks) => hooks[hookName] ?? []);
|
|
100
103
|
}
|
|
104
|
+
setMalformedUrlHandler(responseContract, theFunction) {
|
|
105
|
+
this.malformedUrlHandler = createHandlerStep({
|
|
106
|
+
responseContract,
|
|
107
|
+
theFunction: (__, params) => theFunction(params),
|
|
108
|
+
metadata: [],
|
|
109
|
+
});
|
|
110
|
+
return this;
|
|
111
|
+
}
|
|
101
112
|
/**
|
|
102
113
|
* @internal
|
|
103
114
|
*/
|
|
@@ -109,4 +120,4 @@ function createHub(config) {
|
|
|
109
120
|
return Hub.new(config);
|
|
110
121
|
}
|
|
111
122
|
|
|
112
|
-
export { Hub, createHub, defaultBodyController, defaultExtractContract, defaultNotfoundHandler, hubKind };
|
|
123
|
+
export { Hub, createHub, defaultBodyController, defaultEmptyReaderImplementation, defaultExtractContract, defaultMalformedUrlHandler, defaultNotfoundHandler, hubKind };
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
require('./hub/index.cjs');
|
|
4
|
-
var index = require('./router/index.cjs');
|
|
4
|
+
var index$1 = require('./router/index.cjs');
|
|
5
5
|
var utils = require('@duplojs/utils');
|
|
6
|
+
var index = require('./defaultHooks/index.cjs');
|
|
6
7
|
var hooks = require('./hub/hooks.cjs');
|
|
7
8
|
|
|
8
9
|
async function implementHttpServer(params, initHttpServer) {
|
|
9
10
|
await hooks.launchHookServer(params.hub.aggregatesHooksHubLifeCycle("beforeServerBuildRoutes"), params.hub, params.httpServerParams);
|
|
10
|
-
|
|
11
|
+
params.hub.addRouteHooks([
|
|
12
|
+
index.initDefaultHook(params.hub, params.httpServerParams),
|
|
13
|
+
...params.getInterfaceHooks(params),
|
|
14
|
+
]);
|
|
15
|
+
const router = await index$1.buildRouter(params.hub);
|
|
11
16
|
await hooks.launchHookServer(params.hub.aggregatesHooksHubLifeCycle("beforeStartServer"), params.hub, params.httpServerParams);
|
|
12
17
|
const serverErrorHooks = params.hub.aggregatesHooksHubLifeCycle("serverError");
|
|
13
18
|
function catchCriticalError(error) {
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
import { type Hub } from "./hub";
|
|
2
2
|
import { type RouterInitializationData } from "./router";
|
|
3
|
-
import { type MaybePromise } from "@duplojs/utils";
|
|
3
|
+
import { type AnyTuple, type MaybePromise } from "@duplojs/utils";
|
|
4
4
|
import { type HttpServerParams } from "./types";
|
|
5
|
+
import { type HookRouteLifeCycle } from "./route";
|
|
6
|
+
export interface GetInterfaceHooksParams {
|
|
7
|
+
readonly hub: Hub;
|
|
8
|
+
readonly httpServerParams: HttpServerParams;
|
|
9
|
+
}
|
|
5
10
|
export interface ImplementHttpServerParams {
|
|
6
11
|
readonly hub: Hub;
|
|
7
12
|
readonly httpServerParams: HttpServerParams;
|
|
13
|
+
getInterfaceHooks(params: GetInterfaceHooksParams): AnyTuple<HookRouteLifeCycle>;
|
|
8
14
|
}
|
|
9
15
|
export type ExecRouteSystem = (routerInitializationData: RouterInitializationData, whenUncaughtError: (error: unknown, routerInitializationData: RouterInitializationData) => MaybePromise<void>) => Promise<void>;
|
|
10
16
|
export interface InitHttpServerParams {
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import './hub/index.mjs';
|
|
2
2
|
import { buildRouter } from './router/index.mjs';
|
|
3
3
|
import { forward } from '@duplojs/utils';
|
|
4
|
+
import { initDefaultHook } from './defaultHooks/index.mjs';
|
|
4
5
|
import { launchHookServer, launchHookServerError, serverErrorNextHookFunction, serverErrorExitHookFunction } from './hub/hooks.mjs';
|
|
5
6
|
|
|
6
7
|
async function implementHttpServer(params, initHttpServer) {
|
|
7
8
|
await launchHookServer(params.hub.aggregatesHooksHubLifeCycle("beforeServerBuildRoutes"), params.hub, params.httpServerParams);
|
|
9
|
+
params.hub.addRouteHooks([
|
|
10
|
+
initDefaultHook(params.hub, params.httpServerParams),
|
|
11
|
+
...params.getInterfaceHooks(params),
|
|
12
|
+
]);
|
|
8
13
|
const router = await buildRouter(params.hub);
|
|
9
14
|
await launchHookServer(params.hub.aggregatesHooksHubLifeCycle("beforeStartServer"), params.hub, params.httpServerParams);
|
|
10
15
|
const serverErrorHooks = params.hub.aggregatesHooksHubLifeCycle("serverError");
|
package/dist/core/index.cjs
CHANGED
|
@@ -21,6 +21,7 @@ var narrowingInput = require('./narrowingInput.cjs');
|
|
|
21
21
|
require('./clean/index.cjs');
|
|
22
22
|
var index$5 = require('./defaultHooks/index.cjs');
|
|
23
23
|
require('./errors/index.cjs');
|
|
24
|
+
var serverSentEvents = require('./serverSentEvents.cjs');
|
|
24
25
|
var checker = require('./builders/checker.cjs');
|
|
25
26
|
var builder = require('./builders/route/builder.cjs');
|
|
26
27
|
var store = require('./builders/route/store.cjs');
|
|
@@ -30,6 +31,7 @@ var base = require('./response/base.cjs');
|
|
|
30
31
|
var contract = require('./response/contract.cjs');
|
|
31
32
|
var hook = require('./response/hook.cjs');
|
|
32
33
|
var predicted = require('./response/predicted.cjs');
|
|
34
|
+
var serverSentEventsPredicted = require('./response/serverSentEventsPredicted.cjs');
|
|
33
35
|
var hooks = require('./route/hooks.cjs');
|
|
34
36
|
var kind = require('./steps/kind.cjs');
|
|
35
37
|
var identifier = require('./steps/identifier.cjs');
|
|
@@ -42,10 +44,13 @@ var presetChecker = require('./steps/presetChecker.cjs');
|
|
|
42
44
|
var base$1 = require('./request/bodyController/base.cjs');
|
|
43
45
|
var formData = require('./request/bodyController/formData.cjs');
|
|
44
46
|
var text = require('./request/bodyController/text.cjs');
|
|
47
|
+
var empty = require('./request/bodyController/empty.cjs');
|
|
45
48
|
var hooks$1 = require('./hub/hooks.cjs');
|
|
46
49
|
var defaultNotfoundHandler = require('./hub/defaultNotfoundHandler.cjs');
|
|
47
50
|
var defaultExtractContract = require('./hub/defaultExtractContract.cjs');
|
|
48
51
|
var defaultBodyController = require('./hub/defaultBodyController.cjs');
|
|
52
|
+
var defaultMalformedUrlHandler = require('./hub/defaultMalformedUrlHandler.cjs');
|
|
53
|
+
var defaultEmptyReaderImplementation = require('./hub/defaultEmptyReaderImplementation.cjs');
|
|
49
54
|
var build = require('./functionsBuilders/route/build.cjs');
|
|
50
55
|
var create = require('./functionsBuilders/route/create.cjs');
|
|
51
56
|
var _default = require('./functionsBuilders/route/default.cjs');
|
|
@@ -61,6 +66,7 @@ var pathToRegExp = require('./router/pathToRegExp.cjs');
|
|
|
61
66
|
var buildError = require('./router/buildError.cjs');
|
|
62
67
|
var decodeUrl = require('./router/decodeUrl.cjs');
|
|
63
68
|
var notFoundBodyReaderImplementationError = require('./router/notFoundBodyReaderImplementationError.cjs');
|
|
69
|
+
var buildSystemRoute = require('./router/buildSystemRoute.cjs');
|
|
64
70
|
var base$2 = require('./metadata/base.cjs');
|
|
65
71
|
var ignoreByRouteStore = require('./metadata/ignoreByRouteStore.cjs');
|
|
66
72
|
var wrongContentTypeError = require('./errors/wrongContentTypeError.cjs');
|
|
@@ -89,6 +95,10 @@ exports.createCoreLibStringIdentifier = stringIdentifier.createCoreLibStringIden
|
|
|
89
95
|
exports.implementHttpServer = implementHttpServer.implementHttpServer;
|
|
90
96
|
exports.createNarrowingInput = narrowingInput.createNarrowingInput;
|
|
91
97
|
exports.initDefaultHook = index$5.initDefaultHook;
|
|
98
|
+
Object.defineProperty(exports, "ServerSentEvents", {
|
|
99
|
+
enumerable: true,
|
|
100
|
+
get: function () { return serverSentEvents.ServerSentEvents; }
|
|
101
|
+
});
|
|
92
102
|
exports.checkerBuilder = checker.checkerBuilder;
|
|
93
103
|
exports.useCheckerBuilder = checker.useCheckerBuilder;
|
|
94
104
|
exports.routeBuilderHandler = builder.routeBuilderHandler;
|
|
@@ -105,8 +115,10 @@ Object.defineProperty(exports, "ResponseContract", {
|
|
|
105
115
|
});
|
|
106
116
|
exports.HookResponse = hook.HookResponse;
|
|
107
117
|
exports.PredictedResponse = predicted.PredictedResponse;
|
|
118
|
+
exports.ServerSentEventsPredictedResponse = serverSentEventsPredicted.ServerSentEventsPredictedResponse;
|
|
108
119
|
exports.createHookRouteLifeCycle = hooks.createHookRouteLifeCycle;
|
|
109
120
|
exports.hookRouteExitKind = hooks.hookRouteExitKind;
|
|
121
|
+
exports.hookRouteLifeCycleAddRequestProperties = hooks.hookRouteLifeCycleAddRequestProperties;
|
|
110
122
|
exports.hookRouteNextKind = hooks.hookRouteNextKind;
|
|
111
123
|
exports.stepKind = kind.stepKind;
|
|
112
124
|
exports.stepIdentifier = identifier.stepIdentifier;
|
|
@@ -123,11 +135,14 @@ exports.createProcessStep = process.createProcessStep;
|
|
|
123
135
|
exports.processStepKind = process.processStepKind;
|
|
124
136
|
exports.createPresetCheckerStep = presetChecker.createPresetCheckerStep;
|
|
125
137
|
exports.presetCheckerStepKind = presetChecker.presetCheckerStepKind;
|
|
138
|
+
exports.WrongBodyReaderImplementationError = base$1.WrongBodyReaderImplementationError;
|
|
126
139
|
exports.createBodyController = base$1.createBodyController;
|
|
127
140
|
exports.FormDataBodyController = formData.FormDataBodyController;
|
|
128
141
|
exports.controlBodyAsFormData = formData.controlBodyAsFormData;
|
|
129
142
|
exports.TextBodyController = text.TextBodyController;
|
|
130
143
|
exports.controlBodyAsText = text.controlBodyAsText;
|
|
144
|
+
exports.EmptyBodyController = empty.EmptyBodyController;
|
|
145
|
+
exports.controlBodyAsEmpty = empty.controlBodyAsEmpty;
|
|
131
146
|
exports.createHookHubLifeCycle = hooks$1.createHookHubLifeCycle;
|
|
132
147
|
exports.hookServerExitKind = hooks$1.hookServerExitKind;
|
|
133
148
|
exports.hookServerNextKind = hooks$1.hookServerNextKind;
|
|
@@ -139,6 +154,8 @@ exports.serverErrorNextHookFunction = hooks$1.serverErrorNextHookFunction;
|
|
|
139
154
|
exports.defaultNotfoundHandler = defaultNotfoundHandler.defaultNotfoundHandler;
|
|
140
155
|
exports.defaultExtractContract = defaultExtractContract.defaultExtractContract;
|
|
141
156
|
exports.defaultBodyController = defaultBodyController.defaultBodyController;
|
|
157
|
+
exports.defaultMalformedUrlHandler = defaultMalformedUrlHandler.defaultMalformedUrlHandler;
|
|
158
|
+
exports.defaultEmptyReaderImplementation = defaultEmptyReaderImplementation.defaultEmptyReaderImplementation;
|
|
142
159
|
exports.buildRouteFunction = build.buildRouteFunction;
|
|
143
160
|
exports.createRouteFunctionBuilder = create.createRouteFunctionBuilder;
|
|
144
161
|
exports.defaultRouteFunctionBuilder = _default.defaultRouteFunctionBuilder;
|
|
@@ -162,6 +179,7 @@ exports.decodeUrl = decodeUrl.decodeUrl;
|
|
|
162
179
|
exports.regexQueryAnalyser = decodeUrl.regexQueryAnalyser;
|
|
163
180
|
exports.regexUrlAnalyser = decodeUrl.regexUrlAnalyser;
|
|
164
181
|
exports.NotFoundBodyReaderImplementationError = notFoundBodyReaderImplementationError.NotFoundBodyReaderImplementationError;
|
|
182
|
+
exports.buildSystemRoute = buildSystemRoute.buildSystemRoute;
|
|
165
183
|
exports.createMetadata = base$2.createMetadata;
|
|
166
184
|
exports.metadataKind = base$2.metadataKind;
|
|
167
185
|
exports.IgnoreByRouteStoreMetadata = ignoreByRouteStore.IgnoreByRouteStoreMetadata;
|
package/dist/core/index.d.ts
CHANGED
package/dist/core/index.mjs
CHANGED
|
@@ -19,6 +19,7 @@ export { createNarrowingInput } from './narrowingInput.mjs';
|
|
|
19
19
|
import './clean/index.mjs';
|
|
20
20
|
export { initDefaultHook } from './defaultHooks/index.mjs';
|
|
21
21
|
import './errors/index.mjs';
|
|
22
|
+
export { ServerSentEvents } from './serverSentEvents.mjs';
|
|
22
23
|
export { checkerBuilder, useCheckerBuilder } from './builders/checker.mjs';
|
|
23
24
|
export { routeBuilderHandler, useRouteBuilder } from './builders/route/builder.mjs';
|
|
24
25
|
export { routeStore } from './builders/route/store.mjs';
|
|
@@ -28,7 +29,8 @@ export { Response } from './response/base.mjs';
|
|
|
28
29
|
export { ResponseContract } from './response/contract.mjs';
|
|
29
30
|
export { HookResponse } from './response/hook.mjs';
|
|
30
31
|
export { PredictedResponse } from './response/predicted.mjs';
|
|
31
|
-
export {
|
|
32
|
+
export { ServerSentEventsPredictedResponse } from './response/serverSentEventsPredicted.mjs';
|
|
33
|
+
export { createHookRouteLifeCycle, hookRouteExitKind, hookRouteLifeCycleAddRequestProperties, hookRouteNextKind } from './route/hooks.mjs';
|
|
32
34
|
export { stepKind } from './steps/kind.mjs';
|
|
33
35
|
export { stepIdentifier } from './steps/identifier.mjs';
|
|
34
36
|
export { checkerStepKind, createCheckerStep } from './steps/checker.mjs';
|
|
@@ -37,13 +39,16 @@ export { createCutStep, cutStepKind, cutStepOutputKind } from './steps/cut.mjs';
|
|
|
37
39
|
export { createHandlerStep, handlerStepKind } from './steps/handler.mjs';
|
|
38
40
|
export { createProcessStep, processStepKind } from './steps/process.mjs';
|
|
39
41
|
export { createPresetCheckerStep, presetCheckerStepKind } from './steps/presetChecker.mjs';
|
|
40
|
-
export { createBodyController } from './request/bodyController/base.mjs';
|
|
42
|
+
export { WrongBodyReaderImplementationError, createBodyController } from './request/bodyController/base.mjs';
|
|
41
43
|
export { FormDataBodyController, controlBodyAsFormData } from './request/bodyController/formData.mjs';
|
|
42
44
|
export { TextBodyController, controlBodyAsText } from './request/bodyController/text.mjs';
|
|
45
|
+
export { EmptyBodyController, controlBodyAsEmpty } from './request/bodyController/empty.mjs';
|
|
43
46
|
export { createHookHubLifeCycle, hookServerExitKind, hookServerNextKind, launchHookBeforeBuildRoute, launchHookServer, launchHookServerError, serverErrorExitHookFunction, serverErrorNextHookFunction } from './hub/hooks.mjs';
|
|
44
47
|
export { defaultNotfoundHandler } from './hub/defaultNotfoundHandler.mjs';
|
|
45
48
|
export { defaultExtractContract } from './hub/defaultExtractContract.mjs';
|
|
46
49
|
export { defaultBodyController } from './hub/defaultBodyController.mjs';
|
|
50
|
+
export { defaultMalformedUrlHandler } from './hub/defaultMalformedUrlHandler.mjs';
|
|
51
|
+
export { defaultEmptyReaderImplementation } from './hub/defaultEmptyReaderImplementation.mjs';
|
|
47
52
|
export { buildRouteFunction } from './functionsBuilders/route/build.mjs';
|
|
48
53
|
export { createRouteFunctionBuilder } from './functionsBuilders/route/create.mjs';
|
|
49
54
|
export { defaultRouteFunctionBuilder } from './functionsBuilders/route/default.mjs';
|
|
@@ -59,6 +64,7 @@ export { pathToRegExp } from './router/pathToRegExp.mjs';
|
|
|
59
64
|
export { RouterBuildError } from './router/buildError.mjs';
|
|
60
65
|
export { decodeUrl, regexQueryAnalyser, regexUrlAnalyser } from './router/decodeUrl.mjs';
|
|
61
66
|
export { NotFoundBodyReaderImplementationError } from './router/notFoundBodyReaderImplementationError.mjs';
|
|
67
|
+
export { buildSystemRoute } from './router/buildSystemRoute.mjs';
|
|
62
68
|
export { createMetadata, metadataKind } from './metadata/base.mjs';
|
|
63
69
|
export { IgnoreByRouteStoreMetadata } from './metadata/ignoreByRouteStore.mjs';
|
|
64
70
|
export { WrongContentTypeError } from './errors/wrongContentTypeError.mjs';
|
|
@@ -7,20 +7,37 @@ const bodyReaderKind = kind.createCoreLibKind("body-reader");
|
|
|
7
7
|
const bodyReaderImplementationKind = kind.createCoreLibKind("body-reader-implementation");
|
|
8
8
|
const bodyControllerKind = kind.createCoreLibKind("body-controller");
|
|
9
9
|
const bodyControllerHandlerKind = kind.createCoreLibKind("body-controller-handler");
|
|
10
|
+
class WrongBodyReaderImplementationError extends utils.kindHeritage("wrong-body-reader-implementation", kind.createCoreLibKind("wrong-body-reader-implementation"), Error) {
|
|
11
|
+
controllerName;
|
|
12
|
+
bodyReaderImplementation;
|
|
13
|
+
constructor(controllerName, bodyReaderImplementation) {
|
|
14
|
+
super({}, ["Received wrong body reader implementation."]);
|
|
15
|
+
this.controllerName = controllerName;
|
|
16
|
+
this.bodyReaderImplementation = bodyReaderImplementation;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
10
19
|
function createBodyController(name) {
|
|
11
20
|
return bodyControllerHandlerKind.setTo({
|
|
12
21
|
name,
|
|
13
22
|
create(params) {
|
|
23
|
+
function tryToCreateReader(readerImplementation) {
|
|
24
|
+
if (bodyReaderImplementationKind.getValue(readerImplementation) !== name) {
|
|
25
|
+
return utils.E.fail();
|
|
26
|
+
}
|
|
27
|
+
return utils.E.success(bodyReaderKind.setTo({
|
|
28
|
+
read: (request) => readerImplementation.read(request, params),
|
|
29
|
+
}, name));
|
|
30
|
+
}
|
|
14
31
|
return bodyControllerKind.setTo({
|
|
15
32
|
name,
|
|
16
33
|
params,
|
|
17
|
-
tryToCreateReader
|
|
18
|
-
|
|
19
|
-
|
|
34
|
+
tryToCreateReader,
|
|
35
|
+
createReaderOrThrow(readerImplementation) {
|
|
36
|
+
const result = tryToCreateReader(readerImplementation);
|
|
37
|
+
if (utils.E.isLeft(result)) {
|
|
38
|
+
throw new WrongBodyReaderImplementationError(name, readerImplementation);
|
|
20
39
|
}
|
|
21
|
-
return utils.
|
|
22
|
-
read: (request) => readerImplementation.read(request, params),
|
|
23
|
-
}, name));
|
|
40
|
+
return utils.unwrap(result);
|
|
24
41
|
},
|
|
25
42
|
}, name);
|
|
26
43
|
},
|
|
@@ -33,4 +50,5 @@ function createBodyController(name) {
|
|
|
33
50
|
});
|
|
34
51
|
}
|
|
35
52
|
|
|
53
|
+
exports.WrongBodyReaderImplementationError = WrongBodyReaderImplementationError;
|
|
36
54
|
exports.createBodyController = createBodyController;
|
|
@@ -16,6 +16,7 @@ export interface BodyController<GenericName extends string = string, GenericPara
|
|
|
16
16
|
readonly name: GenericName;
|
|
17
17
|
readonly params: GenericParams;
|
|
18
18
|
tryToCreateReader(readerImplementation: BodyReaderImplementation): E.Success<BodyReader<GenericName>> | E.Fail;
|
|
19
|
+
createReaderOrThrow(readerImplementation: BodyReaderImplementation): BodyReader<GenericName>;
|
|
19
20
|
}
|
|
20
21
|
declare const bodyControllerHandlerKind: import("@duplojs/utils").KindHandler<import("@duplojs/utils").KindDefinition<"@DuplojsHttpCore/body-controller-handler", unknown>>;
|
|
21
22
|
export interface BodyControllerHandler<GenericName extends string = string, GenericParams extends BodyControllerParams = BodyControllerParams> extends Kind<typeof bodyControllerHandlerKind.definition> {
|
|
@@ -24,5 +25,13 @@ export interface BodyControllerHandler<GenericName extends string = string, Gene
|
|
|
24
25
|
createReaderImplementation(read: BodyReaderImplementation<GenericName, GenericParams>["read"]): BodyReaderImplementation<GenericName, GenericParams>;
|
|
25
26
|
is(input: unknown): input is BodyController<GenericName, GenericParams>;
|
|
26
27
|
}
|
|
28
|
+
declare const WrongBodyReaderImplementationError_base: new (params: {
|
|
29
|
+
"@DuplojsHttpCore/wrong-body-reader-implementation"?: unknown;
|
|
30
|
+
}, parentParams: readonly [message?: string | undefined, options?: ErrorOptions | undefined]) => Error & Kind<import("@duplojs/utils").KindDefinition<"@DuplojsHttpCore/wrong-body-reader-implementation", unknown>, unknown> & Kind<import("@duplojs/utils").KindDefinition<"wrong-body-reader-implementation", unknown>, unknown>;
|
|
31
|
+
export declare class WrongBodyReaderImplementationError extends WrongBodyReaderImplementationError_base {
|
|
32
|
+
controllerName: string;
|
|
33
|
+
bodyReaderImplementation: BodyReaderImplementation;
|
|
34
|
+
constructor(controllerName: string, bodyReaderImplementation: BodyReaderImplementation);
|
|
35
|
+
}
|
|
27
36
|
export declare function createBodyController<GenericName extends string, GenericParams extends BodyControllerParams>(name: GenericName): BodyControllerHandler<GenericName, GenericParams>;
|
|
28
37
|
export {};
|