@duplojs/http 0.6.1 → 0.7.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 (187) hide show
  1. package/dist/client/getBody.cjs +1 -1
  2. package/dist/client/getBody.mjs +1 -1
  3. package/dist/client/hooks.d.ts +1 -25
  4. package/dist/client/httpClient.d.ts +29 -25
  5. package/dist/client/promiseRequest.cjs +3 -0
  6. package/dist/client/promiseRequest.d.ts +31 -39
  7. package/dist/client/promiseRequest.mjs +4 -1
  8. package/dist/client/types/clientResponse.d.ts +6 -6
  9. package/dist/client/types/hooks.d.ts +25 -0
  10. package/dist/client/types/index.cjs +2 -0
  11. package/dist/client/types/index.d.ts +2 -0
  12. package/dist/client/types/index.mjs +2 -0
  13. package/dist/client/types/promiseRequestParams.cjs +2 -0
  14. package/dist/client/types/promiseRequestParams.d.ts +9 -0
  15. package/dist/client/types/promiseRequestParams.mjs +1 -0
  16. package/dist/client/types/serverRoute.d.ts +19 -1
  17. package/dist/client/unexpectedResponseError.d.ts +1 -2
  18. package/dist/core/builders/preflight/route.cjs +1 -0
  19. package/dist/core/builders/preflight/route.d.ts +4 -2
  20. package/dist/core/builders/preflight/route.mjs +1 -0
  21. package/dist/core/builders/route/builder.cjs +1 -0
  22. package/dist/core/builders/route/builder.d.ts +4 -2
  23. package/dist/core/builders/route/builder.mjs +1 -0
  24. package/dist/core/clean/constraint.cjs +24 -0
  25. package/dist/core/clean/constraint.d.ts +8 -0
  26. package/dist/core/clean/constraint.mjs +22 -0
  27. package/dist/core/clean/constraintsSet.cjs +27 -0
  28. package/dist/core/clean/constraintsSet.d.ts +8 -0
  29. package/dist/core/clean/constraintsSet.mjs +25 -0
  30. package/dist/core/clean/entity.cjs +33 -0
  31. package/dist/core/clean/entity.d.ts +20 -0
  32. package/dist/core/clean/entity.mjs +31 -0
  33. package/dist/core/clean/index.cjs +8 -0
  34. package/dist/core/clean/index.d.ts +5 -0
  35. package/dist/core/clean/index.mjs +5 -0
  36. package/dist/core/clean/newType.cjs +15 -0
  37. package/dist/core/clean/newType.d.ts +8 -0
  38. package/dist/core/clean/newType.mjs +13 -0
  39. package/dist/core/clean/primitive.cjs +12 -0
  40. package/dist/core/clean/primitive.d.ts +8 -0
  41. package/dist/core/clean/primitive.mjs +10 -0
  42. package/dist/core/defaultHooks/index.cjs +50 -0
  43. package/dist/core/defaultHooks/index.d.ts +5 -0
  44. package/dist/core/defaultHooks/index.mjs +48 -0
  45. package/dist/{interfaces/node/error → core/errors}/bodyParseWrongChunkReceived.cjs +6 -4
  46. package/dist/core/errors/bodyParseWrongChunkReceived.d.ts +9 -0
  47. package/dist/core/errors/bodyParseWrongChunkReceived.mjs +14 -0
  48. package/dist/{interfaces/node/error → core/errors}/bodySizeExceedsLimitError.cjs +2 -2
  49. package/dist/{interfaces/node/error → core/errors}/bodySizeExceedsLimitError.d.ts +2 -2
  50. package/dist/{interfaces/node/error → core/errors}/bodySizeExceedsLimitError.mjs +2 -2
  51. package/dist/{interfaces/node/error → core/errors}/index.cjs +6 -4
  52. package/dist/{interfaces/node/error → core/errors}/index.d.ts +3 -2
  53. package/dist/{interfaces/node/error → core/errors}/index.mjs +3 -2
  54. package/dist/core/errors/parseJsonError.cjs +16 -0
  55. package/dist/core/errors/parseJsonError.d.ts +9 -0
  56. package/dist/core/errors/parseJsonError.mjs +14 -0
  57. package/dist/core/errors/wrongContentTypeError.cjs +16 -0
  58. package/dist/core/errors/wrongContentTypeError.d.ts +9 -0
  59. package/dist/core/errors/wrongContentTypeError.mjs +14 -0
  60. package/dist/core/functionsBuilders/route/create.d.ts +2 -2
  61. package/dist/core/functionsBuilders/route/default.cjs +0 -11
  62. package/dist/core/functionsBuilders/route/default.mjs +0 -11
  63. package/dist/core/functionsBuilders/route/hook.d.ts +2 -2
  64. package/dist/core/functionsBuilders/steps/create.d.ts +2 -2
  65. package/dist/core/functionsBuilders/steps/defaults/cutStep.cjs +15 -18
  66. package/dist/core/functionsBuilders/steps/defaults/cutStep.mjs +15 -18
  67. package/dist/core/functionsBuilders/steps/defaults/extractStep.cjs +43 -19
  68. package/dist/core/functionsBuilders/steps/defaults/extractStep.d.ts +2 -1
  69. package/dist/core/functionsBuilders/steps/defaults/extractStep.mjs +44 -20
  70. package/dist/core/functionsBuilders/steps/defaults/handlerStep.cjs +14 -8
  71. package/dist/core/functionsBuilders/steps/defaults/handlerStep.mjs +14 -8
  72. package/dist/core/hub/defaultBodyController.cjs +8 -0
  73. package/dist/core/hub/defaultBodyController.d.ts +1 -0
  74. package/dist/core/hub/defaultBodyController.mjs +6 -0
  75. package/dist/core/hub/hooks.cjs +3 -1
  76. package/dist/core/hub/hooks.d.ts +2 -3
  77. package/dist/core/hub/hooks.mjs +3 -1
  78. package/dist/core/hub/index.cjs +101 -127
  79. package/dist/core/hub/index.d.ts +33 -34
  80. package/dist/core/hub/index.mjs +100 -128
  81. package/dist/core/implementHttpServer.cjs +5 -5
  82. package/dist/core/implementHttpServer.d.ts +2 -1
  83. package/dist/core/implementHttpServer.mjs +5 -5
  84. package/dist/core/index.cjs +35 -10
  85. package/dist/core/index.d.ts +3 -0
  86. package/dist/core/index.mjs +14 -2
  87. package/dist/core/request/bodyController/base.cjs +36 -0
  88. package/dist/core/request/bodyController/base.d.ts +28 -0
  89. package/dist/core/request/bodyController/base.mjs +34 -0
  90. package/dist/core/request/bodyController/formData.cjs +28 -0
  91. package/dist/core/request/bodyController/formData.d.ts +22 -0
  92. package/dist/core/request/bodyController/formData.mjs +25 -0
  93. package/dist/core/request/bodyController/index.cjs +13 -0
  94. package/dist/core/request/bodyController/index.d.ts +3 -0
  95. package/dist/core/request/bodyController/index.mjs +3 -0
  96. package/dist/core/request/bodyController/text.cjs +14 -0
  97. package/dist/core/request/bodyController/text.d.ts +10 -0
  98. package/dist/core/request/bodyController/text.mjs +11 -0
  99. package/dist/core/{request.cjs → request/index.cjs} +21 -3
  100. package/dist/core/{request.d.ts → request/index.d.ts} +10 -3
  101. package/dist/core/request/index.mjs +50 -0
  102. package/dist/core/response/contract.d.ts +1 -1
  103. package/dist/core/route/hooks.d.ts +0 -2
  104. package/dist/core/route/index.d.ts +2 -1
  105. package/dist/core/router/index.cjs +27 -8
  106. package/dist/core/router/index.d.ts +2 -1
  107. package/dist/core/router/index.mjs +28 -10
  108. package/dist/core/router/notFoundBodyReaderImplementationError.cjs +16 -0
  109. package/dist/core/router/notFoundBodyReaderImplementationError.d.ts +11 -0
  110. package/dist/core/router/notFoundBodyReaderImplementationError.mjs +14 -0
  111. package/dist/core/router/types/buildedRouter.d.ts +3 -3
  112. package/dist/core/steps/extract.d.ts +3 -1
  113. package/dist/core/steps/types/steps.d.ts +1 -3
  114. package/dist/core/types/hosts.cjs +2 -0
  115. package/dist/core/types/hosts.d.ts +4 -0
  116. package/dist/core/types/hosts.mjs +1 -0
  117. package/dist/core/types/httpServerParams.cjs +2 -0
  118. package/dist/core/types/httpServerParams.d.ts +11 -0
  119. package/dist/core/types/httpServerParams.mjs +1 -0
  120. package/dist/core/types/index.cjs +2 -0
  121. package/dist/core/types/index.d.ts +2 -0
  122. package/dist/core/types/index.mjs +2 -0
  123. package/dist/interfaces/bun/types/request.cjs +1 -1
  124. package/dist/interfaces/bun/types/request.mjs +1 -1
  125. package/dist/interfaces/node/bodyReaders/formData/error.cjs +14 -0
  126. package/dist/interfaces/node/bodyReaders/formData/error.d.ts +8 -0
  127. package/dist/interfaces/node/bodyReaders/formData/error.mjs +12 -0
  128. package/dist/interfaces/node/bodyReaders/formData/index.cjs +94 -0
  129. package/dist/interfaces/node/bodyReaders/formData/index.d.ts +4 -0
  130. package/dist/interfaces/node/bodyReaders/formData/index.mjs +90 -0
  131. package/dist/interfaces/node/bodyReaders/formData/readRequestFormData.cjs +175 -0
  132. package/dist/interfaces/node/bodyReaders/formData/readRequestFormData.d.ts +21 -0
  133. package/dist/interfaces/node/bodyReaders/formData/readRequestFormData.mjs +173 -0
  134. package/dist/interfaces/node/bodyReaders/index.cjs +9 -0
  135. package/dist/interfaces/node/bodyReaders/index.d.ts +2 -0
  136. package/dist/interfaces/node/bodyReaders/index.mjs +2 -0
  137. package/dist/interfaces/node/bodyReaders/text/index.cjs +41 -0
  138. package/dist/interfaces/node/bodyReaders/text/index.d.ts +3 -0
  139. package/dist/interfaces/node/bodyReaders/text/index.mjs +38 -0
  140. package/dist/interfaces/node/bodyReaders/text/readRequestText.cjs +37 -0
  141. package/dist/interfaces/node/bodyReaders/text/readRequestText.d.ts +6 -0
  142. package/dist/interfaces/node/bodyReaders/text/readRequestText.mjs +35 -0
  143. package/dist/interfaces/node/createHttpServer.cjs +13 -5
  144. package/dist/interfaces/node/createHttpServer.d.ts +13 -12
  145. package/dist/interfaces/node/createHttpServer.mjs +13 -5
  146. package/dist/interfaces/node/hooks/index.cjs +47 -0
  147. package/dist/interfaces/node/hooks/index.d.ts +5 -0
  148. package/dist/interfaces/node/hooks/index.mjs +45 -0
  149. package/dist/interfaces/node/index.cjs +13 -9
  150. package/dist/interfaces/node/index.d.ts +1 -1
  151. package/dist/interfaces/node/index.mjs +7 -5
  152. package/dist/interfaces/node/types/index.cjs +0 -1
  153. package/dist/interfaces/node/types/index.d.ts +0 -1
  154. package/dist/interfaces/node/types/index.mjs +0 -1
  155. package/dist/interfaces/node/types/request.cjs +1 -1
  156. package/dist/interfaces/node/types/request.mjs +1 -1
  157. package/dist/plugins/codeGenerator/index.cjs +2 -0
  158. package/dist/plugins/codeGenerator/index.mjs +1 -1
  159. package/dist/plugins/codeGenerator/plugin.cjs +8 -4
  160. package/dist/plugins/codeGenerator/plugin.mjs +9 -5
  161. package/dist/plugins/codeGenerator/routeToDataParser.cjs +24 -1
  162. package/dist/plugins/codeGenerator/routeToDataParser.d.ts +34 -0
  163. package/dist/plugins/codeGenerator/routeToDataParser.mjs +24 -3
  164. package/dist/plugins/codeGenerator/typescriptTransfomer.cjs +9 -0
  165. package/dist/plugins/codeGenerator/typescriptTransfomer.d.ts +1 -0
  166. package/dist/plugins/codeGenerator/typescriptTransfomer.mjs +7 -0
  167. package/dist/plugins/openApiGenerator/makeOpenApiRoute.d.ts +3 -0
  168. package/dist/plugins/openApiGenerator/plugin.cjs +3 -3
  169. package/dist/plugins/openApiGenerator/plugin.mjs +4 -4
  170. package/dist/plugins/openApiGenerator/routeToOpenApi.cjs +16 -1
  171. package/dist/plugins/openApiGenerator/routeToOpenApi.d.ts +10 -1
  172. package/dist/plugins/openApiGenerator/routeToOpenApi.mjs +16 -1
  173. package/dist/plugins/openApiGenerator/types/entrypoint.d.ts +6 -1
  174. package/dist/plugins/openApiGenerator/types/openApiMethod.d.ts +1 -1
  175. package/package.json +5 -6
  176. package/dist/core/request.mjs +0 -32
  177. package/dist/interfaces/node/error/bodyParseUnknownError.cjs +0 -16
  178. package/dist/interfaces/node/error/bodyParseUnknownError.d.ts +0 -9
  179. package/dist/interfaces/node/error/bodyParseUnknownError.mjs +0 -14
  180. package/dist/interfaces/node/error/bodyParseWrongChunkReceived.d.ts +0 -8
  181. package/dist/interfaces/node/error/bodyParseWrongChunkReceived.mjs +0 -12
  182. package/dist/interfaces/node/hooks.cjs +0 -126
  183. package/dist/interfaces/node/hooks.d.ts +0 -8
  184. package/dist/interfaces/node/hooks.mjs +0 -124
  185. package/dist/interfaces/node/types/host.d.ts +0 -4
  186. /package/dist/{interfaces/node/types/host.cjs → client/types/hooks.cjs} +0 -0
  187. /package/dist/{interfaces/node/types/host.mjs → client/types/hooks.mjs} +0 -0
