@whatwg-node/node-fetch 0.5.22 → 0.5.23-alpha-20240819112359-bab094145ec8e8cf5639d555d1fce2be57a377de

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.
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PonyfillReadableStream = void 0;
4
4
  const stream_1 = require("stream");
5
+ const utils_js_1 = require("./utils.js");
5
6
  function createController(desiredSize, readable) {
6
7
  let chunks = [];
7
8
  let _closed = false;
@@ -59,32 +60,7 @@ class PonyfillReadableStream {
59
60
  this.readable = underlyingSource;
60
61
  }
61
62
  else if (isReadableStream(underlyingSource)) {
62
- let reader;
63
- let started = false;
64
- this.readable = new stream_1.Readable({
65
- read() {
66
- if (!started) {
67
- started = true;
68
- reader = underlyingSource.getReader();
69
- }
70
- reader
71
- .read()
72
- .then(({ value, done }) => {
73
- if (done) {
74
- this.push(null);
75
- }
76
- else {
77
- this.push(value);
78
- }
79
- })
80
- .catch(err => {
81
- this.destroy(err);
82
- });
83
- },
84
- destroy(err, callback) {
85
- reader.cancel(err).then(() => callback(err), callback);
86
- },
87
- });
63
+ this.readable = stream_1.Readable.fromWeb(underlyingSource);
88
64
  }
89
65
  else {
90
66
  let started = false;
@@ -111,21 +87,31 @@ class PonyfillReadableStream {
111
87
  ongoing = false;
112
88
  });
113
89
  },
114
- async destroy(err, callback) {
115
- try {
116
- await underlyingSource?.cancel?.(err);
117
- callback(null);
118
- }
119
- catch (err) {
120
- callback(err);
90
+ destroy(err, callback) {
91
+ if (underlyingSource?.cancel) {
92
+ try {
93
+ const res$ = underlyingSource.cancel(err);
94
+ if (res$?.then) {
95
+ return res$.then(() => {
96
+ callback(null);
97
+ }, err => {
98
+ callback(err);
99
+ });
100
+ }
101
+ }
102
+ catch (err) {
103
+ callback(err);
104
+ return;
105
+ }
121
106
  }
107
+ callback(null);
122
108
  },
123
109
  });
124
110
  }
125
111
  }
126
112
  cancel(reason) {
127
113
  this.readable.destroy(reason);
128
- return Promise.resolve();
114
+ return new Promise(resolve => this.readable.once('end', resolve));
129
115
  }
130
116
  locked = false;
