@duplojs/http 0.1.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/README.md +2 -0
- package/dist/core/builders/checker.cjs +20 -0
- package/dist/core/builders/checker.d.ts +17 -0
- package/dist/core/builders/checker.mjs +17 -0
- package/dist/core/builders/index.d.ts +4 -0
- package/dist/core/builders/preflight/builder.cjs +15 -0
- package/dist/core/builders/preflight/builder.d.ts +17 -0
- package/dist/core/builders/preflight/builder.mjs +12 -0
- package/dist/core/builders/preflight/index.d.ts +3 -0
- package/dist/core/builders/preflight/process.cjs +22 -0
- package/dist/core/builders/preflight/process.d.ts +22 -0
- package/dist/core/builders/preflight/process.mjs +20 -0
- package/dist/core/builders/preflight/route.cjs +23 -0
- package/dist/core/builders/preflight/route.d.ts +21 -0
- package/dist/core/builders/preflight/route.mjs +21 -0
- package/dist/core/builders/process/builder.cjs +17 -0
- package/dist/core/builders/process/builder.d.ts +18 -0
- package/dist/core/builders/process/builder.mjs +14 -0
- package/dist/core/builders/process/checker.cjs +23 -0
- package/dist/core/builders/process/checker.d.ts +34 -0
- package/dist/core/builders/process/checker.mjs +21 -0
- package/dist/core/builders/process/cut.cjs +22 -0
- package/dist/core/builders/process/cut.d.ts +19 -0
- package/dist/core/builders/process/cut.mjs +20 -0
- package/dist/core/builders/process/export.cjs +6 -0
- package/dist/core/builders/process/export.d.ts +12 -0
- package/dist/core/builders/process/export.mjs +4 -0
- package/dist/core/builders/process/extract.cjs +22 -0
- package/dist/core/builders/process/extract.d.ts +25 -0
- package/dist/core/builders/process/extract.mjs +20 -0
- package/dist/core/builders/process/index.d.ts +7 -0
- package/dist/core/builders/process/presetChecker.cjs +22 -0
- package/dist/core/builders/process/presetChecker.d.ts +23 -0
- package/dist/core/builders/process/presetChecker.mjs +20 -0
- package/dist/core/builders/process/process.cjs +22 -0
- package/dist/core/builders/process/process.d.ts +22 -0
- package/dist/core/builders/process/process.mjs +20 -0
- package/dist/core/builders/route/builder.cjs +18 -0
- package/dist/core/builders/route/builder.d.ts +16 -0
- package/dist/core/builders/route/builder.mjs +15 -0
- package/dist/core/builders/route/checker.cjs +23 -0
- package/dist/core/builders/route/checker.d.ts +34 -0
- package/dist/core/builders/route/checker.mjs +21 -0
- package/dist/core/builders/route/cut.cjs +22 -0
- package/dist/core/builders/route/cut.d.ts +19 -0
- package/dist/core/builders/route/cut.mjs +20 -0
- package/dist/core/builders/route/extract.cjs +22 -0
- package/dist/core/builders/route/extract.d.ts +25 -0
- package/dist/core/builders/route/extract.mjs +20 -0
- package/dist/core/builders/route/handler.cjs +28 -0
- package/dist/core/builders/route/handler.d.ts +19 -0
- package/dist/core/builders/route/handler.mjs +26 -0
- package/dist/core/builders/route/index.d.ts +8 -0
- package/dist/core/builders/route/presetChecker.cjs +22 -0
- package/dist/core/builders/route/presetChecker.d.ts +23 -0
- package/dist/core/builders/route/presetChecker.mjs +20 -0
- package/dist/core/builders/route/process.cjs +22 -0
- package/dist/core/builders/route/process.d.ts +23 -0
- package/dist/core/builders/route/process.mjs +20 -0
- package/dist/core/builders/route/store.cjs +19 -0
- package/dist/core/builders/route/store.d.ts +13 -0
- package/dist/core/builders/route/store.mjs +17 -0
- package/dist/core/checker.cjs +14 -0
- package/dist/core/checker.d.ts +22 -0
- package/dist/core/checker.mjs +10 -0
- package/dist/core/floor.d.ts +1 -0
- package/dist/core/functionsBuilders/index.d.ts +2 -0
- package/dist/core/functionsBuilders/route/build.cjs +40 -0
- package/dist/core/functionsBuilders/route/build.d.ts +8 -0
- package/dist/core/functionsBuilders/route/build.mjs +38 -0
- package/dist/core/functionsBuilders/route/create.cjs +11 -0
- package/dist/core/functionsBuilders/route/create.d.ts +16 -0
- package/dist/core/functionsBuilders/route/create.mjs +9 -0
- package/dist/core/functionsBuilders/route/default.cjs +143 -0
- package/dist/core/functionsBuilders/route/default.d.ts +1 -0
- package/dist/core/functionsBuilders/route/default.mjs +141 -0
- package/dist/core/functionsBuilders/route/hook.cjs +69 -0
- package/dist/core/functionsBuilders/route/hook.d.ts +7 -0
- package/dist/core/functionsBuilders/route/hook.mjs +62 -0
- package/dist/core/functionsBuilders/route/index.d.ts +4 -0
- package/dist/core/functionsBuilders/steps/build.cjs +24 -0
- package/dist/core/functionsBuilders/steps/build.d.ts +8 -0
- package/dist/core/functionsBuilders/steps/build.mjs +22 -0
- package/dist/core/functionsBuilders/steps/create.cjs +11 -0
- package/dist/core/functionsBuilders/steps/create.d.ts +20 -0
- package/dist/core/functionsBuilders/steps/create.mjs +9 -0
- package/dist/core/functionsBuilders/steps/defaults/checkerStep.cjs +73 -0
- package/dist/core/functionsBuilders/steps/defaults/checkerStep.d.ts +1 -0
- package/dist/core/functionsBuilders/steps/defaults/checkerStep.mjs +71 -0
- package/dist/core/functionsBuilders/steps/defaults/cutStep.cjs +58 -0
- package/dist/core/functionsBuilders/steps/defaults/cutStep.d.ts +1 -0
- package/dist/core/functionsBuilders/steps/defaults/cutStep.mjs +56 -0
- package/dist/core/functionsBuilders/steps/defaults/extractStep.cjs +57 -0
- package/dist/core/functionsBuilders/steps/defaults/extractStep.d.ts +1 -0
- package/dist/core/functionsBuilders/steps/defaults/extractStep.mjs +55 -0
- package/dist/core/functionsBuilders/steps/defaults/handlerStep.cjs +41 -0
- package/dist/core/functionsBuilders/steps/defaults/handlerStep.d.ts +1 -0
- package/dist/core/functionsBuilders/steps/defaults/handlerStep.mjs +39 -0
- package/dist/core/functionsBuilders/steps/defaults/index.d.ts +5 -0
- package/dist/core/functionsBuilders/steps/defaults/processStep.cjs +65 -0
- package/dist/core/functionsBuilders/steps/defaults/processStep.d.ts +4 -0
- package/dist/core/functionsBuilders/steps/defaults/processStep.mjs +62 -0
- package/dist/core/functionsBuilders/steps/index.d.ts +3 -0
- package/dist/core/hub/defaultExtractContract.cjs +8 -0
- package/dist/core/hub/defaultExtractContract.d.ts +6 -0
- package/dist/core/hub/defaultExtractContract.mjs +6 -0
- package/dist/core/hub/defaultNotfoundHandler.cjs +20 -0
- package/dist/core/hub/defaultNotfoundHandler.d.ts +10 -0
- package/dist/core/hub/defaultNotfoundHandler.mjs +18 -0
- package/dist/core/hub/hooks.cjs +38 -0
- package/dist/core/hub/hooks.d.ts +33 -0
- package/dist/core/hub/hooks.mjs +30 -0
- package/dist/core/hub/index.cjs +157 -0
- package/dist/core/hub/index.d.ts +58 -0
- package/dist/core/hub/index.mjs +145 -0
- package/dist/core/index.cjs +141 -0
- package/dist/core/index.d.ts +15 -0
- package/dist/core/index.mjs +57 -0
- package/dist/core/kind.cjs +9 -0
- package/dist/core/kind.d.ts +6 -0
- package/dist/core/kind.mjs +7 -0
- package/dist/core/presetChecker.cjs +39 -0
- package/dist/core/presetChecker.d.ts +38 -0
- package/dist/core/presetChecker.mjs +36 -0
- package/dist/core/process/index.cjs +12 -0
- package/dist/core/process/index.d.ts +31 -0
- package/dist/core/process/index.mjs +9 -0
- package/dist/core/process/types/index.d.ts +1 -0
- package/dist/core/request.cjs +34 -0
- package/dist/core/request.d.ts +40 -0
- package/dist/core/request.mjs +32 -0
- package/dist/core/response/contract.cjs +91 -0
- package/dist/core/response/contract.d.ts +291 -0
- package/dist/core/response/contract.mjs +91 -0
- package/dist/core/response/index.cjs +45 -0
- package/dist/core/response/index.d.ts +21 -0
- package/dist/core/response/index.mjs +39 -0
- package/dist/core/route/hooks/index.cjs +21 -0
- package/dist/core/route/hooks/index.d.ts +61 -0
- package/dist/core/route/hooks/index.mjs +16 -0
- package/dist/core/route/hooks/response.cjs +23 -0
- package/dist/core/route/hooks/response.d.ts +13 -0
- package/dist/core/route/hooks/response.mjs +21 -0
- package/dist/core/route/index.cjs +16 -0
- package/dist/core/route/index.d.ts +25 -0
- package/dist/core/route/index.mjs +10 -0
- package/dist/core/route/types/buildedRoute.d.ts +2 -0
- package/dist/core/route/types/index.d.ts +1 -0
- package/dist/core/router/buildError.cjs +14 -0
- package/dist/core/router/buildError.d.ts +9 -0
- package/dist/core/router/buildError.mjs +12 -0
- package/dist/core/router/decodeUrl.cjs +47 -0
- package/dist/core/router/decodeUrl.d.ts +7 -0
- package/dist/core/router/decodeUrl.mjs +43 -0
- package/dist/core/router/index.cjs +108 -0
- package/dist/core/router/index.d.ts +7 -0
- package/dist/core/router/index.mjs +102 -0
- package/dist/core/router/pathToRegExp.cjs +9 -0
- package/dist/core/router/pathToRegExp.d.ts +2 -0
- package/dist/core/router/pathToRegExp.mjs +7 -0
- package/dist/core/router/types/buildedRouter.d.ts +12 -0
- package/dist/core/router/types/index.d.ts +1 -0
- package/dist/core/steps/checker.cjs +13 -0
- package/dist/core/steps/checker.d.ts +19 -0
- package/dist/core/steps/checker.mjs +10 -0
- package/dist/core/steps/cut.cjs +15 -0
- package/dist/core/steps/cut.d.ts +22 -0
- package/dist/core/steps/cut.mjs +11 -0
- package/dist/core/steps/extract.cjs +13 -0
- package/dist/core/steps/extract.d.ts +18 -0
- package/dist/core/steps/extract.mjs +10 -0
- package/dist/core/steps/handler.cjs +13 -0
- package/dist/core/steps/handler.d.ts +19 -0
- package/dist/core/steps/handler.mjs +10 -0
- package/dist/core/steps/identifier.cjs +7 -0
- package/dist/core/steps/identifier.d.ts +5 -0
- package/dist/core/steps/identifier.mjs +5 -0
- package/dist/core/steps/index.d.ts +9 -0
- package/dist/core/steps/kind.cjs +7 -0
- package/dist/core/steps/kind.d.ts +3 -0
- package/dist/core/steps/kind.mjs +5 -0
- package/dist/core/steps/presetChecker.cjs +13 -0
- package/dist/core/steps/presetChecker.d.ts +14 -0
- package/dist/core/steps/presetChecker.mjs +10 -0
- package/dist/core/steps/process.cjs +13 -0
- package/dist/core/steps/process.d.ts +14 -0
- package/dist/core/steps/process.mjs +10 -0
- package/dist/core/steps/types/buildedStep.d.ts +5 -0
- package/dist/core/steps/types/index.d.ts +3 -0
- package/dist/core/steps/types/stepFunctionParams.d.ts +12 -0
- package/dist/core/steps/types/steps.d.ts +11 -0
- package/dist/core/stringIdentifier.cjs +7 -0
- package/dist/core/stringIdentifier.d.ts +1 -0
- package/dist/core/stringIdentifier.mjs +5 -0
- package/dist/core/types/environment.d.ts +4 -0
- package/dist/core/types/index.d.ts +1 -0
- package/dist/interfaces/bun/index.cjs +16 -0
- package/dist/interfaces/bun/index.d.ts +2 -0
- package/dist/interfaces/bun/index.mjs +10 -0
- package/dist/interfaces/bun/kind.cjs +9 -0
- package/dist/interfaces/bun/kind.d.ts +6 -0
- package/dist/interfaces/bun/kind.mjs +7 -0
- package/dist/interfaces/bun/types/index.d.ts +1 -0
- package/dist/interfaces/bun/types/request.d.ts +21 -0
- package/dist/interfaces/deno/index.cjs +7 -0
- package/dist/interfaces/deno/index.d.ts +2 -0
- package/dist/interfaces/deno/index.mjs +1 -0
- package/dist/interfaces/deno/kind.cjs +9 -0
- package/dist/interfaces/deno/kind.d.ts +6 -0
- package/dist/interfaces/deno/kind.mjs +7 -0
- package/dist/interfaces/deno/types/index.d.ts +1 -0
- package/dist/interfaces/deno/types/request.d.ts +21 -0
- package/dist/interfaces/node/createHttpServer.cjs +65 -0
- package/dist/interfaces/node/createHttpServer.d.ts +23 -0
- package/dist/interfaces/node/createHttpServer.mjs +63 -0
- package/dist/interfaces/node/error/bodyParseUnknownError.cjs +16 -0
- package/dist/interfaces/node/error/bodyParseUnknownError.d.ts +9 -0
- package/dist/interfaces/node/error/bodyParseUnknownError.mjs +14 -0
- package/dist/interfaces/node/error/bodyParseWrongChunkReceived.cjs +14 -0
- package/dist/interfaces/node/error/bodyParseWrongChunkReceived.d.ts +8 -0
- package/dist/interfaces/node/error/bodyParseWrongChunkReceived.mjs +12 -0
- package/dist/interfaces/node/error/bodySizeExceedsLimitError.cjs +14 -0
- package/dist/interfaces/node/error/bodySizeExceedsLimitError.d.ts +9 -0
- package/dist/interfaces/node/error/bodySizeExceedsLimitError.mjs +12 -0
- package/dist/interfaces/node/error/index.d.ts +3 -0
- package/dist/interfaces/node/hooks.cjs +119 -0
- package/dist/interfaces/node/hooks.d.ts +8 -0
- package/dist/interfaces/node/hooks.mjs +117 -0
- package/dist/interfaces/node/index.cjs +26 -0
- package/dist/interfaces/node/index.d.ts +5 -0
- package/dist/interfaces/node/index.mjs +15 -0
- package/dist/interfaces/node/kind.cjs +9 -0
- package/dist/interfaces/node/kind.d.ts +6 -0
- package/dist/interfaces/node/kind.mjs +7 -0
- package/dist/interfaces/node/types/host.d.ts +4 -0
- package/dist/interfaces/node/types/index.d.ts +2 -0
- package/dist/interfaces/node/types/request.d.ts +23 -0
- package/package.json +82 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { G, E } from '@duplojs/utils';
|
|
2
|
+
|
|
3
|
+
function buildStepFunction(step, params) {
|
|
4
|
+
const functionParams = {
|
|
5
|
+
success(value) {
|
|
6
|
+
return E.right("buildSuccess", value);
|
|
7
|
+
},
|
|
8
|
+
buildStep(step) {
|
|
9
|
+
return buildStepFunction(step, params);
|
|
10
|
+
},
|
|
11
|
+
environment: params.environment,
|
|
12
|
+
};
|
|
13
|
+
return G.asyncReduce(params.stepFunctionBuilders, G.reduceFrom(E.left("stepNotSupport", step)), async ({ element: functionBuilder, lastValue, next, exit, }) => {
|
|
14
|
+
const result = await functionBuilder(step, functionParams);
|
|
15
|
+
if (E.isLeft(result)) {
|
|
16
|
+
return next(lastValue);
|
|
17
|
+
}
|
|
18
|
+
return exit(result);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export { buildStepFunction };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@duplojs/utils');
|
|
4
|
+
|
|
5
|
+
function createStepFunctionBuilder(support, builder) {
|
|
6
|
+
return (step, params) => support(step)
|
|
7
|
+
? builder(step, params)
|
|
8
|
+
: utils.E.left("stepNotSupport", step);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
exports.createStepFunctionBuilder = createStepFunctionBuilder;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { E, type MaybePromise } from "@duplojs/utils";
|
|
2
|
+
import { type Steps } from "../../steps/types";
|
|
3
|
+
import { type Floor } from "../../floor";
|
|
4
|
+
import { type HookRouteLifeCycle } from "../../route";
|
|
5
|
+
import { type Request } from "../../request";
|
|
6
|
+
import { type Response } from "../../response";
|
|
7
|
+
import { type Environment } from "../../types";
|
|
8
|
+
export type BuildedStepFunction = (request: Request, floor: Floor) => MaybePromise<Floor | Response>;
|
|
9
|
+
export interface BuildStepResult {
|
|
10
|
+
readonly buildedFunction: BuildedStepFunction;
|
|
11
|
+
readonly hooksRouteLifeCycle: readonly HookRouteLifeCycle[];
|
|
12
|
+
}
|
|
13
|
+
export type BuildStepSuccessEither = E.EitherRight<"buildSuccess", BuildStepResult>;
|
|
14
|
+
export type BuildStepNotSupportEither = E.EitherLeft<"stepNotSupport", Steps>;
|
|
15
|
+
export interface StepFunctionBuilderParams {
|
|
16
|
+
buildStep(element: Steps): Promise<BuildStepSuccessEither | BuildStepNotSupportEither>;
|
|
17
|
+
success(result: BuildStepResult): BuildStepSuccessEither;
|
|
18
|
+
readonly environment: Environment;
|
|
19
|
+
}
|
|
20
|
+
export declare function createStepFunctionBuilder<GenericSupportStep extends Steps>(support: (step: Steps) => step is GenericSupportStep, builder: (step: GenericSupportStep, params: StepFunctionBuilderParams) => MaybePromise<BuildStepSuccessEither | BuildStepNotSupportEither>): (step: Steps, params: StepFunctionBuilderParams) => MaybePromise<BuildStepSuccessEither | BuildStepNotSupportEither>;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var checker$1 = require('../../../checker.cjs');
|
|
4
|
+
var create = require('../create.cjs');
|
|
5
|
+
require('../../../steps/kind.cjs');
|
|
6
|
+
require('../../../steps/identifier.cjs');
|
|
7
|
+
var checker = require('../../../steps/checker.cjs');
|
|
8
|
+
require('../../../steps/extract.cjs');
|
|
9
|
+
require('../../../steps/cut.cjs');
|
|
10
|
+
require('../../../steps/handler.cjs');
|
|
11
|
+
require('../../../steps/process.cjs');
|
|
12
|
+
var presetChecker = require('../../../steps/presetChecker.cjs');
|
|
13
|
+
var utils = require('@duplojs/utils');
|
|
14
|
+
var index = require('../../../response/index.cjs');
|
|
15
|
+
|
|
16
|
+
const defaultCheckerStepFunctionBuilder = create.createStepFunctionBuilder((element) => checker.checkerStepKind.has(element) || presetChecker.presetCheckerStepKind.has(element), (step, { success }) => {
|
|
17
|
+
const { checkerOptions, checkerFunction, input, responseContract, stepResult, indexing, stepOptions, } = utils.pipe(step, utils.P.when(checker.checkerStepKind.has, ({ definition }) => ({
|
|
18
|
+
checkerOptions: definition.checker.definition.options,
|
|
19
|
+
checkerFunction: definition.checker.definition.theFunction,
|
|
20
|
+
input: definition.input,
|
|
21
|
+
responseContract: definition.responseContract,
|
|
22
|
+
stepResult: definition.result,
|
|
23
|
+
indexing: definition.indexing,
|
|
24
|
+
stepOptions: definition.options,
|
|
25
|
+
})), utils.P.when(presetChecker.presetCheckerStepKind.has, ({ definition }) => ({
|
|
26
|
+
checkerOptions: definition.presetChecker.definition.checker.definition.options,
|
|
27
|
+
checkerFunction: definition.presetChecker.definition.checker.definition.theFunction,
|
|
28
|
+
input: definition.input,
|
|
29
|
+
responseContract: definition.presetChecker.definition.responseContract,
|
|
30
|
+
stepResult: definition.presetChecker.definition.result,
|
|
31
|
+
indexing: definition.presetChecker.definition.indexing,
|
|
32
|
+
stepOptions: definition.presetChecker.definition.options,
|
|
33
|
+
})), utils.P.exhaustive);
|
|
34
|
+
const getOptions = utils.pipe(stepOptions ?? checkerOptions, utils.P.when(utils.or([
|
|
35
|
+
utils.isType("object"),
|
|
36
|
+
utils.isType("undefined"),
|
|
37
|
+
]), (options) => (() => options)), utils.P.otherwise(utils.forward));
|
|
38
|
+
const output = (information, value) => checker$1.checkerOutputKind.setTo({
|
|
39
|
+
information,
|
|
40
|
+
value,
|
|
41
|
+
});
|
|
42
|
+
const expectedResult = utils.pipe(stepResult, utils.P.when(utils.isType("string"), (expectedInformation) => ((information) => information === expectedInformation)), utils.P.otherwise((expectedInformation) => ((information) => expectedInformation.includes(information))));
|
|
43
|
+
function getResponse() {
|
|
44
|
+
return new index.Response(responseContract.code, responseContract.information, undefined);
|
|
45
|
+
}
|
|
46
|
+
function treatResult(output, floor) {
|
|
47
|
+
if (!expectedResult(output.information)) {
|
|
48
|
+
return getResponse();
|
|
49
|
+
}
|
|
50
|
+
if (indexing) {
|
|
51
|
+
return {
|
|
52
|
+
...floor,
|
|
53
|
+
[indexing]: output.value,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
return floor;
|
|
57
|
+
}
|
|
58
|
+
return success({
|
|
59
|
+
buildedFunction: (_request, floor) => {
|
|
60
|
+
const result = checkerFunction(input(floor), {
|
|
61
|
+
options: getOptions(floor),
|
|
62
|
+
output,
|
|
63
|
+
});
|
|
64
|
+
if (result instanceof Promise) {
|
|
65
|
+
return result.then((awaitedResult) => treatResult(awaitedResult, floor));
|
|
66
|
+
}
|
|
67
|
+
return treatResult(result, floor);
|
|
68
|
+
},
|
|
69
|
+
hooksRouteLifeCycle: [],
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
exports.defaultCheckerStepFunctionBuilder = defaultCheckerStepFunctionBuilder;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const defaultCheckerStepFunctionBuilder: (step: import("../../../steps").Steps, params: import("..").StepFunctionBuilderParams) => import("@duplojs/utils").MaybePromise<import("..").BuildStepSuccessEither | import("..").BuildStepNotSupportEither>;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { checkerOutputKind } from '../../../checker.mjs';
|
|
2
|
+
import { createStepFunctionBuilder } from '../create.mjs';
|
|
3
|
+
import '../../../steps/kind.mjs';
|
|
4
|
+
import '../../../steps/identifier.mjs';
|
|
5
|
+
import { checkerStepKind } from '../../../steps/checker.mjs';
|
|
6
|
+
import '../../../steps/extract.mjs';
|
|
7
|
+
import '../../../steps/cut.mjs';
|
|
8
|
+
import '../../../steps/handler.mjs';
|
|
9
|
+
import '../../../steps/process.mjs';
|
|
10
|
+
import { presetCheckerStepKind } from '../../../steps/presetChecker.mjs';
|
|
11
|
+
import { pipe, P, or, isType, forward } from '@duplojs/utils';
|
|
12
|
+
import { Response } from '../../../response/index.mjs';
|
|
13
|
+
|
|
14
|
+
const defaultCheckerStepFunctionBuilder = createStepFunctionBuilder((element) => checkerStepKind.has(element) || presetCheckerStepKind.has(element), (step, { success }) => {
|
|
15
|
+
const { checkerOptions, checkerFunction, input, responseContract, stepResult, indexing, stepOptions, } = pipe(step, P.when(checkerStepKind.has, ({ definition }) => ({
|
|
16
|
+
checkerOptions: definition.checker.definition.options,
|
|
17
|
+
checkerFunction: definition.checker.definition.theFunction,
|
|
18
|
+
input: definition.input,
|
|
19
|
+
responseContract: definition.responseContract,
|
|
20
|
+
stepResult: definition.result,
|
|
21
|
+
indexing: definition.indexing,
|
|
22
|
+
stepOptions: definition.options,
|
|
23
|
+
})), P.when(presetCheckerStepKind.has, ({ definition }) => ({
|
|
24
|
+
checkerOptions: definition.presetChecker.definition.checker.definition.options,
|
|
25
|
+
checkerFunction: definition.presetChecker.definition.checker.definition.theFunction,
|
|
26
|
+
input: definition.input,
|
|
27
|
+
responseContract: definition.presetChecker.definition.responseContract,
|
|
28
|
+
stepResult: definition.presetChecker.definition.result,
|
|
29
|
+
indexing: definition.presetChecker.definition.indexing,
|
|
30
|
+
stepOptions: definition.presetChecker.definition.options,
|
|
31
|
+
})), P.exhaustive);
|
|
32
|
+
const getOptions = pipe(stepOptions ?? checkerOptions, P.when(or([
|
|
33
|
+
isType("object"),
|
|
34
|
+
isType("undefined"),
|
|
35
|
+
]), (options) => (() => options)), P.otherwise(forward));
|
|
36
|
+
const output = (information, value) => checkerOutputKind.setTo({
|
|
37
|
+
information,
|
|
38
|
+
value,
|
|
39
|
+
});
|
|
40
|
+
const expectedResult = pipe(stepResult, P.when(isType("string"), (expectedInformation) => ((information) => information === expectedInformation)), P.otherwise((expectedInformation) => ((information) => expectedInformation.includes(information))));
|
|
41
|
+
function getResponse() {
|
|
42
|
+
return new Response(responseContract.code, responseContract.information, undefined);
|
|
43
|
+
}
|
|
44
|
+
function treatResult(output, floor) {
|
|
45
|
+
if (!expectedResult(output.information)) {
|
|
46
|
+
return getResponse();
|
|
47
|
+
}
|
|
48
|
+
if (indexing) {
|
|
49
|
+
return {
|
|
50
|
+
...floor,
|
|
51
|
+
[indexing]: output.value,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
return floor;
|
|
55
|
+
}
|
|
56
|
+
return success({
|
|
57
|
+
buildedFunction: (_request, floor) => {
|
|
58
|
+
const result = checkerFunction(input(floor), {
|
|
59
|
+
options: getOptions(floor),
|
|
60
|
+
output,
|
|
61
|
+
});
|
|
62
|
+
if (result instanceof Promise) {
|
|
63
|
+
return result.then((awaitedResult) => treatResult(awaitedResult, floor));
|
|
64
|
+
}
|
|
65
|
+
return treatResult(result, floor);
|
|
66
|
+
},
|
|
67
|
+
hooksRouteLifeCycle: [],
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
export { defaultCheckerStepFunctionBuilder };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
require('../../../steps/kind.cjs');
|
|
4
|
+
require('../../../steps/identifier.cjs');
|
|
5
|
+
require('../../../steps/checker.cjs');
|
|
6
|
+
require('../../../steps/extract.cjs');
|
|
7
|
+
var cut = require('../../../steps/cut.cjs');
|
|
8
|
+
require('../../../steps/handler.cjs');
|
|
9
|
+
require('../../../steps/process.cjs');
|
|
10
|
+
require('../../../steps/presetChecker.cjs');
|
|
11
|
+
var create = require('../create.cjs');
|
|
12
|
+
var utils = require('@duplojs/utils');
|
|
13
|
+
var index = require('../../../response/index.cjs');
|
|
14
|
+
var contract = require('../../../response/contract.cjs');
|
|
15
|
+
|
|
16
|
+
const defaultCutStepFunctionBuilder = create.createStepFunctionBuilder(cut.cutStepKind.has, (step, { success }) => {
|
|
17
|
+
const { responseContract, theFunction: cutFunction, } = step.definition;
|
|
18
|
+
const output = (data) => cut.cutStepOutputKind.setTo(utils.wrapValue(data ?? {}));
|
|
19
|
+
const preparedContractResponse = utils.A.reduce(utils.A.coalescing(responseContract), utils.A.reduceFrom({}), ({ element, lastValue, nextWithObject }) => nextWithObject(lastValue, {
|
|
20
|
+
[element.information]: element,
|
|
21
|
+
}));
|
|
22
|
+
const response = (information, body) => {
|
|
23
|
+
const currentContract = preparedContractResponse[information];
|
|
24
|
+
if (!currentContract) {
|
|
25
|
+
throw new contract.ResponseContract.Error(information);
|
|
26
|
+
}
|
|
27
|
+
const result = currentContract.schema.parse(body);
|
|
28
|
+
if (utils.E.isLeft(result)) {
|
|
29
|
+
throw new contract.ResponseContract.Error(information, utils.unwrap(result));
|
|
30
|
+
}
|
|
31
|
+
return new index.Response(currentContract.code, currentContract.information, body);
|
|
32
|
+
};
|
|
33
|
+
function treatResult(result, floor) {
|
|
34
|
+
if (cut.cutStepOutputKind.has(result)) {
|
|
35
|
+
return {
|
|
36
|
+
...floor,
|
|
37
|
+
...utils.unwrap(result),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
return success({
|
|
43
|
+
buildedFunction: (request, floor) => {
|
|
44
|
+
const result = cutFunction(floor, {
|
|
45
|
+
request,
|
|
46
|
+
output,
|
|
47
|
+
response,
|
|
48
|
+
});
|
|
49
|
+
if (result instanceof Promise) {
|
|
50
|
+
return result.then((awaitedResult) => treatResult(awaitedResult, floor));
|
|
51
|
+
}
|
|
52
|
+
return treatResult(result, floor);
|
|
53
|
+
},
|
|
54
|
+
hooksRouteLifeCycle: [],
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
exports.defaultCutStepFunctionBuilder = defaultCutStepFunctionBuilder;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const defaultCutStepFunctionBuilder: (step: import("../../../steps").Steps, params: import("..").StepFunctionBuilderParams) => import("@duplojs/utils").MaybePromise<import("..").BuildStepSuccessEither | import("..").BuildStepNotSupportEither>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import '../../../steps/kind.mjs';
|
|
2
|
+
import '../../../steps/identifier.mjs';
|
|
3
|
+
import '../../../steps/checker.mjs';
|
|
4
|
+
import '../../../steps/extract.mjs';
|
|
5
|
+
import { cutStepKind, cutStepOutputKind } from '../../../steps/cut.mjs';
|
|
6
|
+
import '../../../steps/handler.mjs';
|
|
7
|
+
import '../../../steps/process.mjs';
|
|
8
|
+
import '../../../steps/presetChecker.mjs';
|
|
9
|
+
import { createStepFunctionBuilder } from '../create.mjs';
|
|
10
|
+
import { A, wrapValue, E, unwrap } from '@duplojs/utils';
|
|
11
|
+
import { Response } from '../../../response/index.mjs';
|
|
12
|
+
import { ResponseContract } from '../../../response/contract.mjs';
|
|
13
|
+
|
|
14
|
+
const defaultCutStepFunctionBuilder = createStepFunctionBuilder(cutStepKind.has, (step, { success }) => {
|
|
15
|
+
const { responseContract, theFunction: cutFunction, } = step.definition;
|
|
16
|
+
const output = (data) => cutStepOutputKind.setTo(wrapValue(data ?? {}));
|
|
17
|
+
const preparedContractResponse = A.reduce(A.coalescing(responseContract), A.reduceFrom({}), ({ element, lastValue, nextWithObject }) => nextWithObject(lastValue, {
|
|
18
|
+
[element.information]: element,
|
|
19
|
+
}));
|
|
20
|
+
const response = (information, body) => {
|
|
21
|
+
const currentContract = preparedContractResponse[information];
|
|
22
|
+
if (!currentContract) {
|
|
23
|
+
throw new ResponseContract.Error(information);
|
|
24
|
+
}
|
|
25
|
+
const result = currentContract.schema.parse(body);
|
|
26
|
+
if (E.isLeft(result)) {
|
|
27
|
+
throw new ResponseContract.Error(information, unwrap(result));
|
|
28
|
+
}
|
|
29
|
+
return new Response(currentContract.code, currentContract.information, body);
|
|
30
|
+
};
|
|
31
|
+
function treatResult(result, floor) {
|
|
32
|
+
if (cutStepOutputKind.has(result)) {
|
|
33
|
+
return {
|
|
34
|
+
...floor,
|
|
35
|
+
...unwrap(result),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
40
|
+
return success({
|
|
41
|
+
buildedFunction: (request, floor) => {
|
|
42
|
+
const result = cutFunction(floor, {
|
|
43
|
+
request,
|
|
44
|
+
output,
|
|
45
|
+
response,
|
|
46
|
+
});
|
|
47
|
+
if (result instanceof Promise) {
|
|
48
|
+
return result.then((awaitedResult) => treatResult(awaitedResult, floor));
|
|
49
|
+
}
|
|
50
|
+
return treatResult(result, floor);
|
|
51
|
+
},
|
|
52
|
+
hooksRouteLifeCycle: [],
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
export { defaultCutStepFunctionBuilder };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
require('../../../steps/kind.cjs');
|
|
4
|
+
require('../../../steps/identifier.cjs');
|
|
5
|
+
require('../../../steps/checker.cjs');
|
|
6
|
+
var extract = require('../../../steps/extract.cjs');
|
|
7
|
+
require('../../../steps/cut.cjs');
|
|
8
|
+
require('../../../steps/handler.cjs');
|
|
9
|
+
require('../../../steps/process.cjs');
|
|
10
|
+
require('../../../steps/presetChecker.cjs');
|
|
11
|
+
var utils = require('@duplojs/utils');
|
|
12
|
+
var index = require('../../../response/index.cjs');
|
|
13
|
+
var create = require('../create.cjs');
|
|
14
|
+
var contract = require('../../../response/contract.cjs');
|
|
15
|
+
|
|
16
|
+
const defaultExtractStepFunctionBuilder = create.createStepFunctionBuilder(extract.extractStepKind.has, (step, { success, environment }) => {
|
|
17
|
+
const { shape, responseContract: stepResponseContract, } = step.definition;
|
|
18
|
+
const responseContract = stepResponseContract ?? contract.ResponseContract
|
|
19
|
+
.unprocessableContent("extract-error");
|
|
20
|
+
function getResponse(result, key, subKey) {
|
|
21
|
+
const response = new index.Response(responseContract.code, responseContract.information, environment === "DEV"
|
|
22
|
+
? utils.unwrap(result)
|
|
23
|
+
: undefined);
|
|
24
|
+
return subKey === undefined
|
|
25
|
+
? response.setHeader("extract-key", `request.${key}`)
|
|
26
|
+
: response.setHeader("extract-key", `request.${key}.${subKey}`);
|
|
27
|
+
}
|
|
28
|
+
function treatResult(result, floor, key, subKey) {
|
|
29
|
+
if (utils.E.isLeft(result)) {
|
|
30
|
+
return getResponse(result, key, subKey);
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
...floor,
|
|
34
|
+
[subKey ?? key]: utils.unwrap(result),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const extractors = utils.A.reduce(utils.O.entries(shape), utils.A.reduceFrom([]), ({ lastValue, element: [key, value], next }) => next(utils.DP.dataParserKind.has(value)
|
|
38
|
+
? utils.A.push(lastValue, (request, floor) => treatResult(value.parse(request[key]), floor, key))
|
|
39
|
+
: utils.pipe(value, utils.P.when(utils.isType("undefined"), utils.justReturn(lastValue)), utils.P.otherwise(utils.innerPipe(utils.O.entries, utils.A.map(([subKey, subValue]) => ((request, floor) => treatResult(subValue.parse(request[key]?.[subKey]), floor, key, subKey))), (subExtractor) => utils.A.concat(lastValue, subExtractor))))));
|
|
40
|
+
return success({
|
|
41
|
+
buildedFunction: (request, floor) => {
|
|
42
|
+
let newFloor = floor;
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/prefer-for-of
|
|
44
|
+
for (let index$1 = 0; index$1 < extractors.length; index$1++) {
|
|
45
|
+
const result = extractors[index$1](request, newFloor);
|
|
46
|
+
if (result instanceof index.Response) {
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
newFloor = result;
|
|
50
|
+
}
|
|
51
|
+
return newFloor;
|
|
52
|
+
},
|
|
53
|
+
hooksRouteLifeCycle: [],
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
exports.defaultExtractStepFunctionBuilder = defaultExtractStepFunctionBuilder;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const defaultExtractStepFunctionBuilder: (step: import("../../../steps").Steps, params: import("..").StepFunctionBuilderParams) => import("@duplojs/utils").MaybePromise<import("..").BuildStepSuccessEither | import("..").BuildStepNotSupportEither>;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import '../../../steps/kind.mjs';
|
|
2
|
+
import '../../../steps/identifier.mjs';
|
|
3
|
+
import '../../../steps/checker.mjs';
|
|
4
|
+
import { extractStepKind } from '../../../steps/extract.mjs';
|
|
5
|
+
import '../../../steps/cut.mjs';
|
|
6
|
+
import '../../../steps/handler.mjs';
|
|
7
|
+
import '../../../steps/process.mjs';
|
|
8
|
+
import '../../../steps/presetChecker.mjs';
|
|
9
|
+
import { A, O, pipe, DP, P, isType, justReturn, innerPipe, E, unwrap } from '@duplojs/utils';
|
|
10
|
+
import { Response } from '../../../response/index.mjs';
|
|
11
|
+
import { createStepFunctionBuilder } from '../create.mjs';
|
|
12
|
+
import { ResponseContract } from '../../../response/contract.mjs';
|
|
13
|
+
|
|
14
|
+
const defaultExtractStepFunctionBuilder = createStepFunctionBuilder(extractStepKind.has, (step, { success, environment }) => {
|
|
15
|
+
const { shape, responseContract: stepResponseContract, } = step.definition;
|
|
16
|
+
const responseContract = stepResponseContract ?? ResponseContract
|
|
17
|
+
.unprocessableContent("extract-error");
|
|
18
|
+
function getResponse(result, key, subKey) {
|
|
19
|
+
const response = new Response(responseContract.code, responseContract.information, environment === "DEV"
|
|
20
|
+
? unwrap(result)
|
|
21
|
+
: undefined);
|
|
22
|
+
return subKey === undefined
|
|
23
|
+
? response.setHeader("extract-key", `request.${key}`)
|
|
24
|
+
: response.setHeader("extract-key", `request.${key}.${subKey}`);
|
|
25
|
+
}
|
|
26
|
+
function treatResult(result, floor, key, subKey) {
|
|
27
|
+
if (E.isLeft(result)) {
|
|
28
|
+
return getResponse(result, key, subKey);
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
...floor,
|
|
32
|
+
[subKey ?? key]: unwrap(result),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
const extractors = A.reduce(O.entries(shape), A.reduceFrom([]), ({ lastValue, element: [key, value], next }) => next(DP.dataParserKind.has(value)
|
|
36
|
+
? A.push(lastValue, (request, floor) => treatResult(value.parse(request[key]), floor, key))
|
|
37
|
+
: pipe(value, P.when(isType("undefined"), justReturn(lastValue)), P.otherwise(innerPipe(O.entries, A.map(([subKey, subValue]) => ((request, floor) => treatResult(subValue.parse(request[key]?.[subKey]), floor, key, subKey))), (subExtractor) => A.concat(lastValue, subExtractor))))));
|
|
38
|
+
return success({
|
|
39
|
+
buildedFunction: (request, floor) => {
|
|
40
|
+
let newFloor = floor;
|
|
41
|
+
// eslint-disable-next-line @typescript-eslint/prefer-for-of
|
|
42
|
+
for (let index = 0; index < extractors.length; index++) {
|
|
43
|
+
const result = extractors[index](request, newFloor);
|
|
44
|
+
if (result instanceof Response) {
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
newFloor = result;
|
|
48
|
+
}
|
|
49
|
+
return newFloor;
|
|
50
|
+
},
|
|
51
|
+
hooksRouteLifeCycle: [],
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
export { defaultExtractStepFunctionBuilder };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
require('../../../steps/kind.cjs');
|
|
4
|
+
require('../../../steps/identifier.cjs');
|
|
5
|
+
require('../../../steps/checker.cjs');
|
|
6
|
+
require('../../../steps/extract.cjs');
|
|
7
|
+
require('../../../steps/cut.cjs');
|
|
8
|
+
var handler = require('../../../steps/handler.cjs');
|
|
9
|
+
require('../../../steps/process.cjs');
|
|
10
|
+
require('../../../steps/presetChecker.cjs');
|
|
11
|
+
var create = require('../create.cjs');
|
|
12
|
+
var utils = require('@duplojs/utils');
|
|
13
|
+
var index = require('../../../response/index.cjs');
|
|
14
|
+
var contract = require('../../../response/contract.cjs');
|
|
15
|
+
|
|
16
|
+
const defaultHandlerStepFunctionBuilder = create.createStepFunctionBuilder(handler.handlerStepKind.has, (step, { success }) => {
|
|
17
|
+
const { responseContract, theFunction: handlerFunction, } = step.definition;
|
|
18
|
+
const preparedContractResponse = utils.A.reduce(utils.A.coalescing(responseContract), utils.A.reduceFrom({}), ({ element, lastValue, nextWithObject }) => nextWithObject(lastValue, {
|
|
19
|
+
[element.information]: element,
|
|
20
|
+
}));
|
|
21
|
+
const response = (information, body) => {
|
|
22
|
+
const currentContract = preparedContractResponse[information];
|
|
23
|
+
if (!currentContract) {
|
|
24
|
+
throw new contract.ResponseContract.Error(information);
|
|
25
|
+
}
|
|
26
|
+
const result = currentContract.schema.parse(body);
|
|
27
|
+
if (utils.E.isLeft(result)) {
|
|
28
|
+
throw new contract.ResponseContract.Error(information, utils.unwrap(result));
|
|
29
|
+
}
|
|
30
|
+
return new index.Response(currentContract.code, currentContract.information, body);
|
|
31
|
+
};
|
|
32
|
+
return success({
|
|
33
|
+
buildedFunction: (request, floor) => handlerFunction(floor, {
|
|
34
|
+
request,
|
|
35
|
+
response,
|
|
36
|
+
}),
|
|
37
|
+
hooksRouteLifeCycle: [],
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
exports.defaultHandlerStepFunctionBuilder = defaultHandlerStepFunctionBuilder;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const defaultHandlerStepFunctionBuilder: (step: import("../../../steps").Steps, params: import("..").StepFunctionBuilderParams) => import("@duplojs/utils").MaybePromise<import("..").BuildStepSuccessEither | import("..").BuildStepNotSupportEither>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import '../../../steps/kind.mjs';
|
|
2
|
+
import '../../../steps/identifier.mjs';
|
|
3
|
+
import '../../../steps/checker.mjs';
|
|
4
|
+
import '../../../steps/extract.mjs';
|
|
5
|
+
import '../../../steps/cut.mjs';
|
|
6
|
+
import { handlerStepKind } from '../../../steps/handler.mjs';
|
|
7
|
+
import '../../../steps/process.mjs';
|
|
8
|
+
import '../../../steps/presetChecker.mjs';
|
|
9
|
+
import { createStepFunctionBuilder } from '../create.mjs';
|
|
10
|
+
import { A, E, unwrap } from '@duplojs/utils';
|
|
11
|
+
import { Response } from '../../../response/index.mjs';
|
|
12
|
+
import { ResponseContract } from '../../../response/contract.mjs';
|
|
13
|
+
|
|
14
|
+
const defaultHandlerStepFunctionBuilder = createStepFunctionBuilder(handlerStepKind.has, (step, { success }) => {
|
|
15
|
+
const { responseContract, theFunction: handlerFunction, } = step.definition;
|
|
16
|
+
const preparedContractResponse = A.reduce(A.coalescing(responseContract), A.reduceFrom({}), ({ element, lastValue, nextWithObject }) => nextWithObject(lastValue, {
|
|
17
|
+
[element.information]: element,
|
|
18
|
+
}));
|
|
19
|
+
const response = (information, body) => {
|
|
20
|
+
const currentContract = preparedContractResponse[information];
|
|
21
|
+
if (!currentContract) {
|
|
22
|
+
throw new ResponseContract.Error(information);
|
|
23
|
+
}
|
|
24
|
+
const result = currentContract.schema.parse(body);
|
|
25
|
+
if (E.isLeft(result)) {
|
|
26
|
+
throw new ResponseContract.Error(information, unwrap(result));
|
|
27
|
+
}
|
|
28
|
+
return new Response(currentContract.code, currentContract.information, body);
|
|
29
|
+
};
|
|
30
|
+
return success({
|
|
31
|
+
buildedFunction: (request, floor) => handlerFunction(floor, {
|
|
32
|
+
request,
|
|
33
|
+
response,
|
|
34
|
+
}),
|
|
35
|
+
hooksRouteLifeCycle: [],
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
export { defaultHandlerStepFunctionBuilder };
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
require('../../../steps/kind.cjs');
|
|
4
|
+
require('../../../steps/identifier.cjs');
|
|
5
|
+
require('../../../steps/checker.cjs');
|
|
6
|
+
require('../../../steps/extract.cjs');
|
|
7
|
+
require('../../../steps/cut.cjs');
|
|
8
|
+
require('../../../steps/handler.cjs');
|
|
9
|
+
var process = require('../../../steps/process.cjs');
|
|
10
|
+
require('../../../steps/presetChecker.cjs');
|
|
11
|
+
var index = require('../../../response/index.cjs');
|
|
12
|
+
var create = require('../create.cjs');
|
|
13
|
+
var utils = require('@duplojs/utils');
|
|
14
|
+
|
|
15
|
+
function buildStepsFunction(steps, buildStep) {
|
|
16
|
+
return utils.G.asyncReduce(steps, utils.G.reduceFrom([]), async ({ lastValue, element: step, next, exit }) => {
|
|
17
|
+
const result = await buildStep(step);
|
|
18
|
+
if (utils.E.isLeft(result)) {
|
|
19
|
+
return exit(result);
|
|
20
|
+
}
|
|
21
|
+
return next(utils.A.push(lastValue, utils.unwrap(result)));
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
const defaultProcessStepFunctionBuilder = create.createStepFunctionBuilder(process.processStepKind.has, async (step, { success, buildStep }) => {
|
|
25
|
+
const { process, imports, options: stepOptions, } = step.definition;
|
|
26
|
+
const { steps, hooks: processHook, options: processOptions, } = process.definition;
|
|
27
|
+
const maybeBuildedSteps = await buildStepsFunction(steps, buildStep);
|
|
28
|
+
if (utils.E.isLeft(maybeBuildedSteps)) {
|
|
29
|
+
return maybeBuildedSteps;
|
|
30
|
+
}
|
|
31
|
+
const buildedSteps = maybeBuildedSteps;
|
|
32
|
+
const getOptions = utils.pipe(stepOptions ?? processOptions, utils.P.when(utils.or([
|
|
33
|
+
utils.isType("object"),
|
|
34
|
+
utils.isType("undefined"),
|
|
35
|
+
]), (options) => (() => options)), utils.P.otherwise(utils.forward));
|
|
36
|
+
return success({
|
|
37
|
+
buildedFunction: async (request, floor) => {
|
|
38
|
+
let processFloor = { options: getOptions(floor) };
|
|
39
|
+
// eslint-disable-next-line @typescript-eslint/prefer-for-of
|
|
40
|
+
for (let index$1 = 0; index$1 < buildedSteps.length; index$1++) {
|
|
41
|
+
const result = await buildedSteps[index$1].buildedFunction(request, floor);
|
|
42
|
+
if (result instanceof index.Response) {
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
processFloor = result;
|
|
46
|
+
}
|
|
47
|
+
if (imports) {
|
|
48
|
+
const newFloor = { ...floor };
|
|
49
|
+
// eslint-disable-next-line @typescript-eslint/prefer-for-of
|
|
50
|
+
for (let index = 0; index < imports.length; index++) {
|
|
51
|
+
newFloor[imports[index]] = processFloor[imports[index]];
|
|
52
|
+
}
|
|
53
|
+
return newFloor;
|
|
54
|
+
}
|
|
55
|
+
return floor;
|
|
56
|
+
},
|
|
57
|
+
hooksRouteLifeCycle: [
|
|
58
|
+
...processHook,
|
|
59
|
+
...utils.A.flatMap(buildedSteps, ({ hooksRouteLifeCycle }) => hooksRouteLifeCycle),
|
|
60
|
+
],
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
exports.buildStepsFunction = buildStepsFunction;
|
|
65
|
+
exports.defaultProcessStepFunctionBuilder = defaultProcessStepFunctionBuilder;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type Steps } from "../../../steps";
|
|
2
|
+
import { type BuildStepResult, type StepFunctionBuilderParams } from "../create";
|
|
3
|
+
export declare function buildStepsFunction(steps: readonly Steps[], buildStep: StepFunctionBuilderParams["buildStep"]): Promise<import("..").BuildStepNotSupportEither | BuildStepResult[]>;
|
|
4
|
+
export declare const defaultProcessStepFunctionBuilder: (step: Steps, params: StepFunctionBuilderParams) => import("@duplojs/utils").MaybePromise<import("..").BuildStepSuccessEither | import("..").BuildStepNotSupportEither>;
|