@@ -15,7 +15,7 @@ function getBody(response) {
15
15
  return response.formData();
16
16
  }
17
17
  else {
18
- return response.blob();
18
+ return Promise.resolve(undefined);
19
19
  }
20
20
  }
21
21
 
@@ -13,7 +13,7 @@ function getBody(response) {
13
13
  return response.formData();
14
14
  }
15
15
  else {
16
- return response.blob();
16
+ return Promise.resolve(undefined);
17
17
  }
18
18
  }
19
19
 
@@ -1,28 +1,4 @@
1
- import { type MaybePromise } from "@duplojs/utils";
2
- import { type NotPredictedClientResponse, type ClientResponse } from "./types/clientResponse";
3
- import { type PromiseRequestParams } from "./promiseRequest";
4
- export type RequestHook<GenericPromiseRequestParams extends PromiseRequestParams = PromiseRequestParams> = (requestParams: GenericPromiseRequestParams) => MaybePromise<PromiseRequestParams>;
5
- export type ResponseHook<GenericPromiseRequestParams extends PromiseRequestParams = PromiseRequestParams> = (response: ClientResponse<GenericPromiseRequestParams>) => MaybePromise<ClientResponse<GenericPromiseRequestParams>>;
6
- export type InformationHook<GenericPromiseRequestParams extends PromiseRequestParams = PromiseRequestParams> = (response: ClientResponse<GenericPromiseRequestParams>) => MaybePromise<void>;
7
- export type ResponseTypeHook<GenericPromiseRequestParams extends PromiseRequestParams = PromiseRequestParams> = (response: ClientResponse<GenericPromiseRequestParams>) => MaybePromise<void>;
8
- export type ExpectedResponseHook<GenericPromiseRequestParams extends PromiseRequestParams = PromiseRequestParams> = (response: ClientResponse<GenericPromiseRequestParams>) => MaybePromise<void>;
9
- export type CodeHook<GenericPromiseRequestParams extends PromiseRequestParams = PromiseRequestParams> = (response: ClientResponse<GenericPromiseRequestParams>) => MaybePromise<void>;
10
- export type NotPredictedResponseHook<GenericPromiseRequestParams extends PromiseRequestParams = PromiseRequestParams> = (response: NotPredictedClientResponse<GenericPromiseRequestParams>) => MaybePromise<void>;
11
- export type ErrorHook<GenericPromiseRequestParams extends PromiseRequestParams = PromiseRequestParams> = (error: unknown, requestParams: GenericPromiseRequestParams) => MaybePromise<void>;
12
- export interface Hooks {
13
- request: RequestHook[];
14
- response: ResponseHook[];
15
- information: Record<string, InformationHook[]>;
16
- code: Record<string, CodeHook[]>;
17
- informationalResponseType: ResponseTypeHook[];
18
- successfulResponseType: ResponseTypeHook[];
19
- redirectionResponseType: ResponseTypeHook[];
20
- clientErrorResponseType: ResponseTypeHook[];
21
- serverErrorResponseType: ResponseTypeHook[];
22
- expectedResponse: ExpectedResponseHook[];
23
- notPredictedResponse: NotPredictedResponseHook[];
24
- error: ErrorHook[];
25
- }
1
+ import { type CodeHook, type ErrorHook, type InformationHook, type NotPredictedResponseHook, type RequestHook, type ResponseHook, type ResponseTypeHook, type PromiseRequestParams, type NotPredictedClientResponse, type ClientResponse } from "./types";
26
2
  export declare function launchRequestHook(clientHook: readonly RequestHook[], promiseRequestHook: readonly RequestHook[], requestParams: PromiseRequestParams): Promise<PromiseRequestParams>;
