@duplojs/http 0.2.0 → 0.5.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 (235) hide show
  1. package/dist/client/getBody.cjs +22 -0
  2. package/dist/client/getBody.d.ts +1 -0
  3. package/dist/client/getBody.mjs +20 -0
  4. package/dist/client/hooks.cjs +79 -0
  5. package/dist/client/hooks.d.ts +33 -0
  6. package/dist/client/hooks.mjs +70 -0
  7. package/dist/client/httpClient.cjs +153 -0
  8. package/dist/client/httpClient.d.ts +60 -0
  9. package/dist/client/httpClient.mjs +130 -0
  10. package/dist/client/index.cjs +33 -0
  11. package/dist/client/index.d.ts +9 -0
  12. package/dist/client/index.mjs +9 -0
  13. package/dist/client/insertParamsInPath.cjs +12 -0
  14. package/dist/client/insertParamsInPath.d.ts +2 -0
  15. package/dist/client/insertParamsInPath.mjs +10 -0
  16. package/dist/client/kind.cjs +9 -0
  17. package/dist/client/kind.d.ts +6 -0
  18. package/dist/client/kind.mjs +7 -0
  19. package/dist/client/promiseRequest.cjs +355 -0
  20. package/dist/client/promiseRequest.d.ts +98 -0
  21. package/dist/client/promiseRequest.mjs +332 -0
  22. package/dist/client/queryToString.cjs +25 -0
  23. package/dist/client/queryToString.d.ts +2 -0
  24. package/dist/client/queryToString.mjs +23 -0
  25. package/dist/client/types/ObjectCanBeEmpty.cjs +2 -0
  26. package/dist/client/types/ObjectCanBeEmpty.d.ts +4 -0
  27. package/dist/client/types/ObjectCanBeEmpty.mjs +1 -0
  28. package/dist/client/types/clientRequestParams.cjs +2 -0
  29. package/dist/client/types/clientRequestParams.d.ts +51 -0
  30. package/dist/client/types/clientRequestParams.mjs +1 -0
  31. package/dist/client/types/clientResponse.cjs +2 -0
  32. package/dist/client/types/clientResponse.d.ts +34 -0
  33. package/dist/client/types/clientResponse.mjs +1 -0
  34. package/dist/client/types/index.cjs +7 -0
  35. package/dist/client/types/index.d.ts +4 -0
  36. package/dist/client/types/index.mjs +4 -0
  37. package/dist/client/types/serverRoute.cjs +2 -0
  38. package/dist/client/types/serverRoute.d.ts +22 -0
  39. package/dist/client/types/serverRoute.mjs +1 -0
  40. package/dist/client/unexpectedResponseError.cjs +44 -0
  41. package/dist/client/unexpectedResponseError.d.ts +38 -0
  42. package/dist/client/unexpectedResponseError.mjs +39 -0
  43. package/dist/core/builders/preflight/builder.cjs +1 -0
  44. package/dist/core/builders/preflight/builder.d.ts +5 -1
  45. package/dist/core/builders/preflight/builder.mjs +1 -0
  46. package/dist/core/builders/preflight/process.cjs +2 -1
  47. package/dist/core/builders/preflight/process.d.ts +4 -2
  48. package/dist/core/builders/preflight/process.mjs +2 -1
  49. package/dist/core/builders/preflight/route.cjs +4 -0
  50. package/dist/core/builders/preflight/route.d.ts +9 -3
  51. package/dist/core/builders/preflight/route.mjs +4 -0
  52. package/dist/core/builders/process/builder.cjs +1 -0
  53. package/dist/core/builders/process/builder.d.ts +4 -1
  54. package/dist/core/builders/process/builder.mjs +1 -0
  55. package/dist/core/builders/process/checker.cjs +2 -1
  56. package/dist/core/builders/process/checker.d.ts +4 -2
  57. package/dist/core/builders/process/checker.mjs +2 -1
  58. package/dist/core/builders/process/cut.cjs +2 -1
  59. package/dist/core/builders/process/cut.d.ts +3 -1
  60. package/dist/core/builders/process/cut.mjs +2 -1
  61. package/dist/core/builders/process/extract.cjs +2 -1
  62. package/dist/core/builders/process/extract.d.ts +3 -1
  63. package/dist/core/builders/process/extract.mjs +2 -1
  64. package/dist/core/builders/process/index.cjs +1 -1
  65. package/dist/core/builders/process/index.d.ts +1 -1
  66. package/dist/core/builders/process/index.mjs +1 -1
  67. package/dist/core/builders/process/presetChecker.cjs +2 -1
  68. package/dist/core/builders/process/presetChecker.d.ts +3 -1
  69. package/dist/core/builders/process/presetChecker.mjs +2 -1
  70. package/dist/core/builders/process/process.cjs +2 -1
  71. package/dist/core/builders/process/process.d.ts +4 -2
  72. package/dist/core/builders/process/process.mjs +2 -1
  73. package/dist/core/builders/route/builder.cjs +1 -0
  74. package/dist/core/builders/route/builder.d.ts +4 -1
  75. package/dist/core/builders/route/builder.mjs +1 -0
  76. package/dist/core/builders/route/checker.cjs +2 -1
  77. package/dist/core/builders/route/checker.d.ts +4 -2
  78. package/dist/core/builders/route/checker.mjs +2 -1
  79. package/dist/core/builders/route/cut.cjs +2 -1
  80. package/dist/core/builders/route/cut.d.ts +3 -1
  81. package/dist/core/builders/route/cut.mjs +2 -1
  82. package/dist/core/builders/route/extract.cjs +2 -1
  83. package/dist/core/builders/route/extract.d.ts +3 -1
  84. package/dist/core/builders/route/extract.mjs +2 -1
  85. package/dist/core/builders/route/handler.cjs +9 -2
  86. package/dist/core/builders/route/handler.d.ts +3 -1
  87. package/dist/core/builders/route/handler.mjs +9 -2
  88. package/dist/core/builders/route/presetChecker.cjs +2 -1
  89. package/dist/core/builders/route/presetChecker.d.ts +3 -1
  90. package/dist/core/builders/route/presetChecker.mjs +2 -1
  91. package/dist/core/builders/route/process.cjs +2 -1
  92. package/dist/core/builders/route/process.d.ts +4 -2
  93. package/dist/core/builders/route/process.mjs +2 -1
  94. package/dist/core/functionsBuilders/route/default.cjs +10 -9
  95. package/dist/core/functionsBuilders/route/default.mjs +3 -2
  96. package/dist/core/functionsBuilders/route/hook.cjs +22 -22
  97. package/dist/core/functionsBuilders/route/hook.d.ts +2 -2
  98. package/dist/core/functionsBuilders/route/hook.mjs +2 -2
  99. package/dist/core/functionsBuilders/steps/create.d.ts +2 -2
  100. package/dist/core/functionsBuilders/steps/defaults/checkerStep.cjs +3 -2
  101. package/dist/core/functionsBuilders/steps/defaults/checkerStep.mjs +3 -2
  102. package/dist/core/functionsBuilders/steps/defaults/cutStep.cjs +3 -2
  103. package/dist/core/functionsBuilders/steps/defaults/cutStep.mjs +3 -2
  104. package/dist/core/functionsBuilders/steps/defaults/extractStep.cjs +6 -5
  105. package/dist/core/functionsBuilders/steps/defaults/extractStep.mjs +4 -3
  106. package/dist/core/functionsBuilders/steps/defaults/handlerStep.cjs +3 -2
  107. package/dist/core/functionsBuilders/steps/defaults/handlerStep.mjs +3 -2
  108. package/dist/core/functionsBuilders/steps/defaults/processStep.cjs +5 -4
  109. package/dist/core/functionsBuilders/steps/defaults/processStep.mjs +3 -2
  110. package/dist/core/hub/defaultNotfoundHandler.cjs +1 -0
  111. package/dist/core/hub/defaultNotfoundHandler.d.ts +2 -1
  112. package/dist/core/hub/defaultNotfoundHandler.mjs +1 -0
  113. package/dist/core/hub/index.cjs +2 -1
  114. package/dist/core/hub/index.mjs +2 -1
  115. package/dist/core/index.cjs +43 -34
  116. package/dist/core/index.d.ts +1 -0
  117. package/dist/core/index.mjs +8 -3
  118. package/dist/core/metadata/base.cjs +20 -0
  119. package/dist/core/metadata/base.d.ts +14 -0
  120. package/dist/core/metadata/base.mjs +17 -0
  121. package/dist/core/metadata/ignoreByRouteStore.cjs +7 -0
  122. package/dist/core/metadata/ignoreByRouteStore.d.ts +1 -0
  123. package/dist/core/metadata/ignoreByRouteStore.mjs +5 -0
  124. package/dist/core/metadata/index.cjs +10 -0
  125. package/dist/core/metadata/index.d.ts +2 -0
  126. package/dist/core/metadata/index.mjs +2 -0
  127. package/dist/core/process/index.d.ts +3 -1
  128. package/dist/core/response/base.cjs +40 -0
  129. package/dist/core/response/base.d.ts +21 -0
  130. package/dist/core/response/base.mjs +38 -0
  131. package/dist/core/response/contract.cjs +2 -2
  132. package/dist/core/response/contract.d.ts +120 -118
  133. package/dist/core/response/contract.mjs +2 -2
  134. package/dist/core/{route/hooks/response.cjs → response/hook.cjs} +4 -3
  135. package/dist/core/{route/hooks/response.d.ts → response/hook.d.ts} +2 -2
  136. package/dist/core/{route/hooks/response.mjs → response/hook.mjs} +3 -2
  137. package/dist/core/response/index.cjs +9 -38
  138. package/dist/core/response/index.d.ts +3 -20
  139. package/dist/core/response/index.mjs +3 -38
  140. package/dist/core/response/predicted.cjs +22 -0
  141. package/dist/core/response/predicted.d.ts +11 -0
  142. package/dist/core/response/predicted.mjs +20 -0
  143. package/dist/core/route/{hooks/index.cjs → hooks.cjs} +2 -3
  144. package/dist/core/route/{hooks/index.d.ts → hooks.d.ts} +4 -4
  145. package/dist/core/route/{hooks/index.mjs → hooks.mjs} +2 -2
  146. package/dist/core/route/index.cjs +4 -4
  147. package/dist/core/route/index.d.ts +2 -0
  148. package/dist/core/route/index.mjs +1 -1
  149. package/dist/core/router/index.cjs +1 -0
  150. package/dist/core/router/index.mjs +1 -0
  151. package/dist/core/steps/checker.d.ts +2 -0
  152. package/dist/core/steps/cut.d.ts +5 -3
  153. package/dist/core/steps/extract.d.ts +2 -0
  154. package/dist/core/steps/handler.d.ts +5 -3
  155. package/dist/core/steps/identifier.d.ts +2 -2
  156. package/dist/core/steps/presetChecker.d.ts +2 -0
  157. package/dist/core/steps/process.d.ts +2 -0
  158. package/dist/core/steps/types/stepFunctionParams.d.ts +2 -2
  159. package/dist/core/types/forbiddenBigintDataParser.cjs +2 -0
  160. package/dist/core/types/forbiddenBigintDataParser.d.ts +6 -0
  161. package/dist/core/types/forbiddenBigintDataParser.mjs +1 -0
  162. package/dist/core/types/index.cjs +1 -0
  163. package/dist/core/types/index.d.ts +1 -0
  164. package/dist/core/types/index.mjs +1 -0
  165. package/dist/interfaces/node/createHttpServer.cjs +1 -0
  166. package/dist/interfaces/node/createHttpServer.d.ts +2 -1
  167. package/dist/interfaces/node/createHttpServer.mjs +1 -0
  168. package/dist/interfaces/node/hooks.cjs +16 -13
  169. package/dist/interfaces/node/hooks.mjs +15 -12
  170. package/dist/plugins/codeGenerator/{stepsToDataParser.cjs → aggregateStepContract.cjs} +8 -5
  171. package/dist/plugins/codeGenerator/{stepsToDataParser.d.ts → aggregateStepContract.d.ts} +1 -1
  172. package/dist/plugins/codeGenerator/{stepsToDataParser.mjs → aggregateStepContract.mjs} +9 -6
  173. package/dist/plugins/codeGenerator/index.cjs +4 -5
  174. package/dist/plugins/codeGenerator/index.d.ts +2 -1
  175. package/dist/plugins/codeGenerator/index.mjs +3 -2
  176. package/dist/plugins/codeGenerator/metadata.cjs +8 -0
  177. package/dist/plugins/codeGenerator/metadata.d.ts +1 -0
  178. package/dist/plugins/codeGenerator/metadata.mjs +6 -0
  179. package/dist/plugins/codeGenerator/plugin.cjs +1 -1
  180. package/dist/plugins/codeGenerator/plugin.mjs +1 -1
  181. package/dist/plugins/codeGenerator/routeToDataParser.cjs +11 -57
  182. package/dist/plugins/codeGenerator/routeToDataParser.d.ts +2 -181
  183. package/dist/plugins/codeGenerator/routeToDataParser.mjs +13 -56
  184. package/dist/plugins/openApiGenerator/aggregateStepContract.cjs +65 -0
  185. package/dist/plugins/openApiGenerator/aggregateStepContract.d.ts +18 -0
  186. package/dist/plugins/openApiGenerator/aggregateStepContract.mjs +63 -0
  187. package/dist/plugins/openApiGenerator/index.cjs +19 -0
  188. package/dist/plugins/openApiGenerator/index.d.ts +8 -0
  189. package/dist/plugins/openApiGenerator/index.mjs +8 -0
  190. package/dist/plugins/openApiGenerator/makeOpenApiPage.cjs +30 -0
  191. package/dist/plugins/openApiGenerator/makeOpenApiPage.d.ts +7 -0
  192. package/dist/plugins/openApiGenerator/makeOpenApiPage.mjs +28 -0
  193. package/dist/plugins/openApiGenerator/makeOpenApiRoute.cjs +15 -0
  194. package/dist/plugins/openApiGenerator/makeOpenApiRoute.d.ts +20 -0
  195. package/dist/plugins/openApiGenerator/makeOpenApiRoute.mjs +13 -0
  196. package/dist/plugins/openApiGenerator/metadata.cjs +8 -0
  197. package/dist/plugins/openApiGenerator/metadata.d.ts +1 -0
  198. package/dist/plugins/openApiGenerator/metadata.mjs +6 -0
  199. package/dist/plugins/openApiGenerator/plugin.cjs +90 -0
  200. package/dist/plugins/openApiGenerator/plugin.d.ts +49 -0
  201. package/dist/plugins/openApiGenerator/plugin.mjs +88 -0
  202. package/dist/plugins/openApiGenerator/routeToOpenApi.cjs +168 -0
  203. package/dist/plugins/openApiGenerator/routeToOpenApi.d.ts +35 -0
  204. package/dist/plugins/openApiGenerator/routeToOpenApi.mjs +166 -0
  205. package/dist/plugins/openApiGenerator/types/endpointResponse.cjs +2 -0
  206. package/dist/plugins/openApiGenerator/types/endpointResponse.d.ts +19 -0
  207. package/dist/plugins/openApiGenerator/types/endpointResponse.mjs +1 -0
  208. package/dist/plugins/openApiGenerator/types/entrypoint.cjs +2 -0
  209. package/dist/plugins/openApiGenerator/types/entrypoint.d.ts +22 -0
  210. package/dist/plugins/openApiGenerator/types/entrypoint.mjs +1 -0
  211. package/dist/plugins/openApiGenerator/types/entrypointKey.cjs +2 -0
  212. package/dist/plugins/openApiGenerator/types/entrypointKey.d.ts +1 -0
  213. package/dist/plugins/openApiGenerator/types/entrypointKey.mjs +1 -0
  214. package/dist/plugins/openApiGenerator/types/index.cjs +11 -0
  215. package/dist/plugins/openApiGenerator/types/index.d.ts +8 -0
  216. package/dist/plugins/openApiGenerator/types/index.mjs +8 -0
  217. package/dist/plugins/openApiGenerator/types/openApiDocument.cjs +2 -0
  218. package/dist/plugins/openApiGenerator/types/openApiDocument.d.ts +31 -0
  219. package/dist/plugins/openApiGenerator/types/openApiDocument.mjs +1 -0
  220. package/dist/plugins/openApiGenerator/types/openApiMethod.cjs +2 -0
  221. package/dist/plugins/openApiGenerator/types/openApiMethod.d.ts +1 -0
  222. package/dist/plugins/openApiGenerator/types/openApiMethod.mjs +1 -0
  223. package/dist/plugins/openApiGenerator/types/openApiOperation.cjs +2 -0
  224. package/dist/plugins/openApiGenerator/types/openApiOperation.d.ts +8 -0
  225. package/dist/plugins/openApiGenerator/types/openApiOperation.mjs +1 -0
  226. package/dist/plugins/openApiGenerator/types/openApiPath.cjs +2 -0
  227. package/dist/plugins/openApiGenerator/types/openApiPath.d.ts +4 -0
  228. package/dist/plugins/openApiGenerator/types/openApiPath.mjs +1 -0
  229. package/dist/plugins/openApiGenerator/types/openApiSecuritySchema.cjs +2 -0
  230. package/dist/plugins/openApiGenerator/types/openApiSecuritySchema.d.ts +8 -0
  231. package/dist/plugins/openApiGenerator/types/openApiSecuritySchema.mjs +1 -0
  232. package/package.json +17 -4
  233. /package/dist/core/builders/process/{export.cjs → exports.cjs} +0 -0
  234. /package/dist/core/builders/process/{export.d.ts → exports.d.ts} +0 -0
  235. /package/dist/core/builders/process/{export.mjs → exports.mjs} +0 -0
