@duplojs/http 0.1.0 → 0.4.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 (266) 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/index.cjs +11 -0
  44. package/dist/core/builders/index.mjs +4 -0
  45. package/dist/core/builders/preflight/index.cjs +10 -0
  46. package/dist/core/builders/preflight/index.mjs +3 -0
  47. package/dist/core/builders/preflight/process.cjs +2 -8
  48. package/dist/core/builders/preflight/process.mjs +2 -8
  49. package/dist/core/builders/preflight/route.cjs +2 -8
  50. package/dist/core/builders/preflight/route.mjs +2 -8
  51. package/dist/core/builders/process/checker.cjs +2 -8
  52. package/dist/core/builders/process/checker.mjs +2 -8
  53. package/dist/core/builders/process/cut.cjs +2 -8
  54. package/dist/core/builders/process/cut.mjs +2 -8
  55. package/dist/core/builders/process/extract.cjs +2 -8
  56. package/dist/core/builders/process/extract.mjs +2 -8
  57. package/dist/core/builders/process/index.cjs +14 -0
  58. package/dist/core/builders/process/index.mjs +7 -0
  59. package/dist/core/builders/process/presetChecker.cjs +2 -8
  60. package/dist/core/builders/process/presetChecker.mjs +2 -8
  61. package/dist/core/builders/process/process.cjs +2 -8
  62. package/dist/core/builders/process/process.mjs +2 -8
  63. package/dist/core/builders/route/checker.cjs +2 -8
  64. package/dist/core/builders/route/checker.mjs +2 -8
  65. package/dist/core/builders/route/cut.cjs +2 -8
  66. package/dist/core/builders/route/cut.mjs +2 -8
  67. package/dist/core/builders/route/extract.cjs +2 -8
  68. package/dist/core/builders/route/extract.mjs +2 -8
  69. package/dist/core/builders/route/handler.cjs +2 -8
  70. package/dist/core/builders/route/handler.mjs +2 -8
  71. package/dist/core/builders/route/index.cjs +16 -0
  72. package/dist/core/builders/route/index.mjs +8 -0
  73. package/dist/core/builders/route/presetChecker.cjs +2 -8
  74. package/dist/core/builders/route/presetChecker.mjs +2 -8
  75. package/dist/core/builders/route/process.cjs +2 -8
  76. package/dist/core/builders/route/process.mjs +2 -8
  77. package/dist/core/floor.cjs +2 -0
  78. package/dist/core/floor.mjs +1 -0
  79. package/dist/core/functionsBuilders/index.cjs +5 -0
  80. package/dist/core/functionsBuilders/index.mjs +2 -0
  81. package/dist/core/functionsBuilders/route/build.cjs +5 -14
  82. package/dist/core/functionsBuilders/route/build.d.ts +3 -1
  83. package/dist/core/functionsBuilders/route/build.mjs +6 -15
  84. package/dist/core/functionsBuilders/route/create.d.ts +2 -0
  85. package/dist/core/functionsBuilders/route/default.cjs +11 -21
  86. package/dist/core/functionsBuilders/route/default.mjs +5 -15
  87. package/dist/core/functionsBuilders/route/hook.cjs +22 -22
  88. package/dist/core/functionsBuilders/route/hook.d.ts +2 -2
  89. package/dist/core/functionsBuilders/route/hook.mjs +2 -2
  90. package/dist/core/functionsBuilders/route/index.cjs +18 -0
  91. package/dist/core/functionsBuilders/route/index.mjs +4 -0
  92. package/dist/core/functionsBuilders/steps/build.cjs +4 -0
  93. package/dist/core/functionsBuilders/steps/build.d.ts +2 -0
  94. package/dist/core/functionsBuilders/steps/build.mjs +5 -1
  95. package/dist/core/functionsBuilders/steps/create.d.ts +3 -2
  96. package/dist/core/functionsBuilders/steps/defaults/checkerStep.cjs +5 -9
  97. package/dist/core/functionsBuilders/steps/defaults/checkerStep.mjs +5 -9
  98. package/dist/core/functionsBuilders/steps/defaults/cutStep.cjs +6 -11
  99. package/dist/core/functionsBuilders/steps/defaults/cutStep.mjs +7 -12
  100. package/dist/core/functionsBuilders/steps/defaults/extractStep.cjs +10 -17
  101. package/dist/core/functionsBuilders/steps/defaults/extractStep.mjs +9 -16
  102. package/dist/core/functionsBuilders/steps/defaults/handlerStep.cjs +6 -11
  103. package/dist/core/functionsBuilders/steps/defaults/handlerStep.mjs +6 -11
  104. package/dist/core/functionsBuilders/steps/defaults/index.cjs +16 -0
  105. package/dist/core/functionsBuilders/steps/defaults/index.mjs +5 -0
  106. package/dist/core/functionsBuilders/steps/defaults/processStep.cjs +7 -12
  107. package/dist/core/functionsBuilders/steps/defaults/processStep.mjs +6 -11
  108. package/dist/core/functionsBuilders/steps/index.cjs +10 -0
  109. package/dist/core/functionsBuilders/steps/index.mjs +3 -0
  110. package/dist/core/hub/defaultNotfoundHandler.cjs +2 -8
  111. package/dist/core/hub/defaultNotfoundHandler.d.ts +1 -1
  112. package/dist/core/hub/defaultNotfoundHandler.mjs +2 -8
  113. package/dist/core/hub/hooks.d.ts +3 -3
  114. package/dist/core/hub/index.cjs +3 -9
  115. package/dist/core/hub/index.mjs +3 -9
  116. package/dist/core/index.cjs +64 -70
  117. package/dist/core/index.mjs +23 -30
  118. package/dist/core/process/index.cjs +1 -0
  119. package/dist/core/process/index.mjs +1 -0
  120. package/dist/core/process/types/index.cjs +2 -0
  121. package/dist/core/process/types/index.mjs +1 -0
  122. package/dist/core/response/base.cjs +40 -0
  123. package/dist/core/response/base.d.ts +21 -0
  124. package/dist/core/response/base.mjs +38 -0
  125. package/dist/core/response/contract.cjs +13 -13
  126. package/dist/core/response/contract.d.ts +121 -119
  127. package/dist/core/response/contract.mjs +14 -14
  128. package/dist/core/{route/hooks/response.cjs → response/hook.cjs} +5 -4
  129. package/dist/core/{route/hooks/response.d.ts → response/hook.d.ts} +3 -3
  130. package/dist/core/{route/hooks/response.mjs → response/hook.mjs} +4 -3
  131. package/dist/core/response/index.cjs +9 -38
  132. package/dist/core/response/index.d.ts +3 -20
  133. package/dist/core/response/index.mjs +3 -38
  134. package/dist/core/response/predicted.cjs +22 -0
  135. package/dist/core/response/predicted.d.ts +11 -0
  136. package/dist/core/response/predicted.mjs +20 -0
  137. package/dist/core/route/{hooks/index.cjs → hooks.cjs} +2 -3
  138. package/dist/core/route/{hooks/index.d.ts → hooks.d.ts} +4 -4
  139. package/dist/core/route/{hooks/index.mjs → hooks.mjs} +2 -2
  140. package/dist/core/route/index.cjs +5 -4
  141. package/dist/core/route/index.mjs +2 -1
  142. package/dist/core/route/types/buildedRoute.cjs +2 -0
  143. package/dist/core/route/types/buildedRoute.mjs +1 -0
  144. package/dist/core/route/types/index.cjs +4 -0
  145. package/dist/core/route/types/index.mjs +1 -0
  146. package/dist/core/router/buildError.cjs +3 -1
  147. package/dist/core/router/buildError.d.ts +4 -2
  148. package/dist/core/router/buildError.mjs +3 -1
  149. package/dist/core/router/index.cjs +13 -7
  150. package/dist/core/router/index.mjs +14 -8
  151. package/dist/core/router/types/buildedRouter.cjs +2 -0
  152. package/dist/core/router/types/buildedRouter.mjs +1 -0
  153. package/dist/core/router/types/index.cjs +4 -0
  154. package/dist/core/router/types/index.mjs +1 -0
  155. package/dist/core/steps/cut.d.ts +3 -3
  156. package/dist/core/steps/handler.d.ts +3 -3
  157. package/dist/core/steps/identifier.d.ts +2 -2
  158. package/dist/core/steps/index.cjs +29 -0
  159. package/dist/core/steps/index.mjs +9 -0
  160. package/dist/core/steps/types/buildedStep.cjs +2 -0
  161. package/dist/core/steps/types/buildedStep.mjs +1 -0
  162. package/dist/core/steps/types/index.cjs +6 -0
  163. package/dist/core/steps/types/index.mjs +3 -0
  164. package/dist/core/steps/types/stepFunctionParams.cjs +2 -0
  165. package/dist/core/steps/types/stepFunctionParams.d.ts +2 -2
  166. package/dist/core/steps/types/stepFunctionParams.mjs +1 -0
  167. package/dist/core/steps/types/steps.cjs +2 -0
  168. package/dist/core/steps/types/steps.mjs +1 -0
  169. package/dist/core/types/environment.cjs +2 -0
  170. package/dist/core/types/environment.d.ts +1 -1
  171. package/dist/core/types/environment.mjs +1 -0
  172. package/dist/core/types/forbiddenBigintDataParser.cjs +2 -0
  173. package/dist/core/types/forbiddenBigintDataParser.d.ts +6 -0
  174. package/dist/core/types/forbiddenBigintDataParser.mjs +1 -0
  175. package/dist/core/types/index.cjs +5 -0
  176. package/dist/core/types/index.d.ts +1 -0
  177. package/dist/core/types/index.mjs +2 -0
  178. package/dist/interfaces/bun/index.cjs +1 -9
  179. package/dist/interfaces/bun/index.mjs +1 -9
  180. package/dist/interfaces/bun/types/index.cjs +4 -0
  181. package/dist/interfaces/bun/types/index.mjs +1 -0
  182. package/dist/interfaces/bun/types/request.cjs +5 -0
  183. package/dist/interfaces/bun/types/request.mjs +2 -0
  184. package/dist/interfaces/deno/index.cjs +1 -0
  185. package/dist/interfaces/deno/index.mjs +1 -0
  186. package/dist/interfaces/deno/types/index.cjs +2 -0
  187. package/dist/interfaces/deno/types/index.mjs +1 -0
  188. package/dist/interfaces/node/createHttpServer.cjs +11 -3
  189. package/dist/interfaces/node/createHttpServer.d.ts +2 -1
  190. package/dist/interfaces/node/createHttpServer.mjs +11 -3
  191. package/dist/interfaces/node/error/index.cjs +11 -0
  192. package/dist/interfaces/node/error/index.mjs +3 -0
  193. package/dist/interfaces/node/hooks.cjs +17 -13
  194. package/dist/interfaces/node/hooks.mjs +16 -12
  195. package/dist/interfaces/node/index.cjs +6 -13
  196. package/dist/interfaces/node/index.mjs +4 -11
  197. package/dist/interfaces/node/types/host.cjs +2 -0
  198. package/dist/interfaces/node/types/host.mjs +1 -0
  199. package/dist/interfaces/node/types/index.cjs +5 -0
  200. package/dist/interfaces/node/types/index.mjs +2 -0
  201. package/dist/interfaces/node/types/request.cjs +5 -0
  202. package/dist/interfaces/node/types/request.mjs +2 -0
  203. package/dist/plugins/codeGenerator/index.cjs +13 -0
  204. package/dist/plugins/codeGenerator/index.d.ts +5 -0
  205. package/dist/plugins/codeGenerator/index.mjs +5 -0
  206. package/dist/plugins/codeGenerator/plugin.cjs +51 -0
  207. package/dist/plugins/codeGenerator/plugin.d.ts +5 -0
  208. package/dist/plugins/codeGenerator/plugin.mjs +30 -0
  209. package/dist/plugins/codeGenerator/routeToDataParser.cjs +28 -0
  210. package/dist/plugins/codeGenerator/routeToDataParser.d.ts +7 -0
  211. package/dist/plugins/codeGenerator/routeToDataParser.mjs +26 -0
  212. package/dist/plugins/codeGenerator/stepsToDataParser.cjs +66 -0
  213. package/dist/plugins/codeGenerator/stepsToDataParser.d.ts +14 -0
  214. package/dist/plugins/codeGenerator/stepsToDataParser.mjs +64 -0
  215. package/dist/plugins/codeGenerator/types/entrypointKey.cjs +2 -0
  216. package/dist/plugins/codeGenerator/types/entrypointKey.d.ts +1 -0
  217. package/dist/plugins/codeGenerator/types/entrypointKey.mjs +1 -0
  218. package/dist/plugins/codeGenerator/types/index.cjs +4 -0
  219. package/dist/plugins/codeGenerator/types/index.d.ts +1 -0
  220. package/dist/plugins/codeGenerator/types/index.mjs +1 -0
  221. package/dist/plugins/openApiGenerator/aggregateStepContract.cjs +62 -0
  222. package/dist/plugins/openApiGenerator/aggregateStepContract.d.ts +18 -0
  223. package/dist/plugins/openApiGenerator/aggregateStepContract.mjs +60 -0
  224. package/dist/plugins/openApiGenerator/index.cjs +17 -0
  225. package/dist/plugins/openApiGenerator/index.d.ts +7 -0
  226. package/dist/plugins/openApiGenerator/index.mjs +7 -0
  227. package/dist/plugins/openApiGenerator/makeOpenApiPage.cjs +30 -0
  228. package/dist/plugins/openApiGenerator/makeOpenApiPage.d.ts +7 -0
  229. package/dist/plugins/openApiGenerator/makeOpenApiPage.mjs +28 -0
  230. package/dist/plugins/openApiGenerator/makeOpenApiRoute.cjs +15 -0
  231. package/dist/plugins/openApiGenerator/makeOpenApiRoute.d.ts +18 -0
  232. package/dist/plugins/openApiGenerator/makeOpenApiRoute.mjs +13 -0
  233. package/dist/plugins/openApiGenerator/plugin.cjs +90 -0
  234. package/dist/plugins/openApiGenerator/plugin.d.ts +49 -0
  235. package/dist/plugins/openApiGenerator/plugin.mjs +88 -0
  236. package/dist/plugins/openApiGenerator/routeToOpenApi.cjs +163 -0
  237. package/dist/plugins/openApiGenerator/routeToOpenApi.d.ts +35 -0
  238. package/dist/plugins/openApiGenerator/routeToOpenApi.mjs +161 -0
  239. package/dist/plugins/openApiGenerator/types/endpointResponse.cjs +2 -0
  240. package/dist/plugins/openApiGenerator/types/endpointResponse.d.ts +19 -0
  241. package/dist/plugins/openApiGenerator/types/endpointResponse.mjs +1 -0
  242. package/dist/plugins/openApiGenerator/types/entrypoint.cjs +2 -0
  243. package/dist/plugins/openApiGenerator/types/entrypoint.d.ts +22 -0
  244. package/dist/plugins/openApiGenerator/types/entrypoint.mjs +1 -0
  245. package/dist/plugins/openApiGenerator/types/entrypointKey.cjs +2 -0
  246. package/dist/plugins/openApiGenerator/types/entrypointKey.d.ts +1 -0
  247. package/dist/plugins/openApiGenerator/types/entrypointKey.mjs +1 -0
  248. package/dist/plugins/openApiGenerator/types/index.cjs +11 -0
  249. package/dist/plugins/openApiGenerator/types/index.d.ts +8 -0
  250. package/dist/plugins/openApiGenerator/types/index.mjs +8 -0
  251. package/dist/plugins/openApiGenerator/types/openApiDocument.cjs +2 -0
  252. package/dist/plugins/openApiGenerator/types/openApiDocument.d.ts +31 -0
  253. package/dist/plugins/openApiGenerator/types/openApiDocument.mjs +1 -0
  254. package/dist/plugins/openApiGenerator/types/openApiMethod.cjs +2 -0
  255. package/dist/plugins/openApiGenerator/types/openApiMethod.d.ts +1 -0
  256. package/dist/plugins/openApiGenerator/types/openApiMethod.mjs +1 -0
  257. package/dist/plugins/openApiGenerator/types/openApiOperation.cjs +2 -0
  258. package/dist/plugins/openApiGenerator/types/openApiOperation.d.ts +8 -0
  259. package/dist/plugins/openApiGenerator/types/openApiOperation.mjs +1 -0
  260. package/dist/plugins/openApiGenerator/types/openApiPath.cjs +2 -0
  261. package/dist/plugins/openApiGenerator/types/openApiPath.d.ts +4 -0
  262. package/dist/plugins/openApiGenerator/types/openApiPath.mjs +1 -0
  263. package/dist/plugins/openApiGenerator/types/openApiSecuritySchema.cjs +2 -0
  264. package/dist/plugins/openApiGenerator/types/openApiSecuritySchema.d.ts +8 -0
  265. package/dist/plugins/openApiGenerator/types/openApiSecuritySchema.mjs +1 -0
  266. package/package.json +22 -3