27
3
  export declare function launchResponseHook(clientHook: readonly ResponseHook[], promiseRequestHook: readonly ResponseHook[], response: ClientResponse): Promise<ClientResponse>;
28
4
  export declare function launchInformationHook(clientHook: readonly InformationHook[], promiseRequestHook: readonly InformationHook[], response: ClientResponse): Promise<void>;
@@ -1,17 +1,19 @@
1
- import { type Kind, type MayBeGetter, type NeverCoalescing, type SimplifyTopLevel } from "@duplojs/utils";
2
- import { type ClientRequestInitParams, type ServerRoute, type ServerRouteToClientRequestParams, type ServerRouteToClientResponse, type ClientRequestParams } from "./types";
3
- import { PromiseRequest, type PromiseRequestParams } from "./promiseRequest";
4
- import { type Hooks, type RequestHook, type ResponseHook, type InformationHook, type CodeHook, type ResponseTypeHook, type ExpectedResponseHook, type ErrorHook, type NotPredictedResponseHook } from "./hooks";
1
+ import { type Kind, type MayBeGetter, type SimplifyTopLevel, type IsEqual } from "@duplojs/utils";
2
+ import { type ClientRequestInitParams, type ServerRoute, type ServerRouteToClientRequestParams, type ServerRouteToClientResponse, type ClientRequestParams, type ClientResponse, type Hooks, type RequestHook, type ResponseHook, type InformationHook, type CodeHook, type ResponseTypeHook, type ExpectedResponseHook, type NotPredictedResponseHook, type ErrorHook, type GetServerRoutePath } from "./types";
3
+ import { PromiseRequest } from "./promiseRequest";
5
4
  export declare const httpClientKind: import("@duplojs/utils").KindHandler<import("@duplojs/utils").KindDefinition<"@DuplojsHttpClient/http-client", unknown>>;
6
5
  type MaybeRequestParams<GenericRequestParams extends object> = {} extends GenericRequestParams ? [params?: GenericRequestParams] : [params: GenericRequestParams];
