@fuman/fetch 0.0.2 → 0.0.4

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.
@@ -0,0 +1,8 @@
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
+ }
6
+ type ParseOptions = NonNullable<Parameters<v.Type<any>['parse']>[1]>;
7
+ export declare function ffetchValitaAdapter(options?: ParseOptions): FfetchParser<ValitaTypeProvider>;
8
+ export {};
package/ffetch.cjs CHANGED
@@ -62,11 +62,12 @@ class FfetchResultImpl {
62
62
  return await this.#fetchAndValidate();
63
63
  } catch (err_) {
64
64
  const err = utils.unknownToError(err_);
65
- const errCopy = structuredClone(err_);
65
+ const origMessage = err.message;
66
+ const origStack = err.stack;
66
67
  const stack = this.#stack.split("\n").slice(2).join("\n");
67
68
  err.stack = `${err.name}: ${err.message}
68
69
  ${stack}`;
69
- err.cause = errCopy;
70
+ err.cause = { message: origMessage, stack: origStack };
70
71
  throw err;
71
72
  }
72
73
  }
@@ -163,6 +164,9 @@ function createFfetch(baseOptions = {}) {
163
164
  } else {
164
165
  init.body = options.body;
165
166
  init.method = options.method ?? baseOptions.method ?? "GET";
167
+ if (init.body instanceof ReadableStream) {
168
+ init.duplex ??= "half";
169
+ }
166
170
  }
167
171
  init.headers = headers;
168
172
  return new FfetchResultInner(fetcher, url, init, headers, options, stack);
package/ffetch.js CHANGED
@@ -60,11 +60,12 @@ class FfetchResultImpl {
60
60
  return await this.#fetchAndValidate();
61
61
  } catch (err_) {
62
62
  const err = unknownToError(err_);
63
- const errCopy = structuredClone(err_);
63
+ const origMessage = err.message;
64
+ const origStack = err.stack;
64
65
  const stack = this.#stack.split("\n").slice(2).join("\n");
65
66
  err.stack = `${err.name}: ${err.message}
66
67
  ${stack}`;
67
- err.cause = errCopy;
68
+ err.cause = { message: origMessage, stack: origStack };
68
69
  throw err;
69
70
  }
70
71
  }
@@ -161,6 +162,9 @@ function createFfetch(baseOptions = {}) {
161
162
  } else {
162
163
  init.body = options.body;
163
164
  init.method = options.method ?? baseOptions.method ?? "GET";
165
+ if (init.body instanceof ReadableStream) {
166
+ init.duplex ??= "half";
167
+ }
164
168
  }
165
169
  init.headers = headers;
166
170
  return new FfetchResultInner(fetcher, url, init, headers, options, stack);
package/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "@fuman/fetch",
3
3
  "type": "module",
4
- "version": "0.0.2",
4
+ "version": "0.0.4",
5
5
  "description": "tiny wrapper over fetch",
6
6
  "license": "MIT",
7
7
  "dependencies": {
8
- "@fuman/utils": "^0.0.1"
8
+ "@fuman/utils": "^0.0.4"
9
9
  },
10
10
  "peerDependencies": {
11
+ "@badrap/valita": ">=0.4.0",
11
12
  "tough-cookie": "^5.0.0 || ^4.0.0",
12
13
  "valibot": "^0.42.0",
13
14
  "yup": "^1.0.0",
@@ -54,6 +55,16 @@
54
55
  "default": "./yup.cjs"
55
56
  }
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
+ },
57
68
  "./tough": {
58
69
  "import": {
59
70
  "types": "./tough.d.ts",
@@ -67,6 +78,9 @@
67
78
  },
68
79
  "sideEffects": false,
69
80
  "peerDependenciesMeta": {
81
+ "@badrap/valita": {
82
+ "optional": true
83
+ },
70
84
  "tough-cookie": {
71
85
  "optional": true
72
86
  },
package/valita.cjs ADDED
@@ -0,0 +1,12 @@
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
+ };
11
+ }
12
+ exports.ffetchValitaAdapter = ffetchValitaAdapter;
package/valita.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./addons/parse/adapters/valita.js"
package/valita.js ADDED
@@ -0,0 +1,12 @@
1
+ function ffetchValitaAdapter(options) {
2
+ const _provider = null;
3
+ return {
4
+ _provider,
5
+ parse(schema, value) {
6
+ return schema.parse(value, options);
7
+ }
8
+ };
9
+ }
10
+ export {
11
+ ffetchValitaAdapter
12
+ };