@@ -1,4 +1,4 @@
1
1
  import { type O } from "@duplojs/utils";
2
2
  export interface EnvironmentCustom {
3
3
  }
4
- export type Environment = (EnvironmentCustom[O.GetPropsWithValue<EnvironmentCustom, true>] | "DEV" | "PROD");
4
+ export type Environment = (EnvironmentCustom[O.GetPropsWithValue<EnvironmentCustom, true>] | "DEV" | "PROD" | "BUILD");
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,2 @@
1
+ 'use strict';
2
+
@@ -0,0 +1,6 @@
1
+ import { type DP } from "@duplojs/utils";
2
+ declare const SymbolForbiddenBigintDataParser: unique symbol;
3
+ export type ForbiddenBigintDataParser<GenericDataParser extends DP.DataParser> = DP.Contain<GenericDataParser, DP.DataParserBigInt<any>> extends true ? {
4
+ [SymbolForbiddenBigintDataParser]: "Bigint dataParser is not supported.";
5
+ } : unknown;
6
+ export {};
@@ -0,0 +1,5 @@
1
+ 'use strict';
2
+
3
+ require('./environment.cjs');
4
+ require('./forbiddenBigintDataParser.cjs');
5
+
@@ -1 +1,2 @@
1
1
  export * from "./environment";