7
- type HttpClientRequestMethod<GenericServerRoute extends ServerRoute, GenericHookParams extends Record<string, unknown>, GenericMethod extends string> = <GenericClientRequestParams extends NeverCoalescing<ServerRouteToClientRequestParams<Extract<GenericServerRoute, {
6
+ type HttpClientRequestMethod<GenericServerRoute extends ServerRoute, GenericHookParams extends Record<string, unknown>, GenericMethod extends string> = IsEqual<GenericServerRoute, ServerRoute> extends true ? (path: string, params?: SimplifyTopLevel<Omit<ClientRequestParams<GenericHookParams>, "method" | "path">>) => PromiseRequest<GenericHookParams, ClientResponse<GenericHookParams>> : <GenericPath extends Extract<GenericServerRoute, {
8
7
  method: GenericMethod;
9
- }>, GenericHookParams>, ClientRequestParams<GenericHookParams>>, GenericPath extends GenericClientRequestParams["path"], GenericClientRequestRest extends SimplifyTopLevel<Omit<NeverCoalescing<Extract<GenericClientRequestParams, {
10
- path: GenericPath;
11
- }>, ClientRequestParams<GenericHookParams>>, "method" | "path">>>(path: GenericPath, ...args: MaybeRequestParams<GenericClientRequestRest>) => PromiseRequest<PromiseRequestParams<GenericHookParams>, ServerRouteToClientResponse<NeverCoalescing<Extract<GenericServerRoute, {
8
+ }>["path"], GenericMatchedPath extends GetServerRoutePath<Extract<GenericServerRoute, {
12
9
  method: GenericMethod;
13
- path: GenericPath;
14
- }>, ServerRoute>, GenericHookParams>>;
10
+ }>, GenericPath>>(path: GenericPath, ...args: MaybeRequestParams<SimplifyTopLevel<Omit<ServerRouteToClientRequestParams<Extract<GenericServerRoute, {
11
+ method: GenericMethod;
12
+ path: GenericMatchedPath | GenericPath;
13
+ }>, GenericHookParams>, "method" | "path">>>) => PromiseRequest<GenericHookParams, ServerRouteToClientResponse<Extract<GenericServerRoute, {
14
+ method: GenericMethod;
15
+ path: GenericMatchedPath;
16
+ }>, GenericHookParams>>;
15
17
  export interface HttpClientConfig {
16
18
  readonly baseUrl: string;
17
19
  readonly informationHeaderKey: string;
@@ -26,21 +28,23 @@ export interface HttpClient<GenericServerRoute extends ServerRoute = ServerRoute
26
28
  readonly defaultHeaders: Map<string, () => (string | undefined | null)>;
27
29
  addDefaultHeader(headerName: string, headerValue: MayBeGetter<string | undefined | null>): void;
28
30
  addDefaultHeaders(headers: Record<string, MayBeGetter<string | undefined | null>>): void;
29
- addRequestHook(hook: RequestHook<PromiseRequestParams<GenericHookParams>>): void;
30
- addResponseHook(hook: ResponseHook<PromiseRequestParams<GenericHookParams>>): void;
31
- addInformationHook(information: string, hook: InformationHook<PromiseRequestParams<GenericHookParams>>): void;
32
- addCodeHook(code: string, hook: CodeHook<PromiseRequestParams<GenericHookParams>>): void;
33
- addInformationalResponseTypeHook(hook: ResponseTypeHook<PromiseRequestParams<GenericHookParams>>): void;
34
- addSuccessfulResponseTypeHook(hook: ResponseTypeHook<PromiseRequestParams<GenericHookParams>>): void;
35
- addRedirectionResponseTypeHook(hook: ResponseTypeHook<PromiseRequestParams<GenericHookParams>>): void;
36
- addClientErrorResponseTypeHook(hook: ResponseTypeHook<PromiseRequestParams<GenericHookParams>>): void;
37
- addServerErrorResponseTypeHook(hook: ResponseTypeHook<PromiseRequestParams<GenericHookParams>>): void;
38
- addExpectedResponseHook(hook: ExpectedResponseHook<PromiseRequestParams<GenericHookParams>>): void;
39
- addNotPredictedResponseHook(hook: NotPredictedResponseHook<PromiseRequestParams<GenericHookParams>>): void;
40
- addErrorHook(hook: ErrorHook<PromiseRequestParams<GenericHookParams>>): void;
41
- request<GenericClientRequestParams extends ServerRouteToClientRequestParams<GenericServerRoute, GenericHookParams>>(params: GenericClientRequestParams): PromiseRequest<PromiseRequestParams<GenericHookParams>, ServerRouteToClientResponse<Extract<GenericServerRoute, {
31
+ addRequestHook(hook: RequestHook<GenericHookParams>): void;
32
+ addResponseHook(hook: ResponseHook<GenericHookParams>): void;
33
+ addInformationHook(information: string, hook: InformationHook<GenericHookParams>): void;
34
+ addCodeHook(code: string, hook: CodeHook<GenericHookParams>): void;
35
+ addInformationalResponseTypeHook(hook: ResponseTypeHook<GenericHookParams>): void;
36
+ addSuccessfulResponseTypeHook(hook: ResponseTypeHook<GenericHookParams>): void;
37
+ addRedirectionResponseTypeHook(hook: ResponseTypeHook<GenericHookParams>): void;
38
+ addClientErrorResponseTypeHook(hook: ResponseTypeHook<GenericHookParams>): void;
39
+ addServerErrorResponseTypeHook(hook: ResponseTypeHook<GenericHookParams>): void;
40
+ addExpectedResponseHook(hook: ExpectedResponseHook<GenericHookParams>): void;
41
+ addNotPredictedResponseHook(hook: NotPredictedResponseHook<GenericHookParams>): void;
42
+ addErrorHook(hook: ErrorHook<GenericHookParams>): void;
43
+ request<GenericClientRequestParams extends ServerRouteToClientRequestParams<GenericServerRoute, GenericHookParams>, GenericMatchedPath extends GetServerRoutePath<Extract<GenericServerRoute, {
44
+ method: GenericClientRequestParams["method"];
45
+ }>, GenericClientRequestParams["path"]>>(params: GenericClientRequestParams): PromiseRequest<GenericHookParams, ServerRouteToClientResponse<Extract<GenericServerRoute, {
42
46
  method: GenericClientRequestParams["method"];
43
- path: GenericClientRequestParams["path"];
47
+ path: GenericMatchedPath;
44
48
  }>, GenericHookParams>>;
45
49
  get: HttpClientRequestMethod<GenericServerRoute, GenericHookParams, "GET">;
46
50
  post: HttpClientRequestMethod<GenericServerRoute, GenericHookParams, "POST">;
@@ -57,5 +61,5 @@ export interface CreateHttpClientParams {
57
61
  readonly predictedHeaderKey?: string;
58
62
  readonly disabledPredictedMode?: boolean;
59
63
  }
60
- export declare function createHttpClient<GenericServerRoute extends ServerRoute = never, GenericHookParams extends Record<string, unknown> = Record<string, unknown>>(clientParams: CreateHttpClientParams): HttpClient<NeverCoalescing<GenericServerRoute, ServerRoute>, GenericHookParams>;
64
+ export declare function createHttpClient<GenericServerRoute extends ServerRoute = ServerRoute, GenericHookParams extends Record<string, unknown> = Record<string, unknown>>(clientParams: CreateHttpClientParams): HttpClient<GenericServerRoute, GenericHookParams>;
61
65
  export {};
@@ -310,6 +310,9 @@ class PromiseRequest extends Promise {
310
310
  headers["content-type"] = "text/plain; charset=utf-8";
311
311
  body = body.toString();
312
312
  }
313
+ else if (body instanceof utils.TheFormData) {
314
+ headers["content-type-options"] = "advanced";
315
+ }
313
316
  else if ((body
314
317
  && typeof body === "object"
315
318
  && body?.constructor?.name === "Object")
@@ -1,97 +1,89 @@
1
1
  import { type NeverCoalescing, type MaybePromise } from "@duplojs/utils";
2
- import { type Hooks, type ErrorHook, type NotPredictedResponseHook } from "./hooks";
3
2
  import * as EE from "@duplojs/utils/either";
4
3
  import { type RequestErrorContent } from "./unexpectedResponseError";
5
- import { type NotPredictedClientResponse, type ClientRequestParams, type ClientResponse } from "./types";
6
- type MaybeResponse<GenericClientResponse extends ClientResponse = ClientResponse> = (EE.EitherRight<"response", GenericClientResponse> | EE.EitherLeft<"request-error", RequestErrorContent>);
7
- type MaybeWantedResponse<GenericWantedClientResponse extends ClientResponse = ClientResponse, GenericUnexpectClientResponse extends ClientResponse = ClientResponse> = (EE.EitherRight<"response", GenericWantedClientResponse> | EE.EitherLeft<"unexpect-response", GenericUnexpectClientResponse> | EE.EitherLeft<"request-error", RequestErrorContent>);
8
- export interface PromiseRequestParams<GenericHookParams extends Record<string, unknown> = Record<string, unknown>> extends ClientRequestParams<GenericHookParams> {
9
- baseUrl: string;
10
- hooks: Hooks;
11
- informationHeaderKey: string;
12
- predictedHeaderKey: string;
13
- disabledPredicateMode: boolean;
14
- }
15
- export declare class PromiseRequest<GenericPromiseRequestParams extends PromiseRequestParams = PromiseRequestParams, GenericClientResponse extends ClientResponse = ClientResponse> extends Promise<MaybeResponse<GenericClientResponse | NotPredictedClientResponse<GenericPromiseRequestParams>>> {
4
+ import { type NotPredictedClientResponse, type ClientResponse, type PromiseRequestParams, type Hooks, type NotPredictedResponseHook, type ErrorHook } from "./types";
5
+ type MaybeResponse<GenericClientResponse extends ClientResponse = ClientResponse> = (EE.Right<"response", GenericClientResponse> | EE.Left<"request-error", RequestErrorContent>);
6
+ type MaybeWantedResponse<GenericWantedClientResponse extends ClientResponse = ClientResponse, GenericUnexpectClientResponse extends ClientResponse = ClientResponse> = (EE.Right<"response", GenericWantedClientResponse> | EE.Left<"unexpect-response", GenericUnexpectClientResponse> | EE.Left<"request-error", RequestErrorContent>);
7
+ export declare class PromiseRequest<GenericHookParams extends Record<string, unknown> = Record<string, unknown>, GenericClientResponse extends ClientResponse<GenericHookParams> = ClientResponse<GenericHookParams>> extends Promise<MaybeResponse<GenericClientResponse | NotPredictedClientResponse<GenericHookParams>>> {
16
8
  params: PromiseRequestParams;
17
9
  readonly hooks: Partial<Hooks>;
18
10
  constructor(params: PromiseRequestParams);
19
- addRequestInterceptor(callback: (requestParams: GenericPromiseRequestParams) => MaybePromise<GenericPromiseRequestParams>): this;
11
+ addRequestInterceptor(callback: (requestParams: GenericClientResponse["requestParams"]) => MaybePromise<GenericClientResponse["requestParams"]>): this;
20
12
  addResponseInterceptor(callback: (response: GenericClientResponse) => MaybePromise<GenericClientResponse>): this;
21
- whenNotPredictedResponse(callback: NotPredictedResponseHook<GenericPromiseRequestParams>): this;
13
+ whenNotPredictedResponse(callback: NotPredictedResponseHook<GenericHookParams>): this;
22
14
  whenInformation<GenericInformation extends Extract<GenericClientResponse["information"], string>>(information: GenericInformation | GenericInformation[], callback: (response: NeverCoalescing<Extract<GenericClientResponse, GenericInformation extends any ? {
23
15
  information: GenericInformation;
24
- } : never>, ClientResponse<GenericPromiseRequestParams>>) => MaybePromise<void>): this;
16
+ } : never>, ClientResponse<GenericHookParams>>) => MaybePromise<void>): this;
25
17
  whenCode<GenericCode extends GenericClientResponse["code"]>(code: GenericCode | GenericCode[], callback: (response: NeverCoalescing<Extract<GenericClientResponse, GenericCode extends any ? {
26
18
  code: GenericCode;
27
- } : never>, ClientResponse<GenericPromiseRequestParams>>) => MaybePromise<void>): this;
19
+ } : never>, ClientResponse<GenericHookParams>>) => MaybePromise<void>): this;
28
20
  whenInformationalResponse(callback: (response: NeverCoalescing<Extract<GenericClientResponse, {
29
21
  code: `1${number}`;
30
- }>, ClientResponse<GenericPromiseRequestParams>>) => MaybePromise<void>): this;
22
+ }>, ClientResponse<GenericHookParams>>) => MaybePromise<void>): this;
31
23
  whenSuccessfulResponse(callback: (response: NeverCoalescing<Extract<GenericClientResponse, {
32
24
  code: `2${number}`;
33
- }>, ClientResponse<GenericPromiseRequestParams>>) => MaybePromise<void>): this;
25
+ }>, ClientResponse<GenericHookParams>>) => MaybePromise<void>): this;
34
26
  whenRedirectionResponse(callback: (response: NeverCoalescing<Extract<GenericClientResponse, {
35
27
  code: `3${number}`;
36
- }>, ClientResponse<GenericPromiseRequestParams>>) => MaybePromise<void>): this;
28
+ }>, ClientResponse<GenericHookParams>>) => MaybePromise<void>): this;
37
29
  whenClientErrorResponse(callback: (response: NeverCoalescing<Extract<GenericClientResponse, {
38
30
  code: `4${number}`;
39
- }>, ClientResponse<GenericPromiseRequestParams>>) => MaybePromise<void>): this;
31
+ }>, ClientResponse<GenericHookParams>>) => MaybePromise<void>): this;
40
32
  whenServerErrorResponse(callback: (response: NeverCoalescing<Extract<GenericClientResponse, {
41
33
  code: `5${number}`;
42
- }>, ClientResponse<GenericPromiseRequestParams>>) => MaybePromise<void>): this;
34
+ }>, ClientResponse<GenericHookParams>>) => MaybePromise<void>): this;
43
35
  whenExpectedResponse(callback: (response: NeverCoalescing<Extract<GenericClientResponse, {
44
36
  code: `2${number}` | `4${number}`;
45
- }>, ClientResponse<GenericPromiseRequestParams>>) => MaybePromise<void>): this;
46
- whenError(callback: ErrorHook<GenericPromiseRequestParams>): this;
37
+ }>, ClientResponse<GenericHookParams>>) => MaybePromise<void>): this;
38
+ whenError(callback: ErrorHook<GenericHookParams>): this;
47
39
  iWantInformation<GenericInformation extends Extract<GenericClientResponse["information"], string>, GenericResponse extends NeverCoalescing<Extract<GenericClientResponse, GenericInformation extends any ? {
48
40
  information: GenericInformation;
49
- } : never>, ClientResponse<GenericPromiseRequestParams>>>(information: GenericInformation | GenericInformation[]): Promise<MaybeWantedResponse<GenericResponse, NeverCoalescing<Exclude<GenericClientResponse, GenericResponse>, ClientResponse<GenericPromiseRequestParams>>>>;
41
+ } : never>, ClientResponse<GenericHookParams>>>(information: GenericInformation | GenericInformation[]): Promise<MaybeWantedResponse<GenericResponse, NeverCoalescing<Exclude<GenericClientResponse, GenericResponse>, ClientResponse<GenericHookParams>>>>;
50
42
  iWantCode<GenericCode extends GenericClientResponse["code"], GenericResponse extends NeverCoalescing<Extract<GenericClientResponse, GenericCode extends any ? {
51
43
  code: GenericCode;
52
- } : never>, ClientResponse<GenericPromiseRequestParams>>>(code: GenericCode | GenericCode[]): Promise<MaybeWantedResponse<GenericResponse, NeverCoalescing<Exclude<GenericClientResponse, GenericResponse>, ClientResponse<GenericPromiseRequestParams>>>>;
44
+ } : never>, ClientResponse<GenericHookParams>>>(code: GenericCode | GenericCode[]): Promise<MaybeWantedResponse<GenericResponse, NeverCoalescing<Exclude<GenericClientResponse, GenericResponse>, ClientResponse<GenericHookParams>>>>;
53
45
  iWantInformationalResponse<GenericResponse extends NeverCoalescing<Extract<GenericClientResponse, {
54
46
  code: `1${number}`;
55
- }>, ClientResponse<GenericPromiseRequestParams>>>(): Promise<MaybeWantedResponse<GenericResponse, NeverCoalescing<Exclude<GenericClientResponse, GenericResponse>, ClientResponse<GenericPromiseRequestParams>>>>;
47
+ }>, ClientResponse<GenericHookParams>>>(): Promise<MaybeWantedResponse<GenericResponse, NeverCoalescing<Exclude<GenericClientResponse, GenericResponse>, ClientResponse<GenericHookParams>>>>;
56
48
  iWantSuccessfulResponse<GenericResponse extends NeverCoalescing<Extract<GenericClientResponse, {
57
49
  code: `2${number}`;
58
- }>, ClientResponse<GenericPromiseRequestParams>>>(): Promise<MaybeWantedResponse<GenericResponse, NeverCoalescing<Exclude<GenericClientResponse, GenericResponse>, ClientResponse<GenericPromiseRequestParams>>>>;
50
+ }>, ClientResponse<GenericHookParams>>>(): Promise<MaybeWantedResponse<GenericResponse, NeverCoalescing<Exclude<GenericClientResponse, GenericResponse>, ClientResponse<GenericHookParams>>>>;
59
51
  iWantRedirectionResponse<GenericResponse extends NeverCoalescing<Extract<GenericClientResponse, {
60
52
  code: `3${number}`;
61
- }>, ClientResponse<GenericPromiseRequestParams>>>(): Promise<MaybeWantedResponse<GenericResponse, NeverCoalescing<Exclude<GenericClientResponse, GenericResponse>, ClientResponse<GenericPromiseRequestParams>>>>;
53
+ }>, ClientResponse<GenericHookParams>>>(): Promise<MaybeWantedResponse<GenericResponse, NeverCoalescing<Exclude<GenericClientResponse, GenericResponse>, ClientResponse<GenericHookParams>>>>;
62
54
  iWantClientErrorResponse<GenericResponse extends NeverCoalescing<Extract<GenericClientResponse, {
63
55
  code: `4${number}`;
64
- }>, ClientResponse<GenericPromiseRequestParams>>>(): Promise<MaybeWantedResponse<GenericResponse, NeverCoalescing<Exclude<GenericClientResponse, GenericResponse>, ClientResponse<GenericPromiseRequestParams>>>>;
56
+ }>, ClientResponse<GenericHookParams>>>(): Promise<MaybeWantedResponse<GenericResponse, NeverCoalescing<Exclude<GenericClientResponse, GenericResponse>, ClientResponse<GenericHookParams>>>>;
65
57
  iWantServerErrorResponse<GenericResponse extends NeverCoalescing<Extract<GenericClientResponse, {
66
58
  code: `5${number}`;
67
- }>, ClientResponse<GenericPromiseRequestParams>>>(): Promise<MaybeWantedResponse<GenericResponse, NeverCoalescing<Exclude<GenericClientResponse, GenericResponse>, ClientResponse<GenericPromiseRequestParams>>>>;
59
+ }>, ClientResponse<GenericHookParams>>>(): Promise<MaybeWantedResponse<GenericResponse, NeverCoalescing<Exclude<GenericClientResponse, GenericResponse>, ClientResponse<GenericHookParams>>>>;
68
60
  iWantExpectedResponse<GenericResponse extends NeverCoalescing<Extract<GenericClientResponse, {
69
61
  code: `2${number}` | `4${number}`;
70
- }>, ClientResponse<GenericPromiseRequestParams>>>(): Promise<MaybeWantedResponse<GenericResponse, NeverCoalescing<Exclude<GenericClientResponse, GenericResponse>, ClientResponse<GenericPromiseRequestParams>>>>;
62
+ }>, ClientResponse<GenericHookParams>>>(): Promise<MaybeWantedResponse<GenericResponse, NeverCoalescing<Exclude<GenericClientResponse, GenericResponse>, ClientResponse<GenericHookParams>>>>;
71
63
  iWantInformationOrThrow<GenericInformation extends Extract<GenericClientResponse["information"], string>>(information: GenericInformation | GenericInformation[]): Promise<NeverCoalescing<Extract<GenericClientResponse, GenericInformation extends any ? {
72
64
  information: GenericInformation;
73
- } : never>, ClientResponse<GenericPromiseRequestParams>>>;
65
+ } : never>, ClientResponse<GenericHookParams>>>;
74
66
  iWantCodeOrThrow<GenericCode extends GenericClientResponse["code"]>(code: GenericCode | GenericCode[]): Promise<NeverCoalescing<Extract<GenericClientResponse, GenericCode extends any ? {
75
67
  code: GenericCode;
76
- } : never>, ClientResponse<GenericPromiseRequestParams>>>;
68
+ } : never>, ClientResponse<GenericHookParams>>>;
77
69
  iWantInformationalResponseOrThrow(): Promise<NeverCoalescing<Extract<GenericClientResponse, {
78
70
  code: `1${number}`;
79
- }>, ClientResponse<GenericPromiseRequestParams>>>;
71
+ }>, ClientResponse<GenericHookParams>>>;
80
72
  iWantSuccessfulResponseOrThrow(): Promise<NeverCoalescing<Extract<GenericClientResponse, {
81
73
  code: `2${number}`;
82
- }>, ClientResponse<GenericPromiseRequestParams>>>;
74
+ }>, ClientResponse<GenericHookParams>>>;
83
75
  iWantRedirectionResponseOrThrow(): Promise<NeverCoalescing<Extract<GenericClientResponse, {
84
76
  code: `3${number}`;
85
- }>, ClientResponse<GenericPromiseRequestParams>>>;
77
+ }>, ClientResponse<GenericHookParams>>>;
86
78
  iWantClientErrorResponseOrThrow(): Promise<NeverCoalescing<Extract<GenericClientResponse, {
87
79
  code: `4${number}`;
88
- }>, ClientResponse<GenericPromiseRequestParams>>>;
80
+ }>, ClientResponse<GenericHookParams>>>;
89
81
  iWantServerErrorResponseOrThrow(): Promise<NeverCoalescing<Extract<GenericClientResponse, {
90
82
  code: `5${number}`;
91
- }>, ClientResponse<GenericPromiseRequestParams>>>;
83
+ }>, ClientResponse<GenericHookParams>>>;
92
84
  iWantExpectedResponseOrThrow(): Promise<NeverCoalescing<Extract<GenericClientResponse, {
93
85
  code: `2${number}` | `4${number}`;
94
- }>, ClientResponse<GenericPromiseRequestParams>>>;
86
+ }>, ClientResponse<GenericHookParams>>>;
95
87
  static get [Symbol.species](): PromiseConstructor;
