@push.rocks/smartstream 3.3.0 → 3.4.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/.smartconfig.json +27 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/smartstream.classes.smartduplex.d.ts +12 -6
- package/dist_ts/smartstream.classes.smartduplex.js +182 -72
- package/dist_ts/smartstream.classes.streamintake.js +6 -3
- package/dist_ts/smartstream.classes.streamwrapper.js +16 -13
- package/dist_ts/smartstream.functions.d.ts +2 -2
- package/dist_ts/smartstream.functions.js +1 -1
- package/dist_ts/smartstream.nodewebhelpers.d.ts +2 -2
- package/dist_ts/smartstream.nodewebhelpers.js +97 -36
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/dist_ts_web/classes.webduplexstream.js +24 -16
- package/license +21 -0
- package/package.json +12 -10
- package/readme.md +145 -15
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/smartstream.classes.smartduplex.ts +214 -81
- package/ts/smartstream.classes.streamintake.ts +5 -2
- package/ts/smartstream.classes.streamwrapper.ts +18 -14
- package/ts/smartstream.functions.ts +2 -2
- package/ts/smartstream.nodewebhelpers.ts +105 -37
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/classes.webduplexstream.ts +24 -14
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"@git.zone/cli": {
|
|
3
|
+
"projectType": "npm",
|
|
4
|
+
"module": {
|
|
5
|
+
"githost": "code.foss.global",
|
|
6
|
+
"gitscope": "push.rocks",
|
|
7
|
+
"gitrepo": "smartstream",
|
|
8
|
+
"description": "A library to simplify the creation and manipulation of Node.js streams, providing utilities for handling transform, duplex, and readable/writable streams effectively in TypeScript.",
|
|
9
|
+
"npmPackagename": "@push.rocks/smartstream",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"projectDomain": "push.rocks"
|
|
12
|
+
},
|
|
13
|
+
"release": {
|
|
14
|
+
"registries": [
|
|
15
|
+
"https://verdaccio.lossless.digital",
|
|
16
|
+
"https://registry.npmjs.org"
|
|
17
|
+
],
|
|
18
|
+
"accessLevel": "public"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"@git.zone/tsdoc": {
|
|
22
|
+
"legal": "\n## License and Legal Information\n\nThis repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository. \n\n**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.\n\n### Trademarks\n\nThis project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.\n\n### Company Information\n\nTask Venture Capital GmbH \nRegistered at District court Bremen HRB 35230 HB, Germany\n\nFor any legal inquiries or if you require further information, please contact us via email at hello@task.vc.\n\nBy using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.\n"
|
|
23
|
+
},
|
|
24
|
+
"@ship.zone/szci": {
|
|
25
|
+
"npmGlobalTools": []
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartstream',
|
|
6
|
-
version: '3.
|
|
6
|
+
version: '3.4.2',
|
|
7
7
|
description: 'A library to simplify the creation and manipulation of Node.js streams, providing utilities for handling transform, duplex, and readable/writable streams effectively in TypeScript.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx5QkFBeUI7SUFDL0IsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLHNMQUFzTDtDQUNwTSxDQUFBIn0=
|
|
@@ -4,10 +4,10 @@ export interface IStreamTools {
|
|
|
4
4
|
push: (pipeObject: any) => Promise<boolean>;
|
|
5
5
|
}
|
|
6
6
|
export interface IStreamWriteFunction<T, rT> {
|
|
7
|
-
(chunkArg: T, toolsArg: IStreamTools): Promise<rT>;
|
|
7
|
+
(chunkArg: T, toolsArg: IStreamTools): Promise<rT | void | null | undefined>;
|
|
8
8
|
}
|
|
9
9
|
export interface IStreamFinalFunction<rT> {
|
|
10
|
-
(toolsArg: IStreamTools): Promise<rT>;
|
|
10
|
+
(toolsArg: IStreamTools): Promise<rT | void | null | undefined>;
|
|
11
11
|
}
|
|
12
12
|
export interface ISmartDuplexOptions<TInput, TOutput> extends DuplexOptions {
|
|
13
13
|
/**
|
|
@@ -38,14 +38,20 @@ export declare class SmartDuplex<TInput = any, TOutput = any> extends Duplex {
|
|
|
38
38
|
static fromWebReadableStream<T = any>(readableStream: ReadableStream<T>): SmartDuplex<T, T>;
|
|
39
39
|
private backpressuredArray;
|
|
40
40
|
options: ISmartDuplexOptions<TInput, TOutput>;
|
|
41
|
-
private
|
|
41
|
+
private _consumerWantsData;
|
|
42
|
+
private _readFunctionRunning;
|
|
42
43
|
private debugLog;
|
|
43
44
|
constructor(optionsArg?: ISmartDuplexOptions<TInput, TOutput>);
|
|
44
|
-
|
|
45
|
+
/**
|
|
46
|
+
* Synchronously drains items from the backpressuredArray into the readable side.
|
|
47
|
+
* Stops when push() returns false (consumer is full) or array is empty.
|
|
48
|
+
*/
|
|
49
|
+
private _drainBackpressuredArray;
|
|
50
|
+
_read(size: number): void;
|
|
45
51
|
backpressuredPush(pushArg: TOutput): Promise<boolean>;
|
|
46
52
|
private asyncWritePromiseObjectmap;
|
|
47
|
-
_write(chunk: TInput, encoding: string, callback: (error?: Error | null) => void):
|
|
48
|
-
_final(callback: (error?: Error | null) => void):
|
|
53
|
+
_write(chunk: TInput, encoding: string, callback: (error?: Error | null) => void): void;
|
|
54
|
+
_final(callback: (error?: Error | null) => void): void;
|
|
49
55
|
getWebStreams(): Promise<{
|
|
50
56
|
readable: ReadableStream;
|
|
51
57
|
writable: WritableStream;
|
|
@@ -12,53 +12,91 @@ export class SmartDuplex extends Duplex {
|
|
|
12
12
|
}
|
|
13
13
|
static fromWebReadableStream(readableStream) {
|
|
14
14
|
const smartDuplex = new SmartDuplex({
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
15
|
+
objectMode: true,
|
|
16
|
+
});
|
|
17
|
+
// Acquire reader ONCE
|
|
18
|
+
const reader = readableStream.getReader();
|
|
19
|
+
let reading = false;
|
|
20
|
+
// Override _read to pull from the web reader
|
|
21
|
+
smartDuplex._read = function (_size) {
|
|
22
|
+
if (reading)
|
|
23
|
+
return;
|
|
24
|
+
reading = true;
|
|
25
|
+
reader.read().then(({ value, done }) => {
|
|
26
|
+
reading = false;
|
|
26
27
|
if (done) {
|
|
27
28
|
smartDuplex.push(null);
|
|
28
29
|
}
|
|
29
|
-
|
|
30
|
+
else {
|
|
31
|
+
smartDuplex.push(value);
|
|
32
|
+
}
|
|
33
|
+
}, (err) => {
|
|
34
|
+
reading = false;
|
|
35
|
+
smartDuplex.destroy(err);
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
// Cancel reader on destroy
|
|
39
|
+
smartDuplex.on('close', () => {
|
|
40
|
+
reader.cancel().catch(() => { });
|
|
30
41
|
});
|
|
31
42
|
return smartDuplex;
|
|
32
43
|
}
|
|
33
44
|
debugLog(messageArg) {
|
|
34
|
-
// optional debug log
|
|
35
45
|
if (this.options.debug) {
|
|
36
46
|
console.log(messageArg);
|
|
37
47
|
}
|
|
38
48
|
}
|
|
39
49
|
constructor(optionsArg) {
|
|
50
|
+
const safeOptions = optionsArg || {};
|
|
40
51
|
super(Object.assign({
|
|
41
52
|
highWaterMark: 1,
|
|
42
|
-
},
|
|
53
|
+
}, safeOptions));
|
|
54
|
+
this._consumerWantsData = false;
|
|
55
|
+
this._readFunctionRunning = false;
|
|
43
56
|
this.asyncWritePromiseObjectmap = new plugins.lik.ObjectMap();
|
|
44
|
-
this.options =
|
|
57
|
+
this.options = safeOptions;
|
|
45
58
|
this.backpressuredArray = new plugins.lik.BackpressuredArray(this.options.highWaterMark || 1);
|
|
46
59
|
}
|
|
47
|
-
|
|
60
|
+
/**
|
|
61
|
+
* Synchronously drains items from the backpressuredArray into the readable side.
|
|
62
|
+
* Stops when push() returns false (consumer is full) or array is empty.
|
|
63
|
+
*/
|
|
64
|
+
_drainBackpressuredArray() {
|
|
65
|
+
while (this.backpressuredArray.data.length > 0) {
|
|
66
|
+
const nextChunk = this.backpressuredArray.shift();
|
|
67
|
+
if (nextChunk === null) {
|
|
68
|
+
// EOF signal — push null to end readable side
|
|
69
|
+
this.push(null);
|
|
70
|
+
this._consumerWantsData = false;
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const canPushMore = this.push(nextChunk);
|
|
74
|
+
if (!canPushMore) {
|
|
75
|
+
this._consumerWantsData = false;
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// _read must NOT be async — Node.js ignores the return value
|
|
81
|
+
_read(size) {
|
|
48
82
|
this.debugLog(`${this.options.name}: read was called`);
|
|
49
|
-
|
|
50
|
-
|
|
83
|
+
this._consumerWantsData = true;
|
|
84
|
+
// Drain any buffered items first
|
|
85
|
+
if (this.backpressuredArray.data.length > 0) {
|
|
86
|
+
this._drainBackpressuredArray();
|
|
51
87
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const nextChunk = this.backpressuredArray.shift();
|
|
57
|
-
canPushMore = this.push(nextChunk);
|
|
88
|
+
// If readFunction exists and is not already running, start it
|
|
89
|
+
if (this.options.readFunction && !this._readFunctionRunning) {
|
|
90
|
+
this._readFunctionRunning = true;
|
|
91
|
+
this.options.readFunction().then(() => { this._readFunctionRunning = false; }, (err) => { this._readFunctionRunning = false; this.destroy(err); });
|
|
58
92
|
}
|
|
59
93
|
}
|
|
60
94
|
async backpressuredPush(pushArg) {
|
|
61
95
|
const canPushMore = this.backpressuredArray.push(pushArg);
|
|
96
|
+
// Try to drain if the consumer wants data
|
|
97
|
+
if (this._consumerWantsData) {
|
|
98
|
+
this._drainBackpressuredArray();
|
|
99
|
+
}
|
|
62
100
|
if (!canPushMore) {
|
|
63
101
|
this.debugLog(`${this.options.name}: cannot push more`);
|
|
64
102
|
await this.backpressuredArray.waitForSpace();
|
|
@@ -66,79 +104,134 @@ export class SmartDuplex extends Duplex {
|
|
|
66
104
|
}
|
|
67
105
|
return canPushMore;
|
|
68
106
|
}
|
|
69
|
-
//
|
|
70
|
-
|
|
107
|
+
// _write must NOT be async — Node.js ignores the return value
|
|
108
|
+
_write(chunk, encoding, callback) {
|
|
71
109
|
if (!this.options.writeFunction) {
|
|
72
110
|
return callback(new Error('No stream function provided'));
|
|
73
111
|
}
|
|
112
|
+
let callbackCalled = false;
|
|
113
|
+
const safeCallback = (err) => {
|
|
114
|
+
if (!callbackCalled) {
|
|
115
|
+
callbackCalled = true;
|
|
116
|
+
callback(err);
|
|
117
|
+
}
|
|
118
|
+
};
|
|
74
119
|
let isTruncated = false;
|
|
75
120
|
const tools = {
|
|
76
121
|
truncate: () => {
|
|
77
|
-
this.push(null);
|
|
78
122
|
isTruncated = true;
|
|
79
|
-
|
|
123
|
+
safeCallback();
|
|
124
|
+
this.push(null);
|
|
80
125
|
},
|
|
81
126
|
push: async (pushArg) => {
|
|
82
127
|
return await this.backpressuredPush(pushArg);
|
|
83
128
|
},
|
|
84
129
|
};
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const modifiedChunk = await this.options.writeFunction(chunk, tools);
|
|
130
|
+
const writeDeferred = plugins.smartpromise.defer();
|
|
131
|
+
this.asyncWritePromiseObjectmap.add(writeDeferred.promise);
|
|
132
|
+
this.options.writeFunction(chunk, tools).then((modifiedChunk) => {
|
|
89
133
|
if (isTruncated) {
|
|
134
|
+
writeDeferred.resolve();
|
|
135
|
+
this.asyncWritePromiseObjectmap.remove(writeDeferred.promise);
|
|
90
136
|
return;
|
|
91
137
|
}
|
|
92
|
-
|
|
93
|
-
|
|
138
|
+
const finish = () => {
|
|
139
|
+
safeCallback();
|
|
140
|
+
writeDeferred.resolve();
|
|
141
|
+
this.asyncWritePromiseObjectmap.remove(writeDeferred.promise);
|
|
142
|
+
};
|
|
143
|
+
if (modifiedChunk !== undefined && modifiedChunk !== null) {
|
|
144
|
+
this.backpressuredPush(modifiedChunk).then(finish, (err) => {
|
|
145
|
+
safeCallback(err);
|
|
146
|
+
writeDeferred.resolve();
|
|
147
|
+
this.asyncWritePromiseObjectmap.remove(writeDeferred.promise);
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
finish();
|
|
94
152
|
}
|
|
95
|
-
|
|
153
|
+
}, (err) => {
|
|
154
|
+
safeCallback(err);
|
|
96
155
|
writeDeferred.resolve();
|
|
97
|
-
writeDeferred.promise
|
|
98
|
-
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
catch (err) {
|
|
102
|
-
callback(err);
|
|
103
|
-
}
|
|
156
|
+
this.asyncWritePromiseObjectmap.remove(writeDeferred.promise);
|
|
157
|
+
});
|
|
104
158
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
159
|
+
// _final must NOT be async — Node.js ignores the return value
|
|
160
|
+
_final(callback) {
|
|
161
|
+
let callbackCalled = false;
|
|
162
|
+
const safeCallback = (err) => {
|
|
163
|
+
if (!callbackCalled) {
|
|
164
|
+
callbackCalled = true;
|
|
165
|
+
callback(err);
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
Promise.all(this.asyncWritePromiseObjectmap.getArray()).then(() => {
|
|
169
|
+
if (this.options.finalFunction) {
|
|
170
|
+
const tools = {
|
|
171
|
+
truncate: () => safeCallback(),
|
|
172
|
+
push: async (pipeObject) => {
|
|
173
|
+
return await this.backpressuredPush(pipeObject);
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
this.options.finalFunction(tools).then((finalChunk) => {
|
|
177
|
+
const pushNull = () => {
|
|
178
|
+
this.backpressuredArray.push(null);
|
|
179
|
+
if (this._consumerWantsData) {
|
|
180
|
+
this._drainBackpressuredArray();
|
|
181
|
+
}
|
|
182
|
+
safeCallback();
|
|
183
|
+
};
|
|
184
|
+
if (finalChunk !== undefined && finalChunk !== null) {
|
|
185
|
+
this.backpressuredPush(finalChunk).then(pushNull, (err) => {
|
|
186
|
+
safeCallback(err);
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
pushNull();
|
|
191
|
+
}
|
|
192
|
+
}, (err) => {
|
|
193
|
+
this.backpressuredArray.push(null);
|
|
194
|
+
if (this._consumerWantsData) {
|
|
195
|
+
this._drainBackpressuredArray();
|
|
196
|
+
}
|
|
197
|
+
safeCallback(err);
|
|
198
|
+
});
|
|
119
199
|
}
|
|
120
|
-
|
|
200
|
+
else {
|
|
121
201
|
this.backpressuredArray.push(null);
|
|
122
|
-
|
|
123
|
-
|
|
202
|
+
if (this._consumerWantsData) {
|
|
203
|
+
this._drainBackpressuredArray();
|
|
204
|
+
}
|
|
205
|
+
safeCallback();
|
|
124
206
|
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
|
|
207
|
+
}, (err) => {
|
|
208
|
+
safeCallback(err);
|
|
209
|
+
});
|
|
128
210
|
}
|
|
129
211
|
async getWebStreams() {
|
|
130
212
|
const duplex = this;
|
|
213
|
+
let readableClosed = false;
|
|
131
214
|
const readable = new ReadableStream({
|
|
132
215
|
start(controller) {
|
|
133
|
-
|
|
216
|
+
const onReadable = () => {
|
|
134
217
|
let chunk;
|
|
135
218
|
while (null !== (chunk = duplex.read())) {
|
|
136
219
|
controller.enqueue(chunk);
|
|
137
220
|
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
221
|
+
};
|
|
222
|
+
const onEnd = () => {
|
|
223
|
+
if (!readableClosed) {
|
|
224
|
+
readableClosed = true;
|
|
225
|
+
controller.close();
|
|
226
|
+
}
|
|
227
|
+
cleanup();
|
|
228
|
+
};
|
|
229
|
+
const cleanup = () => {
|
|
230
|
+
duplex.removeListener('readable', onReadable);
|
|
231
|
+
duplex.removeListener('end', onEnd);
|
|
232
|
+
};
|
|
233
|
+
duplex.on('readable', onReadable);
|
|
234
|
+
duplex.on('end', onEnd);
|
|
142
235
|
},
|
|
143
236
|
cancel(reason) {
|
|
144
237
|
duplex.destroy(new Error(reason));
|
|
@@ -147,22 +240,39 @@ export class SmartDuplex extends Duplex {
|
|
|
147
240
|
const writable = new WritableStream({
|
|
148
241
|
write(chunk) {
|
|
149
242
|
return new Promise((resolve, reject) => {
|
|
243
|
+
let resolved = false;
|
|
244
|
+
const onDrain = () => {
|
|
245
|
+
if (!resolved) {
|
|
246
|
+
resolved = true;
|
|
247
|
+
resolve();
|
|
248
|
+
}
|
|
249
|
+
};
|
|
150
250
|
const isBackpressured = !duplex.write(chunk, (error) => {
|
|
151
251
|
if (error) {
|
|
152
|
-
|
|
252
|
+
if (!resolved) {
|
|
253
|
+
resolved = true;
|
|
254
|
+
duplex.removeListener('drain', onDrain);
|
|
255
|
+
reject(error);
|
|
256
|
+
}
|
|
153
257
|
}
|
|
154
|
-
else {
|
|
258
|
+
else if (!isBackpressured && !resolved) {
|
|
259
|
+
resolved = true;
|
|
155
260
|
resolve();
|
|
156
261
|
}
|
|
157
262
|
});
|
|
158
263
|
if (isBackpressured) {
|
|
159
|
-
duplex.once('drain',
|
|
264
|
+
duplex.once('drain', onDrain);
|
|
160
265
|
}
|
|
161
266
|
});
|
|
162
267
|
},
|
|
163
268
|
close() {
|
|
164
269
|
return new Promise((resolve, reject) => {
|
|
165
|
-
duplex.end(
|
|
270
|
+
duplex.end((err) => {
|
|
271
|
+
if (err)
|
|
272
|
+
reject(err);
|
|
273
|
+
else
|
|
274
|
+
resolve();
|
|
275
|
+
});
|
|
166
276
|
});
|
|
167
277
|
},
|
|
168
278
|
abort(reason) {
|
|
@@ -172,4 +282,4 @@ export class SmartDuplex extends Duplex {
|
|
|
172
282
|
return { readable, writable };
|
|
173
283
|
}
|
|
174
284
|
}
|
|
175
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzdHJlYW0uY2xhc3Nlcy5zbWFydGR1cGxleC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0c3RyZWFtLmNsYXNzZXMuc21hcnRkdXBsZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFzQixNQUFNLFFBQVEsQ0FBQztBQTBDcEQsTUFBTSxPQUFPLFdBQXlDLFNBQVEsTUFBTTtJQUNsRSxTQUFTO0lBQ1QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFjLEVBQUUsT0FBdUM7UUFDdkUsTUFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0MsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDcEIsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN6QixXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsNkJBQTZCO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxxQkFBcUIsQ0FDakMsY0FBaUM7UUFFakMsTUFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQU87WUFDeEM7OztlQUdHO1lBQ0gsWUFBWSxFQUFFLEtBQUssSUFBSSxFQUFFO2dCQUN2QixNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzVDLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUN4QixXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMxQixDQUFDO2dCQUNELE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FB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
|
|
285
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzdHJlYW0uY2xhc3Nlcy5zbWFydGR1cGxleC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0c3RyZWFtLmNsYXNzZXMuc21hcnRkdXBsZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFzQixNQUFNLFFBQVEsQ0FBQztBQTBDcEQsTUFBTSxPQUFPLFdBQXlDLFNBQVEsTUFBTTtJQUNsRSxTQUFTO0lBQ1QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFjLEVBQUUsT0FBdUM7UUFDdkUsTUFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0MsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDcEIsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN6QixXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsNkJBQTZCO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxxQkFBcUIsQ0FDakMsY0FBaUM7UUFFakMsTUFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQU87WUFDeEMsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO1FBRUgsc0JBQXNCO1FBQ3RCLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMxQyxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFFcEIsNkNBQTZDO1FBQzdDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsVUFBVSxLQUFhO1lBQ3pDLElBQUksT0FBTztnQkFBRSxPQUFPO1lBQ3BCLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDZixNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUNoQixDQUFDLEVBQUUsS0FB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
|
|
@@ -4,8 +4,11 @@ export class StreamIntake extends plugins.stream.Readable {
|
|
|
4
4
|
static async fromStream(inputStream, options) {
|
|
5
5
|
const intakeStream = new StreamIntake(options);
|
|
6
6
|
if (inputStream instanceof plugins.stream.Readable) {
|
|
7
|
-
inputStream.on('
|
|
8
|
-
|
|
7
|
+
inputStream.on('readable', () => {
|
|
8
|
+
let chunk;
|
|
9
|
+
while (null !== (chunk = inputStream.read())) {
|
|
10
|
+
intakeStream.pushData(chunk);
|
|
11
|
+
}
|
|
9
12
|
});
|
|
10
13
|
inputStream.on('end', () => {
|
|
11
14
|
intakeStream.signalEnd();
|
|
@@ -78,4 +81,4 @@ export class StreamIntake extends plugins.stream.Readable {
|
|
|
78
81
|
this.pushNextObservable.signalComplete();
|
|
79
82
|
}
|
|
80
83
|
}
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzdHJlYW0uY2xhc3Nlcy5zdHJlYW1pbnRha2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydHN0cmVhbS5jbGFzc2VzLnN0cmVhbWludGFrZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLDBCQUEwQixDQUFDO0FBRXBELE1BQU0sT0FBTyxZQUFnQixTQUFRLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUTtJQUMxRCxTQUFTO0lBQ0YsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUksV0FBcUQsRUFBRSxPQUF3QztRQUMvSCxNQUFNLFlBQVksR0FBRyxJQUFJLFlBQVksQ0FBSSxPQUFPLENBQUMsQ0FBQztRQUVsRCxJQUFJLFdBQVcsWUFBWSxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25ELFdBQVcsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRTtnQkFDOUIsSUFBSSxLQUFRLENBQUM7Z0JBQ2IsT0FBTyxJQUFJLEtBQUssQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLElBQUksRUFBTyxDQUFDLEVBQUUsQ0FBQztvQkFDbEQsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDL0IsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUgsV0FBVyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUN6QixZQUFZLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQUM7WUFFSCxXQUFXLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQVUsRUFBRSxFQUFFO2dCQUNyQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLE1BQU0sR0FBSSxXQUE4QixDQUFDLFNBQVMsRUFB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
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import * as plugins from './smartstream.plugins.js';
|
|
2
|
-
// interfaces
|
|
3
|
-
import { Transform } from 'stream';
|
|
4
2
|
/**
|
|
5
3
|
* class Smartstream handles
|
|
6
4
|
*/
|
|
@@ -53,22 +51,27 @@ export class StreamWrapper {
|
|
|
53
51
|
for (const customEventObject of this.customEventObjectArray) {
|
|
54
52
|
stream.on(customEventObject.eventName, customEventObject.eventFunction);
|
|
55
53
|
}
|
|
56
|
-
if (!firstIteration) {
|
|
54
|
+
if (!firstIteration && finalStream) {
|
|
57
55
|
finalStream = finalStream.pipe(stream);
|
|
58
56
|
}
|
|
59
57
|
firstIteration = false;
|
|
60
58
|
}
|
|
61
|
-
|
|
62
|
-
finalStream.on('end', () => {
|
|
63
|
-
done.resolve();
|
|
64
|
-
});
|
|
65
|
-
finalStream.on('close', () => {
|
|
66
|
-
done.resolve();
|
|
67
|
-
});
|
|
68
|
-
finalStream.on('finish', () => {
|
|
59
|
+
if (!finalStream) {
|
|
69
60
|
done.resolve();
|
|
70
|
-
|
|
61
|
+
return done.promise;
|
|
62
|
+
}
|
|
63
|
+
this.streamStartedDeferred.resolve();
|
|
64
|
+
let resolved = false;
|
|
65
|
+
const safeResolve = () => {
|
|
66
|
+
if (!resolved) {
|
|
67
|
+
resolved = true;
|
|
68
|
+
done.resolve();
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
finalStream.on('end', safeResolve);
|
|
72
|
+
finalStream.on('close', safeResolve);
|
|
73
|
+
finalStream.on('finish', safeResolve);
|
|
71
74
|
return done.promise;
|
|
72
75
|
}
|
|
73
76
|
}
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzdHJlYW0uY2xhc3Nlcy5zdHJlYW13cmFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRzdHJlYW0uY2xhc3Nlcy5zdHJlYW13cmFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sMEJBQTBCLENBQUM7QUFlcEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQUt4Qjs7T0FFRztJQUNILFlBQVksY0FBcUI7UUFQekIsZ0JBQVcsR0FBaUMsRUFBRSxDQUFDO1FBQy9DLDJCQUFzQixHQUF5QixFQUFFLENBQUM7UUFDbEQsMEJBQXFCLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQU0zRCxJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWEsQ0FBQyxZQUFvQixFQUFFLGdCQUFzQztRQUN4RSxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDO1lBQy9CLFNBQVMsRUFBRSxZQUFZO1lBQ3ZCLGFBQWEsRUFBRSxnQkFBZ0I7U0FDaEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILEdBQUc7UUFDRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBUSxDQUFDO1FBRWhELGNBQWM7UUFDZCxNQUFNLG9CQUFvQixHQUFpQyxFQUFFLENBQUM7UUFDOUQsS0FBSyxNQUFNLFVBQVUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDMUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFFRCxxQkFBcUI7UUFDckIsSUFBSSxXQUFXLEdBQWlDLElBQUksQ0FBQztRQUNyRCxJQUFJLGNBQWMsR0FBWSxJQUFJLENBQUM7UUFDbkMsS0FBSyxNQUFNLE1BQU0sSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1lBQzFDLElBQUksY0FBYyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUM1QixXQUFXLEdBQUcsTUFBTSxDQUFDO1lBQ3ZCLENBQUM7WUFDRCxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLENBQUMsQ0FBQyxDQUFDO1lBQ0gsS0FBSyxNQUFNLGlCQUFpQixJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO2dCQUM1RCxNQUFNLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMxRSxDQUFDO1lBQ0QsSUFBSSxDQUFDLGNBQWMsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDbkMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekMsQ0FBQztZQUNELGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDekIsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDdEIsQ0FBQztRQUVELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVyQyxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDckIsTUFBTSxXQUFXLEdBQUcsR0FBRyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDZCxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUNoQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLFdBQVcsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLFdBQVcsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3JDLFdBQVcsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0NBQ0YifQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type DuplexOptions } from 'stream';
|
|
2
2
|
import { SmartDuplex } from './smartstream.classes.smartduplex.js';
|
|
3
3
|
export interface AsyncTransformFunction<TInput, TOutput> {
|
|
4
4
|
(chunkArg: TInput): Promise<TOutput>;
|
|
5
5
|
}
|
|
6
|
-
export declare function createTransformFunction<TInput, TOutput>(asyncFunction: AsyncTransformFunction<TInput, TOutput>, options?:
|
|
6
|
+
export declare function createTransformFunction<TInput, TOutput>(asyncFunction: AsyncTransformFunction<TInput, TOutput>, options?: DuplexOptions): SmartDuplex;
|
|
7
7
|
export declare const createPassThrough: () => SmartDuplex<any, any>;
|
|
@@ -18,4 +18,4 @@ export const createPassThrough = () => {
|
|
|
18
18
|
}
|
|
19
19
|
});
|
|
20
20
|
};
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzdHJlYW0uZnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRzdHJlYW0uZnVuY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBc0IsTUFBTSxRQUFRLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBTW5FLE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsYUFBc0QsRUFDdEQsT0FBdUI7SUFFdkIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLFdBQVcsQ0FBQztRQUN4QyxHQUFHLE9BQU87UUFDVixhQUFhLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUMxQyxNQUFNLE1BQU0sR0FBRyxNQUFNLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3QyxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsT0FBTyxpQkFBaUIsQ0FBQztBQUMzQixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxFQUFFO0lBQ3BDLE9BQU8sSUFBSSxXQUFXLENBQUM7UUFDckIsVUFBVSxFQUFFLElBQUk7UUFDaEIsYUFBYSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDMUMsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztLQUNGLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQSJ9
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as plugins from './smartstream.plugins.js';
|
|
2
2
|
/**
|
|
3
|
-
* Creates a Web ReadableStream from a file.
|
|
3
|
+
* Creates a Web ReadableStream from a file using pull-based backpressure.
|
|
4
4
|
*
|
|
5
5
|
* @param filePath - The path to the file to be read
|
|
6
6
|
* @returns A Web ReadableStream that reads the file in chunks
|
|
@@ -14,7 +14,7 @@ export declare function createWebReadableStreamFromFile(filePath: string): Reada
|
|
|
14
14
|
*/
|
|
15
15
|
export declare function convertWebReadableToNodeReadable(webStream: ReadableStream<Uint8Array>): plugins.stream.Readable;
|
|
16
16
|
/**
|
|
17
|
-
* Converts a Node.js Readable stream to a Web ReadableStream.
|
|
17
|
+
* Converts a Node.js Readable stream to a Web ReadableStream using pull-based backpressure.
|
|
18
18
|
*
|
|
19
19
|
* @param nodeStream - The Node.js Readable stream to convert
|
|
20
20
|
* @returns A Web ReadableStream that reads data from the Node.js Readable stream
|