2
+ export * from "./forbiddenBigintDataParser";
@@ -0,0 +1,2 @@
1
+ import './environment.mjs';
2
+ import './forbiddenBigintDataParser.mjs';
@@ -1,14 +1,6 @@
1
1
  'use strict';
2
2
 
3
- require('../../core/request.cjs');
4
- require('../../core/steps/kind.cjs');
5
- require('../../core/steps/identifier.cjs');
6
- require('../../core/steps/checker.cjs');
7
- require('../../core/steps/extract.cjs');
8
- require('../../core/steps/cut.cjs');
9
- require('../../core/steps/handler.cjs');
10
- require('../../core/steps/process.cjs');
11
- require('../../core/steps/presetChecker.cjs');
3
+ require('./types/index.cjs');
12
4
  var kind = require('./kind.cjs');
13
5
 
14
6
 
@@ -1,10 +1,2 @@
1
- import '../../core/request.mjs';
2
- import '../../core/steps/kind.mjs';
3
- import '../../core/steps/identifier.mjs';
4
- import '../../core/steps/checker.mjs';
5
- import '../../core/steps/extract.mjs';
6
- import '../../core/steps/cut.mjs';
7
- import '../../core/steps/handler.mjs';
8
- import '../../core/steps/process.mjs';
9
- import '../../core/steps/presetChecker.mjs';
1
+ import './types/index.mjs';
10
2
  export { createInterfacesBunLibKind } from './kind.mjs';
