@fuman/fetch 0.1.0 → 0.1.2

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
@@ -1,5 +1,7 @@
1
1
  # `@fuman/fetch`
2
2
 
3
+ ![bundlejs](https://deno.bundlejs.com/badge?q=@fuman/fetch&treeshake=[{+ffetchBase+}])
4
+
3
5
  no-bullshit minimal wrapper around `window.fetch` that aims to improve dx
4
6
  by adding commonly used features, while having low runtime overhead,
5
7
  small bundle size and staying close to the web standards.
@@ -10,4 +12,4 @@ small bundle size and staying close to the web standards.
10
12
  - base url, base headers, etc.
11
13
  - retries, timeouts, validation built in
12
14
  - basic middlewares
13
- - **type-safe** compatibility with popular parsing libraries (yup, zod, valibot, etc.)
15
+ - **type-safe** compatibility with popular parsing libraries thanks to [standard-schema](https://github.com/standard-schema/standard-schema)
package/addons/bundle.cjs CHANGED
@@ -9,6 +9,7 @@ const retry = require("./retry.cjs");
9
9
  const timeout = require("./timeout.cjs");
10
10
  exports.form = form.form;
11
11
  exports.multipart = multipart.multipart;
12
+ exports.SchemaValidationError = addon.SchemaValidationError;
12
13
  exports.parser = addon.parser;
13
14
  exports.query = query.query;
14
15
  exports.rateLimitHandler = rateLimit.rateLimitHandler;
package/addons/bundle.js CHANGED
@@ -1,12 +1,13 @@
1
1
  import { form } from "./form.js";
2
2
  import { multipart } from "./multipart.js";
3
- import { parser } from "./parse/addon.js";
3
+ import { SchemaValidationError, parser } from "./parse/addon.js";
4
4
  import { query } from "./query.js";
5
5
  import { rateLimitHandler } from "./rate-limit.js";
6
6
  import { RetriesExceededError, retry } from "./retry.js";
7
7
  import { TimeoutError, timeout } from "./timeout.js";
8
8
  export {
9
9
  RetriesExceededError,
10
+ SchemaValidationError,
10
11
  TimeoutError,
11
12
  form,
12
13
  multipart,
@@ -1,15 +1,41 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- function parser(parser2) {
3
+ class SchemaValidationError extends Error {
4
+ constructor(issues) {
5
+ let message = "Schema validation failed";
6
+ for (const issue of issues) {
7
+ message += `: ${issue.message}`;
8
+ if (issue.path) {
9
+ const pathStr = [];
10
+ for (const path of issue.path) {
11
+ if (typeof path === "object") {
12
+ pathStr.push(String(path.key));
13
+ } else {
14
+ pathStr.push(String(path));
15
+ }
16
+ }
17
+ message += ` at .${pathStr.join(".")}`;
18
+ }
19
+ }
20
+ super(message);
21
+ this.issues = issues;
22
+ }
23
+ }
24
+ function parser() {
4
25
  return {
5
26
  response: {
6
27
  async parsedJson(schema) {
7
- return parser2.parse(schema, await this.json());
28
+ const res = await schema["~standard"].validate(await this.json());
29
+ if (res.issues) {
30
+ throw new SchemaValidationError(res.issues);
31
+ }
32
+ return res.value;
8
33
  },
9
34
  async safelyParsedJson(schema) {
10
- return parser2.safeParse(schema, await this.json());
35
+ return schema["~standard"].validate(await this.json());
11
36
  }
12
37
  }
13
38
  };
14
39
  }
40
+ exports.SchemaValidationError = SchemaValidationError;
15
41
  exports.parser = parser;
@@ -1,7 +1,12 @@
1
+ import { StandardSchemaV1 } from '@standard-schema/spec';
1
2
  import { FfetchAddon } from '../types.js';
2
- import { CallSafeTypeProvider, CallTypeProvider, FfetchParser, FfetchTypeProvider } from './_types.js';
3
- export { FfetchParser, FfetchTypeProvider };
4
- export declare function parser<TypeProvider extends FfetchTypeProvider>(parser: FfetchParser<TypeProvider>): FfetchAddon<object, {
5
- parsedJson: <Schema>(schema: Schema) => Promise<CallTypeProvider<TypeProvider, Schema>>;
6
- safelyParsedJson: <Schema>(schema: Schema) => Promise<CallSafeTypeProvider<TypeProvider, Schema>>;
7
- }>;
3
+ /** Schema validation failed when calling `parsedJson` */
4
+ export declare class SchemaValidationError extends Error {
5
+ readonly issues: ReadonlyArray<StandardSchemaV1.Issue>;
6
+ constructor(issues: ReadonlyArray<StandardSchemaV1.Issue>);
7
+ }
8
+ export interface ParserAddon {
9
+ parsedJson: <T extends StandardSchemaV1>(schema: T) => Promise<StandardSchemaV1.InferOutput<T>>;
10
+ safelyParsedJson: <T extends StandardSchemaV1>(schema: T) => Promise<StandardSchemaV1.Result<StandardSchemaV1.InferOutput<T>>>;
11
+ }
12
+ export declare function parser(): FfetchAddon<object, ParserAddon>;
@@ -1,7 +1,12 @@
1
+ import { StandardSchemaV1 } from '@standard-schema/spec';
1
2
  import { FfetchAddon } from '../types.js';
2
- import { CallSafeTypeProvider, CallTypeProvider, FfetchParser, FfetchTypeProvider } from './_types.js';
3
- export { FfetchParser, FfetchTypeProvider };
4
- export declare function parser<TypeProvider extends FfetchTypeProvider>(parser: FfetchParser<TypeProvider>): FfetchAddon<object, {
5
- parsedJson: <Schema>(schema: Schema) => Promise<CallTypeProvider<TypeProvider, Schema>>;
6
- safelyParsedJson: <Schema>(schema: Schema) => Promise<CallSafeTypeProvider<TypeProvider, Schema>>;
7
- }>;
3
+ /** Schema validation failed when calling `parsedJson` */
4
+ export declare class SchemaValidationError extends Error {
5
+ readonly issues: ReadonlyArray<StandardSchemaV1.Issue>;
6
+ constructor(issues: ReadonlyArray<StandardSchemaV1.Issue>);
7
+ }
8
+ export interface ParserAddon {
9
+ parsedJson: <T extends StandardSchemaV1>(schema: T) => Promise<StandardSchemaV1.InferOutput<T>>;
10
+ safelyParsedJson: <T extends StandardSchemaV1>(schema: T) => Promise<StandardSchemaV1.Result<StandardSchemaV1.InferOutput<T>>>;
11
+ }
12
+ export declare function parser(): FfetchAddon<object, ParserAddon>;
@@ -1,15 +1,41 @@
1
- function parser(parser2) {
1
+ class SchemaValidationError extends Error {
2
+ constructor(issues) {
3
+ let message = "Schema validation failed";
4
+ for (const issue of issues) {
5
+ message += `: ${issue.message}`;
6
+ if (issue.path) {
7
+ const pathStr = [];
8
+ for (const path of issue.path) {
9
+ if (typeof path === "object") {
10
+ pathStr.push(String(path.key));
11
+ } else {
12
+ pathStr.push(String(path));
13
+ }
14
+ }
15
+ message += ` at .${pathStr.join(".")}`;
16
+ }
17
+ }
18
+ super(message);
19
+ this.issues = issues;
20
+ }
21
+ }
22
+ function parser() {
2
23
  return {
3
24
  response: {
4
25
  async parsedJson(schema) {
5
- return parser2.parse(schema, await this.json());
26
+ const res = await schema["~standard"].validate(await this.json());
27
+ if (res.issues) {
28
+ throw new SchemaValidationError(res.issues);
29
+ }
30
+ return res.value;
6
31
  },
7
32
  async safelyParsedJson(schema) {
8
- return parser2.safeParse(schema, await this.json());
33
+ return schema["~standard"].validate(await this.json());
9
34
  }
10
35
  }
11
36
  };
12
37
  }
13
38
  export {
39
+ SchemaValidationError,
14
40
  parser
15
41
  };
@@ -1,5 +1,5 @@
1
- import { FfetchAddon } from './types.js';
2
1
  import { MaybePromise } from '@fuman/utils';
2
+ import { FfetchAddon } from './types.js';
3
3
  export interface RateLimitAddon {
4
4
  rateLimit?: {
5
5
  /**
@@ -1,5 +1,5 @@
1
- import { FfetchAddon } from './types.js';
2
1
  import { MaybePromise } from '@fuman/utils';
2
+ import { FfetchAddon } from './types.js';
3
3
  export interface RateLimitAddon {
4
4
  rateLimit?: {
5
5
  /**
package/default.cjs CHANGED
@@ -6,12 +6,14 @@ const query = require("./addons/query.cjs");
6
6
  const form = require("./addons/form.cjs");
7
7
  const multipart = require("./addons/multipart.cjs");
8
8
  const retry = require("./addons/retry.cjs");
9
+ const addon = require("./addons/parse/addon.cjs");
9
10
  const ffetchDefaultAddons = [
10
11
  /* @__PURE__ */ timeout.timeout(),
11
12
  /* @__PURE__ */ query.query(),
12
13
  /* @__PURE__ */ form.form(),
13
14
  /* @__PURE__ */ multipart.multipart(),
14
- /* @__PURE__ */ retry.retry()
15
+ /* @__PURE__ */ retry.retry(),
16
+ /* @__PURE__ */ addon.parser()
15
17
  ];
16
18
  const ffetchBase = /* @__PURE__ */ ffetch.createFfetch({
17
19
  addons: ffetchDefaultAddons
package/default.d.cts CHANGED
@@ -5,7 +5,8 @@ export declare const ffetchDefaultAddons: [
5
5
  FfetchAddon<ffetchAddons.QueryAddon, object>,
6
6
  FfetchAddon<ffetchAddons.FormAddon, object>,
7
7
  FfetchAddon<ffetchAddons.MultipartAddon, object>,
8
- FfetchAddon<ffetchAddons.RetryAddon, object>
8
+ FfetchAddon<ffetchAddons.RetryAddon, object>,
9
+ FfetchAddon<object, ffetchAddons.ParserAddon>
9
10
  ];
10
11
  /**
11
12
  * the default ffetch instance with a reasonable default set of addons
@@ -28,4 +29,4 @@ export declare const ffetchDefaultAddons: [
28
29
  * })
29
30
  * ```
30
31
  */
31
- export declare const ffetchBase: Ffetch<ffetchAddons.TimeoutAddon & ffetchAddons.QueryAddon & ffetchAddons.FormAddon & ffetchAddons.MultipartAddon & ffetchAddons.RetryAddon, object>;
32
+ export declare const ffetchBase: Ffetch<ffetchAddons.TimeoutAddon & ffetchAddons.QueryAddon & ffetchAddons.FormAddon & ffetchAddons.MultipartAddon & ffetchAddons.RetryAddon, ffetchAddons.ParserAddon>;
package/default.d.ts CHANGED
@@ -5,7 +5,8 @@ export declare const ffetchDefaultAddons: [
5
5
  FfetchAddon<ffetchAddons.QueryAddon, object>,
6
6
  FfetchAddon<ffetchAddons.FormAddon, object>,
7
7
  FfetchAddon<ffetchAddons.MultipartAddon, object>,
8
- FfetchAddon<ffetchAddons.RetryAddon, object>
8
+ FfetchAddon<ffetchAddons.RetryAddon, object>,
9
+ FfetchAddon<object, ffetchAddons.ParserAddon>
9
10
  ];
10
11
  /**
11
12
  * the default ffetch instance with a reasonable default set of addons
@@ -28,4 +29,4 @@ export declare const ffetchDefaultAddons: [
28
29
  * })
29
30
  * ```
30
31
  */
31
- export declare const ffetchBase: Ffetch<ffetchAddons.TimeoutAddon & ffetchAddons.QueryAddon & ffetchAddons.FormAddon & ffetchAddons.MultipartAddon & ffetchAddons.RetryAddon, object>;
32
+ export declare const ffetchBase: Ffetch<ffetchAddons.TimeoutAddon & ffetchAddons.QueryAddon & ffetchAddons.FormAddon & ffetchAddons.MultipartAddon & ffetchAddons.RetryAddon, ffetchAddons.ParserAddon>;
package/default.js CHANGED
@@ -4,12 +4,14 @@ import { query } from "./addons/query.js";
4
4
  import { form } from "./addons/form.js";
5
5
  import { multipart } from "./addons/multipart.js";
6
6
  import { retry } from "./addons/retry.js";
7
+ import { parser } from "./addons/parse/addon.js";
7
8
  const ffetchDefaultAddons = [
8
9
  /* @__PURE__ */ timeout(),
9
10
  /* @__PURE__ */ query(),
10
11
  /* @__PURE__ */ form(),
11
12
  /* @__PURE__ */ multipart(),
12
- /* @__PURE__ */ retry()
13
+ /* @__PURE__ */ retry(),
14
+ /* @__PURE__ */ parser()
13
15
  ];
14
16
  const ffetchBase = /* @__PURE__ */ createFfetch({
15
17
  addons: ffetchDefaultAddons
package/ffetch.cjs CHANGED
@@ -66,6 +66,9 @@ class FfetchResultImpl {
66
66
  } catch {
67
67
  }
68
68
  }
69
+ if (this._options.mapError != null) {
70
+ throw this._options.mapError(err);
71
+ }
69
72
  throw err;
70
73
  }
71
74
  return res;
@@ -195,6 +198,8 @@ function createFfetch(baseOptions = {}) {
195
198
  }
196
199
  init.headers = headers;
197
200
  options.validateResponse ??= baseOptions.validateResponse;
201
+ options.readBodyOnError ??= baseOptions.readBodyOnError;
202
+ options.mapError ??= baseOptions.mapError;
198
203
  return new FfetchResultInner(fetcher, url, init, headers, options, stack);
199
204
  };
200
205
  const fn = fn_;
package/ffetch.d.cts CHANGED
@@ -23,6 +23,30 @@ export interface FfetchOptions {
23
23
  * @default true
24
24
  */
25
25
  readBodyOnError?: boolean;
26
+ /**
27
+ * optional function to map the error
28
+ *
29
+ * useful when your API has an app-level error format, and you want to throw a custom error
30
+ *
31
+ * @param err original {@link HttpError} that would have been thrown
32
+ * @returns the error to be thrown instead
33
+ * @example
34
+ * ```ts
35
+ * const api = createFfetch({
36
+ * ...,
37
+ * mapError: (err) => {
38
+ * if (err.response.headers.get('Content-Type') !== 'application/json') return err
39
+ * try {
40
+ * // note: .bodyText is only available if `readBodyOnError` is true
41
+ * const json = JSON.parse(err.bodyText)
42
+ * throw new ApiError(json.errorCode, json.message)
43
+ * } catch {
44
+ * return err
45
+ * }
46
+ * }
47
+ * })
48
+ */
49
+ mapError?: (err: HttpError) => Error;
26
50
  /**
27
51
  * base url to be prepended to the url
28
52
  *
package/ffetch.d.ts CHANGED
@@ -23,6 +23,30 @@ export interface FfetchOptions {
23
23
  * @default true
24
24
  */
25
25
  readBodyOnError?: boolean;
26
+ /**
27
+ * optional function to map the error
28
+ *
29
+ * useful when your API has an app-level error format, and you want to throw a custom error
30
+ *
31
+ * @param err original {@link HttpError} that would have been thrown
32
+ * @returns the error to be thrown instead
33
+ * @example
34
+ * ```ts
35
+ * const api = createFfetch({
36
+ * ...,
37
+ * mapError: (err) => {
38
+ * if (err.response.headers.get('Content-Type') !== 'application/json') return err
39
+ * try {
40
+ * // note: .bodyText is only available if `readBodyOnError` is true
41
+ * const json = JSON.parse(err.bodyText)
42
+ * throw new ApiError(json.errorCode, json.message)
43
+ * } catch {
44
+ * return err
45
+ * }
46
+ * }
47
+ * })
48
+ */
49
+ mapError?: (err: HttpError) => Error;
26
50
  /**
27
51
  * base url to be prepended to the url
28
52
  *
package/ffetch.js CHANGED
@@ -64,6 +64,9 @@ class FfetchResultImpl {
64
64
  } catch {
65
65
  }
66
66
  }
67
+ if (this._options.mapError != null) {
68
+ throw this._options.mapError(err);
69
+ }
67
70
  throw err;
68
71
  }
69
72
  return res;
@@ -193,6 +196,8 @@ function createFfetch(baseOptions = {}) {
193
196
  }
194
197
  init.headers = headers;
195
198
  options.validateResponse ??= baseOptions.validateResponse;
199
+ options.readBodyOnError ??= baseOptions.readBodyOnError;
200
+ options.mapError ??= baseOptions.mapError;
196
201
  return new FfetchResultInner(fetcher, url, init, headers, options, stack);
197
202
  };
198
203
  const fn = fn_;
package/package.json CHANGED
@@ -1,18 +1,15 @@
1
1
  {
2
2
  "name": "@fuman/fetch",
3
3
  "type": "module",
4
- "version": "0.1.0",
4
+ "version": "0.1.2",
5
5
  "description": "tiny wrapper over fetch",
6
6
  "license": "MIT",
7
7
  "dependencies": {
8
- "@fuman/utils": "^0.0.14"
8
+ "@fuman/utils": "^0.0.16",
9
+ "@standard-schema/spec": "^1.0.0"
9
10
  },
10
11
  "peerDependencies": {
11
- "@badrap/valita": ">=0.4.0",
12
- "tough-cookie": "^5.0.0 || ^4.0.0",
13
- "valibot": "^0.42.0",
14
- "yup": "^1.0.0",
15
- "zod": "^3.0.0"
12
+ "tough-cookie": "^6.0.0 || ^5.0.0 || ^4.0.0"
16
13
  },
17
14
  "exports": {
18
15
  ".": {
@@ -25,46 +22,6 @@
25
22
  "default": "./index.cjs"
26
23
  }
27
24
  },
28
- "./zod": {
29
- "import": {
30
- "types": "./zod.d.ts",
31
- "default": "./zod.js"
32
- },
33
- "require": {
34
- "types": "./zod.d.cts",
35
- "default": "./zod.cjs"
36
- }
37
- },
38
- "./valibot": {
39
- "import": {
40
- "types": "./valibot.d.ts",
41
- "default": "./valibot.js"
42
- },
43
- "require": {
44
- "types": "./valibot.d.cts",
45
- "default": "./valibot.cjs"
46
- }
47
- },
48
- "./yup": {
49
- "import": {
50
- "types": "./yup.d.ts",
51
- "default": "./yup.js"
52
- },
53
- "require": {
54
- "types": "./yup.d.cts",
55
- "default": "./yup.cjs"
56
- }
57
- },
58
- "./valita": {
59
- "import": {
60
- "types": "./valita.d.ts",
61
- "default": "./valita.js"
62
- },
63
- "require": {
64
- "types": "./valita.d.cts",
65
- "default": "./valita.cjs"
66
- }
67
- },
68
25
  "./tough": {
69
26
  "import": {
70
27
  "types": "./tough.d.ts",
@@ -78,20 +35,8 @@
78
35
  },
79
36
  "sideEffects": false,
80
37
  "peerDependenciesMeta": {
81
- "@badrap/valita": {
82
- "optional": true
83
- },
84
38
  "tough-cookie": {
85
39
  "optional": true
86
- },
87
- "valibot": {
88
- "optional": true
89
- },
90
- "yup": {
91
- "optional": true
92
- },
93
- "zod": {
94
- "optional": true
95
40
  }
96
41
  },
97
42
  "author": "",
@@ -1,16 +0,0 @@
1
- export interface FfetchTypeProvider {
2
- readonly schema: unknown;
3
- readonly parsed: unknown;
4
- readonly safeParsed: unknown;
5
- }
6
- export interface FfetchParser<TypeProvider extends FfetchTypeProvider> {
7
- readonly _provider: TypeProvider;
8
- parse: (schema: unknown, value: unknown) => unknown | Promise<unknown>;
9
- safeParse: (schema: unknown, value: unknown) => unknown | Promise<unknown>;
10
- }
11
- export type CallTypeProvider<TypeProvider extends FfetchTypeProvider, Schema> = (TypeProvider & {
12
- schema: Schema;
13
- })['parsed'];
14
- export type CallSafeTypeProvider<TypeProvider extends FfetchTypeProvider, Schema> = (TypeProvider & {
15
- schema: Schema;
16
- })['safeParsed'];
@@ -1,16 +0,0 @@
1
- export interface FfetchTypeProvider {
2
- readonly schema: unknown;
3
- readonly parsed: unknown;
4
- readonly safeParsed: unknown;
5
- }
6
- export interface FfetchParser<TypeProvider extends FfetchTypeProvider> {
7
- readonly _provider: TypeProvider;
8
- parse: (schema: unknown, value: unknown) => unknown | Promise<unknown>;
9
- safeParse: (schema: unknown, value: unknown) => unknown | Promise<unknown>;
10
- }
11
- export type CallTypeProvider<TypeProvider extends FfetchTypeProvider, Schema> = (TypeProvider & {
12
- schema: Schema;
13
- })['parsed'];
14
- export type CallSafeTypeProvider<TypeProvider extends FfetchTypeProvider, Schema> = (TypeProvider & {
15
- schema: Schema;
16
- })['safeParsed'];
@@ -1,9 +0,0 @@
1
- import { BaseIssue, BaseSchema, BaseSchemaAsync, Config, InferOutput, SafeParseResult } from 'valibot';
2
- import { FfetchParser, FfetchTypeProvider } from '../_types.js';
3
- export interface ValibotTypeProvider extends FfetchTypeProvider {
4
- readonly parsed: this['schema'] extends (BaseSchema<unknown, unknown, BaseIssue<unknown>> | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>) ? InferOutput<this['schema']> : never;
5
- readonly safeParsed: this['schema'] extends (BaseSchema<unknown, unknown, BaseIssue<unknown>> | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>) ? SafeParseResult<this['schema']> : never;
6
- }
7
- export declare function ffetchValibotAdapter({ async, ...rest }?: Partial<Config<BaseIssue<unknown>>> & {
8
- async?: boolean;
9
- }): FfetchParser<ValibotTypeProvider>;
@@ -1,9 +0,0 @@
1
- import { BaseIssue, BaseSchema, BaseSchemaAsync, Config, InferOutput, SafeParseResult } from 'valibot';
2
- import { FfetchParser, FfetchTypeProvider } from '../_types.js';
3
- export interface ValibotTypeProvider extends FfetchTypeProvider {
4
- readonly parsed: this['schema'] extends (BaseSchema<unknown, unknown, BaseIssue<unknown>> | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>) ? InferOutput<this['schema']> : never;
5
- readonly safeParsed: this['schema'] extends (BaseSchema<unknown, unknown, BaseIssue<unknown>> | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>) ? SafeParseResult<this['schema']> : never;
6
- }
7
- export declare function ffetchValibotAdapter({ async, ...rest }?: Partial<Config<BaseIssue<unknown>>> & {
8
- async?: boolean;
9
- }): FfetchParser<ValibotTypeProvider>;
@@ -1,9 +0,0 @@
1
- import { FfetchParser, FfetchTypeProvider } from '../_types.js';
2
- import type * as v from '@badrap/valita';
3
- export interface ValitaTypeProvider extends FfetchTypeProvider {
4
- readonly parsed: this['schema'] extends v.Type<any> ? v.Infer<this['schema']> : never;
5
- readonly safeParsed: this['schema'] extends v.Type<any> ? v.ValitaResult<v.Infer<this['schema']>> : never;
6
- }
7
- type ParseOptions = NonNullable<Parameters<v.Type<any>['parse']>[1]>;
8
- export declare function ffetchValitaAdapter(options?: ParseOptions): FfetchParser<ValitaTypeProvider>;
9
- export {};
@@ -1,9 +0,0 @@
1
- import { FfetchParser, FfetchTypeProvider } from '../_types.js';
2
- import type * as v from '@badrap/valita';
3
- export interface ValitaTypeProvider extends FfetchTypeProvider {
4
- readonly parsed: this['schema'] extends v.Type<any> ? v.Infer<this['schema']> : never;
5
- readonly safeParsed: this['schema'] extends v.Type<any> ? v.ValitaResult<v.Infer<this['schema']>> : never;
6
- }
7
- type ParseOptions = NonNullable<Parameters<v.Type<any>['parse']>[1]>;
8
- export declare function ffetchValitaAdapter(options?: ParseOptions): FfetchParser<ValitaTypeProvider>;
9
- export {};
@@ -1,22 +0,0 @@
1
- import { CastOptions, InferType, ISchema, ValidateOptions, ValidationError } from 'yup';
2
- import { FfetchParser, FfetchTypeProvider } from '../_types.js';
3
- type YupSafeParseResult<R> = {
4
- success: true;
5
- data: R;
6
- } | {
7
- success: false;
8
- error: ValidationError;
9
- };
10
- export interface YupTypeProvider extends FfetchTypeProvider {
11
- readonly parsed: this['schema'] extends ISchema<any, any> ? InferType<this['schema']> : never;
12
- readonly safeParsed: this['schema'] extends ISchema<any, any> ? YupSafeParseResult<InferType<this['schema']>> : never;
13
- }
14
- export type FfetchYupAdapterOptions = {
15
- action: 'cast';
16
- options?: CastOptions;
17
- } | {
18
- action: 'validate';
19
- options?: ValidateOptions;
20
- };
21
- export declare function ffetchYupAdapter({ action, options, }?: FfetchYupAdapterOptions): FfetchParser<YupTypeProvider>;
22
- export {};
@@ -1,22 +0,0 @@
1
- import { CastOptions, InferType, ISchema, ValidateOptions, ValidationError } from 'yup';
2
- import { FfetchParser, FfetchTypeProvider } from '../_types.js';
3
- type YupSafeParseResult<R> = {
4
- success: true;
5
- data: R;
6
- } | {
7
- success: false;
8
- error: ValidationError;
9
- };
10
- export interface YupTypeProvider extends FfetchTypeProvider {
11
- readonly parsed: this['schema'] extends ISchema<any, any> ? InferType<this['schema']> : never;
12
- readonly safeParsed: this['schema'] extends ISchema<any, any> ? YupSafeParseResult<InferType<this['schema']>> : never;
13
- }
14
- export type FfetchYupAdapterOptions = {
15
- action: 'cast';
16
- options?: CastOptions;
17
- } | {
18
- action: 'validate';
19
- options?: ValidateOptions;
20
- };
21
- export declare function ffetchYupAdapter({ action, options, }?: FfetchYupAdapterOptions): FfetchParser<YupTypeProvider>;
22
- export {};
@@ -1,7 +0,0 @@
1
- import { ParseParams, SafeParseReturnType, z } from 'zod';
2
- import { FfetchParser, FfetchTypeProvider } from '../_types.js';
3
- export interface ZodTypeProvider extends FfetchTypeProvider {
4
- readonly parsed: this['schema'] extends z.ZodTypeAny ? z.infer<this['schema']> : never;
5
- readonly safeParsed: this['schema'] extends z.ZodTypeAny ? SafeParseReturnType<this['schema'], z.infer<this['schema']>> : never;
6
- }
7
- export declare function ffetchZodAdapter({ async, ...rest }?: Partial<ParseParams>): FfetchParser<ZodTypeProvider>;
@@ -1,7 +0,0 @@
1
- import { ParseParams, SafeParseReturnType, z } from 'zod';
2
- import { FfetchParser, FfetchTypeProvider } from '../_types.js';
3
- export interface ZodTypeProvider extends FfetchTypeProvider {
4
- readonly parsed: this['schema'] extends z.ZodTypeAny ? z.infer<this['schema']> : never;
5
- readonly safeParsed: this['schema'] extends z.ZodTypeAny ? SafeParseReturnType<this['schema'], z.infer<this['schema']>> : never;
6
- }
7
- export declare function ffetchZodAdapter({ async, ...rest }?: Partial<ParseParams>): FfetchParser<ZodTypeProvider>;
package/valibot.cjs DELETED
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const valibot = require("valibot");
4
- function ffetchValibotAdapter({ async, ...rest } = {}) {
5
- const _provider = null;
6
- const parser = async ? async function(schema, value) {
7
- return valibot.parseAsync(schema, value, rest);
8
- } : function(schema, value) {
9
- return valibot.parse(schema, value, rest);
10
- };
11
- const safeParser = async ? async function(schema, value) {
12
- return valibot.safeParseAsync(schema, value, rest);
13
- } : function(schema, value) {
14
- return valibot.safeParse(schema, value, rest);
15
- };
16
- return {
17
- _provider,
18
- parse: parser,
19
- safeParse: safeParser
20
- };
21
- }
22
- exports.ffetchValibotAdapter = ffetchValibotAdapter;
package/valibot.d.cts DELETED
@@ -1 +0,0 @@
1
- export * from "./addons/parse/adapters/valibot.js"
package/valibot.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from "./addons/parse/adapters/valibot.js"
package/valibot.js DELETED
@@ -1,22 +0,0 @@
1
- import { parseAsync, parse, safeParseAsync, safeParse } from "valibot";
2
- function ffetchValibotAdapter({ async, ...rest } = {}) {
3
- const _provider = null;
4
- const parser = async ? async function(schema, value) {
5
- return parseAsync(schema, value, rest);
6
- } : function(schema, value) {
7
- return parse(schema, value, rest);
8
- };
9
- const safeParser = async ? async function(schema, value) {
10
- return safeParseAsync(schema, value, rest);
11
- } : function(schema, value) {
12
- return safeParse(schema, value, rest);
13
- };
14
- return {
15
- _provider,
16
- parse: parser,
17
- safeParse: safeParser
18
- };
19
- }
20
- export {
21
- ffetchValibotAdapter
22
- };
package/valita.cjs DELETED
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- function ffetchValitaAdapter(options) {
4
- const _provider = null;
5
- return {
6
- _provider,
7
- parse(schema, value) {
8
- return schema.parse(value, options);
9
- },
10
- safeParse(schema, value) {
11
- return schema.try(value, options);
12
- }
13
- };
14
- }
15
- exports.ffetchValitaAdapter = ffetchValitaAdapter;
package/valita.d.cts DELETED
@@ -1 +0,0 @@
1
- export * from "./addons/parse/adapters/valita.js"
package/valita.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from "./addons/parse/adapters/valita.js"
package/valita.js DELETED
@@ -1,15 +0,0 @@
1
- function ffetchValitaAdapter(options) {
2
- const _provider = null;
3
- return {
4
- _provider,
5
- parse(schema, value) {
6
- return schema.parse(value, options);
7
- },
8
- safeParse(schema, value) {
9
- return schema.try(value, options);
10
- }
11
- };
12
- }
13
- export {
14
- ffetchValitaAdapter
15
- };
package/yup.cjs DELETED
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- function ffetchYupAdapter({
4
- action,
5
- options
6
- } = { action: "validate" }) {
7
- const _provider = null;
8
- const parse = action === "cast" ? function(schema, value) {
9
- return schema.cast(value, options);
10
- } : async function(schema, value) {
11
- return schema.validate(value, options);
12
- };
13
- const safeParse = action === "cast" ? function(schema, value) {
14
- try {
15
- const data = schema.cast(value, options);
16
- return { success: true, data };
17
- } catch (e) {
18
- return { success: false, error: e };
19
- }
20
- } : async function(schema, value) {
21
- try {
22
- const data = await schema.validate(value, options);
23
- return { success: true, data };
24
- } catch (e) {
25
- return { success: false, error: e };
26
- }
27
- };
28
- return {
29
- _provider,
30
- parse,
31
- safeParse
32
- };
33
- }
34
- exports.ffetchYupAdapter = ffetchYupAdapter;
package/yup.d.cts DELETED
@@ -1 +0,0 @@
1
- export * from "./addons/parse/adapters/yup.js"
package/yup.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from "./addons/parse/adapters/yup.js"
package/yup.js DELETED
@@ -1,34 +0,0 @@
1
- function ffetchYupAdapter({
2
- action,
3
- options
4
- } = { action: "validate" }) {
5
- const _provider = null;
6
- const parse = action === "cast" ? function(schema, value) {
7
- return schema.cast(value, options);
8
- } : async function(schema, value) {
9
- return schema.validate(value, options);
10
- };
11
- const safeParse = action === "cast" ? function(schema, value) {
12
- try {
13
- const data = schema.cast(value, options);
14
- return { success: true, data };
15
- } catch (e) {
16
- return { success: false, error: e };
17
- }
18
- } : async function(schema, value) {
19
- try {
20
- const data = await schema.validate(value, options);
21
- return { success: true, data };
22
- } catch (e) {
23
- return { success: false, error: e };
24
- }
25
- };
26
- return {
27
- _provider,
28
- parse,
29
- safeParse
30
- };
31
- }
32
- export {
33
- ffetchYupAdapter
34
- };
package/zod.cjs DELETED
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- function ffetchZodAdapter({ async, ...rest } = {}) {
4
- const _provider = null;
5
- const parse = async ? async function(schema, value) {
6
- return schema.parseAsync(value, rest);
7
- } : function(schema, value) {
8
- return schema.parse(value, rest);
9
- };
10
- const safeParse = async ? async function(schema, value) {
11
- return schema.safeParseAsync(value, rest);
12
- } : function(schema, value) {
13
- return schema.safeParse(value, rest);
14
- };
15
- return {
16
- _provider,
17
- parse,
18
- safeParse
19
- };
20
- }
21
- exports.ffetchZodAdapter = ffetchZodAdapter;
package/zod.d.cts DELETED
@@ -1 +0,0 @@
1
- export * from "./addons/parse/adapters/zod.js"
package/zod.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from "./addons/parse/adapters/zod.js"
package/zod.js DELETED
@@ -1,21 +0,0 @@
1
- function ffetchZodAdapter({ async, ...rest } = {}) {
2
- const _provider = null;
3
- const parse = async ? async function(schema, value) {
4
- return schema.parseAsync(value, rest);
5
- } : function(schema, value) {
6
- return schema.parse(value, rest);
7
- };
8
- const safeParse = async ? async function(schema, value) {
9
- return schema.safeParseAsync(value, rest);
10
- } : function(schema, value) {
11
- return schema.safeParse(value, rest);
12
- };
13
- return {
14
- _provider,
15
- parse,
16
- safeParse
17
- };
18
- }
19
- export {
20
- ffetchZodAdapter
21
- };