@afoures/http-client 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -29,7 +29,7 @@ import { Endpoint, http_client } from '@afoures/http-client'
29
29
  import { z } from 'zod'
30
30
 
31
31
  const api = http_client({
32
- origin: 'https://api.example.com',
32
+ base_url: 'https://api.example.com',
33
33
  endpoints: {
34
34
  users: {
35
35
  list: new Endpoint({
@@ -43,6 +43,7 @@ const api = http_client({
43
43
  },
44
44
  data: {
45
45
  schema: z.array(z.object({ id: z.string(), name: z.string() })),
46
+ parse: 'json',
46
47
  },
47
48
  }),
48
49
  get: new Endpoint({
@@ -50,6 +51,7 @@ const api = http_client({
50
51
  pathname: '/users/(:id)',
51
52
  data: {
52
53
  schema: z.object({ id: z.string(), name: z.string() }),
54
+ parse: 'json',
53
55
  },
54
56
  }),
55
57
  create: new Endpoint({
@@ -57,9 +59,11 @@ const api = http_client({
57
59
  pathname: '/users',
58
60
  body: {
59
61
  schema: z.object({ name: z.string(), email: z.string().email() }),
62
+ serialize: 'json',
60
63
  },
61
64
  data: {
62
65
  schema: z.object({ id: z.string(), name: z.string() }),
66
+ parse: 'json',
63
67
  },
64
68
  }),
65
69
  },
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { AbortedError, DeserializationError, HttpClientError, NetworkError, SerializationError, TimeoutError, UnexpectedError } from "./lib/errors.mjs";
1
+ import { AbortedError, HttpClientError, NetworkError, ParseError, SerializationError, TimeoutError, UnexpectedError } from "./lib/errors.mjs";
2
2
  import { HTTPFetch, HTTPMethod, HTTPStatus, Parser, Pathname, Schema, Serializer } from "./lib/types.mjs";
3
3
  import { AnyEndpoint, Endpoint, EndpointDefinition } from "./lib/endpoint.mjs";
4
4
  import { EndpointMap, HttpClientOptions, http_client } from "./lib/http-client.mjs";
5
- export { AbortedError, type AnyEndpoint, DeserializationError, Endpoint, type EndpointDefinition, type EndpointMap, type HTTPFetch, type HTTPMethod, type HTTPStatus, HttpClientError, type HttpClientOptions, NetworkError, type Parser, type Pathname, type Schema, SerializationError, type Serializer, TimeoutError, UnexpectedError, http_client };
5
+ export { AbortedError, type AnyEndpoint, Endpoint, type EndpointDefinition, type EndpointMap, type HTTPFetch, type HTTPMethod, type HTTPStatus, HttpClientError, type HttpClientOptions, NetworkError, ParseError, type Parser, type Pathname, type Schema, SerializationError, type Serializer, TimeoutError, UnexpectedError, http_client };
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { AbortedError, DeserializationError, HttpClientError, NetworkError, SerializationError, TimeoutError, UnexpectedError } from "./lib/errors.mjs";
1
+ import { AbortedError, HttpClientError, NetworkError, ParseError, SerializationError, TimeoutError, UnexpectedError } from "./lib/errors.mjs";
2
2
  import { Endpoint } from "./lib/endpoint.mjs";
3
3
  import { http_client } from "./lib/http-client.mjs";
4
4
 
5
- export { AbortedError, DeserializationError, Endpoint, HttpClientError, NetworkError, SerializationError, TimeoutError, UnexpectedError, http_client };
5
+ export { AbortedError, Endpoint, HttpClientError, NetworkError, ParseError, SerializationError, TimeoutError, UnexpectedError, http_client };
@@ -1,4 +1,4 @@
1
- import { DeserializationError, SerializationError } from "./errors.mjs";
1
+ import { ParseError, SerializationError } from "./errors.mjs";
2
2
  import { ErrorMessage, HTTPFetch, HTTPMethod, Parser, Pathname, Pretty, Schema, Serializer } from "./types.mjs";
3
3
 
4
4
  //#region src/lib/endpoint.d.ts
@@ -27,13 +27,13 @@ declare class Endpoint<http_method extends HTTPMethod.Any, pathname extends Path
27
27
  get method(): http_method;
28
28
  get options(): HTTPFetch.OptionalRequestInit & HTTPFetch.DefaultRequestInit;
29
29
  generate_url(init: Pretty<{
30
- origin: string;
30
+ base_url: string;
31
31
  } & HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema>>): Promise<URL | SerializationError>;
32
32
  serialize_body(init: Pretty<HTTPFetch.TypedBodyInit<body_schema>>): Promise<{
33
33
  body: BodyInit | null;
34
34
  content_type?: string;
35
35
  } | SerializationError>;
36
- parse_response(response: Response): Promise<HTTPFetch.ClientErrorResponse<Schema.infer_output<error_schema, string>> | HTTPFetch.ServerErrorResponse<Schema.infer_output<error_schema, string>> | HTTPFetch.SuccessfulResponse<Schema.infer_output<data_schema, void>> | HTTPFetch.RedirectMessage | DeserializationError>;
36
+ parse_response(response: Response): Promise<HTTPFetch.ClientErrorResponse<Schema.infer_output<error_schema, string>> | HTTPFetch.ServerErrorResponse<Schema.infer_output<error_schema, string>> | HTTPFetch.SuccessfulResponse<Schema.infer_output<data_schema, void>> | HTTPFetch.RedirectMessage | ParseError>;
37
37
  }
38
38
  type AnyEndpoint = Endpoint<any, any, any, any, any, any, any>;
39
39
  //#endregion
@@ -1,4 +1,4 @@
1
- import { DeserializationError, SerializationError } from "./errors.mjs";
1
+ import { ParseError, SerializationError } from "./errors.mjs";
2
2
  import "./types.mjs";
3
3
  import { RoutePattern } from "@remix-run/route-pattern";
4
4
 
@@ -38,7 +38,7 @@ var Endpoint = class {
38
38
  cause: result.issues
39
39
  });
40
40
  const transformed_params = result.value;
41
- if (this.#serializers.params.serialization) pathname_params = this.#serializers.params.serialization(transformed_params);
41
+ if (this.#serializers.params.serialize) pathname_params = this.#serializers.params.serialize(transformed_params);
42
42
  else pathname_params = Object.fromEntries(Object.entries(transformed_params).map(([key, value]) => [key, String(value)]));
43
43
  } else pathname_params = Object.fromEntries(Object.entries(init.params).map(([key, value]) => [key, String(value)]));
44
44
  const pathname = this.#pattern.href(pathname_params);
@@ -50,8 +50,8 @@ var Endpoint = class {
50
50
  operation: "generate_url"
51
51
  });
52
52
  const transformed_query = result.value;
53
- if (typeof this.#serializers.query.serialization === "function") search_params = this.#serializers.query.serialization(transformed_query);
54
- else if (this.#serializers.query.serialization === "urlencoded") {
53
+ if (typeof this.#serializers.query.serialize === "function") search_params = this.#serializers.query.serialize(transformed_query);
54
+ else if (this.#serializers.query.serialize === "urlencoded") {
55
55
  if (Array.isArray(transformed_query)) transformed_query.forEach((tuple, index) => {
56
56
  if (Array.isArray(tuple)) tuple.forEach((value, tupleIndex) => {
57
57
  search_params.append(`${index}[${tupleIndex}]`, String(value));
@@ -63,7 +63,7 @@ var Endpoint = class {
63
63
  }
64
64
  }
65
65
  }
66
- const url = new URL(pathname, init.origin);
66
+ const url = new URL(pathname.startsWith("/") ? pathname.slice(1) : pathname, init.base_url);
67
67
  const query_string = search_params.toString();
68
68
  if (query_string) url.search = query_string;
69
69
  return url;
@@ -83,7 +83,7 @@ var Endpoint = class {
83
83
  cause: result.issues
84
84
  });
85
85
  const transformed_content = result.value;
86
- if (typeof this.#serializers.body.serialization === "function") return this.#serializers.body.serialization(transformed_content);
86
+ if (typeof this.#serializers.body.serialize === "function") return this.#serializers.body.serialize(transformed_content);
87
87
  else return {
88
88
  body: JSON.stringify(transformed_content),
89
89
  content_type: "application/json"
@@ -106,11 +106,11 @@ var Endpoint = class {
106
106
  if (this.#parsers.error) {
107
107
  const parser = this.#parsers.error;
108
108
  let parsed;
109
- if (typeof parser.deserialization === "function") parsed = await parser.deserialization(cloned_response.body);
110
- else if (parser.deserialization === "json") parsed = await parse_as_json(cloned_response);
111
- else if (parser.deserialization === "text") parsed = await cloned_response.text();
109
+ if (typeof parser.parse === "function") parsed = await parser.parse(cloned_response.body);
110
+ else if (parser.parse === "json") parsed = await parse_as_json(cloned_response);
111
+ else if (parser.parse === "text") parsed = await cloned_response.text();
112
112
  const result = await parser.schema["~standard"].validate(parsed);
113
- if (result.issues !== void 0) return new DeserializationError("Error deserialization failed", {
113
+ if (result.issues !== void 0) return new ParseError("Error parsing failed", {
114
114
  cause: result.issues,
115
115
  operation: "parse_response"
116
116
  });
@@ -135,11 +135,11 @@ var Endpoint = class {
135
135
  if (this.#parsers.data) {
136
136
  const parser = this.#parsers.data;
137
137
  let parsed;
138
- if (typeof parser.deserialization === "function") parsed = await parser.deserialization(cloned_response.body);
139
- else if (parser.deserialization === "json") parsed = await parse_as_json(cloned_response);
140
- else if (parser.deserialization === "text") parsed = await cloned_response.text();
138
+ if (typeof parser.parse === "function") parsed = await parser.parse(cloned_response.body);
139
+ else if (parser.parse === "json") parsed = await parse_as_json(cloned_response);
140
+ else if (parser.parse === "text") parsed = await cloned_response.text();
141
141
  const result = await parser.schema["~standard"].validate(parsed);
142
- if (result.issues !== void 0) return new DeserializationError("Response deserialization failed", {
142
+ if (result.issues !== void 0) return new ParseError("Response parsing failed", {
143
143
  cause: result.issues,
144
144
  operation: "parse_response"
145
145
  });
@@ -170,19 +170,19 @@ async function parse_as_json(response) {
170
170
  throw new Error(`Failed to parse response as JSON: ${e instanceof Error ? e.message : String(e)}`);
171
171
  }
172
172
  }
173
- function as_serializer(serializer, default_serialization) {
173
+ function as_serializer(serializer, default_serialize) {
174
174
  if (!serializer || typeof serializer !== "object" || !("schema" in serializer)) return null;
175
- if (default_serialization === void 0 || "serialization" in serializer && typeof serializer.serialization !== "undefined") return serializer;
175
+ if (default_serialize === void 0 || "serialize" in serializer && typeof serializer.serialize !== "undefined") return serializer;
176
176
  return {
177
- serialization: default_serialization,
177
+ serialize: default_serialize,
178
178
  ...serializer
179
179
  };
180
180
  }
181
- function as_parser(parser, default_deserialization) {
181
+ function as_parser(parser, default_parse) {
182
182
  if (!parser || typeof parser !== "object" || !("schema" in parser)) return null;
183
- if (default_deserialization === void 0 || "deserialization" in parser && typeof parser.deserialization !== "undefined") return parser;
183
+ if (default_parse === void 0 || "parse" in parser && typeof parser.parse !== "undefined") return parser;
184
184
  return {
185
- deserialization: default_deserialization,
185
+ parse: default_parse,
186
186
  ...parser
187
187
  };
188
188
  }
@@ -29,7 +29,7 @@ declare class SerializationError extends HttpClientError {
29
29
  ...context
30
30
  }: ErrorCause & BaseContext);
31
31
  }
32
- declare class DeserializationError extends HttpClientError {
32
+ declare class ParseError extends HttpClientError {
33
33
  readonly context: BaseContext;
34
34
  constructor(message: string, {
35
35
  cause,
@@ -51,4 +51,4 @@ declare class UnexpectedError extends Error {
51
51
  }: ErrorCause & BaseContext);
52
52
  }
53
53
  //#endregion
54
- export { AbortedError, DeserializationError, HttpClientError, NetworkError, SerializationError, TimeoutError, UnexpectedError };
54
+ export { AbortedError, HttpClientError, NetworkError, ParseError, SerializationError, TimeoutError, UnexpectedError };
@@ -29,11 +29,11 @@ var SerializationError = class extends HttpClientError {
29
29
  this.context = context;
30
30
  }
31
31
  };
32
- var DeserializationError = class extends HttpClientError {
32
+ var ParseError = class extends HttpClientError {
33
33
  context;
34
34
  constructor(message, { cause, ...context }) {
35
35
  super(message, { cause });
36
- this.name = "DeserializationError";
36
+ this.name = "ParseError";
37
37
  this.context = context;
38
38
  }
39
39
  };
@@ -55,4 +55,4 @@ var UnexpectedError = class extends Error {
55
55
  };
56
56
 
57
57
  //#endregion
58
- export { AbortedError, DeserializationError, HttpClientError, NetworkError, SerializationError, TimeoutError, UnexpectedError };
58
+ export { AbortedError, HttpClientError, NetworkError, ParseError, SerializationError, TimeoutError, UnexpectedError };
@@ -1,4 +1,4 @@
1
- import { AbortedError, DeserializationError, NetworkError, SerializationError, TimeoutError, UnexpectedError } from "./errors.mjs";
1
+ import { AbortedError, NetworkError, ParseError, SerializationError, TimeoutError, UnexpectedError } from "./errors.mjs";
2
2
  import { HTTPFetch, HTTPMethod, HeadersInitWithReducer, MaybePromise, Schema } from "./types.mjs";
3
3
  import { AnyEndpoint, Endpoint } from "./endpoint.mjs";
4
4
  import * as _standard_schema_spec0 from "@standard-schema/spec";
@@ -9,56 +9,56 @@ interface EndpointMap {
9
9
  }
10
10
  type CustomFetch = (request: Request) => Promise<Response>;
11
11
  type HttpClientOptions<endpoints extends EndpointMap> = {
12
- origin: string;
12
+ base_url: string;
13
13
  endpoints: endpoints;
14
14
  options?: () => MaybePromise<HTTPFetch.OptionalRequestInit & HTTPFetch.DefaultRequestInit>;
15
15
  fetch?: CustomFetch;
16
16
  };
17
17
  declare function http_client<const endpoints extends EndpointMap>({
18
- origin,
18
+ base_url,
19
19
  endpoints: all_endpoints,
20
20
  options,
21
21
  fetch: custom_fetch
22
22
  }: HttpClientOptions<endpoints>): { [K in keyof { -readonly [name in keyof endpoints]: endpoints[name] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
23
23
  headers?: HeadersInitWithReducer;
24
- } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T ? { [K in keyof T]: T[K] } : never) => Promise<TimeoutError | AbortedError | SerializationError | DeserializationError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : endpoints[name] extends EndpointMap ? (endpoints[name] extends infer T_1 extends EndpointMap ? { -readonly [name_2 in keyof T_1]: T_1[name_2] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
24
+ } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T ? { [K in keyof T]: T[K] } : never) => Promise<TimeoutError | AbortedError | SerializationError | ParseError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : endpoints[name] extends EndpointMap ? (endpoints[name] extends infer T_1 extends EndpointMap ? { -readonly [name_2 in keyof T_1]: T_1[name_2] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
25
25
  headers?: HeadersInitWithReducer;
26
- } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_2 ? { [K_1 in keyof T_2]: T_2[K_1] } : never) => Promise<TimeoutError | AbortedError | SerializationError | DeserializationError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_1[name_2] extends EndpointMap ? (T_1[name_2] extends infer T_3 extends EndpointMap ? { -readonly [name_3 in keyof T_3]: T_3[name_3] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
26
+ } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_2 ? { [K_1 in keyof T_2]: T_2[K_1] } : never) => Promise<TimeoutError | AbortedError | SerializationError | ParseError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_1[name_2] extends EndpointMap ? (T_1[name_2] extends infer T_3 extends EndpointMap ? { -readonly [name_3 in keyof T_3]: T_3[name_3] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
27
27
  headers?: HeadersInitWithReducer;
28
- } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_4 ? { [K_2 in keyof T_4]: T_4[K_2] } : never) => Promise<TimeoutError | AbortedError | SerializationError | DeserializationError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_3[name_3] extends EndpointMap ? (T_3[name_3] extends infer T_5 extends EndpointMap ? { -readonly [name_4 in keyof T_5]: T_5[name_4] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
28
+ } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_4 ? { [K_2 in keyof T_4]: T_4[K_2] } : never) => Promise<TimeoutError | AbortedError | SerializationError | ParseError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_3[name_3] extends EndpointMap ? (T_3[name_3] extends infer T_5 extends EndpointMap ? { -readonly [name_4 in keyof T_5]: T_5[name_4] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
29
29
  headers?: HeadersInitWithReducer;
30
- } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_6 ? { [K_3 in keyof T_6]: T_6[K_3] } : never) => Promise<TimeoutError | AbortedError | SerializationError | DeserializationError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_5[name_4] extends EndpointMap ? (T_5[name_4] extends infer T_7 extends EndpointMap ? { -readonly [name_5 in keyof T_7]: T_7[name_5] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
30
+ } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_6 ? { [K_3 in keyof T_6]: T_6[K_3] } : never) => Promise<TimeoutError | AbortedError | SerializationError | ParseError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_5[name_4] extends EndpointMap ? (T_5[name_4] extends infer T_7 extends EndpointMap ? { -readonly [name_5 in keyof T_7]: T_7[name_5] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
31
31
  headers?: HeadersInitWithReducer;
32
- } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_8 ? { [K_4 in keyof T_8]: T_8[K_4] } : never) => Promise<TimeoutError | AbortedError | SerializationError | DeserializationError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_7[name_5] extends EndpointMap ? (T_7[name_5] extends infer T_9 extends EndpointMap ? { -readonly [name_6 in keyof T_9]: T_9[name_6] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
32
+ } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_8 ? { [K_4 in keyof T_8]: T_8[K_4] } : never) => Promise<TimeoutError | AbortedError | SerializationError | ParseError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_7[name_5] extends EndpointMap ? (T_7[name_5] extends infer T_9 extends EndpointMap ? { -readonly [name_6 in keyof T_9]: T_9[name_6] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
33
33
  headers?: HeadersInitWithReducer;
34
- } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_10 ? { [K_5 in keyof T_10]: T_10[K_5] } : never) => Promise<TimeoutError | AbortedError | SerializationError | DeserializationError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_9[name_6] extends EndpointMap ? (T_9[name_6] extends infer T_11 extends EndpointMap ? { -readonly [name_7 in keyof T_11]: T_11[name_7] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
34
+ } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_10 ? { [K_5 in keyof T_10]: T_10[K_5] } : never) => Promise<TimeoutError | AbortedError | SerializationError | ParseError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_9[name_6] extends EndpointMap ? (T_9[name_6] extends infer T_11 extends EndpointMap ? { -readonly [name_7 in keyof T_11]: T_11[name_7] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
35
35
  headers?: HeadersInitWithReducer;
36
- } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_12 ? { [K_6 in keyof T_12]: T_12[K_6] } : never) => Promise<TimeoutError | AbortedError | SerializationError | DeserializationError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_11[name_7] extends EndpointMap ? (T_11[name_7] extends infer T_13 extends EndpointMap ? { -readonly [name_8 in keyof T_13]: T_13[name_8] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
36
+ } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_12 ? { [K_6 in keyof T_12]: T_12[K_6] } : never) => Promise<TimeoutError | AbortedError | SerializationError | ParseError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_11[name_7] extends EndpointMap ? (T_11[name_7] extends infer T_13 extends EndpointMap ? { -readonly [name_8 in keyof T_13]: T_13[name_8] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
37
37
  headers?: HeadersInitWithReducer;
38
- } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_14 ? { [K_7 in keyof T_14]: T_14[K_7] } : never) => Promise<TimeoutError | AbortedError | SerializationError | DeserializationError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_13[name_8] extends EndpointMap ? (T_13[name_8] extends infer T_15 extends EndpointMap ? { -readonly [name_9 in keyof T_15]: T_15[name_9] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
38
+ } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_14 ? { [K_7 in keyof T_14]: T_14[K_7] } : never) => Promise<TimeoutError | AbortedError | SerializationError | ParseError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_13[name_8] extends EndpointMap ? (T_13[name_8] extends infer T_15 extends EndpointMap ? { -readonly [name_9 in keyof T_15]: T_15[name_9] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
39
39
  headers?: HeadersInitWithReducer;
40
- } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_16 ? { [K_8 in keyof T_16]: T_16[K_8] } : never) => Promise<TimeoutError | AbortedError | SerializationError | DeserializationError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_15[name_9] extends EndpointMap ? (T_15[name_9] extends infer T_17 extends EndpointMap ? { -readonly [name_10 in keyof T_17]: T_17[name_10] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
40
+ } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_16 ? { [K_8 in keyof T_16]: T_16[K_8] } : never) => Promise<TimeoutError | AbortedError | SerializationError | ParseError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_15[name_9] extends EndpointMap ? (T_15[name_9] extends infer T_17 extends EndpointMap ? { -readonly [name_10 in keyof T_17]: T_17[name_10] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
41
41
  headers?: HeadersInitWithReducer;
42
- } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_18 ? { [K_9 in keyof T_18]: T_18[K_9] } : never) => Promise<TimeoutError | AbortedError | SerializationError | DeserializationError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_17[name_10] extends EndpointMap ? (T_17[name_10] extends infer T_19 extends EndpointMap ? { -readonly [name_11 in keyof T_19]: T_19[name_11] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: /*elided*/any) => Promise<TimeoutError | AbortedError | SerializationError | DeserializationError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_19[name_11] extends EndpointMap ? /*elided*/any : never } : never) extends infer T_18 ? { [K_9 in keyof T_18]: T_18[K_9] } : never : never } : never) extends infer T_16 ? { [K_8 in keyof T_16]: T_16[K_8] } : never : never } : never) extends infer T_14 ? { [K_7 in keyof T_14]: T_14[K_7] } : never : never } : never) extends infer T_12 ? { [K_6 in keyof T_12]: T_12[K_6] } : never : never } : never) extends infer T_10 ? { [K_5 in keyof T_10]: T_10[K_5] } : never : never } : never) extends infer T_8 ? { [K_4 in keyof T_8]: T_8[K_4] } : never : never } : never) extends infer T_6 ? { [K_3 in keyof T_6]: T_6[K_3] } : never : never } : never) extends infer T_4 ? { [K_2 in keyof T_4]: T_4[K_2] } : never : never } : never) extends infer T_2 ? { [K_1 in keyof T_2]: T_2[K_1] } : never : never } : never) extends infer T ? { [K in keyof T]: T[K] } : never : never }]: { -readonly [name in keyof endpoints]: endpoints[name] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
42
+ } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_18 ? { [K_9 in keyof T_18]: T_18[K_9] } : never) => Promise<TimeoutError | AbortedError | SerializationError | ParseError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_17[name_10] extends EndpointMap ? (T_17[name_10] extends infer T_19 extends EndpointMap ? { -readonly [name_11 in keyof T_19]: T_19[name_11] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: /*elided*/any) => Promise<TimeoutError | AbortedError | SerializationError | ParseError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_19[name_11] extends EndpointMap ? /*elided*/any : never } : never) extends infer T_18 ? { [K_9 in keyof T_18]: T_18[K_9] } : never : never } : never) extends infer T_16 ? { [K_8 in keyof T_16]: T_16[K_8] } : never : never } : never) extends infer T_14 ? { [K_7 in keyof T_14]: T_14[K_7] } : never : never } : never) extends infer T_12 ? { [K_6 in keyof T_12]: T_12[K_6] } : never : never } : never) extends infer T_10 ? { [K_5 in keyof T_10]: T_10[K_5] } : never : never } : never) extends infer T_8 ? { [K_4 in keyof T_8]: T_8[K_4] } : never : never } : never) extends infer T_6 ? { [K_3 in keyof T_6]: T_6[K_3] } : never : never } : never) extends infer T_4 ? { [K_2 in keyof T_4]: T_4[K_2] } : never : never } : never) extends infer T_2 ? { [K_1 in keyof T_2]: T_2[K_1] } : never : never } : never) extends infer T ? { [K in keyof T]: T[K] } : never : never }]: { -readonly [name in keyof endpoints]: endpoints[name] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
43
43
  headers?: HeadersInitWithReducer;
44
- } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T ? { [K_2 in keyof T]: T[K_2] } : never) => Promise<TimeoutError | AbortedError | SerializationError | DeserializationError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : endpoints[name] extends EndpointMap ? (endpoints[name] extends infer T_1 extends EndpointMap ? { -readonly [name_2 in keyof T_1]: T_1[name_2] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
44
+ } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T ? { [K_2 in keyof T]: T[K_2] } : never) => Promise<TimeoutError | AbortedError | SerializationError | ParseError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : endpoints[name] extends EndpointMap ? (endpoints[name] extends infer T_1 extends EndpointMap ? { -readonly [name_2 in keyof T_1]: T_1[name_2] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
45
45
  headers?: HeadersInitWithReducer;
46
- } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_2 ? { [K_3 in keyof T_2]: T_2[K_3] } : never) => Promise<TimeoutError | AbortedError | SerializationError | DeserializationError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_1[name_2] extends EndpointMap ? (T_1[name_2] extends infer T_3 extends EndpointMap ? { -readonly [name_3 in keyof T_3]: T_3[name_3] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
46
+ } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_2 ? { [K_3 in keyof T_2]: T_2[K_3] } : never) => Promise<TimeoutError | AbortedError | SerializationError | ParseError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_1[name_2] extends EndpointMap ? (T_1[name_2] extends infer T_3 extends EndpointMap ? { -readonly [name_3 in keyof T_3]: T_3[name_3] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
47
47
  headers?: HeadersInitWithReducer;
48
- } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_4 ? { [K_4 in keyof T_4]: T_4[K_4] } : never) => Promise<TimeoutError | AbortedError | SerializationError | DeserializationError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_3[name_3] extends EndpointMap ? (T_3[name_3] extends infer T_5 extends EndpointMap ? { -readonly [name_4 in keyof T_5]: T_5[name_4] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
48
+ } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_4 ? { [K_4 in keyof T_4]: T_4[K_4] } : never) => Promise<TimeoutError | AbortedError | SerializationError | ParseError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_3[name_3] extends EndpointMap ? (T_3[name_3] extends infer T_5 extends EndpointMap ? { -readonly [name_4 in keyof T_5]: T_5[name_4] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
49
49
  headers?: HeadersInitWithReducer;
50
- } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_6 ? { [K_5 in keyof T_6]: T_6[K_5] } : never) => Promise<TimeoutError | AbortedError | SerializationError | DeserializationError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_5[name_4] extends EndpointMap ? (T_5[name_4] extends infer T_7 extends EndpointMap ? { -readonly [name_5 in keyof T_7]: T_7[name_5] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
50
+ } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_6 ? { [K_5 in keyof T_6]: T_6[K_5] } : never) => Promise<TimeoutError | AbortedError | SerializationError | ParseError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_5[name_4] extends EndpointMap ? (T_5[name_4] extends infer T_7 extends EndpointMap ? { -readonly [name_5 in keyof T_7]: T_7[name_5] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
51
51
  headers?: HeadersInitWithReducer;
52
- } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_8 ? { [K_6 in keyof T_8]: T_8[K_6] } : never) => Promise<TimeoutError | AbortedError | SerializationError | DeserializationError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_7[name_5] extends EndpointMap ? (T_7[name_5] extends infer T_9 extends EndpointMap ? { -readonly [name_6 in keyof T_9]: T_9[name_6] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
52
+ } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_8 ? { [K_6 in keyof T_8]: T_8[K_6] } : never) => Promise<TimeoutError | AbortedError | SerializationError | ParseError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_7[name_5] extends EndpointMap ? (T_7[name_5] extends infer T_9 extends EndpointMap ? { -readonly [name_6 in keyof T_9]: T_9[name_6] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
53
53
  headers?: HeadersInitWithReducer;
54
- } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_10 ? { [K_7 in keyof T_10]: T_10[K_7] } : never) => Promise<TimeoutError | AbortedError | SerializationError | DeserializationError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_9[name_6] extends EndpointMap ? (T_9[name_6] extends infer T_11 extends EndpointMap ? { -readonly [name_7 in keyof T_11]: T_11[name_7] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
54
+ } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_10 ? { [K_7 in keyof T_10]: T_10[K_7] } : never) => Promise<TimeoutError | AbortedError | SerializationError | ParseError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_9[name_6] extends EndpointMap ? (T_9[name_6] extends infer T_11 extends EndpointMap ? { -readonly [name_7 in keyof T_11]: T_11[name_7] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
55
55
  headers?: HeadersInitWithReducer;
56
- } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_12 ? { [K_8 in keyof T_12]: T_12[K_8] } : never) => Promise<TimeoutError | AbortedError | SerializationError | DeserializationError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_11[name_7] extends EndpointMap ? (T_11[name_7] extends infer T_13 extends EndpointMap ? { -readonly [name_8 in keyof T_13]: T_13[name_8] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
56
+ } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_12 ? { [K_8 in keyof T_12]: T_12[K_8] } : never) => Promise<TimeoutError | AbortedError | SerializationError | ParseError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_11[name_7] extends EndpointMap ? (T_11[name_7] extends infer T_13 extends EndpointMap ? { -readonly [name_8 in keyof T_13]: T_13[name_8] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
57
57
  headers?: HeadersInitWithReducer;
58
- } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_14 ? { [K_9 in keyof T_14]: T_14[K_9] } : never) => Promise<TimeoutError | AbortedError | SerializationError | DeserializationError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_13[name_8] extends EndpointMap ? (T_13[name_8] extends infer T_15 extends EndpointMap ? { -readonly [name_9 in keyof T_15]: T_15[name_9] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
58
+ } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_14 ? { [K_9 in keyof T_14]: T_14[K_9] } : never) => Promise<TimeoutError | AbortedError | SerializationError | ParseError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_13[name_8] extends EndpointMap ? (T_13[name_8] extends infer T_15 extends EndpointMap ? { -readonly [name_9 in keyof T_15]: T_15[name_9] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
59
59
  headers?: HeadersInitWithReducer;
60
- } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_16 ? { [K_10 in keyof T_16]: T_16[K_10] } : never) => Promise<TimeoutError | AbortedError | SerializationError | DeserializationError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_15[name_9] extends EndpointMap ? (T_15[name_9] extends infer T_17 extends EndpointMap ? { -readonly [name_10 in keyof T_17]: T_17[name_10] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
60
+ } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_16 ? { [K_10 in keyof T_16]: T_16[K_10] } : never) => Promise<TimeoutError | AbortedError | SerializationError | ParseError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_15[name_9] extends EndpointMap ? (T_15[name_9] extends infer T_17 extends EndpointMap ? { -readonly [name_10 in keyof T_17]: T_17[name_10] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: HTTPFetch.TypedParamsInit<pathname, params_schema> & HTTPFetch.TypedQueryInit<query_schema> & HTTPFetch.TypedBodyInit<body_schema> & HTTPFetch.OptionalRequestInit & {
61
61
  headers?: HeadersInitWithReducer;
62
- } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_18 ? { [K_11 in keyof T_18]: T_18[K_11] } : never) => Promise<TimeoutError | AbortedError | SerializationError | DeserializationError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_17[name_10] extends EndpointMap ? (T_17[name_10] extends infer T_19 extends EndpointMap ? { -readonly [name_11 in keyof T_19]: T_19[name_11] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: /*elided*/any) => Promise<TimeoutError | AbortedError | SerializationError | DeserializationError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_19[name_11] extends EndpointMap ? /*elided*/any : never } : never) extends infer T_18 ? { [K_11 in keyof T_18]: T_18[K_11] } : never : never } : never) extends infer T_16 ? { [K_10 in keyof T_16]: T_16[K_10] } : never : never } : never) extends infer T_14 ? { [K_9 in keyof T_14]: T_14[K_9] } : never : never } : never) extends infer T_12 ? { [K_8 in keyof T_12]: T_12[K_8] } : never : never } : never) extends infer T_10 ? { [K_7 in keyof T_10]: T_10[K_7] } : never : never } : never) extends infer T_8 ? { [K_6 in keyof T_8]: T_8[K_6] } : never : never } : never) extends infer T_6 ? { [K_5 in keyof T_6]: T_6[K_5] } : never : never } : never) extends infer T_4 ? { [K_4 in keyof T_4]: T_4[K_4] } : never : never } : never) extends infer T_2 ? { [K_3 in keyof T_2]: T_2[K_3] } : never : never } : never) extends infer T ? { [K_2 in keyof T]: T[K_2] } : never : never }[K] };
62
+ } & Omit<RequestInit, "body" | "method" | "headers"> extends infer T_18 ? { [K_11 in keyof T_18]: T_18[K_11] } : never) => Promise<TimeoutError | AbortedError | SerializationError | ParseError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_17[name_10] extends EndpointMap ? (T_17[name_10] extends infer T_19 extends EndpointMap ? { -readonly [name_11 in keyof T_19]: T_19[name_11] extends Endpoint<infer http_method extends HTTPMethod.Any, infer pathname extends `/${string}`, infer params_schema extends Schema._<unknown, unknown>, infer query_schema extends Schema._<unknown, unknown>, infer body_schema extends Schema._<unknown, unknown>, infer data_schema extends Schema._<unknown, unknown>, infer error_schema extends Schema._<unknown, unknown>> ? (input: /*elided*/any) => Promise<TimeoutError | AbortedError | SerializationError | ParseError | NetworkError | UnexpectedError | HTTPFetch.RedirectMessage | HTTPFetch.ClientErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.ServerErrorResponse<[error_schema] extends [never] ? string : _standard_schema_spec0.StandardSchemaV1.InferOutput<error_schema>> | HTTPFetch.SuccessfulResponse<[data_schema] extends [never] ? void : _standard_schema_spec0.StandardSchemaV1.InferOutput<data_schema>>> : T_19[name_11] extends EndpointMap ? /*elided*/any : never } : never) extends infer T_18 ? { [K_11 in keyof T_18]: T_18[K_11] } : never : never } : never) extends infer T_16 ? { [K_10 in keyof T_16]: T_16[K_10] } : never : never } : never) extends infer T_14 ? { [K_9 in keyof T_14]: T_14[K_9] } : never : never } : never) extends infer T_12 ? { [K_8 in keyof T_12]: T_12[K_8] } : never : never } : never) extends infer T_10 ? { [K_7 in keyof T_10]: T_10[K_7] } : never : never } : never) extends infer T_8 ? { [K_6 in keyof T_8]: T_8[K_6] } : never : never } : never) extends infer T_6 ? { [K_5 in keyof T_6]: T_6[K_5] } : never : never } : never) extends infer T_4 ? { [K_4 in keyof T_4]: T_4[K_4] } : never : never } : never) extends infer T_2 ? { [K_3 in keyof T_2]: T_2[K_3] } : never : never } : never) extends infer T ? { [K_2 in keyof T]: T[K_2] } : never : never }[K] };
63
63
  //#endregion