@@ -0,0 +1,4 @@
1
+ 'use strict';
2
+
3
+ require('./request.cjs');
4
+
@@ -0,0 +1 @@
1
+ import './request.mjs';
@@ -0,0 +1,5 @@
1
+ 'use strict';
2
+
3
+ require('../../../core/request.cjs');
4
+ require('../../../core/steps/index.cjs');
5
+
@@ -0,0 +1,2 @@
1
+ import '../../../core/request.mjs';
2
+ import '../../../core/steps/index.mjs';
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ require('./types/index.cjs');
3
4
  var kind = require('./kind.cjs');
4
5
 
5
6
 
@@ -1 +1,2 @@
1
+ import './types/index.mjs';
1
2
  export { createInterfacesDenoLibKind } from './kind.mjs';
@@ -0,0 +1,2 @@
1
+ 'use strict';
2
+
@@ -2,6 +2,7 @@
2
2
 
3
3
  require('../../core/hub/index.cjs');
4
4
  var index = require('../../core/router/index.cjs');
5
+ var utils = require('@duplojs/utils');
5
6
  var http = require('http');
6
7
  var https = require('https');
7
8
  var hooks$1 = require('./hooks.cjs');
@@ -12,12 +13,16 @@ async function createHttpServer(inputHub, params) {
12
13
  ...params,
13
14
  maxBodySize: "50mb",
14
15
  informationHeaderKey: "information",
16
+ predictedHeaderKey: "predicted",
15
17
  fromHookHeaderKey: "from-hook",
16
18
  interface: "node",
17
19
  };
18
- const newHub1 = await hooks.launchHookServer(inputHub.aggregatesHooksHubLifeCycle("beforeServerBuildRoute"), inputHub, httpServerParams);
20
+ const newHub1 = await hooks.launchHookServer(inputHub.aggregatesHooksHubLifeCycle("beforeServerBuildRoutes"), inputHub, httpServerParams);
19
21
  const router = await index.buildRouter(newHub1.addRouteHooks(hooks$1.makeNodeHook(newHub1, httpServerParams)));
20
22
  const newHub2 = await hooks.launchHookServer(newHub1.aggregatesHooksHubLifeCycle("beforeStartServer"), newHub1, httpServerParams);
23
+ if (inputHub.config.environment === "BUILD") {
24
+ process.exit(0);
25
+ }
21
26
  const server = params.https
22
27
  ? https.createServer(params.https)
23
28
  : http.createServer(params.http ?? {});
@@ -41,12 +46,15 @@ async function createHttpServer(inputHub, params) {
41
46
  next: hooks.serverErrorNextHookFunction,
42
47
  serverRequest,
43
48
  serverResponse,
44
- });
49
+ }).catch(utils.forward);
45
50
  if (!serverResponse.headersSent && !serverResponse.writableEnded) {
46
51
  serverResponse.writeHead(500, {
47
52
  [httpServerParams.informationHeaderKey]: "critical-server-error",
48
53
  });
49
- serverResponse.write(error?.toString?.() ?? "unknown-server-error");
54
+ const maybeError = error?.toString?.();
55
+ serverResponse.write(typeof maybeError === "string"
56
+ ? maybeError
57
+ : "unknown-server-error");
50
58
  }
