@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.
Files changed (238) hide show
  1. package/README.md +2 -0
  2. package/dist/core/builders/checker.cjs +20 -0
  3. package/dist/core/builders/checker.d.ts +17 -0
  4. package/dist/core/builders/checker.mjs +17 -0
  5. package/dist/core/builders/index.d.ts +4 -0
  6. package/dist/core/builders/preflight/builder.cjs +15 -0
  7. package/dist/core/builders/preflight/builder.d.ts +17 -0
  8. package/dist/core/builders/preflight/builder.mjs +12 -0
  9. package/dist/core/builders/preflight/index.d.ts +3 -0
  10. package/dist/core/builders/preflight/process.cjs +22 -0
  11. package/dist/core/builders/preflight/process.d.ts +22 -0
  12. package/dist/core/builders/preflight/process.mjs +20 -0
  13. package/dist/core/builders/preflight/route.cjs +23 -0
  14. package/dist/core/builders/preflight/route.d.ts +21 -0
  15. package/dist/core/builders/preflight/route.mjs +21 -0
  16. package/dist/core/builders/process/builder.cjs +17 -0
  17. package/dist/core/builders/process/builder.d.ts +18 -0
  18. package/dist/core/builders/process/builder.mjs +14 -0
  19. package/dist/core/builders/process/checker.cjs +23 -0
  20. package/dist/core/builders/process/checker.d.ts +34 -0
  21. package/dist/core/builders/process/checker.mjs +21 -0
  22. package/dist/core/builders/process/cut.cjs +22 -0
  23. package/dist/core/builders/process/cut.d.ts +19 -0
  24. package/dist/core/builders/process/cut.mjs +20 -0
  25. package/dist/core/builders/process/export.cjs +6 -0
  26. package/dist/core/builders/process/export.d.ts +12 -0
  27. package/dist/core/builders/process/export.mjs +4 -0
  28. package/dist/core/builders/process/extract.cjs +22 -0
  29. package/dist/core/builders/process/extract.d.ts +25 -0
  30. package/dist/core/builders/process/extract.mjs +20 -0
  31. package/dist/core/builders/process/index.d.ts +7 -0
  32. package/dist/core/builders/process/presetChecker.cjs +22 -0
  33. package/dist/core/builders/process/presetChecker.d.ts +23 -0
  34. package/dist/core/builders/process/presetChecker.mjs +20 -0
  35. package/dist/core/builders/process/process.cjs +22 -0
  36. package/dist/core/builders/process/process.d.ts +22 -0
  37. package/dist/core/builders/process/process.mjs +20 -0
  38. package/dist/core/builders/route/builder.cjs +18 -0
  39. package/dist/core/builders/route/builder.d.ts +16 -0
  40. package/dist/core/builders/route/builder.mjs +15 -0
  41. package/dist/core/builders/route/checker.cjs +23 -0
  42. package/dist/core/builders/route/checker.d.ts +34 -0
  43. package/dist/core/builders/route/checker.mjs +21 -0
  44. package/dist/core/builders/route/cut.cjs +22 -0
  45. package/dist/core/builders/route/cut.d.ts +19 -0
  46. package/dist/core/builders/route/cut.mjs +20 -0
  47. package/dist/core/builders/route/extract.cjs +22 -0
  48. package/dist/core/builders/route/extract.d.ts +25 -0
  49. package/dist/core/builders/route/extract.mjs +20 -0
  50. package/dist/core/builders/route/handler.cjs +28 -0
  51. package/dist/core/builders/route/handler.d.ts +19 -0
  52. package/dist/core/builders/route/handler.mjs +26 -0
  53. package/dist/core/builders/route/index.d.ts +8 -0
  54. package/dist/core/builders/route/presetChecker.cjs +22 -0
  55. package/dist/core/builders/route/presetChecker.d.ts +23 -0
  56. package/dist/core/builders/route/presetChecker.mjs +20 -0
  57. package/dist/core/builders/route/process.cjs +22 -0
  58. package/dist/core/builders/route/process.d.ts +23 -0
  59. package/dist/core/builders/route/process.mjs +20 -0
  60. package/dist/core/builders/route/store.cjs +19 -0
  61. package/dist/core/builders/route/store.d.ts +13 -0
  62. package/dist/core/builders/route/store.mjs +17 -0
  63. package/dist/core/checker.cjs +14 -0
  64. package/dist/core/checker.d.ts +22 -0
  65. package/dist/core/checker.mjs +10 -0
  66. package/dist/core/floor.d.ts +1 -0
  67. package/dist/core/functionsBuilders/index.d.ts +2 -0
  68. package/dist/core/functionsBuilders/route/build.cjs +40 -0
  69. package/dist/core/functionsBuilders/route/build.d.ts +8 -0
  70. package/dist/core/functionsBuilders/route/build.mjs +38 -0
  71. package/dist/core/functionsBuilders/route/create.cjs +11 -0
  72. package/dist/core/functionsBuilders/route/create.d.ts +16 -0
  73. package/dist/core/functionsBuilders/route/create.mjs +9 -0
  74. package/dist/core/functionsBuilders/route/default.cjs +143 -0
  75. package/dist/core/functionsBuilders/route/default.d.ts +1 -0
  76. package/dist/core/functionsBuilders/route/default.mjs +141 -0
  77. package/dist/core/functionsBuilders/route/hook.cjs +69 -0
  78. package/dist/core/functionsBuilders/route/hook.d.ts +7 -0
  79. package/dist/core/functionsBuilders/route/hook.mjs +62 -0
  80. package/dist/core/functionsBuilders/route/index.d.ts +4 -0
  81. package/dist/core/functionsBuilders/steps/build.cjs +24 -0
  82. package/dist/core/functionsBuilders/steps/build.d.ts +8 -0
  83. package/dist/core/functionsBuilders/steps/build.mjs +22 -0
  84. package/dist/core/functionsBuilders/steps/create.cjs +11 -0
  85. package/dist/core/functionsBuilders/steps/create.d.ts +20 -0
  86. package/dist/core/functionsBuilders/steps/create.mjs +9 -0
  87. package/dist/core/functionsBuilders/steps/defaults/checkerStep.cjs +73 -0
  88. package/dist/core/functionsBuilders/steps/defaults/checkerStep.d.ts +1 -0
  89. package/dist/core/functionsBuilders/steps/defaults/checkerStep.mjs +71 -0
  90. package/dist/core/functionsBuilders/steps/defaults/cutStep.cjs +58 -0
  91. package/dist/core/functionsBuilders/steps/defaults/cutStep.d.ts +1 -0
  92. package/dist/core/functionsBuilders/steps/defaults/cutStep.mjs +56 -0
  93. package/dist/core/functionsBuilders/steps/defaults/extractStep.cjs +57 -0
  94. package/dist/core/functionsBuilders/steps/defaults/extractStep.d.ts +1 -0
  95. package/dist/core/functionsBuilders/steps/defaults/extractStep.mjs +55 -0
  96. package/dist/core/functionsBuilders/steps/defaults/handlerStep.cjs +41 -0
  97. package/dist/core/functionsBuilders/steps/defaults/handlerStep.d.ts +1 -0
  98. package/dist/core/functionsBuilders/steps/defaults/handlerStep.mjs +39 -0
  99. package/dist/core/functionsBuilders/steps/defaults/index.d.ts +5 -0
  100. package/dist/core/functionsBuilders/steps/defaults/processStep.cjs +65 -0
  101. package/dist/core/functionsBuilders/steps/defaults/processStep.d.ts +4 -0
  102. package/dist/core/functionsBuilders/steps/defaults/processStep.mjs +62 -0
  103. package/dist/core/functionsBuilders/steps/index.d.ts +3 -0
  104. package/dist/core/hub/defaultExtractContract.cjs +8 -0
  105. package/dist/core/hub/defaultExtractContract.d.ts +6 -0
  106. package/dist/core/hub/defaultExtractContract.mjs +6 -0
  107. package/dist/core/hub/defaultNotfoundHandler.cjs +20 -0
  108. package/dist/core/hub/defaultNotfoundHandler.d.ts +10 -0
  109. package/dist/core/hub/defaultNotfoundHandler.mjs +18 -0
  110. package/dist/core/hub/hooks.cjs +38 -0
  111. package/dist/core/hub/hooks.d.ts +33 -0
  112. package/dist/core/hub/hooks.mjs +30 -0
  113. package/dist/core/hub/index.cjs +157 -0
  114. package/dist/core/hub/index.d.ts +58 -0
  115. package/dist/core/hub/index.mjs +145 -0
  116. package/dist/core/index.cjs +141 -0
  117. package/dist/core/index.d.ts +15 -0
  118. package/dist/core/index.mjs +57 -0
  119. package/dist/core/kind.cjs +9 -0
  120. package/dist/core/kind.d.ts +6 -0
  121. package/dist/core/kind.mjs +7 -0
  122. package/dist/core/presetChecker.cjs +39 -0
  123. package/dist/core/presetChecker.d.ts +38 -0
  124. package/dist/core/presetChecker.mjs +36 -0
  125. package/dist/core/process/index.cjs +12 -0
  126. package/dist/core/process/index.d.ts +31 -0
  127. package/dist/core/process/index.mjs +9 -0
  128. package/dist/core/process/types/index.d.ts +1 -0
  129. package/dist/core/request.cjs +34 -0
  130. package/dist/core/request.d.ts +40 -0
  131. package/dist/core/request.mjs +32 -0
  132. package/dist/core/response/contract.cjs +91 -0
  133. package/dist/core/response/contract.d.ts +291 -0
  134. package/dist/core/response/contract.mjs +91 -0
  135. package/dist/core/response/index.cjs +45 -0
  136. package/dist/core/response/index.d.ts +21 -0
  137. package/dist/core/response/index.mjs +39 -0
  138. package/dist/core/route/hooks/index.cjs +21 -0
  139. package/dist/core/route/hooks/index.d.ts +61 -0
  140. package/dist/core/route/hooks/index.mjs +16 -0
  141. package/dist/core/route/hooks/response.cjs +23 -0
  142. package/dist/core/route/hooks/response.d.ts +13 -0
  143. package/dist/core/route/hooks/response.mjs +21 -0
  144. package/dist/core/route/index.cjs +16 -0
  145. package/dist/core/route/index.d.ts +25 -0
  146. package/dist/core/route/index.mjs +10 -0
  147. package/dist/core/route/types/buildedRoute.d.ts +2 -0
  148. package/dist/core/route/types/index.d.ts +1 -0
  149. package/dist/core/router/buildError.cjs +14 -0
  150. package/dist/core/router/buildError.d.ts +9 -0
  151. package/dist/core/router/buildError.mjs +12 -0
  152. package/dist/core/router/decodeUrl.cjs +47 -0
  153. package/dist/core/router/decodeUrl.d.ts +7 -0
  154. package/dist/core/router/decodeUrl.mjs +43 -0
  155. package/dist/core/router/index.cjs +108 -0
  156. package/dist/core/router/index.d.ts +7 -0
  157. package/dist/core/router/index.mjs +102 -0
  158. package/dist/core/router/pathToRegExp.cjs +9 -0
  159. package/dist/core/router/pathToRegExp.d.ts +2 -0
  160. package/dist/core/router/pathToRegExp.mjs +7 -0
  161. package/dist/core/router/types/buildedRouter.d.ts +12 -0
  162. package/dist/core/router/types/index.d.ts +1 -0
  163. package/dist/core/steps/checker.cjs +13 -0
  164. package/dist/core/steps/checker.d.ts +19 -0
  165. package/dist/core/steps/checker.mjs +10 -0
  166. package/dist/core/steps/cut.cjs +15 -0
  167. package/dist/core/steps/cut.d.ts +22 -0
  168. package/dist/core/steps/cut.mjs +11 -0
  169. package/dist/core/steps/extract.cjs +13 -0
  170. package/dist/core/steps/extract.d.ts +18 -0
  171. package/dist/core/steps/extract.mjs +10 -0
  172. package/dist/core/steps/handler.cjs +13 -0
  173. package/dist/core/steps/handler.d.ts +19 -0
  174. package/dist/core/steps/handler.mjs +10 -0
  175. package/dist/core/steps/identifier.cjs +7 -0
  176. package/dist/core/steps/identifier.d.ts +5 -0
  177. package/dist/core/steps/identifier.mjs +5 -0
  178. package/dist/core/steps/index.d.ts +9 -0
  179. package/dist/core/steps/kind.cjs +7 -0
  180. package/dist/core/steps/kind.d.ts +3 -0
  181. package/dist/core/steps/kind.mjs +5 -0
  182. package/dist/core/steps/presetChecker.cjs +13 -0
  183. package/dist/core/steps/presetChecker.d.ts +14 -0
  184. package/dist/core/steps/presetChecker.mjs +10 -0
  185. package/dist/core/steps/process.cjs +13 -0
  186. package/dist/core/steps/process.d.ts +14 -0
  187. package/dist/core/steps/process.mjs +10 -0
  188. package/dist/core/steps/types/buildedStep.d.ts +5 -0
  189. package/dist/core/steps/types/index.d.ts +3 -0
  190. package/dist/core/steps/types/stepFunctionParams.d.ts +12 -0
  191. package/dist/core/steps/types/steps.d.ts +11 -0
  192. package/dist/core/stringIdentifier.cjs +7 -0
  193. package/dist/core/stringIdentifier.d.ts +1 -0
  194. package/dist/core/stringIdentifier.mjs +5 -0
  195. package/dist/core/types/environment.d.ts +4 -0
  196. package/dist/core/types/index.d.ts +1 -0
  197. package/dist/interfaces/bun/index.cjs +16 -0
  198. package/dist/interfaces/bun/index.d.ts +2 -0
  199. package/dist/interfaces/bun/index.mjs +10 -0
  200. package/dist/interfaces/bun/kind.cjs +9 -0
  201. package/dist/interfaces/bun/kind.d.ts +6 -0
  202. package/dist/interfaces/bun/kind.mjs +7 -0
  203. package/dist/interfaces/bun/types/index.d.ts +1 -0
  204. package/dist/interfaces/bun/types/request.d.ts +21 -0
  205. package/dist/interfaces/deno/index.cjs +7 -0
  206. package/dist/interfaces/deno/index.d.ts +2 -0
  207. package/dist/interfaces/deno/index.mjs +1 -0
  208. package/dist/interfaces/deno/kind.cjs +9 -0
  209. package/dist/interfaces/deno/kind.d.ts +6 -0
  210. package/dist/interfaces/deno/kind.mjs +7 -0
  211. package/dist/interfaces/deno/types/index.d.ts +1 -0
  212. package/dist/interfaces/deno/types/request.d.ts +21 -0
  213. package/dist/interfaces/node/createHttpServer.cjs +65 -0
  214. package/dist/interfaces/node/createHttpServer.d.ts +23 -0
  215. package/dist/interfaces/node/createHttpServer.mjs +63 -0
  216. package/dist/interfaces/node/error/bodyParseUnknownError.cjs +16 -0
  217. package/dist/interfaces/node/error/bodyParseUnknownError.d.ts +9 -0
  218. package/dist/interfaces/node/error/bodyParseUnknownError.mjs +14 -0
  219. package/dist/interfaces/node/error/bodyParseWrongChunkReceived.cjs +14 -0
  220. package/dist/interfaces/node/error/bodyParseWrongChunkReceived.d.ts +8 -0
  221. package/dist/interfaces/node/error/bodyParseWrongChunkReceived.mjs +12 -0
  222. package/dist/interfaces/node/error/bodySizeExceedsLimitError.cjs +14 -0
  223. package/dist/interfaces/node/error/bodySizeExceedsLimitError.d.ts +9 -0
  224. package/dist/interfaces/node/error/bodySizeExceedsLimitError.mjs +12 -0
  225. package/dist/interfaces/node/error/index.d.ts +3 -0
  226. package/dist/interfaces/node/hooks.cjs +119 -0
  227. package/dist/interfaces/node/hooks.d.ts +8 -0
  228. package/dist/interfaces/node/hooks.mjs +117 -0
  229. package/dist/interfaces/node/index.cjs +26 -0
  230. package/dist/interfaces/node/index.d.ts +5 -0
  231. package/dist/interfaces/node/index.mjs +15 -0
  232. package/dist/interfaces/node/kind.cjs +9 -0
  233. package/dist/interfaces/node/kind.d.ts +6 -0
  234. package/dist/interfaces/node/kind.mjs +7 -0
  235. package/dist/interfaces/node/types/host.d.ts +4 -0
  236. package/dist/interfaces/node/types/index.d.ts +2 -0
  237. package/dist/interfaces/node/types/request.d.ts +23 -0
  238. 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,9 @@
1
+ import { E } from '@duplojs/utils';
2
+
3
+ function createStepFunctionBuilder(support, builder) {
4
+ return (step, params) => support(step)
5
+ ? builder(step, params)
6
+ : E.left("stepNotSupport", step);
7
+ }
8
+
9
+ export { createStepFunctionBuilder };
@@ -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,5 @@
1
+ export * from "./checkerStep";
2
+ export * from "./cutStep";
3
+ export * from "./handlerStep";
4
+ export * from "./extractStep";
5
+ export * from "./processStep";
@@ -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>;