@push.rocks/smartstream 3.0.44 → 3.0.46
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/dist_ts/00_commitinfo_data.d.ts +1 -1
- package/dist_ts/00_commitinfo_data.js +2 -2
- package/dist_ts/smartstream.classes.smartduplex.js +5 -5
- package/dist_ts_web/00_commitinfo_data.d.ts +1 -1
- package/dist_ts_web/00_commitinfo_data.js +2 -2
- package/dist_ts_web/classes.webduplexstream.js +9 -8
- package/package.json +1 -1
- package/ts/00_commitinfo_data.ts +2 -2
- package/ts/smartstream.classes.smartduplex.ts +27 -19
- package/ts_web/00_commitinfo_data.ts +2 -2
- package/ts_web/classes.webduplexstream.ts +9 -9
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* autocreated commitinfo by @
|
|
2
|
+
* autocreated commitinfo by @push.rocks/commitinfo
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartstream',
|
|
6
|
-
version: '3.0.
|
|
6
|
+
version: '3.0.46',
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx5QkFBeUI7SUFDL0IsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLHNMQUFzTDtDQUNwTSxDQUFBIn0=
|
|
@@ -11,6 +11,7 @@ export class SmartDuplex extends Duplex {
|
|
|
11
11
|
return smartDuplex;
|
|
12
12
|
}
|
|
13
13
|
debugLog(messageArg) {
|
|
14
|
+
// optional debug log
|
|
14
15
|
if (this.options.debug) {
|
|
15
16
|
console.log(messageArg);
|
|
16
17
|
}
|
|
@@ -45,7 +46,6 @@ export class SmartDuplex extends Duplex {
|
|
|
45
46
|
}
|
|
46
47
|
return canPushMore;
|
|
47
48
|
}
|
|
48
|
-
;
|
|
49
49
|
// Ensure the _write method types the chunk as TInput and encodes TOutput
|
|
50
50
|
async _write(chunk, encoding, callback) {
|
|
51
51
|
if (!this.options.writeFunction) {
|
|
@@ -60,7 +60,7 @@ export class SmartDuplex extends Duplex {
|
|
|
60
60
|
},
|
|
61
61
|
push: async (pushArg) => {
|
|
62
62
|
return await this.backpressuredPush(pushArg);
|
|
63
|
-
}
|
|
63
|
+
},
|
|
64
64
|
};
|
|
65
65
|
try {
|
|
66
66
|
const writeDeferred = plugins.smartpromise.defer();
|
|
@@ -122,7 +122,7 @@ export class SmartDuplex extends Duplex {
|
|
|
122
122
|
},
|
|
123
123
|
cancel(reason) {
|
|
124
124
|
duplex.destroy(new Error(reason));
|
|
125
|
-
}
|
|
125
|
+
},
|
|
126
126
|
});
|
|
127
127
|
const writable = new WritableStream({
|
|
128
128
|
write(chunk) {
|
|
@@ -147,9 +147,9 @@ export class SmartDuplex extends Duplex {
|
|
|
147
147
|
},
|
|
148
148
|
abort(reason) {
|
|
149
149
|
duplex.destroy(new Error(reason));
|
|
150
|
-
}
|
|
150
|
+
},
|
|
151
151
|
});
|
|
152
152
|
return { readable, writable };
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzdHJlYW0uY2xhc3Nlcy5zbWFydGR1cGxleC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0c3RyZWFtLmNsYXNzZXMuc21hcnRkdXBsZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFzQixNQUFNLFFBQVEsQ0FBQztBQTBDcEQsTUFBTSxPQUFPLFdBQXlDLFNBQVEsTUFBTTtJQUNsRSxTQUFTO0lBQ1QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFjLEVBQUUsT0FBdUM7UUFDdkUsTUFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0MsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDcEIsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN6QixXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsNkJBQTZCO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQU1PLFFBQVEsQ0FBQyxVQUFrQjtRQUNqQyxxQkFBcUI7UUFDckIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZLFVBQWlEO1FBQzNELEtBQUssQ0FDSCxNQUFNLENBQUMsTUFBTSxDQUNYO1lBQ0UsYUFBYSxFQUFFLENBQUM7U0FDakIsRUFDRCxVQUFVLENBQ1gsQ0FDRixDQUFDO1FBK0JJLCtCQUEwQixHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQWdCLENBQUM7UUE5QjdFLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDO1FBQzFCLElBQUks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
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* autocreated commitinfo by @
|
|
2
|
+
* autocreated commitinfo by @push.rocks/commitinfo
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartstream',
|
|
6
|
-
version: '3.0.
|
|
6
|
+
version: '3.0.46',
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUseUJBQXlCO0lBQy9CLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFdBQVcsRUFBRSxzTEFBc0w7Q0FDcE0sQ0FBQSJ9
|
|
@@ -12,6 +12,7 @@ export class WebDuplexStream extends TransformStream {
|
|
|
12
12
|
return stream;
|
|
13
13
|
}
|
|
14
14
|
constructor(optionsArg) {
|
|
15
|
+
// here we call into the official web stream api
|
|
15
16
|
super({
|
|
16
17
|
async transform(chunk, controller) {
|
|
17
18
|
// Transformation logic remains unchanged
|
|
@@ -20,15 +21,15 @@ export class WebDuplexStream extends TransformStream {
|
|
|
20
21
|
truncate: () => controller.terminate(),
|
|
21
22
|
push: (pushArg) => controller.enqueue(pushArg),
|
|
22
23
|
};
|
|
23
|
-
|
|
24
|
-
.
|
|
25
|
-
|
|
26
|
-
// just in case the write function returns something other than void.
|
|
27
|
-
if (writeReturnChunk) {
|
|
24
|
+
try {
|
|
25
|
+
const writeReturnChunk = await optionsArg.writeFunction(chunk, tools);
|
|
26
|
+
if (writeReturnChunk) { // return chunk is optional
|
|
28
27
|
controller.enqueue(writeReturnChunk);
|
|
29
28
|
}
|
|
30
|
-
}
|
|
31
|
-
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
controller.error(err);
|
|
32
|
+
}
|
|
32
33
|
}
|
|
33
34
|
else {
|
|
34
35
|
controller.error(new Error('No write function provided'));
|
|
@@ -99,4 +100,4 @@ export class WebDuplexStream extends TransformStream {
|
|
|
99
100
|
return customReadable;
|
|
100
101
|
}
|
|
101
102
|
}
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy53ZWJkdXBsZXhzdHJlYW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c193ZWIvY2xhc3Nlcy53ZWJkdXBsZXhzdHJlYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUE4Q3hDLE1BQU0sT0FBTyxlQUE2QyxTQUFRLGVBQWdDO0lBQ2hHLE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBc0I7UUFDMUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQXlCO1lBQ3pELGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsZ0NBQWdDO2dCQUM3QyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7U0FDRixDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRXBELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFLRCxZQUFZLFVBQW1EO1FBQzdELGdEQUFnRDtRQUNoRCxLQUFLLENBQUM7WUFDSixLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxVQUFVO2dCQUMvQix5Q0FBeUM7Z0JBQ3pDLElBQUksVUFBVSxFQUFFLGFBQWEsRUFBRSxDQUFDO29CQUM5QixNQUFNLEtBQUssR0FBdUM7d0JBQ2hELFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFO3dCQUN0QyxJQUFJLEVBQUUsQ0FBQyxPQUFnQixFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztxQkFD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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@push.rocks/smartstream",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.46",
|
|
4
4
|
"private": false,
|
|
5
5
|
"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.",
|
|
6
6
|
"type": "module",
|
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* autocreated commitinfo by @
|
|
2
|
+
* autocreated commitinfo by @push.rocks/commitinfo
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartstream',
|
|
6
|
-
version: '3.0.
|
|
6
|
+
version: '3.0.46',
|
|
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
|
}
|
|
@@ -34,9 +34,9 @@ export interface ISmartDuplexOptions<TInput, TOutput> extends DuplexOptions {
|
|
|
34
34
|
* it can push or return chunks (but does not have to) to be written to the readable side of the stream
|
|
35
35
|
*/
|
|
36
36
|
writeFunction?: IStreamWriteFunction<TInput, TOutput>;
|
|
37
|
-
|
|
37
|
+
|
|
38
38
|
/**
|
|
39
|
-
* a final function that is run at the end of the stream
|
|
39
|
+
* a final function that is run at the end of the stream
|
|
40
40
|
*/
|
|
41
41
|
finalFunction?: IStreamFinalFunction<TOutput>;
|
|
42
42
|
}
|
|
@@ -53,21 +53,29 @@ export class SmartDuplex<TInput = any, TOutput = any> extends Duplex {
|
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
// INSTANCE
|
|
56
|
-
private backpressuredArray: plugins.lik.BackpressuredArray<TOutput>;
|
|
56
|
+
private backpressuredArray: plugins.lik.BackpressuredArray<TOutput>; // an array that only takes a defined amount of items
|
|
57
57
|
public options: ISmartDuplexOptions<TInput, TOutput>;
|
|
58
58
|
private observableSubscription?: plugins.smartrx.rxjs.Subscription;
|
|
59
59
|
private debugLog(messageArg: string) {
|
|
60
|
+
// optional debug log
|
|
60
61
|
if (this.options.debug) {
|
|
61
62
|
console.log(messageArg);
|
|
62
63
|
}
|
|
63
64
|
}
|
|
64
65
|
|
|
65
66
|
constructor(optionsArg?: ISmartDuplexOptions<TInput, TOutput>) {
|
|
66
|
-
super(
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
super(
|
|
68
|
+
Object.assign(
|
|
69
|
+
{
|
|
70
|
+
highWaterMark: 1,
|
|
71
|
+
},
|
|
72
|
+
optionsArg
|
|
73
|
+
)
|
|
74
|
+
);
|
|
69
75
|
this.options = optionsArg;
|
|
70
|
-
this.backpressuredArray = new plugins.lik.BackpressuredArray<TOutput>(
|
|
76
|
+
this.backpressuredArray = new plugins.lik.BackpressuredArray<TOutput>(
|
|
77
|
+
this.options.highWaterMark || 1
|
|
78
|
+
);
|
|
71
79
|
}
|
|
72
80
|
|
|
73
81
|
public async _read(size: number): Promise<void> {
|
|
@@ -77,14 +85,14 @@ export class SmartDuplex<TInput = any, TOutput = any> extends Duplex {
|
|
|
77
85
|
if (this.options.readFunction) {
|
|
78
86
|
await this.options.readFunction();
|
|
79
87
|
}
|
|
80
|
-
let canPushMore = true;
|
|
81
|
-
while(this.backpressuredArray.data.length > 0 && canPushMore) {
|
|
88
|
+
let canPushMore = true;
|
|
89
|
+
while (this.backpressuredArray.data.length > 0 && canPushMore) {
|
|
82
90
|
const nextChunk = this.backpressuredArray.shift();
|
|
83
91
|
canPushMore = this.push(nextChunk);
|
|
84
92
|
}
|
|
85
93
|
}
|
|
86
94
|
|
|
87
|
-
public async backpressuredPush
|
|
95
|
+
public async backpressuredPush(pushArg: TOutput) {
|
|
88
96
|
const canPushMore = this.backpressuredArray.push(pushArg);
|
|
89
97
|
if (!canPushMore) {
|
|
90
98
|
this.debugLog(`${this.options.name}: cannot push more`);
|
|
@@ -92,7 +100,7 @@ export class SmartDuplex<TInput = any, TOutput = any> extends Duplex {
|
|
|
92
100
|
this.debugLog(`${this.options.name}: can push more again`);
|
|
93
101
|
}
|
|
94
102
|
return canPushMore;
|
|
95
|
-
}
|
|
103
|
+
}
|
|
96
104
|
|
|
97
105
|
private asyncWritePromiseObjectmap = new plugins.lik.ObjectMap<Promise<any>>();
|
|
98
106
|
// Ensure the _write method types the chunk as TInput and encodes TOutput
|
|
@@ -110,7 +118,7 @@ export class SmartDuplex<TInput = any, TOutput = any> extends Duplex {
|
|
|
110
118
|
},
|
|
111
119
|
push: async (pushArg: TOutput) => {
|
|
112
120
|
return await this.backpressuredPush(pushArg);
|
|
113
|
-
}
|
|
121
|
+
},
|
|
114
122
|
};
|
|
115
123
|
|
|
116
124
|
try {
|
|
@@ -158,7 +166,7 @@ export class SmartDuplex<TInput = any, TOutput = any> extends Duplex {
|
|
|
158
166
|
callback();
|
|
159
167
|
}
|
|
160
168
|
|
|
161
|
-
public async getWebStreams(): Promise<{ readable: ReadableStream
|
|
169
|
+
public async getWebStreams(): Promise<{ readable: ReadableStream; writable: WritableStream }> {
|
|
162
170
|
const duplex = this;
|
|
163
171
|
const readable = new ReadableStream({
|
|
164
172
|
start(controller) {
|
|
@@ -168,16 +176,16 @@ export class SmartDuplex<TInput = any, TOutput = any> extends Duplex {
|
|
|
168
176
|
controller.enqueue(chunk);
|
|
169
177
|
}
|
|
170
178
|
});
|
|
171
|
-
|
|
179
|
+
|
|
172
180
|
duplex.on('end', () => {
|
|
173
181
|
controller.close();
|
|
174
182
|
});
|
|
175
183
|
},
|
|
176
184
|
cancel(reason) {
|
|
177
185
|
duplex.destroy(new Error(reason));
|
|
178
|
-
}
|
|
186
|
+
},
|
|
179
187
|
});
|
|
180
|
-
|
|
188
|
+
|
|
181
189
|
const writable = new WritableStream({
|
|
182
190
|
write(chunk) {
|
|
183
191
|
return new Promise<void>((resolve, reject) => {
|
|
@@ -188,7 +196,7 @@ export class SmartDuplex<TInput = any, TOutput = any> extends Duplex {
|
|
|
188
196
|
resolve();
|
|
189
197
|
}
|
|
190
198
|
});
|
|
191
|
-
|
|
199
|
+
|
|
192
200
|
if (isBackpressured) {
|
|
193
201
|
duplex.once('drain', resolve);
|
|
194
202
|
}
|
|
@@ -201,9 +209,9 @@ export class SmartDuplex<TInput = any, TOutput = any> extends Duplex {
|
|
|
201
209
|
},
|
|
202
210
|
abort(reason) {
|
|
203
211
|
duplex.destroy(new Error(reason));
|
|
204
|
-
}
|
|
212
|
+
},
|
|
205
213
|
});
|
|
206
|
-
|
|
214
|
+
|
|
207
215
|
return { readable, writable };
|
|
208
216
|
}
|
|
209
217
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* autocreated commitinfo by @
|
|
2
|
+
* autocreated commitinfo by @push.rocks/commitinfo
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartstream',
|
|
6
|
-
version: '3.0.
|
|
6
|
+
version: '3.0.46',
|
|
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
|
}
|
|
@@ -63,6 +63,7 @@ export class WebDuplexStream<TInput = any, TOutput = any> extends TransformStrea
|
|
|
63
63
|
options: WebDuplexStreamOptions<TInput, TOutput>;
|
|
64
64
|
|
|
65
65
|
constructor(optionsArg: WebDuplexStreamOptions<TInput, TOutput>) {
|
|
66
|
+
// here we call into the official web stream api
|
|
66
67
|
super({
|
|
67
68
|
async transform(chunk, controller) {
|
|
68
69
|
// Transformation logic remains unchanged
|
|
@@ -72,15 +73,14 @@ export class WebDuplexStream<TInput = any, TOutput = any> extends TransformStrea
|
|
|
72
73
|
push: (pushArg: TOutput) => controller.enqueue(pushArg),
|
|
73
74
|
};
|
|
74
75
|
|
|
75
|
-
|
|
76
|
-
.
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
.catch(err => controller.error(err));
|
|
76
|
+
try {
|
|
77
|
+
const writeReturnChunk = await optionsArg.writeFunction(chunk, tools);
|
|
78
|
+
if (writeReturnChunk) { // return chunk is optional
|
|
79
|
+
controller.enqueue(writeReturnChunk);
|
|
80
|
+
}
|
|
81
|
+
} catch (err) {
|
|
82
|
+
controller.error(err);
|
|
83
|
+
}
|
|
84
84
|
} else {
|
|
85
85
|
controller.error(new Error('No write function provided'));
|
|
86
86
|
}
|