64
64
  export { EndpointMap, HttpClientOptions, http_client };
@@ -4,13 +4,13 @@ import { Endpoint } from "./endpoint.mjs";
4
4
  import { extract_args, merge_options, remove_custom_options, sleep } from "./utils.mjs";
5
5
 
6
6
  //#region src/lib/http-client.ts
7
- function fetch_endpoint_factory({ origin, endpoint, custom_fetch, get_default_options = () => ({}), hooks = {} }) {
7
+ function fetch_endpoint_factory({ base_url, endpoint, custom_fetch, get_default_options = () => ({}), hooks = {} }) {
8
8
  async function fetch_endpoint(input) {
9
- if (!URL.canParse(origin)) return new UnexpectedError(`Invalid origin: ${origin}`, { operation: "origin_validation" });
9
+ if (!URL.canParse(base_url)) return new UnexpectedError(`Invalid base_url: ${base_url}`, { operation: "base_url_validation" });
10
10
  const { args, options } = extract_args(input);
11
11
  const { headers, ...merged_options } = merge_options(await get_default_options(), endpoint.options, options);
12
12
  const url = await endpoint.generate_url({
13
- origin,
13
+ base_url,
14
14
  params: args.params,
15
15
  query: args.query
16
16
  }).catch((error) => new UnexpectedError("Failed to generate URL", {
@@ -115,12 +115,12 @@ function fetch_endpoint_factory({ origin, endpoint, custom_fetch, get_default_op
115
115
  }
116
116
  return fetch_endpoint;
117
117
  }
118
- function http_client({ origin, endpoints: all_endpoints, options, fetch: custom_fetch = fetch }) {
118
+ function http_client({ base_url, endpoints: all_endpoints, options, fetch: custom_fetch = fetch }) {
119
119
  function map(endpoints) {
120
120
  return Object.fromEntries(Object.entries(endpoints).map(([key, endpoint_or_object]) => {
121
121
  if (endpoint_or_object instanceof Endpoint) return [key, fetch_endpoint_factory({
122
122
  endpoint: endpoint_or_object,
123
- origin,
123
+ base_url,
124
124
  custom_fetch,
125
125
  get_default_options: options
126
126
  })];
@@ -133,85 +133,51 @@ declare namespace Schema {
133
133
  type infer_input<schema extends Schema.Any, default_value extends unknown = never> = [default_value] extends [never] ? StandardSchemaV1.InferInput<schema> : [schema] extends [never] ? default_value : StandardSchemaV1.InferInput<schema>;
134
134
  type infer_output<schema extends Schema.Any, default_value extends unknown = never> = [default_value] extends [never] ? StandardSchemaV1.InferOutput<schema> : [schema] extends [never] ? default_value : StandardSchemaV1.InferOutput<schema>;
135
135
  }
136
- declare namespace Json {
137
- /**
138
- Matches a JSON object.
139
- @category JSON
140
- */
141
- type Object = { [Key in string]: Json.Value };
142
- /**
143
- Matches a JSON array.
144
- @category JSON
145
- */
146
- type Array = Json.Value[] | readonly Json.Value[];
147
- /**
148
- Matches any valid JSON primitive value.
149
- @category JSON
150
- */
151
- type Primitive = string | number | boolean | null;
152
- /**
153
- Matches any valid JSON value.
154
- @category JSON
155
- */
156
- type Value = Json.Primitive | Json.Object | Json.Array;
157
- }
158
136
  declare namespace Serializer {
159
137
  type Any = {
160
138
  schema: Schema.Any;
161
- serialization?: string | ((data: any) => any);
139
+ serialize?: string | ((data: any) => any);
162
140
  };
163
141
  type Params<pathname extends Pathname.Relative, schema extends Schema._> = schema extends Schema._<any, Pathname.Params<pathname>> ? {
164
142
  schema: schema;
165
- serialization?: (data: Schema.infer_output<NoInfer<schema>>) => Pathname.Params<pathname>;
143
+ serialize?: (data: Schema.infer_output<NoInfer<schema>>) => Pathname.Params<pathname>;
166
144
  } : {
167
145
  schema: schema;
168
- serialization: (data: Schema.infer_output<NoInfer<schema>>) => Pathname.Params<pathname>;
146
+ serialize: (data: Schema.infer_output<NoInfer<schema>>) => Pathname.Params<pathname>;
169
147
  };
170
148
  type QueryString<schema extends Schema._> = schema extends Schema._<any, Array<Array<string>> | Record<string, string> | undefined> ? {
171
149
  schema: schema;
172
- serialization?: "urlencoded" | ((data: Schema.infer_output<NoInfer<schema>>) => URLSearchParams);
150
+ serialize?: "urlencoded" | ((data: Schema.infer_output<NoInfer<schema>>) => URLSearchParams);
173
151
  } : {
174
152
  schema: schema;
175
- serialization: (data: Schema.infer_output<NoInfer<schema>>) => URLSearchParams;
153
+ serialize: (data: Schema.infer_output<NoInfer<schema>>) => URLSearchParams;
176
154
  };
177
- type Body<schema extends Schema._> = schema extends Schema._<any, Json.Value> ? {
155
+ type Body<schema extends Schema._> = {
178
156
  schema: schema;
179
- serialization?: "json" | ((data: Schema.infer_output<NoInfer<schema>>) => {
157
+ serialize: "json" | ((data: Schema.infer_output<NoInfer<schema>, any>) => {
180
158
  body: BodyInit | null;
181
159
  content_type: string;
182
160
  });
183
- } : {
184
- schema: schema;
185
- serialization: (data: Schema.infer_output<NoInfer<schema>>) => {
186
- body: BodyInit | null;
187
- content_type: string;
188
- };
189
161
  };
190
162
  }
191
163
  declare namespace Parser {
192
164
  type Any = {
193
165
  schema: Schema.Any;
194
- deserialization?: string | ((data: any) => any);
166
+ parse: string | ((data: any) => any);
195
167
  };
196
168
  type Data<schema extends Schema._> = schema extends Schema._<string, any> ? {
197
169
  schema: schema;
198
- deserialization: "text" | "json" | ((body: Response["body"]) => Promise<Schema.infer_input<NoInfer<schema>>>);
199
- } : schema extends Schema._<Json.Value, any> ? {
200
- schema: schema;
201
- deserialization?: "json" | ((body: Response["body"]) => Promise<Schema.infer_input<NoInfer<schema>>>);
170
+ parse: "text" | ((body: Response["body"]) => Promise<Schema.infer_input<NoInfer<schema>>>);
202
171
  } : {
203
172
  schema: schema;
204
- deserialization: (body: Response["body"]) => Promise<Schema.infer_input<NoInfer<schema>>>;
173
+ parse: "json" | ((body: Response["body"]) => Promise<Schema.infer_input<NoInfer<schema>>>);
205
174
  };
206
175
  type Error<schema extends Schema._> = schema extends Schema._<string, any> ? {
207
176
  schema: schema;
208
- deserialization: "text" | "json" | ((body: Response["body"]) => Promise<Schema.infer_input<NoInfer<schema>>>);
209
- } : schema extends Schema._<Json.Value, any> ? {
210
- schema: schema;
211
- deserialization: "json" | ((body: Response["body"]) => Promise<Schema.infer_input<NoInfer<schema>>>);
177
+ parse: "text" | ((body: Response["body"]) => Promise<Schema.infer_input<NoInfer<schema>>>);
212
178
  } : {
213
179
  schema: schema;
214
- deserialization: (body: Response["body"]) => Promise<Schema.infer_input<NoInfer<schema>>>;
180
+ parse: "json" | ((body: Response["body"]) => Promise<Schema.infer_input<NoInfer<schema>>>);
215
181
  };
216
182
  }
217
183
  //#endregion
@@ -97,7 +97,7 @@ Generates a full URL with params and query serialized:
97
97
 
98
98
  ```typescript
99
99
  const url = await endpoint.generate_url({
100
- origin: 'https://api.example.com',
100
+ base_url: 'https://api.example.com',
101
101
  params: { id: '123' },
102
102
  query: { include: 'posts' },
103
103
  })
@@ -74,15 +74,15 @@ if (result instanceof SerializationError) {
74
74
  }
75
75
  ```
76
76
 
77
- ### `DeserializationError`
77
+ ### `ParseError`
78
78
 
79
79
  Failed to parse response:
80
80
 
81
81
  ```typescript
82
82
  const result = await api.users.get({ params: { id: '123' } })
83
83
 
84
- if (result instanceof DeserializationError) {
85
- console.log(result.kind) // "DeserializationError"
84
+ if (result instanceof ParseError) {
85
+ console.log(result.kind) // "ParseError"
86
86
  console.log(result.cause) // Schema validation issues
87
87
  }
88
88
  ```
@@ -9,12 +9,12 @@ import { Endpoint, http_client } from '@afoures/http-client'
9
9
  import { z } from 'zod'
10
10
 
11
11
  const api = http_client({
12
- origin: 'https://api.example.com',
12
+ base_url: 'https://api.example.com',
13
13
  endpoints: {
14
14
  users: new Endpoint({
15
15
  method: 'GET',
16
16
  pathname: '/users',
17
- data: { schema: z.array(z.object({ id: z.string() })) },
17
+ data: { schema: z.array(z.object({ id: z.string() })), parse: 'json' },
18
18
  }),
19
19
  },
20
20
  })
@@ -28,7 +28,7 @@ Nest endpoints in objects for logical grouping:
28
28
 
29
29
  ```typescript
30
30
  const api = http_client({
31
- origin: 'https://api.example.com',
31
+ base_url: 'https://api.example.com',
32
32
  endpoints: {
33
33
  users: {
34
34
  list: new Endpoint({ method: 'GET', pathname: '/users' }),
@@ -60,7 +60,7 @@ Provide sync or async default options for all requests:
60
60
 
61
61
  ```typescript
62
62
  const api = http_client({
63
- origin: 'https://api.example.com',
63
+ base_url: 'https://api.example.com',
64
64
  endpoints: { /* ... */ },
65
65
  options: async () => {
66
66
  const token = await getAuthToken()
@@ -84,7 +84,7 @@ Provide a custom fetch function for proxying, logging, or modifying requests:
84
84
 
85
85
  ```typescript
86
86
  const api = http_client({
87
- origin: 'https://api.example.com',
87
+ base_url: 'https://api.example.com',
88
88
  endpoints: { /* ... */ },
89
89
  fetch: async (request) => {
90
90
  console.log('Request:', request.url)
@@ -56,7 +56,9 @@ type ServerErrorResponse<Error> = {
56
56
 
57
57
  Define a `data` parser for successful responses:
58
58
 
59
- ### JSON (Default)
59
+ ### JSON
60
+
61
+ Use `parse: 'json'` to parse the response body as JSON:
60
62
 
61
63
  ```typescript
62
64
  const endpoint = new Endpoint({
@@ -67,6 +69,7 @@ const endpoint = new Endpoint({
67
69
  id: z.string(),
68
70
  name: z.string(),
69
71
  }),
72
+ parse: 'json',
70
73
  },
71
74
  })
72
75
 
@@ -84,7 +87,7 @@ const endpoint = new Endpoint({
84
87
  pathname: '/health',
85
88
  data: {
86
89
  schema: z.string(),
87
- deserialization: 'text',
90
+ parse: 'text',
88
91
  },
89
92
  })
90
93
  ```
@@ -97,7 +100,7 @@ const endpoint = new Endpoint({
97
100
  pathname: '/data',
98
101
  data: {
99
102
  schema: z.object({ value: z.number() }),
100
- deserialization: async (body) => {
103
+ parse: async (body) => {
101
104
  const text = await new Response(body).text()
102
105
  return JSON.parse(text)
103
106
  },
@@ -129,13 +132,13 @@ Define an `error` parser for error responses:
129
132
  const endpoint = new Endpoint({
130
133
  method: 'POST',
131
134
  pathname: '/users',
132
- body: { schema: z.object({ name: z.string() }) },
135
+ body: { schema: z.object({ name: z.string() }), serialize: 'json' },
133
136
  error: {
134
137
  schema: z.object({
135
138
  message: z.string(),
136
139
  code: z.string(),
137
140
  }),
138
- deserialization: 'json',
141
+ parse: 'json',
139
142
  },
140
143
  })
141
144
 
@@ -154,7 +157,7 @@ const endpoint = new Endpoint({
154
157
  pathname: '/users/(:id)',
155
158
  error: {
156
159
  schema: z.string(),
157
- deserialization: 'text',
160
+ parse: 'text',
158
161
  },
159
162
  })
160
163
 
@@ -193,6 +196,7 @@ const endpoint = new Endpoint({
193
196
  name: z.string().transform(s => s.toUpperCase()),
194
197
  createdAt: z.string().transform(s => new Date(s)),
195
198
  }),
199
+ parse: 'json',
196
200
  },
197
201
  })
198
202
 
@@ -203,15 +207,15 @@ if (result.ok) {
203
207
  }
204
208
  ```
205
209
 
206
- ## Deserialization Errors
210
+ ## Parse Errors
207
211
 
208
- If response parsing fails validation, a `DeserializationError` is returned:
212
+ If response parsing fails validation, a `ParseError` is returned:
209
213
 
210
214
  ```typescript
211
215
  const result = await endpoint.parse_response(response)
212
216
 
213
- if (result instanceof DeserializationError) {
214
- console.log(result.message) // "Response deserialization failed"
217
+ if (result instanceof ParseError) {
218
+ console.log(result.message) // "Response parsing failed"
215
219
  console.log(result.cause) // Schema validation issues
216
220
  }
217
221
  ```
@@ -177,7 +177,7 @@ const result = await api.users.get({
177
177
 
178
178
  ```typescript
179
179
  const api = http_client({
180
- origin: 'https://api.example.com',
180
+ base_url: 'https://api.example.com',
181
181
  endpoints: {
182
182
  users: new Endpoint({
183
183
  method: 'GET',
@@ -15,6 +15,7 @@ const endpoint = new Endpoint({
15
15
  name: z.string().min(1),
16
16
  email: z.string().email(),
17
17
  }),
18
+ serialize: 'json',
18
19
  },
19
20
  data: {
20
21
  schema: z.object({
@@ -22,6 +23,7 @@ const endpoint = new Endpoint({
22
23
  name: z.string(),
23
24
  createdAt: z.string().datetime(),
24
25
  }),
26
+ parse: 'json',
25
27
  },
26
28
  })
27
29
  ```
@@ -43,6 +45,7 @@ const endpoint = new Endpoint({
43
45
  schema: z.object({
44
46
  createdAt: z.string().transform(s => new Date(s)), // parse ISO to Date
45
47
  }),
48
+ parse: 'json',
46
49
  },
47
50
  })
48
51
 
@@ -66,6 +69,7 @@ const endpoint = new Endpoint({
66
69
  email: 'string',
67
70
  age: 'number?',
68
71
  }),
72
+ serialize: 'json',
69
73
  },
70
74
  data: {
71
75
  schema: type({
@@ -73,6 +77,7 @@ const endpoint = new Endpoint({
73
77
  name: 'string',
74
78
  'email?': 'string',
75
79
  }),
80
+ parse: 'json',
76
81
  },
77
82
  })
78
83
  ```
@@ -90,6 +95,7 @@ const endpoint = new Endpoint({
90
95
  id: 'string',
91
96
  'createdAt': 'string.parse(v => new Date(v))',
92
97
  }),
98
+ parse: 'json',
93
99
  },
94
100
  })
95
101
  ```
@@ -107,12 +113,14 @@ const endpoint = new Endpoint({
107
113
  name: v.pipe(v.string(), v.minLength(1)),
108
114
  email: v.pipe(v.string(), v.email()),
109
115
  }),
116
+ serialize: 'json',
110
117
  },
111
118
  data: {
112
119
  schema: v.object({
113
120
  id: v.string(),
114
121
  name: v.string(),
115
122
  }),
123
+ parse: 'json',
116
124
  },
117
125
  })
118
126
  ```
@@ -130,6 +138,7 @@ const endpoint = new Endpoint({
130
138
  id: v.string(),
131
139
  createdAt: v.pipe(v.string(), v.transform(s => new Date(s))),
132
140
  }),
141
+ parse: 'json',
133
142
  },
134
143
  })
135
144
  ```
@@ -180,24 +189,24 @@ const UserSchema = z.object({
180
189
  const CreateUserSchema = UserSchema.omit({ id: true })
181
190
 
182
191
  const api = http_client({
183
- origin: 'https://api.example.com',
192
+ base_url: 'https://api.example.com',
184
193
  endpoints: {
185
194
  users: {
186
195
  list: new Endpoint({
187
196
  method: 'GET',
188
197
  pathname: '/users',
189
- data: { schema: z.array(UserSchema) },
198
+ data: { schema: z.array(UserSchema), parse: 'json' },
190
199
  }),
191
200
  get: new Endpoint({
192
201
  method: 'GET',
193
202
  pathname: '/users/(:id)',
194
- data: { schema: UserSchema },
203
+ data: { schema: UserSchema, parse: 'json' },
195
204
  }),
196
205
  create: new Endpoint({
197
206
  method: 'POST',
198
207
  pathname: '/users',
199
- body: { schema: CreateUserSchema },
200
- data: { schema: UserSchema },
208
+ body: { schema: CreateUserSchema, serialize: 'json' },
209
+ data: { schema: UserSchema, parse: 'json' },
201
210
  }),
202
211
  },
203
212
  },
@@ -17,7 +17,7 @@ const endpoint = new Endpoint({
17
17
  })
18
18
 
19
19
  const url = await endpoint.generate_url({
20
- origin: 'https://api.example.com',
20
+ base_url: 'https://api.example.com',
21
21
  params: { id: '123' },
22
22
  })
23
23
  // https://api.example.com/users/123
@@ -41,7 +41,7 @@ const endpoint = new Endpoint({
41
41
 
42
42
  ### Custom Serialization
43
43
 
44
- Provide a `serialization` function to transform validated params:
44
+ Provide a `serialize` function to transform validated params:
45
45
 
46
46
  ```typescript
47
47
  const endpoint = new Endpoint({
@@ -49,12 +49,12 @@ const endpoint = new Endpoint({
49
49
  pathname: '/users/(:id)',
50
50
  params: {
51
51
  schema: z.object({ id: z.number() }),
52
- serialization: (data) => ({ id: `user-${data.id}` }),
52
+ serialize: (data) => ({ id: `user-${data.id}` }),
53
53
  },
54
54
  })
55
55
 
56
56
  const url = await endpoint.generate_url({
57
- origin: 'https://api.example.com',
57
+ base_url: 'https://api.example.com',
58
58
  params: { id: 123 },
59
59
  })
60
60
  // https://api.example.com/users/user-123
@@ -79,7 +79,7 @@ const endpoint = new Endpoint({
79
79
  })
80
80
 
81
81
  const url = await endpoint.generate_url({
82
- origin: 'https://api.example.com',
82
+ base_url: 'https://api.example.com',
83
83
  query: { page: 1, search: 'john' },
84
84
  })
85
85
  // https://api.example.com/users?page=1&search=john
@@ -95,7 +95,7 @@ const endpoint = new Endpoint({
95
95
  schema: z.object({
96
96
  tags: z.array(z.string()),
97
97
  }),
98
- serialization: (data) => {
98
+ serialize: (data) => {
99
99
  const params = new URLSearchParams()
100
100
  params.set('tags', data.tags.join(','))
101
101
  return params
@@ -104,7 +104,7 @@ const endpoint = new Endpoint({
104
104
  })
105
105
 
106
106
  const url = await endpoint.generate_url({
107
- origin: 'https://api.example.com',
107
+ base_url: 'https://api.example.com',
108
108
  query: { tags: ['admin', 'active'] },
109
109
  })
110
110
  // https://api.example.com/users?tags=admin,active
@@ -114,9 +114,9 @@ const url = await endpoint.generate_url({
114
114
 
115
115
  Request bodies are serialized for POST, PUT, PATCH, and DELETE methods.
116
116
 
117
- ### JSON (Default)
117
+ ### JSON
118
118
 
119
- For JSON-compatible schemas, JSON serialization is automatic:
119
+ Use `serialize: 'json'` to serialize the body as JSON:
120
120
 
121
121
  ```typescript
122
122
  const endpoint = new Endpoint({
@@ -127,6 +127,7 @@ const endpoint = new Endpoint({
127
127
  name: z.string(),
128
128
  email: z.string().email(),
129
129
  }),
130
+ serialize: 'json',
130
131
  },
131
132
  })
132
133
 
@@ -150,7 +151,7 @@ const endpoint = new Endpoint({
150
151
  file: z.instanceof(File),
151
152
  name: z.string(),
152
153
  }),
153
- serialization: (data) => {
154
+ serialize: (data) => {
154
155
  const formData = new FormData()
155
156
  formData.append('file', data.file)
156
157
  formData.append('name', data.name)
@@ -171,7 +172,7 @@ const endpoint = new Endpoint({
171
172
  username: z.string(),
172
173
  password: z.string(),
173
174
  }),
174
- serialization: (data) => {
175
+ serialize: (data) => {
175
176
  const params = new URLSearchParams()
176
177
  params.set('username', data.username)
177
178
  params.set('password', data.password)
@@ -189,7 +190,7 @@ const endpoint = new Endpoint({
189
190
  pathname: '/echo',
190
191
  body: {
191
192
  schema: z.string(),
192
- serialization: (text) => ({
193
+ serialize: (text) => ({
193
194
  body: text,
194
195
  content_type: 'text/plain',
195
196
  }),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@afoures/http-client",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "A typesafe and robust HTTP client",
5
5
  "homepage": "https://github.com/afoures/http-client#readme",
6
6
  "bugs": {