51
59
  if (!serverResponse.writableEnded) {
52
60
  serverResponse.end();
@@ -10,6 +10,7 @@ declare module "../../core/hub" {
10
10
  readonly port: number;
11
11
  readonly maxBodySize: BytesInString | number;
12
12
  readonly informationHeaderKey: string;
13
+ readonly predictedHeaderKey: string;
13
14
  readonly fromHookHeaderKey: string;
14
15
  readonly http?: http.ServerOptions;
15
16
  readonly https?: https.ServerOptions;
@@ -19,5 +20,5 @@ declare module "../../core/hub" {
19
20
  readonly serverResponse: http.ServerResponse;
20
21
  }
21
22
  }
22
- export type CreateHttpServerParams = O.PartialKeys<Omit<HttpServerParams, "interface">, "maxBodySize" | "informationHeaderKey" | "fromHookHeaderKey">;
23
+ export type CreateHttpServerParams = O.PartialKeys<Omit<HttpServerParams, "interface">, "maxBodySize" | "informationHeaderKey" | "predictedHeaderKey" | "fromHookHeaderKey">;
23
24
  export declare function createHttpServer(inputHub: Hub, params: CreateHttpServerParams): Promise<https.Server<typeof http.IncomingMessage, typeof http.ServerResponse> | http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>>;
@@ -1,5 +1,6 @@
1
1
  import '../../core/hub/index.mjs';
2
2
  import { buildRouter } from '../../core/router/index.mjs';
3
+ import { forward } from '@duplojs/utils';
3
4
  import http from 'http';
4
5
  import https from 'https';
5
6
  import { makeNodeHook } from './hooks.mjs';
@@ -10,12 +11,16 @@ async function createHttpServer(inputHub, params) {
10
11
  ...params,
11
12
  maxBodySize: "50mb",
12
13
  informationHeaderKey: "information",
14
+ predictedHeaderKey: "predicted",
13
15
  fromHookHeaderKey: "from-hook",
14
16
  interface: "node",
15
17
  };
16
- const newHub1 = await launchHookServer(inputHub.aggregatesHooksHubLifeCycle("beforeServerBuildRoute"), inputHub, httpServerParams);
18
+ const newHub1 = await launchHookServer(inputHub.aggregatesHooksHubLifeCycle("beforeServerBuildRoutes"), inputHub, httpServerParams);
17
19
  const router = await buildRouter(newHub1.addRouteHooks(makeNodeHook(newHub1, httpServerParams)));
18
20
  const newHub2 = await launchHookServer(newHub1.aggregatesHooksHubLifeCycle("beforeStartServer"), newHub1, httpServerParams);
21
+ if (inputHub.config.environment === "BUILD") {
22
+ process.exit(0);
23
+ }
19
24
  const server = params.https
20
25
  ? https.createServer(params.https)
21
26
  : http.createServer(params.http ?? {});
@@ -39,12 +44,15 @@ async function createHttpServer(inputHub, params) {
39
44
  next: serverErrorNextHookFunction,
40
45
  serverRequest,
41
46
  serverResponse,
42
- });
47
+ }).catch(forward);
43
48
  if (!serverResponse.headersSent && !serverResponse.writableEnded) {
44
49
  serverResponse.writeHead(500, {
45
50
  [httpServerParams.informationHeaderKey]: "critical-server-error",
46
51
  });
47
- serverResponse.write(error?.toString?.() ?? "unknown-server-error");
52
+ const maybeError = error?.toString?.();
53
+ serverResponse.write(typeof maybeError === "string"
54
+ ? maybeError
55
+ : "unknown-server-error");
48
56
  }