@@ -1,14 +1,16 @@
1
1
  import '../../core/route/index.mjs';
2
2
  import { stringToBytes } from '@duplojs/utils';
3
3
  import './error/index.mjs';
4
- import { createHookRouteLifeCycle } from '../../core/route/hooks/index.mjs';
5
- import { HookResponse } from '../../core/route/hooks/response.mjs';
4
+ import { createHookRouteLifeCycle } from '../../core/route/hooks.mjs';
5
+ import { PredictedResponse } from '../../core/response/predicted.mjs';
6
+ import { HookResponse } from '../../core/response/hook.mjs';
6
7
  import { BodySizeExceedsLimitError } from './error/bodySizeExceedsLimitError.mjs';
7
8
  import { BodyParseWrongChunkReceived } from './error/bodyParseWrongChunkReceived.mjs';
8
9
  import { BodyParseUnknownError } from './error/bodyParseUnknownError.mjs';
9
10
 
10
11
  function makeNodeHook(hub, serverParams) {
11
12
  const informationHeaderKey = serverParams.informationHeaderKey;
13
+ const predictedHeaderKey = serverParams.predictedHeaderKey;
12
14
  const fromHookHeaderKey = serverParams.fromHookHeaderKey;
13
15
  const isDev = hub.config.environment === "DEV";
14
16
  const maxBodySize = stringToBytes(serverParams.maxBodySize);
@@ -77,17 +79,20 @@ function makeNodeHook(hub, serverParams) {
77
79
  },
78
80
  beforeSendResponse({ request, currentResponse, exit }) {
79
81
  const body = currentResponse.body;
80
- if (typeof body === "number"
81
- || typeof body === "string"
82
- || body === null
82
+ if (typeof body === "string"
83
83
  || body instanceof Error) {
84
84
  currentResponse.setHeader("content-type", "text/plain; charset=utf-8");
85
85
  }
86
- else if (typeof body === "object") {
86
+ else if (typeof body === "object"
87
+ || typeof body === "number"
88
+ || typeof body === "boolean") {
87
89
  currentResponse.setHeader("content-type", "application/json; charset=utf-8");
88
90
  }
89
91
  currentResponse.setHeader(informationHeaderKey, currentResponse.information);
90
- if (currentResponse instanceof HookResponse) {
92
+ if (currentResponse instanceof PredictedResponse) {
93
+ currentResponse.setHeader(predictedHeaderKey, "1");
94
+ }
95
+ else if (currentResponse instanceof HookResponse) {
91
96
  currentResponse.setHeader(fromHookHeaderKey, currentResponse.fromHook);
92
97
  }
93
98
  request.raw.response.writeHead(Number(currentResponse.code), currentResponse.headers);
@@ -99,16 +104,14 @@ function makeNodeHook(hub, serverParams) {
99
104
  if (body instanceof Error) {
100
105
  rawResponse.write(body.toString());
101
106
  }
102
- else if (typeof body === "object") {
107
+ else if (typeof body === "object"
108
+ || typeof body === "number"
109
+ || typeof body === "boolean") {
103
110
  rawResponse.write(JSON.stringify(body));
104
111
  }
105
112
  else if (typeof body === "string") {
106
113
  rawResponse.write(body);
107
114
  }
108
- else if (typeof body === "number"
109
- || typeof body === "bigint") {
110
- rawResponse.write(body.toString());
111
- }
112
115
  rawResponse.end();
113
116
  return exit();
114
117
  },
@@ -2,6 +2,8 @@
2
2
 
3
3
  require('../../core/steps/index.cjs');
4
4
  var utils = require('@duplojs/utils');
5
+ var metadata = require('./metadata.cjs');
6
+ var identifier = require('../../core/steps/identifier.cjs');
5
7
  var process = require('../../core/steps/process.cjs');
6
8
  var extract = require('../../core/steps/extract.cjs');
7
9
  var presetChecker = require('../../core/steps/presetChecker.cjs');
@@ -9,12 +11,13 @@ var checker = require('../../core/steps/checker.cjs');
9
11
  var cut = require('../../core/steps/cut.cjs');
10
12
  var handler = require('../../core/steps/handler.cjs');
11
13
 
12
- function stepsToDataParser(steps, params) {
13
- const processContracts = utils.pipe(steps, utils.A.filter(process.processStepKind.has), utils.A.map((element) => stepsToDataParser(element.definition.process.definition.steps, params)), utils.O.to({
14
+ function aggregateStepContract(steps, params) {
15
+ const filteredStep = utils.A.filter(steps, (step) => utils.A.find(step.definition.metadata, metadata.IgnoreByCodeGeneratorMetadata.is) === undefined);
16
+ const processContracts = utils.pipe(filteredStep, utils.A.filter(identifier.stepIdentifier(process.processStepKind)), utils.A.filter((step) => utils.A.find(step.definition.process.definition.metadata, metadata.IgnoreByCodeGeneratorMetadata.is) === undefined), utils.A.map((element) => aggregateStepContract(element.definition.process.definition.steps, params)), utils.O.to({
14
17
  entrypointContract: utils.A.map((result) => result.entrypointContract),
15
18
  endpointContract: utils.A.flatMap((result) => result.endpointContract),
16
19
  }));
17
- const entrypointContract = utils.pipe(steps, utils.A.filter(extract.extractStepKind.has), utils.A.map((extractStep) => extractStep.definition.shape), utils.A.concat(processContracts.entrypointContract), utils.A.reduce(utils.A.reduceFrom({
20
+ const entrypointContract = utils.pipe(filteredStep, utils.A.filter(extract.extractStepKind.has), utils.A.map((extractStep) => extractStep.definition.shape), utils.A.concat(processContracts.entrypointContract), utils.A.reduce(utils.A.reduceFrom({
18
21
  body: {},
19
22
  headers: {},
20
23
  params: {},
@@ -43,7 +46,7 @@ function stepsToDataParser(steps, params) {
43
46
  }
44
47
  return utils.O.entry(key, currentExtractDataParser);
45
48
  }), utils.O.fromEntries, (object) => nextWithObject(lastValue, object))));
46
- const endpointContract = utils.pipe(steps, utils.A.flatMap((step) => utils.P.match(step)
49
+ const endpointContract = utils.pipe(filteredStep, utils.A.flatMap((step) => utils.P.match(step)
47
50
  .when(process.processStepKind.has, () => [])
48
51
  .when(extract.extractStepKind.has, ({ definition }) => definition.responseContract ?? params.defaultExtractContract)
49
52
  .when(presetChecker.presetCheckerStepKind.has, ({ definition }) => definition.presetChecker.definition.responseContract)
@@ -63,4 +66,4 @@ function stepsToDataParser(steps, params) {
63
66
  };
64
67
  }
65
68
 
66
- exports.stepsToDataParser = stepsToDataParser;
69
+ exports.aggregateStepContract = aggregateStepContract;
@@ -10,5 +10,5 @@ export interface StepsToDataParserResult {
10
10
  entrypointContract: EntrypointReduceResult;
11
11
  endpointContract: DP.DataParser[];
12
12
  }
13
- export declare function stepsToDataParser(steps: readonly Steps[], params: StepsToDataParserParams): StepsToDataParserResult;
13
+ export declare function aggregateStepContract(steps: readonly Steps[], params: StepsToDataParserParams): StepsToDataParserResult;
14
14
  export {};
@@ -1,5 +1,7 @@
1
1
  import '../../core/steps/index.mjs';
2
- import { pipe, A, O, DP, P, hasSomeKinds } from '@duplojs/utils';
2
+ import { A, pipe, O, DP, P, hasSomeKinds } from '@duplojs/utils';
3
+ import { IgnoreByCodeGeneratorMetadata } from './metadata.mjs';
4
+ import { stepIdentifier } from '../../core/steps/identifier.mjs';
3
5
  import { processStepKind } from '../../core/steps/process.mjs';
4
6
  import { extractStepKind } from '../../core/steps/extract.mjs';
5
7
  import { presetCheckerStepKind } from '../../core/steps/presetChecker.mjs';
@@ -7,12 +9,13 @@ import { checkerStepKind } from '../../core/steps/checker.mjs';
7
9
  import { cutStepKind } from '../../core/steps/cut.mjs';
8
10
  import { handlerStepKind } from '../../core/steps/handler.mjs';
9
11
 
10
- function stepsToDataParser(steps, params) {
11
- const processContracts = pipe(steps, A.filter(processStepKind.has), A.map((element) => stepsToDataParser(element.definition.process.definition.steps, params)), O.to({
12
+ function aggregateStepContract(steps, params) {
13
+ const filteredStep = A.filter(steps, (step) => A.find(step.definition.metadata, IgnoreByCodeGeneratorMetadata.is) === undefined);
14
+ const processContracts = pipe(filteredStep, A.filter(stepIdentifier(processStepKind)), A.filter((step) => A.find(step.definition.process.definition.metadata, IgnoreByCodeGeneratorMetadata.is) === undefined), A.map((element) => aggregateStepContract(element.definition.process.definition.steps, params)), O.to({
12
15
  entrypointContract: A.map((result) => result.entrypointContract),
13
16
  endpointContract: A.flatMap((result) => result.endpointContract),
14
17
  }));
15
- const entrypointContract = pipe(steps, A.filter(extractStepKind.has), A.map((extractStep) => extractStep.definition.shape), A.concat(processContracts.entrypointContract), A.reduce(A.reduceFrom({
18
+ const entrypointContract = pipe(filteredStep, A.filter(extractStepKind.has), A.map((extractStep) => extractStep.definition.shape), A.concat(processContracts.entrypointContract), A.reduce(A.reduceFrom({
16
19
  body: {},
17
20
  headers: {},
18
21
  params: {},
@@ -41,7 +44,7 @@ function stepsToDataParser(steps, params) {
41
44
  }
42
45
  return O.entry(key, currentExtractDataParser);
43
46
  }), O.fromEntries, (object) => nextWithObject(lastValue, object))));
44
- const endpointContract = pipe(steps, A.flatMap((step) => P.match(step)
47
+ const endpointContract = pipe(filteredStep, A.flatMap((step) => P.match(step)
45
48
  .when(processStepKind.has, () => [])
46
49
  .when(extractStepKind.has, ({ definition }) => definition.responseContract ?? params.defaultExtractContract)
47
50
  .when(presetCheckerStepKind.has, ({ definition }) => definition.presetChecker.definition.responseContract)
@@ -61,4 +64,4 @@ function stepsToDataParser(steps, params) {
61
64
  };
62
65
  }
63
66
 
64
- export { stepsToDataParser };
67
+ export { aggregateStepContract };
@@ -4,13 +4,12 @@ require('@duplojs/data-parser-tools/toTypescript');
4
4
  require('./types/index.cjs');
5
5
  var plugin = require('./plugin.cjs');
6
6
  var routeToDataParser = require('./routeToDataParser.cjs');
7
- var stepsToDataParser = require('./stepsToDataParser.cjs');
7
+ var aggregateStepContract = require('./aggregateStepContract.cjs');
8
+ var metadata = require('./metadata.cjs');
8
9
 
9
10
 
10
11
 
11
12
  exports.codeGeneratorPlugin = plugin.codeGeneratorPlugin;
12
- exports.digitDataParser = routeToDataParser.digitDataParser;
13
- exports.responseCodeDataParser = routeToDataParser.responseCodeDataParser;
14
- exports.responseCodeDataParsers = routeToDataParser.responseCodeDataParsers;
15
13
  exports.routeToDataParser = routeToDataParser.routeToDataParser;
16
- exports.stepsToDataParser = stepsToDataParser.stepsToDataParser;
14
+ exports.aggregateStepContract = aggregateStepContract.aggregateStepContract;
15
+ exports.IgnoreByCodeGeneratorMetadata = metadata.IgnoreByCodeGeneratorMetadata;
@@ -2,4 +2,5 @@ import "@duplojs/data-parser-tools/toTypescript";
2
2
  export * from "./types";
3
3
  export * from "./plugin";
4
4
  export * from "./routeToDataParser";
5
- export * from "./stepsToDataParser";
5
+ export * from "./aggregateStepContract";
6
+ export * from "./metadata";
@@ -1,5 +1,6 @@
1
1
  import '@duplojs/data-parser-tools/toTypescript';
2
2
  import './types/index.mjs';
3
3
  export { codeGeneratorPlugin } from './plugin.mjs';
4
- export { digitDataParser, responseCodeDataParser, responseCodeDataParsers, routeToDataParser } from './routeToDataParser.mjs';
5
- export { stepsToDataParser } from './stepsToDataParser.mjs';
4
+ export { routeToDataParser } from './routeToDataParser.mjs';
5
+ export { aggregateStepContract } from './aggregateStepContract.mjs';
6
+ export { IgnoreByCodeGeneratorMetadata } from './metadata.mjs';
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ require('../../core/metadata/index.cjs');
4
+ var base = require('../../core/metadata/base.cjs');
5
+
6
+ const IgnoreByCodeGeneratorMetadata = base.createMetadata("ignore-by-code-generator");
7
+
8
+ exports.IgnoreByCodeGeneratorMetadata = IgnoreByCodeGeneratorMetadata;
@@ -0,0 +1 @@
1
+ export declare const IgnoreByCodeGeneratorMetadata: import("../../core/metadata").MetadataHandler<"ignore-by-code-generator", unknown>;
@@ -0,0 +1,6 @@
1
+ import '../../core/metadata/index.mjs';
2
+ import { createMetadata } from '../../core/metadata/base.mjs';
3
+
4
+ const IgnoreByCodeGeneratorMetadata = createMetadata("ignore-by-code-generator");
5
+
6
+ export { IgnoreByCodeGeneratorMetadata };
@@ -31,7 +31,7 @@ function codeGeneratorPlugin(pluginParams) {
31
31
  {
32
32
  beforeStartServer: async (hub) => {
33
33
  const routes = hub.aggregatesRoutes();
34
- const dataParserRoutes = utils.A.map(routes, (route) => routeToDataParser.routeToDataParser(route, {
34
+ const dataParserRoutes = utils.A.flatMap(routes, (route) => routeToDataParser.routeToDataParser(route, {
35
35
  defaultExtractContract: hub.defaultExtractContract,
36
36
  }));
37
37
  if (!utils.A.minElements(dataParserRoutes, 1)) {
@@ -10,7 +10,7 @@ function codeGeneratorPlugin(pluginParams) {
10
10
  {
11
11
  beforeStartServer: async (hub) => {
12
12
  const routes = hub.aggregatesRoutes();
13
- const dataParserRoutes = A.map(routes, (route) => routeToDataParser(route, {
13
+ const dataParserRoutes = A.flatMap(routes, (route) => routeToDataParser(route, {
14
14
  defaultExtractContract: hub.defaultExtractContract,
15
15
  }));
16
16
  if (!A.minElements(dataParserRoutes, 1)) {
@@ -1,48 +1,18 @@
1
1
  'use strict';
2
2
 
3
- var stepsToDataParser = require('./stepsToDataParser.cjs');
3
+ var aggregateStepContract = require('./aggregateStepContract.cjs');
4
4
  var utils = require('@duplojs/utils');
5
+ var metadata = require('./metadata.cjs');
5
6
 
6
- const digitDataParser = utils.DP.literal(["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]).setIdentifier("Digit");
7
- const responseCodeDataParsers = {
8
- information: utils.DP.templateLiteral([
9
- "1",
10
- digitDataParser,
11
- digitDataParser,
12
- ]),
13
- success: utils.DP.templateLiteral([
14
- "2",
15
- digitDataParser,
16
- digitDataParser,
17
- ]),
18
- redirection: utils.DP.templateLiteral([
19
- "3",
20
- digitDataParser,
21
- digitDataParser,
22
- ]),
23
- clientError: utils.DP.templateLiteral([
24
- "4",
25
- digitDataParser,
26
- digitDataParser,
27
- ]),
28
- serverError: utils.DP.templateLiteral([
29
- "5",
30
- digitDataParser,
31
- digitDataParser,
32
- ]),
33
- };
34
- const responseCodeDataParser = utils.DP.union([
35
- responseCodeDataParsers.information,
36
- responseCodeDataParsers.success,
37
- responseCodeDataParsers.redirection,
38
- responseCodeDataParsers.clientError,
39
- responseCodeDataParsers.serverError,
40
- ]).setIdentifier("ResponseCode");
41
7
  function routeToDataParser(route, params) {
8
+ const isIgnore = utils.A.find(route.definition.metadata, metadata.IgnoreByCodeGeneratorMetadata.is);
9
+ if (isIgnore) {
10
+ return [];
11
+ }
42
12
  return utils.pipe([
43
13
  ...route.definition.preflightSteps,
44
14
  ...route.definition.steps,
45
- ], (steps) => stepsToDataParser.stepsToDataParser(steps, {
15
+ ], (steps) => aggregateStepContract.aggregateStepContract(steps, {
46
16
  defaultExtractContract: params.defaultExtractContract,
47
17
  }), utils.O.transformProperty("entrypointContract", utils.innerPipe(utils.O.entries, utils.A.select(({ element: [key, value], select, skip }) => {
48
18
  if (utils.DP.dataParserKind.has(value)) {
@@ -52,28 +22,12 @@ function routeToDataParser(route, params) {
52
22
  return select(utils.O.entry(key, utils.DP.object(value)));
53
23
  }
54
24
  return skip();
55
- }), utils.O.fromEntries)), ({ endpointContract, entrypointContract }) => utils.DP.object({
25
+ }), utils.O.fromEntries)), ({ endpointContract, entrypointContract }) => utils.A.map(route.definition.paths, (path) => utils.DP.object({
56
26
  method: utils.DP.literal(route.definition.method),
57
- path: utils.DP.literal(route.definition.paths),
27
+ path: utils.DP.literal(path),
58
28
  ...entrypointContract,
59
- responses: utils.DP.union([
60
- utils.DP.object({
61
- code: responseCodeDataParser,
62
- information: utils.DP.string(),
63
- body: utils.DP.unknown(),
64
- fromHook: utils.DP.literal(true),
65
- }),
66
- utils.DP.object({
67
- code: responseCodeDataParsers.serverError,
68
- information: utils.DP.string(),
69
- body: utils.DP.unknown(),
70
- }),
71
- ...endpointContract,
72
- ]),
73
- }));
29
+ responses: utils.DP.union(endpointContract),
30
+ })));
74
31
  }
75
32
 
76
- exports.digitDataParser = digitDataParser;
77
- exports.responseCodeDataParser = responseCodeDataParser;
78
- exports.responseCodeDataParsers = responseCodeDataParsers;
79
33
  exports.routeToDataParser = routeToDataParser;
@@ -1,186 +1,7 @@
1
1
  import { type Route } from "../../core/route";
2
- import { DP, type DString } from "@duplojs/utils";
2
+ import { DP } from "@duplojs/utils";
3
3
  import { type ResponseContract } from "../../core/response";
4
4
  export interface RouteToDataParserParams {
5
5
  readonly defaultExtractContract: ResponseContract.Contract;
6
6
  }
7
- export declare const digitDataParser: DP.DataParserLiteral<{
8
- readonly value: readonly DString.Digit[];
9
- readonly errorMessage?: string | undefined;
10
- readonly identifier?: string | undefined;
11
- readonly checkers: readonly [];
12
- }>;
13
- export declare const responseCodeDataParsers: {
14
- information: DP.DataParserTemplateLiteral<{
15
- readonly template: readonly ["1", DP.DataParserLiteral<{
16
- readonly value: readonly DString.Digit[];
17
- readonly errorMessage?: string | undefined;
18
- readonly identifier?: string | undefined;
19
- readonly checkers: readonly [];
20
- }>, DP.DataParserLiteral<{
21
- readonly value: readonly DString.Digit[];
22
- readonly errorMessage?: string | undefined;
23
- readonly identifier?: string | undefined;
24
- readonly checkers: readonly [];
25
- }>];
26
- readonly errorMessage?: string | undefined;
27
- readonly identifier?: string | undefined;
28
- readonly pattern: RegExp;
29
- readonly checkers: readonly [];
30
- }>;
31
- success: DP.DataParserTemplateLiteral<{
32
- readonly template: readonly ["2", DP.DataParserLiteral<{
33
- readonly value: readonly DString.Digit[];
34
- readonly errorMessage?: string | undefined;
35
- readonly identifier?: string | undefined;
36
- readonly checkers: readonly [];
37
- }>, DP.DataParserLiteral<{
38
- readonly value: readonly DString.Digit[];
39
- readonly errorMessage?: string | undefined;
40
- readonly identifier?: string | undefined;
41
- readonly checkers: readonly [];
42
- }>];
43
- readonly errorMessage?: string | undefined;
44
- readonly identifier?: string | undefined;
45
- readonly pattern: RegExp;
46
- readonly checkers: readonly [];
47
- }>;
48
- redirection: DP.DataParserTemplateLiteral<{
49
- readonly template: readonly ["3", DP.DataParserLiteral<{
50
- readonly value: readonly DString.Digit[];
51
- readonly errorMessage?: string | undefined;
52
- readonly identifier?: string | undefined;
53
- readonly checkers: readonly [];
54
- }>, DP.DataParserLiteral<{
55
- readonly value: readonly DString.Digit[];
56
- readonly errorMessage?: string | undefined;
57
- readonly identifier?: string | undefined;
58
- readonly checkers: readonly [];
59
- }>];
60
- readonly errorMessage?: string | undefined;
61
- readonly identifier?: string | undefined;
62
- readonly pattern: RegExp;
63
- readonly checkers: readonly [];
64
- }>;
65
- clientError: DP.DataParserTemplateLiteral<{
66
- readonly template: readonly ["4", DP.DataParserLiteral<{
67
- readonly value: readonly DString.Digit[];
68
- readonly errorMessage?: string | undefined;
69
- readonly identifier?: string | undefined;
70
- readonly checkers: readonly [];
71
- }>, DP.DataParserLiteral<{
72
- readonly value: readonly DString.Digit[];
73
- readonly errorMessage?: string | undefined;
74
- readonly identifier?: string | undefined;
75
- readonly checkers: readonly [];
76
- }>];
77
- readonly errorMessage?: string | undefined;
78
- readonly identifier?: string | undefined;
79
- readonly pattern: RegExp;
80
- readonly checkers: readonly [];
81
- }>;
82
- serverError: DP.DataParserTemplateLiteral<{
83
- readonly template: readonly ["5", DP.DataParserLiteral<{
84
- readonly value: readonly DString.Digit[];
85
- readonly errorMessage?: string | undefined;
86
- readonly identifier?: string | undefined;
87
- readonly checkers: readonly [];
88
- }>, DP.DataParserLiteral<{
89
- readonly value: readonly DString.Digit[];
90
- readonly errorMessage?: string | undefined;
91
- readonly identifier?: string | undefined;
92
- readonly checkers: readonly [];
93
- }>];
94
- readonly errorMessage?: string | undefined;
95
- readonly identifier?: string | undefined;
96
- readonly pattern: RegExp;
97
- readonly checkers: readonly [];
98
- }>;
99
- };
100
- export declare const responseCodeDataParser: DP.DataParserUnion<{
101
- readonly options: [DP.DataParserTemplateLiteral<{
102
- readonly template: readonly ["1", DP.DataParserLiteral<{
103
- readonly value: readonly DString.Digit[];
104
- readonly errorMessage?: string | undefined;
105
- readonly identifier?: string | undefined;
106
- readonly checkers: readonly [];
107
- }>, DP.DataParserLiteral<{
108
- readonly value: readonly DString.Digit[];
109
- readonly errorMessage?: string | undefined;
110
- readonly identifier?: string | undefined;
111
- readonly checkers: readonly [];
112
- }>];
113
- readonly errorMessage?: string | undefined;
114
- readonly identifier?: string | undefined;
115
- readonly pattern: RegExp;
116
- readonly checkers: readonly [];
117
- }>, DP.DataParserTemplateLiteral<{
118
- readonly template: readonly ["2", DP.DataParserLiteral<{
119
- readonly value: readonly DString.Digit[];
120
- readonly errorMessage?: string | undefined;
121
- readonly identifier?: string | undefined;
122
- readonly checkers: readonly [];
123
- }>, DP.DataParserLiteral<{
124
- readonly value: readonly DString.Digit[];
125
- readonly errorMessage?: string | undefined;
126
- readonly identifier?: string | undefined;
127
- readonly checkers: readonly [];
128
- }>];
129
- readonly errorMessage?: string | undefined;
130
- readonly identifier?: string | undefined;
131
- readonly pattern: RegExp;
132
- readonly checkers: readonly [];
133
- }>, DP.DataParserTemplateLiteral<{
134
- readonly template: readonly ["3", DP.DataParserLiteral<{
135
- readonly value: readonly DString.Digit[];
136
- readonly errorMessage?: string | undefined;
137
- readonly identifier?: string | undefined;
138
- readonly checkers: readonly [];
139
- }>, DP.DataParserLiteral<{
140
- readonly value: readonly DString.Digit[];
141
- readonly errorMessage?: string | undefined;
142
- readonly identifier?: string | undefined;
143
- readonly checkers: readonly [];
144
- }>];
145
- readonly errorMessage?: string | undefined;
146
- readonly identifier?: string | undefined;
147
- readonly pattern: RegExp;
148
- readonly checkers: readonly [];
149
- }>, DP.DataParserTemplateLiteral<{
150
- readonly template: readonly ["4", DP.DataParserLiteral<{
151
- readonly value: readonly DString.Digit[];
152
- readonly errorMessage?: string | undefined;
153
- readonly identifier?: string | undefined;
154
- readonly checkers: readonly [];
155
- }>, DP.DataParserLiteral<{
156
- readonly value: readonly DString.Digit[];
157
- readonly errorMessage?: string | undefined;
158
- readonly identifier?: string | undefined;
159
- readonly checkers: readonly [];
160
- }>];
161
- readonly errorMessage?: string | undefined;
162
- readonly identifier?: string | undefined;
163
- readonly pattern: RegExp;
164
- readonly checkers: readonly [];
165
- }>, DP.DataParserTemplateLiteral<{
166
- readonly template: readonly ["5", DP.DataParserLiteral<{
167
- readonly value: readonly DString.Digit[];
168
- readonly errorMessage?: string | undefined;
169
- readonly identifier?: string | undefined;
170
- readonly checkers: readonly [];
171
- }>, DP.DataParserLiteral<{
172
- readonly value: readonly DString.Digit[];
173
- readonly errorMessage?: string | undefined;
174
- readonly identifier?: string | undefined;
175
- readonly checkers: readonly [];
176
- }>];
177
- readonly errorMessage?: string | undefined;
178
- readonly identifier?: string | undefined;
179
- readonly pattern: RegExp;
180
- readonly checkers: readonly [];
181
- }>];
182
- readonly errorMessage?: string | undefined;
183
- readonly identifier?: string | undefined;
184
- readonly checkers: readonly [];
185
- }>;
186
- export declare function routeToDataParser(route: Route, params: RouteToDataParserParams): DP.DataParser;
7
+ export declare function routeToDataParser(route: Route, params: RouteToDataParserParams): DP.DataParser[];
@@ -1,46 +1,16 @@
1
- import { stepsToDataParser } from './stepsToDataParser.mjs';
2
- import { DP, pipe, O, innerPipe, A } from '@duplojs/utils';
1
+ import { aggregateStepContract } from './aggregateStepContract.mjs';
2
+ import { A, pipe, O, innerPipe, DP } from '@duplojs/utils';
3
+ import { IgnoreByCodeGeneratorMetadata } from './metadata.mjs';
3
4
 
4
- const digitDataParser = DP.literal(["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]).setIdentifier("Digit");
5
- const responseCodeDataParsers = {
6
- information: DP.templateLiteral([
7
- "1",
8
- digitDataParser,
9
- digitDataParser,
10
- ]),
11
- success: DP.templateLiteral([
12
- "2",
13
- digitDataParser,
14
- digitDataParser,
15
- ]),
16
- redirection: DP.templateLiteral([
17
- "3",
18
- digitDataParser,
19
- digitDataParser,
20
- ]),
21
- clientError: DP.templateLiteral([
22
- "4",
23
- digitDataParser,
24
- digitDataParser,
25
- ]),
26
- serverError: DP.templateLiteral([
27
- "5",
28
- digitDataParser,
29
- digitDataParser,
30
- ]),
31
- };
32
- const responseCodeDataParser = DP.union([
33
- responseCodeDataParsers.information,
34
- responseCodeDataParsers.success,
35
- responseCodeDataParsers.redirection,
36
- responseCodeDataParsers.clientError,
37
- responseCodeDataParsers.serverError,
38
- ]).setIdentifier("ResponseCode");
39
5
  function routeToDataParser(route, params) {
6
+ const isIgnore = A.find(route.definition.metadata, IgnoreByCodeGeneratorMetadata.is);
7
+ if (isIgnore) {
8
+ return [];
9
+ }
40
10
  return pipe([
41
11
  ...route.definition.preflightSteps,
42
12
  ...route.definition.steps,
43
- ], (steps) => stepsToDataParser(steps, {
13
+ ], (steps) => aggregateStepContract(steps, {
44
14
  defaultExtractContract: params.defaultExtractContract,
45
15
  }), O.transformProperty("entrypointContract", innerPipe(O.entries, A.select(({ element: [key, value], select, skip }) => {
46
16
  if (DP.dataParserKind.has(value)) {
@@ -50,25 +20,12 @@ function routeToDataParser(route, params) {
50
20
  return select(O.entry(key, DP.object(value)));
51
21
  }
52
22
  return skip();
53
- }), O.fromEntries)), ({ endpointContract, entrypointContract }) => DP.object({
23
+ }), O.fromEntries)), ({ endpointContract, entrypointContract }) => A.map(route.definition.paths, (path) => DP.object({
54
24
  method: DP.literal(route.definition.method),
55
- path: DP.literal(route.definition.paths),
25
+ path: DP.literal(path),
56
26
  ...entrypointContract,
57
- responses: DP.union([
58
- DP.object({
59
- code: responseCodeDataParser,
60
- information: DP.string(),
61
- body: DP.unknown(),
62
- fromHook: DP.literal(true),
63
- }),
64
- DP.object({
65
- code: responseCodeDataParsers.serverError,
66
- information: DP.string(),
67
- body: DP.unknown(),
68
- }),
69
- ...endpointContract,
70
- ]),
71
- }));
27
+ responses: DP.union(endpointContract),
28
+ })));
72
29
  }
73
30
 
74
- export { digitDataParser, responseCodeDataParser, responseCodeDataParsers, routeToDataParser };
31
+ export { routeToDataParser };