131
117
  getReader(_options) {
@@ -136,12 +122,28 @@ class PonyfillReadableStream {
136
122
  return iterator.next();
137
123
  },
138
124
  releaseLock: () => {
139
- iterator.return?.();
125
+ if (iterator.return) {
126
+ const retResult$ = iterator.return();
127
+ if (retResult$.then) {
128
+ retResult$.then(() => {
129
+ this.locked = false;
130
+ });
131
+ return;
132
+ }
133
+ }
140
134
  this.locked = false;
141
135
  },
142
- cancel: async (reason) => {
143
- await iterator.return?.(reason);
136
+ cancel: reason => {
137
+ if (iterator.return) {
138
+ const retResult$ = iterator.return(reason);
139
+ if (retResult$.then) {
140
+ return retResult$.then(() => {
141
+ this.locked = false;
142
+ });
143
+ }
144
+ }
144
145
  this.locked = false;
146
+ return (0, utils_js_1.fakePromise)(undefined);
145
147
  },
146
148
  closed: new Promise((resolve, reject) => {
147
149
  this.readable.once('end', resolve);
@@ -155,7 +157,7 @@ class PonyfillReadableStream {
155
157
  tee() {
156
158
  throw new Error('Not implemented');
157
159
  }
158
- async pipeTo(destination) {
160
+ pipeTo(destination) {
159
161
  if (isPonyfillWritableStream(destination)) {
160
162
  return new Promise((resolve, reject) => {
161
163
  this.readable.pipe(destination.writable);
@@ -165,15 +167,17 @@ class PonyfillReadableStream {
165
167
  }
166
168
  else {
167
169
  const writer = destination.getWriter();
168
- try {
169
- for await (const chunk of this) {
170
- await writer.write(chunk);
170
+ return Promise.resolve().then(async () => {
171
+ try {
172
+ for await (const chunk of this) {
173
+ await writer.write(chunk);
174
+ }
175
+ await writer.close();
171
176
  }
172
- await writer.close();
173
- }
174
- catch (err) {
175
- await writer.abort(err);
176
- }
177
+ catch (err) {
178
+ await writer.abort(err);
179
+ }
180
+ });
177
181
  }
178
182
  }
179
183
  pipeThrough({ writable, readable, }) {
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PonyfillWritableStream = void 0;
4
4
  const stream_1 = require("stream");
5
+ const utils_js_1 = require("./utils.js");
5
6
  class PonyfillWritableStream {
6
7
  writable;
7
8
  constructor(underlyingSink) {
@@ -117,6 +118,9 @@ class PonyfillWritableStream {
117
118
  // no-op
118
119
  },
119
120
  write(chunk) {
121
+ if (chunk == null) {
122
+ return (0, utils_js_1.fakePromise)(undefined);
123
+ }
120
124
  return new Promise((resolve, reject) => {
121
125
  writable.write(chunk, (err) => {
122
126
  if (err) {
@@ -129,41 +133,57 @@ class PonyfillWritableStream {
129
133
  });
130
134
  },
131
135
  close() {
136
+ if (!writable.errored && writable.closed) {
137
+ return (0, utils_js_1.fakePromise)(undefined);
138
+ }
132
139
  return new Promise((resolve, reject) => {
133
- writable.end((err) => {
134
- if (err) {
135
- reject(err);
136
- }
137
- else {
138
- resolve();
139
- }
140
- });
140
+ if (writable.errored) {
141
+ reject(writable.errored);
142
+ }
143
+ else {
144
+ writable.end((err) => {
145
+ if (err) {
146
+ reject(err);
147
+ }
148
+ else {
149
+ resolve();
150
+ }
151
+ });
152
+ }
141
153
  });
142
154
  },
143
155
  abort(reason) {
144
156
  return new Promise(resolve => {
145
157
  writable.destroy(reason);
146
- resolve();
158
+ writable.once('close', resolve);
147
159
  });
148
160
  },
149
161
  };
150
162
  }
151
163
  close() {
164
+ if (!this.writable.errored && this.writable.closed) {
165
+ return (0, utils_js_1.fakePromise)(undefined);
166
+ }
152
167
  return new Promise((resolve, reject) => {
153
- this.writable.end((err) => {
154
- if (err) {
155
- reject(err);
156
- }
157
- else {
158
- resolve();
159
- }
160
- });
168
+ if (this.writable.errored) {
169
+ reject(this.writable.errored);
170
+ }
171
+ else {
172
+ this.writable.end((err) => {
173
+ if (err) {
174
+ reject(err);
175
+ }
176
+ else {
177
+ resolve();
178
+ }
179
+ });
180
+ }
161
181
  });
162
182
  }
163
183
  abort(reason) {
164
184
  return new Promise(resolve => {
165
185
  this.writable.destroy(reason);
166
- resolve();
186
+ this.writable.once('close', resolve);
167
187
  });
168
188
  }
169
189
  locked = false;
@@ -1,4 +1,5 @@
1
1
  import { Readable } from 'stream';
2
+ import { fakePromise } from './utils.js';
2
3
  function createController(desiredSize, readable) {
3
4
  let chunks = [];
4
5
  let _closed = false;
@@ -56,32 +57,7 @@ export class PonyfillReadableStream {
56
57
  this.readable = underlyingSource;
57
58
  }
58
59
  else if (isReadableStream(underlyingSource)) {
59
- let reader;
60
- let started = false;
61
- this.readable = new Readable({
62
- read() {
63
- if (!started) {
64
- started = true;
65
- reader = underlyingSource.getReader();
66
- }
67
- reader
68
- .read()
69
- .then(({ value, done }) => {
70
- if (done) {
71
- this.push(null);
72
- }
73
- else {
74
- this.push(value);
75
- }
76
- })
77
- .catch(err => {
78
- this.destroy(err);
79
- });
80
- },
81
- destroy(err, callback) {
82
- reader.cancel(err).then(() => callback(err), callback);
83
- },
84
- });
60
+ this.readable = Readable.fromWeb(underlyingSource);
85
61
  }
86
62
  else {
87
63
  let started = false;
@@ -108,21 +84,31 @@ export class PonyfillReadableStream {
108
84
  ongoing = false;
109
85
  });
110
86
  },
111
- async destroy(err, callback) {
112
- try {
113
- await underlyingSource?.cancel?.(err);
114
- callback(null);
115
- }
116
- catch (err) {
117
- callback(err);
87
+ destroy(err, callback) {
88
+ if (underlyingSource?.cancel) {
89
+ try {
90
+ const res$ = underlyingSource.cancel(err);
91
+ if (res$?.then) {
92
+ return res$.then(() => {
93
+ callback(null);
94
+ }, err => {
95
+ callback(err);
96
+ });
97
+ }
98
+ }
99
+ catch (err) {
100
+ callback(err);
101
+ return;
102
+ }
118
103
  }
104
+ callback(null);
119
105
  },
120
106
  });
121
107
  }
122
108
  }
123
109
  cancel(reason) {
124
110
  this.readable.destroy(reason);
125
- return Promise.resolve();
111
+ return new Promise(resolve => this.readable.once('end', resolve));
126
112
  }
127
113
  locked = false;
128
114
  getReader(_options) {
@@ -133,12 +119,28 @@ export class PonyfillReadableStream {
133
119
  return iterator.next();
134
120
  },
135
121
  releaseLock: () => {
136
- iterator.return?.();
122
+ if (iterator.return) {
123
+ const retResult$ = iterator.return();
124
+ if (retResult$.then) {
125
+ retResult$.then(() => {
126
+ this.locked = false;
127
+ });
128
+ return;
129
+ }
130
+ }
137
131
  this.locked = false;
138
132
  },
139
- cancel: async (reason) => {
140
- await iterator.return?.(reason);
133
+ cancel: reason => {
134
+ if (iterator.return) {
135
+ const retResult$ = iterator.return(reason);
136
+ if (retResult$.then) {
137
+ return retResult$.then(() => {
138
+ this.locked = false;
139
+ });
140
+ }
141
+ }
141
142
  this.locked = false;
143
+ return fakePromise(undefined);
142
144
  },
143
145
  closed: new Promise((resolve, reject) => {
144
146
  this.readable.once('end', resolve);
@@ -152,7 +154,7 @@ export class PonyfillReadableStream {
152
154
  tee() {
153
155
  throw new Error('Not implemented');
154
156
  }
155
- async pipeTo(destination) {
157
+ pipeTo(destination) {
156
158
  if (isPonyfillWritableStream(destination)) {
157
159
  return new Promise((resolve, reject) => {
158
160
  this.readable.pipe(destination.writable);
@@ -162,15 +164,17 @@ export class PonyfillReadableStream {
162
164
  }
163
165
  else {
164
166
  const writer = destination.getWriter();
165
- try {
166
- for await (const chunk of this) {
167
- await writer.write(chunk);
167
+ return Promise.resolve().then(async () => {
168
+ try {
169
+ for await (const chunk of this) {
170
+ await writer.write(chunk);
171
+ }
172
+ await writer.close();
168
173
  }
169
- await writer.close();
170
- }
171
- catch (err) {
172
- await writer.abort(err);
173
- }
174
+ catch (err) {
175
+ await writer.abort(err);
176
+ }
177
+ });
174
178
  }
175
179
  }
176
180
  pipeThrough({ writable, readable, }) {
@@ -1,4 +1,5 @@
1
1
  import { Writable } from 'stream';
2
+ import { fakePromise } from './utils.js';
2
3
  export class PonyfillWritableStream {
3
4
  writable;
4
5
  constructor(underlyingSink) {
@@ -114,6 +115,9 @@ export class PonyfillWritableStream {
114
115
  // no-op
115
116
  },
116
117
  write(chunk) {
118
+ if (chunk == null) {
119
+ return fakePromise(undefined);
120
+ }
117
121
  return new Promise((resolve, reject) => {
118
122
  writable.write(chunk, (err) => {
119
123
  if (err) {
@@ -126,41 +130,57 @@ export class PonyfillWritableStream {
126
130
  });
127
131
  },
128
132
  close() {
133
+ if (!writable.errored && writable.closed) {
134
+ return fakePromise(undefined);
135
+ }
129
136
  return new Promise((resolve, reject) => {
130
- writable.end((err) => {
131
- if (err) {
132
- reject(err);
133
- }
134
- else {
135
- resolve();
136
- }
137
- });
137
+ if (writable.errored) {
138
+ reject(writable.errored);
139
+ }
140
+ else {
141
+ writable.end((err) => {
142
+ if (err) {
143
+ reject(err);
144
+ }
145
+ else {
146
+ resolve();
147
+ }
148
+ });
149
+ }
138
150
  });
139
151
  },
140
152
  abort(reason) {
141
153
  return new Promise(resolve => {
142
154
  writable.destroy(reason);
143
- resolve();
155
+ writable.once('close', resolve);
144
156
  });
145
157
  },
146
158
  };
147
159
  }
148
160
  close() {
161
+ if (!this.writable.errored && this.writable.closed) {
162
+ return fakePromise(undefined);
163
+ }
149
164
  return new Promise((resolve, reject) => {
150
- this.writable.end((err) => {
151
- if (err) {
152
- reject(err);
153
- }
154
- else {
155
- resolve();
156
- }
157
- });
165
+ if (this.writable.errored) {
166
+ reject(this.writable.errored);
167
+ }
168
+ else {
169
+ this.writable.end((err) => {
170
+ if (err) {
171
+ reject(err);
172
+ }
173
+ else {
174
+ resolve();
175
+ }
176
+ });
177
+ }
158
178
  });
159
179
  }
160
180
  abort(reason) {
161
181
  return new Promise(resolve => {
162
182
  this.writable.destroy(reason);
163
- resolve();
183
+ this.writable.once('close', resolve);
164
184
  });
165
185
  }
166
186
  locked = false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@whatwg-node/node-fetch",
3
- "version": "0.5.22",
3
+ "version": "0.5.23-alpha-20240819112359-bab094145ec8e8cf5639d555d1fce2be57a377de",
4
4
  "description": "Fetch API implementation for Node",
5
5
  "sideEffects": false,
6
6
  "dependencies": {