49
57
  if (!serverResponse.writableEnded) {
50
58
  serverResponse.end();
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ var bodySizeExceedsLimitError = require('./bodySizeExceedsLimitError.cjs');
4
+ var bodyParseWrongChunkReceived = require('./bodyParseWrongChunkReceived.cjs');
5
+ var bodyParseUnknownError = require('./bodyParseUnknownError.cjs');
6
+
7
+
8
+
9
+ exports.BodySizeExceedsLimitError = bodySizeExceedsLimitError.BodySizeExceedsLimitError;
10
+ exports.BodyParseWrongChunkReceived = bodyParseWrongChunkReceived.BodyParseWrongChunkReceived;
11
+ exports.BodyParseUnknownError = bodyParseUnknownError.BodyParseUnknownError;
@@ -0,0 +1,3 @@
1
+ export { BodySizeExceedsLimitError } from './bodySizeExceedsLimitError.mjs';
2
+ export { BodyParseWrongChunkReceived } from './bodyParseWrongChunkReceived.mjs';
3
+ export { BodyParseUnknownError } from './bodyParseUnknownError.mjs';
@@ -2,18 +2,21 @@
2
2
 
3
3
  require('../../core/route/index.cjs');
4
4
  var utils = require('@duplojs/utils');
5
+ require('./error/index.cjs');
6
+ var hooks = require('../../core/route/hooks.cjs');
7
+ var predicted = require('../../core/response/predicted.cjs');
8
+ var hook = require('../../core/response/hook.cjs');
5
9
  var bodySizeExceedsLimitError = require('./error/bodySizeExceedsLimitError.cjs');
6
10
  var bodyParseWrongChunkReceived = require('./error/bodyParseWrongChunkReceived.cjs');
7
11
  var bodyParseUnknownError = require('./error/bodyParseUnknownError.cjs');
8
- var index = require('../../core/route/hooks/index.cjs');
9
- var response = require('../../core/route/hooks/response.cjs');
10
12
 
11
13
  function makeNodeHook(hub, serverParams) {
12
14
  const informationHeaderKey = serverParams.informationHeaderKey;
15
+ const predictedHeaderKey = serverParams.predictedHeaderKey;
13
16
  const fromHookHeaderKey = serverParams.fromHookHeaderKey;
14
17
  const isDev = hub.config.environment === "DEV";
15
18
  const maxBodySize = utils.stringToBytes(serverParams.maxBodySize);
16
- return index.createHookRouteLifeCycle({
19
+ return hooks.createHookRouteLifeCycle({
17
20
  async parseBody({ request, exit }) {
18
21
  const contentType = request.headers["content-type"] instanceof Array
19
22
  ? request.headers["content-type"].join(", ")
@@ -78,17 +81,20 @@ function makeNodeHook(hub, serverParams) {
78
81
  },
79
82
  beforeSendResponse({ request, currentResponse, exit }) {
80
83
  const body = currentResponse.body;
81
- if (typeof body === "number"
82
- || typeof body === "string"
83
- || body === null
84
+ if (typeof body === "string"
84
85
  || body instanceof Error) {
85
86
  currentResponse.setHeader("content-type", "text/plain; charset=utf-8");
86
87
  }
87
- else if (typeof body === "object") {
88
+ else if (typeof body === "object"
89
+ || typeof body === "number"
90
+ || typeof body === "boolean") {
88
91
  currentResponse.setHeader("content-type", "application/json; charset=utf-8");
89
92
  }
90
93
  currentResponse.setHeader(informationHeaderKey, currentResponse.information);
91
- if (currentResponse instanceof response.HookResponse) {
94
+ if (currentResponse instanceof predicted.PredictedResponse) {
95
+ currentResponse.setHeader(predictedHeaderKey, "1");
96
+ }
97
+ else if (currentResponse instanceof hook.HookResponse) {
92
98
  currentResponse.setHeader(fromHookHeaderKey, currentResponse.fromHook);
93
99
  }
94
100
  request.raw.response.writeHead(Number(currentResponse.code), currentResponse.headers);
@@ -100,16 +106,14 @@ function makeNodeHook(hub, serverParams) {
100
106
  if (body instanceof Error) {
101
107
  rawResponse.write(body.toString());
102
108
  }
103
- else if (typeof body === "object") {
109
+ else if (typeof body === "object"
110
+ || typeof body === "number"
111
+ || typeof body === "boolean") {
104
112
  rawResponse.write(JSON.stringify(body));
105
113
  }
106
114
  else if (typeof body === "string") {
107
115
  rawResponse.write(body);
108
116
  }
109
- else if (typeof body === "number"
110
- || typeof body === "bigint") {
111
- rawResponse.write(body.toString());
112
- }
113
117
  rawResponse.end();
114
118
  return exit();
115
119
  },
@@ -1,13 +1,16 @@
1
1
  import '../../core/route/index.mjs';
2
2
  import { stringToBytes } from '@duplojs/utils';
3
+ import './error/index.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';
3
7
  import { BodySizeExceedsLimitError } from './error/bodySizeExceedsLimitError.mjs';
4
8
  import { BodyParseWrongChunkReceived } from './error/bodyParseWrongChunkReceived.mjs';
5
9
  import { BodyParseUnknownError } from './error/bodyParseUnknownError.mjs';
6
- import { createHookRouteLifeCycle } from '../../core/route/hooks/index.mjs';
7
- import { HookResponse } from '../../core/route/hooks/response.mjs';
8
10
 
9
11
  function makeNodeHook(hub, serverParams) {
10
12
  const informationHeaderKey = serverParams.informationHeaderKey;
13
+ const predictedHeaderKey = serverParams.predictedHeaderKey;
11
14
  const fromHookHeaderKey = serverParams.fromHookHeaderKey;
12
15
  const isDev = hub.config.environment === "DEV";
13
16
  const maxBodySize = stringToBytes(serverParams.maxBodySize);
@@ -76,17 +79,20 @@ function makeNodeHook(hub, serverParams) {
76
79
  },
77
80
  beforeSendResponse({ request, currentResponse, exit }) {
78
81
  const body = currentResponse.body;
79
- if (typeof body === "number"
80
- || typeof body === "string"
81
- || body === null
82
+ if (typeof body === "string"
82
83
  || body instanceof Error) {
83
84
  currentResponse.setHeader("content-type", "text/plain; charset=utf-8");
84
85
  }
85
- else if (typeof body === "object") {
86
+ else if (typeof body === "object"
87
+ || typeof body === "number"
88
+ || typeof body === "boolean") {
86
89
  currentResponse.setHeader("content-type", "application/json; charset=utf-8");
87
90
  }
88
91
  currentResponse.setHeader(informationHeaderKey, currentResponse.information);
89
- if (currentResponse instanceof HookResponse) {
92
+ if (currentResponse instanceof PredictedResponse) {
93
+ currentResponse.setHeader(predictedHeaderKey, "1");
94
+ }
95
+ else if (currentResponse instanceof HookResponse) {
90
96
  currentResponse.setHeader(fromHookHeaderKey, currentResponse.fromHook);
91
97
  }
92
98
  request.raw.response.writeHead(Number(currentResponse.code), currentResponse.headers);
@@ -98,16 +104,14 @@ function makeNodeHook(hub, serverParams) {
98
104
  if (body instanceof Error) {
99
105
  rawResponse.write(body.toString());
100
106
  }
101
- else if (typeof body === "object") {
107
+ else if (typeof body === "object"
108
+ || typeof body === "number"
109
+ || typeof body === "boolean") {
102
110
  rawResponse.write(JSON.stringify(body));
103
111
  }
104
112
  else if (typeof body === "string") {
105
113
  rawResponse.write(body);
106
114
  }
107
- else if (typeof body === "number"
108
- || typeof body === "bigint") {
109
- rawResponse.write(body.toString());
110
- }
111
115
  rawResponse.end();
112
116
  return exit();
113
117
  },
@@ -1,26 +1,19 @@
1
1
  'use strict';
2
2
 
3
- require('../../core/request.cjs');
4
- require('../../core/steps/kind.cjs');
5
- require('../../core/steps/identifier.cjs');
6
- require('../../core/steps/checker.cjs');
7
- require('../../core/steps/extract.cjs');
8
- require('../../core/steps/cut.cjs');
9
- require('../../core/steps/handler.cjs');
10
- require('../../core/steps/process.cjs');
11
- require('../../core/steps/presetChecker.cjs');
3
+ require('./types/index.cjs');
12
4
  var kind = require('./kind.cjs');
5
+ require('./error/index.cjs');
6
+ var createHttpServer = require('./createHttpServer.cjs');
7
+ var hooks = require('./hooks.cjs');
13
8
  var bodySizeExceedsLimitError = require('./error/bodySizeExceedsLimitError.cjs');
14
9
  var bodyParseWrongChunkReceived = require('./error/bodyParseWrongChunkReceived.cjs');
15
10
  var bodyParseUnknownError = require('./error/bodyParseUnknownError.cjs');
16
- var createHttpServer = require('./createHttpServer.cjs');
17
- var hooks = require('./hooks.cjs');
18
11
 
19
12
 
20
13
 
21
14
  exports.createInterfacesNodeLibKind = kind.createInterfacesNodeLibKind;
15
+ exports.createHttpServer = createHttpServer.createHttpServer;
16
+ exports.makeNodeHook = hooks.makeNodeHook;
22
17
  exports.BodySizeExceedsLimitError = bodySizeExceedsLimitError.BodySizeExceedsLimitError;
23
18
  exports.BodyParseWrongChunkReceived = bodyParseWrongChunkReceived.BodyParseWrongChunkReceived;
24
19
  exports.BodyParseUnknownError = bodyParseUnknownError.BodyParseUnknownError;
25
- exports.createHttpServer = createHttpServer.createHttpServer;
26
- exports.makeNodeHook = hooks.makeNodeHook;
@@ -1,15 +1,8 @@
1
- import '../../core/request.mjs';
2
- import '../../core/steps/kind.mjs';
3
- import '../../core/steps/identifier.mjs';
4
- import '../../core/steps/checker.mjs';
5
- import '../../core/steps/extract.mjs';
6
- import '../../core/steps/cut.mjs';
7
- import '../../core/steps/handler.mjs';
8
- import '../../core/steps/process.mjs';
9
- import '../../core/steps/presetChecker.mjs';
1
+ import './types/index.mjs';
10
2
  export { createInterfacesNodeLibKind } from './kind.mjs';
3
+ import './error/index.mjs';
4
+ export { createHttpServer } from './createHttpServer.mjs';
5
+ export { makeNodeHook } from './hooks.mjs';
11
6
  export { BodySizeExceedsLimitError } from './error/bodySizeExceedsLimitError.mjs';
12
7
  export { BodyParseWrongChunkReceived } from './error/bodyParseWrongChunkReceived.mjs';
13
8
  export { BodyParseUnknownError } from './error/bodyParseUnknownError.mjs';
14
- export { createHttpServer } from './createHttpServer.mjs';
15
- export { makeNodeHook } from './hooks.mjs';
@@ -0,0 +1,2 @@
1
+ 'use strict';
2
+
@@ -0,0 +1,5 @@
1
+ 'use strict';
2
+
3
+ require('./host.cjs');
4
+ require('./request.cjs');
5
+
@@ -0,0 +1,2 @@
1
+ import './host.mjs';
2
+ import './request.mjs';
@@ -0,0 +1,5 @@
1
+ 'use strict';
2
+
3
+ require('../../../core/request.cjs');
4
+ require('../../../core/steps/index.cjs');
5
+
@@ -0,0 +1,2 @@
1
+ import '../../../core/request.mjs';
2
+ import '../../../core/steps/index.mjs';
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ require('@duplojs/data-parser-tools/toTypescript');
4
+ require('./types/index.cjs');
5
+ var plugin = require('./plugin.cjs');
6
+ var routeToDataParser = require('./routeToDataParser.cjs');
7
+ var stepsToDataParser = require('./stepsToDataParser.cjs');
8
+
9
+
10
+
11
+ exports.codeGeneratorPlugin = plugin.codeGeneratorPlugin;
12
+ exports.routeToDataParser = routeToDataParser.routeToDataParser;
13
+ exports.stepsToDataParser = stepsToDataParser.stepsToDataParser;
@@ -0,0 +1,5 @@
1
+ import "@duplojs/data-parser-tools/toTypescript";
2
+ export * from "./types";
3
+ export * from "./plugin";
4
+ export * from "./routeToDataParser";
5
+ export * from "./stepsToDataParser";
@@ -0,0 +1,5 @@
1
+ import '@duplojs/data-parser-tools/toTypescript';
2
+ import './types/index.mjs';
3
+ export { codeGeneratorPlugin } from './plugin.mjs';
4
+ export { routeToDataParser } from './routeToDataParser.mjs';
5
+ export { stepsToDataParser } from './stepsToDataParser.mjs';
@@ -0,0 +1,51 @@
1
+ 'use strict';
2
+
3
+ var DataParserToTypescript = require('@duplojs/data-parser-tools/toTypescript');
4
+ var utils = require('@duplojs/utils');
5
+ var routeToDataParser = require('./routeToDataParser.cjs');
6
+ var promises = require('node:fs/promises');
7
+
8
+ function _interopNamespaceDefault(e) {
9
+ var n = Object.create(null);
10
+ if (e) {
11
+ Object.keys(e).forEach(function (k) {
12
+ if (k !== 'default') {
13
+ var d = Object.getOwnPropertyDescriptor(e, k);
14
+ Object.defineProperty(n, k, d.get ? d : {
15
+ enumerable: true,
16
+ get: function () { return e[k]; }
17
+ });
18
+ }
19
+ });
20
+ }
21
+ n.default = e;
22
+ return Object.freeze(n);
23
+ }
24
+
25
+ var DataParserToTypescript__namespace = /*#__PURE__*/_interopNamespaceDefault(DataParserToTypescript);
26
+
27
+ function codeGeneratorPlugin(pluginParams) {
28
+ return () => ({
29
+ name: "code-generator",
30
+ hooksHubLifeCycle: [
31
+ {
32
+ beforeStartServer: async (hub) => {
33
+ const routes = hub.aggregatesRoutes();
34
+ const dataParserRoutes = utils.A.flatMap(routes, (route) => routeToDataParser.routeToDataParser(route, {
35
+ defaultExtractContract: hub.defaultExtractContract,
36
+ }));
37
+ if (!utils.A.minElements(dataParserRoutes, 1)) {
38
+ return;
39
+ }
40
+ const output = DataParserToTypescript__namespace.render(utils.DP.union(dataParserRoutes), {
41
+ identifier: "Routes",
42
+ transformers: DataParserToTypescript__namespace.defaultTransformers,
43
+ });
44
+ await promises.writeFile(pluginParams.outputFile, output);
45
+ },
46
+ },
47
+ ],
48
+ });
49
+ }
50
+
51
+ exports.codeGeneratorPlugin = codeGeneratorPlugin;
@@ -0,0 +1,5 @@
1
+ import { type HubPlugin } from "../../core/hub";
2
+ export interface CodeGeneratorPluginParams {
3
+ outputFile: string;
4
+ }
5
+ export declare function codeGeneratorPlugin(pluginParams: CodeGeneratorPluginParams): () => HubPlugin;
@@ -0,0 +1,30 @@
1
+ import * as DataParserToTypescript from '@duplojs/data-parser-tools/toTypescript';
2
+ import { A, DP } from '@duplojs/utils';
3
+ import { routeToDataParser } from './routeToDataParser.mjs';
4
+ import { writeFile } from 'node:fs/promises';
5
+
6
+ function codeGeneratorPlugin(pluginParams) {
7
+ return () => ({
8
+ name: "code-generator",
9
+ hooksHubLifeCycle: [
10
+ {
11
+ beforeStartServer: async (hub) => {
12
+ const routes = hub.aggregatesRoutes();
13
+ const dataParserRoutes = A.flatMap(routes, (route) => routeToDataParser(route, {
14
+ defaultExtractContract: hub.defaultExtractContract,
15
+ }));
16
+ if (!A.minElements(dataParserRoutes, 1)) {
17
+ return;
18
+ }
19
+ const output = DataParserToTypescript.render(DP.union(dataParserRoutes), {
20
+ identifier: "Routes",
21
+ transformers: DataParserToTypescript.defaultTransformers,
22
+ });
23
+ await writeFile(pluginParams.outputFile, output);
24
+ },
25
+ },
26
+ ],
27
+ });
28
+ }
29
+
30
+ export { codeGeneratorPlugin };
@@ -0,0 +1,28 @@
1
+ 'use strict';
2
+
3
+ var stepsToDataParser = require('./stepsToDataParser.cjs');
4
+ var utils = require('@duplojs/utils');
5
+
6
+ function routeToDataParser(route, params) {
7
+ return utils.pipe([
8
+ ...route.definition.preflightSteps,
9
+ ...route.definition.steps,
10
+ ], (steps) => stepsToDataParser.stepsToDataParser(steps, {
11
+ defaultExtractContract: params.defaultExtractContract,
12
+ }), utils.O.transformProperty("entrypointContract", utils.innerPipe(utils.O.entries, utils.A.select(({ element: [key, value], select, skip }) => {
13
+ if (utils.DP.dataParserKind.has(value)) {
14
+ return select(utils.O.entry(key, value));
15
+ }
16
+ if (utils.O.countKeys(value) > 0) {
17
+ return select(utils.O.entry(key, utils.DP.object(value)));
18
+ }
19
+ return skip();
20
+ }), utils.O.fromEntries)), ({ endpointContract, entrypointContract }) => utils.A.map(route.definition.paths, (path) => utils.DP.object({
21
+ method: utils.DP.literal(route.definition.method),
22
+ path: utils.DP.literal(path),
23
+ ...entrypointContract,
24
+ responses: utils.DP.union(endpointContract),
25
+ })));
26
+ }
27
+
28
+ exports.routeToDataParser = routeToDataParser;
@@ -0,0 +1,7 @@
1
+ import { type Route } from "../../core/route";
2
+ import { DP } from "@duplojs/utils";
3
+ import { type ResponseContract } from "../../core/response";
4
+ export interface RouteToDataParserParams {
5
+ readonly defaultExtractContract: ResponseContract.Contract;
6
+ }
7
+ export declare function routeToDataParser(route: Route, params: RouteToDataParserParams): DP.DataParser[];
@@ -0,0 +1,26 @@
1
+ import { stepsToDataParser } from './stepsToDataParser.mjs';
2
+ import { pipe, O, innerPipe, A, DP } from '@duplojs/utils';
3
+
4
+ function routeToDataParser(route, params) {
5
+ return pipe([
6
+ ...route.definition.preflightSteps,
7
+ ...route.definition.steps,
8
+ ], (steps) => stepsToDataParser(steps, {
9
+ defaultExtractContract: params.defaultExtractContract,
10
+ }), O.transformProperty("entrypointContract", innerPipe(O.entries, A.select(({ element: [key, value], select, skip }) => {
11
+ if (DP.dataParserKind.has(value)) {
12
+ return select(O.entry(key, value));
13
+ }
14
+ if (O.countKeys(value) > 0) {
15
+ return select(O.entry(key, DP.object(value)));
16
+ }
17
+ return skip();
18
+ }), O.fromEntries)), ({ endpointContract, entrypointContract }) => A.map(route.definition.paths, (path) => DP.object({
19
+ method: DP.literal(route.definition.method),
20
+ path: DP.literal(path),
21
+ ...entrypointContract,
22
+ responses: DP.union(endpointContract),
23
+ })));
24
+ }
25
+
26
+ export { routeToDataParser };