96
88
  static fetch<GenericPromiseRequestParams extends PromiseRequestParams>(requestParams: GenericPromiseRequestParams): Promise<MaybeResponse>;
97
89
  }
@@ -1,4 +1,4 @@
1
- import { unwrap } from '@duplojs/utils';
1
+ import { unwrap, TheFormData } from '@duplojs/utils';
2
2
  import { getBody } from './getBody.mjs';
3
3
  import { insertParamsInPath } from './insertParamsInPath.mjs';
4
4
  import { queryToString } from './queryToString.mjs';
@@ -287,6 +287,9 @@ class PromiseRequest extends Promise {
287
287
  headers["content-type"] = "text/plain; charset=utf-8";
288
288
  body = body.toString();
289
289
  }
290
+ else if (body instanceof TheFormData) {
291
+ headers["content-type-options"] = "advanced";
292
+ }
290
293
  else if ((body
291
294
  && typeof body === "object"
292
295
  && body?.constructor?.name === "Object")
@@ -1,9 +1,9 @@
1
1
  import type * as SS from "@duplojs/utils/string";
2
2
  import { type ServerRouteResponse, type ServerRoute } from "./serverRoute";
3
3
  import { type IsEqual, type SimplifyTopLevel } from "@duplojs/utils";
4
- import { type PromiseRequestParams } from "../promiseRequest";
4
+ import { type PromiseRequestParams } from "./promiseRequestParams";
5
5
  export type ClientResponseBody = unknown;
6
- export interface ClientResponse<GenericPromiseRequestParams extends PromiseRequestParams = PromiseRequestParams> {
6
+ export interface ClientResponse<GenericHookParams extends Record<string, unknown> = Record<string, unknown>> {
7
7
  code: SS.Number;
8
8
  information: undefined | string;
9
9
  body: ClientResponseBody;
@@ -13,16 +13,16 @@ export interface ClientResponse<GenericPromiseRequestParams extends PromiseReque
13
13
  url: string;
14
14
  redirected: boolean;
15
15
  raw: globalThis.Response;
16
- requestParams: GenericPromiseRequestParams;
16
+ requestParams: PromiseRequestParams<GenericHookParams>;
17
17
  predicted: boolean;
18
18
  }
19
- export interface NotPredictedClientResponse<GenericPromiseRequestParams extends PromiseRequestParams = PromiseRequestParams> extends ClientResponse<GenericPromiseRequestParams> {
19
+ export interface NotPredictedClientResponse<GenericHookParams extends Record<string, unknown> = Record<string, unknown>> extends ClientResponse<GenericHookParams> {
20
20
  predicted: false;
21
21
  }
22
- export type ServerRouteToClientResponse<GenericServerRoute extends ServerRoute = ServerRoute, GenericHookParams extends Record<string, unknown> = Record<string, unknown>> = IsEqual<GenericServerRoute, ServerRoute> extends true ? ClientResponse<PromiseRequestParams<GenericHookParams>> : GenericServerRoute extends any ? GenericServerRoute["responses"] extends infer InferredResponse ? InferredResponse extends ServerRouteResponse ? SimplifyTopLevel<{
22
+ export type ServerRouteToClientResponse<GenericServerRoute extends ServerRoute = ServerRoute, GenericHookParams extends Record<string, unknown> = Record<string, unknown>> = GenericServerRoute extends any ? GenericServerRoute["responses"] extends infer InferredResponse ? InferredResponse extends ServerRouteResponse ? SimplifyTopLevel<{
23
23
  code: InferredResponse["code"];
24
24
  information: InferredResponse["information"];
25
- body: InferredResponse["body"];
25
+ body: IsEqual<InferredResponse["body"], File> extends true ? undefined : InferredResponse["body"];
26
26
  ok: boolean | null;
27
27
  headers: Headers;
28
28
  type: ResponseType;
@@ -0,0 +1,25 @@
1
+ import { type MaybePromise } from "@duplojs/utils";
2
+ import { type NotPredictedClientResponse, type ClientResponse } from "./clientResponse";
3
+ import { type PromiseRequestParams } from "./promiseRequestParams";
4
+ export type RequestHook<GenericHookParams extends Record<string, unknown> = Record<string, unknown>> = (requestParams: PromiseRequestParams<GenericHookParams>) => MaybePromise<PromiseRequestParams<GenericHookParams>>;
5
+ export type ResponseHook<GenericHookParams extends Record<string, unknown> = Record<string, unknown>> = (response: ClientResponse<GenericHookParams>) => MaybePromise<ClientResponse<GenericHookParams>>;
6
+ export type InformationHook<GenericHookParams extends Record<string, unknown> = Record<string, unknown>> = (response: ClientResponse<GenericHookParams>) => MaybePromise<void>;
7
+ export type ResponseTypeHook<GenericHookParams extends Record<string, unknown> = Record<string, unknown>> = (response: ClientResponse<GenericHookParams>) => MaybePromise<void>;
8
+ export type ExpectedResponseHook<GenericHookParams extends Record<string, unknown> = Record<string, unknown>> = (response: ClientResponse<GenericHookParams>) => MaybePromise<void>;
9
+ export type CodeHook<GenericHookParams extends Record<string, unknown> = Record<string, unknown>> = (response: ClientResponse<GenericHookParams>) => MaybePromise<void>;
10
+ export type NotPredictedResponseHook<GenericHookParams extends Record<string, unknown> = Record<string, unknown>> = (response: NotPredictedClientResponse<GenericHookParams>) => MaybePromise<void>;
11
+ export type ErrorHook<GenericHookParams extends Record<string, unknown> = Record<string, unknown>> = (error: unknown, requestParams: PromiseRequestParams<GenericHookParams>) => MaybePromise<void>;
12
+ export interface Hooks {
13
+ request: RequestHook[];
14
+ response: ResponseHook[];
15
+ information: Record<string, InformationHook[]>;
16
+ code: Record<string, CodeHook[]>;
17
+ informationalResponseType: ResponseTypeHook[];
18
+ successfulResponseType: ResponseTypeHook[];
19
+ redirectionResponseType: ResponseTypeHook[];
20
+ clientErrorResponseType: ResponseTypeHook[];
21
+ serverErrorResponseType: ResponseTypeHook[];
22
+ expectedResponse: ExpectedResponseHook[];
23
+ notPredictedResponse: NotPredictedResponseHook[];
24
+ error: ErrorHook[];
25
+ }
@@ -4,4 +4,6 @@ require('./clientRequestParams.cjs');
4
4
  require('./clientResponse.cjs');
5
5
  require('./serverRoute.cjs');
6
6
  require('./ObjectCanBeEmpty.cjs');
7
+ require('./promiseRequestParams.cjs');
8
+ require('./hooks.cjs');
7
9
 
@@ -2,3 +2,5 @@ export * from "./clientRequestParams";
2
2
  export * from "./clientResponse";
3
3
  export * from "./serverRoute";
4
4
  export * from "./ObjectCanBeEmpty";
5
+ export * from "./promiseRequestParams";
6
+ export * from "./hooks";
@@ -2,3 +2,5 @@ import './clientRequestParams.mjs';
2
2
  import './clientResponse.mjs';
3
3
  import './serverRoute.mjs';
4
4
  import './ObjectCanBeEmpty.mjs';
5
+ import './promiseRequestParams.mjs';
6
+ import './hooks.mjs';
@@ -0,0 +1,2 @@
1
+ 'use strict';
2
+
@@ -0,0 +1,9 @@
1
+ import { type ClientRequestParams } from "./clientRequestParams";
2
+ import { type Hooks } from "./hooks";
3
+ export interface PromiseRequestParams<GenericHookParams extends Record<string, unknown> = Record<string, unknown>> extends ClientRequestParams<GenericHookParams> {
4
+ baseUrl: string;
5
+ hooks: Hooks;
6
+ informationHeaderKey: string;
7
+ predictedHeaderKey: string;
8
+ disabledPredicateMode: boolean;
9
+ }
@@ -1,4 +1,4 @@
1
- import { type MaybeArray } from "@duplojs/utils";
1
+ import { type SimplifyTopLevel, type MaybeArray, type IsEqual } from "@duplojs/utils";
2
2
  import type * as SS from "@duplojs/utils/string";
3
3
  export type ServerPrimitiveData = string | undefined | number | null | boolean;
4
4
  export type ServerRouteHeaders = Record<string, ServerPrimitiveData>;
@@ -20,3 +20,21 @@ export interface ServerRoute {
20
20
  body?: ServerRouteBody;
21
21
  responses: ServerRouteResponse;
22
22
  }
23
+ export type GetServerRoutePath<GenericServerRoute extends ServerRoute, GenericPath extends GenericServerRoute["path"]> = GenericServerRoute extends ServerRoute ? IsEqual<Extract<GenericPath, GenericServerRoute["path"]>, never> extends true ? never : GenericServerRoute["path"] : never;
24
+ export type AddPrefixPathServerRoute<GenericRoute extends ServerRoute, GenericPrefix extends string> = GenericRoute extends ServerRoute ? SimplifyTopLevel<{
25
+ path: `${GenericPrefix}${GenericRoute["path"]}`;
26
+ } & Omit<GenericRoute, "path">> : never;
27
+ export type RemovePrefixPathServerRoute<GenericRoute extends ServerRoute, GenericPrefix extends string> = GenericRoute extends ServerRoute ? GenericRoute["path"] extends `${GenericPrefix}${infer InferredPathRest}` ? SimplifyTopLevel<{
28
+ path: InferredPathRest;
29
+ } & Omit<GenericRoute, "path">> : GenericRoute : never;
30
+ export type FindServerRoute<GenericRoute extends ServerRoute, GenericMethod extends GenericRoute["method"], GenericPath extends Extract<GenericRoute, {
31
+ method: GenericMethod;
32
+ }>["path"] = Extract<GenericRoute, {
33
+ method: GenericMethod;
34
+ }>["path"]> = Extract<GenericRoute, {
35
+ method: GenericMethod;
36
+ path: GenericPath;
37
+ }>;
38
+ export type FindServerRouteResponse<GenericRoute extends ServerRoute, GenericKey extends "code" | "information", GenericValue extends GenericRoute["responses"][GenericKey] = GenericRoute["responses"][GenericKey]> = Extract<GenericRoute["responses"], {
39
+ [Prop in GenericKey]: GenericValue;
40
+ }>;
@@ -1,5 +1,4 @@
1
- import { type ClientResponse } from "./types";
2
- import { type PromiseRequestParams } from "./promiseRequest";
1
+ import { type PromiseRequestParams, type ClientResponse } from "./types";
3
2
  export interface RequestErrorContent {
4
3
  error: unknown;
5
4
  requestParams: PromiseRequestParams;
@@ -18,4 +18,5 @@ builder.preflightBuilder.set("useRouteBuilder", ({ args: [method, paths, options
18
18
  ...(options?.metadata ?? []),
19
19
  ...accumulator.metadata,
20
20
  ],
21
+ bodyController: options?.bodyController ?? null,
21
22
  }));
@@ -1,14 +1,15 @@
1
1
  import { type Floor } from "../../floor";
2
- import { type RequestMethods, type Request } from "../../request";
2
+ import { type RequestMethods, type Request, type BodyController } from "../../request";
3
3
  import { type MakeRequestFromHooks, type HookRouteLifeCycle, type RoutePath } from "../../route";
4
4
  import { type RouteBuilder } from "../route";
5
5
  import { type NeverCoalescing } from "@duplojs/utils";
6
6
  import { type Metadata } from "../../metadata";
7
7
  declare module "./builder" {
8
8
  interface PreflightBuilder<GenericDefinition extends PreflightBuilderDefinition = PreflightBuilderDefinition, GenericFloor extends Floor = {}, GenericRequest extends Request = Request> {
9
- useRouteBuilder<GenericMethod extends RequestMethods, const GenericPaths extends RoutePath | readonly [RoutePath, ...RoutePath[]], const GenericHooks extends readonly HookRouteLifeCycle[] = readonly [], const GenericMetadata extends readonly Metadata[] = readonly []>(method: GenericMethod, path: GenericPaths, options?: {
9
+ useRouteBuilder<GenericMethod extends RequestMethods, const GenericPaths extends RoutePath | readonly [RoutePath, ...RoutePath[]], const GenericHooks extends readonly HookRouteLifeCycle[] = readonly [], const GenericMetadata extends readonly Metadata[] = readonly [], const GenericBodyController extends BodyController | null = null>(method: GenericMethod, path: GenericPaths, options?: {
10
10
  hooks?: GenericHooks | readonly HookRouteLifeCycle[];
11
11
  metadata?: GenericMetadata;
12
+ bodyController?: GenericBodyController;
12
13
  }): RouteBuilder<{
13
14
  readonly method: GenericMethod;
14
15
  readonly paths: GenericPaths extends string ? readonly [GenericPaths] : GenericPaths;
@@ -22,6 +23,7 @@ declare module "./builder" {
22
23
  ...GenericMetadata,
23
24
  ...GenericDefinition["metadata"]
24
25
  ];
26
+ readonly bodyController: GenericBodyController;
25
27
  }, GenericFloor, (GenericRequest & NeverCoalescing<MakeRequestFromHooks<GenericHooks>, Request>)>;
26
28
  }
27
29
  }
@@ -16,4 +16,5 @@ preflightBuilder.set("useRouteBuilder", ({ args: [method, paths, options,], accu
16
16
  ...(options?.metadata ?? []),
17
17
  ...accumulator.metadata,
18
18
  ],
19
+ bodyController: options?.bodyController ?? null,
19
20
  }));
@@ -12,6 +12,7 @@ function useRouteBuilder(method, path, options) {
12
12
  steps: [],
13
13
  hooks: options?.hooks ?? [],
14
14
  metadata: options?.metadata ?? [],
15
+ bodyController: options?.bodyController ?? null,
15
16
  });
16
17
  }
17
18
 
@@ -1,14 +1,15 @@
1
1
  import { type MakeRequestFromHooks, type HookRouteLifeCycle, type RouteDefinition, type RoutePath } from "../../route";
2
2
  import { type Floor } from "../../floor";
3
- import { type RequestMethods, type Request } from "../../request";
3
+ import { type RequestMethods, type Request, type BodyController } from "../../request";
4
4
  import { type Builder, type NeverCoalescing } from "@duplojs/utils";
5
5
  import { type Metadata } from "../../metadata";
6
6
  export interface RouteBuilder<GenericDefinition extends RouteDefinition = RouteDefinition, GenericFloor extends Floor = {}, GenericRequest extends Request = Request> extends Builder<RouteDefinition> {
7
7
  }
8
8
  export declare const routeBuilderHandler: import("@duplojs/utils").BuilderHandler<RouteBuilder<RouteDefinition, {}, Request>>;
9
- export declare function useRouteBuilder<GenericMethod extends RequestMethods, const GenericPaths extends RoutePath | readonly [RoutePath, ...RoutePath[]], const GenericHooks extends readonly HookRouteLifeCycle[] = readonly [], const GenericMetadata extends readonly Metadata[] = readonly []>(method: GenericMethod, path: GenericPaths, options?: {
9
+ export declare function useRouteBuilder<GenericMethod extends RequestMethods, const GenericPaths extends RoutePath | readonly [RoutePath, ...RoutePath[]], const GenericHooks extends readonly HookRouteLifeCycle[] = readonly [], const GenericMetadata extends readonly Metadata[] = readonly [], const GenericBodyController extends BodyController | null = null>(method: GenericMethod, path: GenericPaths, options?: {
10
10
  hooks?: GenericHooks | readonly HookRouteLifeCycle[];
11
11
  metadata?: GenericMetadata;
12
+ bodyController?: GenericBodyController;
12
13
  }): RouteBuilder<{
13
14
  readonly method: GenericMethod;
14
15
  readonly paths: GenericPaths extends string ? readonly [GenericPaths] : GenericPaths;
@@ -16,4 +17,5 @@ export declare function useRouteBuilder<GenericMethod extends RequestMethods, co
16
17
  readonly steps: readonly [];
17
18
  readonly hooks: GenericHooks;
18
19
  readonly metadata: GenericMetadata;
20
+ readonly bodyController: GenericBodyController;
19
21
  }, {}, NeverCoalescing<MakeRequestFromHooks<GenericHooks>, Request>>;
@@ -10,6 +10,7 @@ function useRouteBuilder(method, path, options) {
10
10
  steps: [],
11
11
  hooks: options?.hooks ?? [],
12
12
  metadata: options?.metadata ?? [],
13
+ bodyController: options?.bodyController ?? null,
13
14
  });
14
15
  }
15
16
 
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ var utils = require('@duplojs/utils');
4
+ var clean = require('@duplojs/utils/clean');
5
+
6
+ clean.createConstraint.overrideHandler.setMethod("toExtractParser", (self) => {
7
+ const dataParserWithCheckers = self
8
+ .primitiveHandler
9
+ .dataParser
10
+ .addChecker(...self.checkers);
11
+ const valueContainer = clean.constrainedTypeKind.setTo({}, { [self.name]: null });
12
+ const dataParser = utils.DPE.transform(dataParserWithCheckers, (input) => ({
13
+ ...valueContainer,
14
+ [utils.keyWrappedValue]: input,
15
+ }));
16
+ return dataParser;
17
+ });
18
+ clean.createConstraint.overrideHandler.setMethod("toEndpointSchema", (self) => {
19
+ const dataParser = self
20
+ .primitiveHandler
21
+ .dataParser
22
+ .addChecker(...self.checkers);
23
+ return utils.DPE.lazy(() => dataParser);
24
+ });
@@ -0,0 +1,8 @@
1
+ import { type DP, DPE } from "@duplojs/utils";
2
+ import { type ConstrainedType, type EligiblePrimitive } from "@duplojs/utils/clean";
3
+ declare module "@duplojs/utils/clean" {
4
+ interface ConstraintHandler<GenericName extends string = string, GenericPrimitiveValue extends EligiblePrimitive = EligiblePrimitive, GenericCheckers extends readonly DP.DataParserChecker[] = readonly DP.DataParserChecker[]> {
5
+ toExtractParser(): DPE.ContractExtended<ConstrainedType<GenericName, GenericPrimitiveValue>, unknown>;
6
+ toEndpointSchema(): DPE.ContractExtended<GenericPrimitiveValue>;
7
+ }
8
+ }
@@ -0,0 +1,22 @@
1
+ import { DPE, keyWrappedValue } from '@duplojs/utils';
2
+ import { createConstraint, constrainedTypeKind } from '@duplojs/utils/clean';
3
+
4
+ createConstraint.overrideHandler.setMethod("toExtractParser", (self) => {
5
+ const dataParserWithCheckers = self
6
+ .primitiveHandler
7
+ .dataParser
8
+ .addChecker(...self.checkers);
9
+ const valueContainer = constrainedTypeKind.setTo({}, { [self.name]: null });
10
+ const dataParser = DPE.transform(dataParserWithCheckers, (input) => ({
11
+ ...valueContainer,
12
+ [keyWrappedValue]: input,
13
+ }));
14
+ return dataParser;
15
+ });
16
+ createConstraint.overrideHandler.setMethod("toEndpointSchema", (self) => {
17
+ const dataParser = self
18
+ .primitiveHandler
19
+ .dataParser
20
+ .addChecker(...self.checkers);
21
+ return DPE.lazy(() => dataParser);
22
+ });
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ var utils = require('@duplojs/utils');
4
+ var clean = require('@duplojs/utils/clean');
5
+
6
+ clean.createConstraintsSet.overrideHandler.setMethod("toExtractParser", (self) => {
7
+ const checkers = utils.A.flatMap(self.constraints, ({ checkers }) => checkers);
8
+ const dataParserWithCheckers = self
9
+ .primitiveHandler
10
+ .dataParser
11
+ .addChecker(...checkers);
12
+ const constraintsKindValue = utils.pipe(self.constraints, utils.A.map(({ name }) => utils.O.entry(name, null)), utils.O.fromEntries);
13
+ const valueContainer = clean.constrainedTypeKind.setTo({}, constraintsKindValue);
14
+ const dataParser = utils.DPE.transform(dataParserWithCheckers, (input) => ({
15
+ ...valueContainer,
16
+ [utils.keyWrappedValue]: input,
17
+ }));
18
+ return dataParser;
19
+ });
20
+ clean.createConstraintsSet.overrideHandler.setMethod("toEndpointSchema", (self) => {
21
+ const checkers = utils.A.flatMap(self.constraints, ({ checkers }) => checkers);
22
+ const dataParserWithCheckers = self
23
+ .primitiveHandler
24
+ .dataParser
25
+ .addChecker(...checkers);
26
+ return utils.DPE.lazy(() => dataParserWithCheckers);
27
+ });