@push.rocks/smartstream 3.0.21 → 3.0.23
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.
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartstream',
|
|
6
|
-
version: '3.0.
|
|
6
|
+
version: '3.0.23',
|
|
7
7
|
description: 'simplifies access to node streams'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx5QkFBeUI7SUFDL0IsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLG1DQUFtQztDQUNqRCxDQUFBIn0=
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { Duplex, type DuplexOptions } from 'stream';
|
|
4
4
|
export interface IStreamTools {
|
|
5
5
|
truncate: () => void;
|
|
6
|
-
push: (pipeObject: any) => void
|
|
6
|
+
push: (pipeObject: any) => Promise<void>;
|
|
7
7
|
}
|
|
8
8
|
export interface IStreamWriteFunction<T, rT> {
|
|
9
9
|
(chunkArg: T, toolsArg: IStreamTools): Promise<rT>;
|
|
@@ -14,7 +14,6 @@ export interface IStreamFinalFunction<rT> {
|
|
|
14
14
|
export interface ISmartDuplexOptions<TInput, TOutput> extends DuplexOptions {
|
|
15
15
|
debug?: boolean;
|
|
16
16
|
name?: string;
|
|
17
|
-
handleBackpressure?: boolean;
|
|
18
17
|
readFunction?: () => Promise<void>;
|
|
19
18
|
writeFunction?: IStreamWriteFunction<TInput, TOutput>;
|
|
20
19
|
finalFunction?: IStreamFinalFunction<TOutput>;
|
|
@@ -49,8 +49,13 @@ export class SmartDuplex extends Duplex {
|
|
|
49
49
|
isTruncated = true;
|
|
50
50
|
callback();
|
|
51
51
|
},
|
|
52
|
-
push: (pushArg) => {
|
|
53
|
-
this.backpressuredArray.push(pushArg);
|
|
52
|
+
push: async (pushArg) => {
|
|
53
|
+
const canPushMore = this.backpressuredArray.push(pushArg);
|
|
54
|
+
if (!canPushMore) {
|
|
55
|
+
this.debugLog(`${this.options.name}: cannot push more`);
|
|
56
|
+
await this.backpressuredArray.waitForSpace();
|
|
57
|
+
this.debugLog(`${this.options.name}: can push more again`);
|
|
58
|
+
}
|
|
54
59
|
},
|
|
55
60
|
};
|
|
56
61
|
try {
|
|
@@ -61,12 +66,7 @@ export class SmartDuplex extends Duplex {
|
|
|
61
66
|
return;
|
|
62
67
|
}
|
|
63
68
|
if (modifiedChunk) {
|
|
64
|
-
|
|
65
|
-
if (!canPushMore) {
|
|
66
|
-
this.debugLog(`${this.options.name}: cannot push more`);
|
|
67
|
-
await this.backpressuredArray.waitForSpace();
|
|
68
|
-
this.debugLog(`${this.options.name}: can push more again`);
|
|
69
|
-
}
|
|
69
|
+
await tools.push(modifiedChunk);
|
|
70
70
|
}
|
|
71
71
|
callback();
|
|
72
72
|
writeDeferred.resolve();
|
|
@@ -83,7 +83,9 @@ export class SmartDuplex extends Duplex {
|
|
|
83
83
|
if (this.options.finalFunction) {
|
|
84
84
|
const tools = {
|
|
85
85
|
truncate: () => callback(),
|
|
86
|
-
push: (pipeObject) =>
|
|
86
|
+
push: async (pipeObject) => {
|
|
87
|
+
this.push(pipeObject);
|
|
88
|
+
},
|
|
87
89
|
};
|
|
88
90
|
try {
|
|
89
91
|
const finalChunk = await this.options.finalFunction(tools);
|
|
@@ -101,4 +103,4 @@ export class SmartDuplex extends Duplex {
|
|
|
101
103
|
callback();
|
|
102
104
|
}
|
|
103
105
|
}
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzdHJlYW0uY2xhc3Nlcy5zbWFydGR1cGxleC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0c3RyZWFtLmNsYXNzZXMuc21hcnRkdXBsZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFzQixNQUFNLFFBQVEsQ0FBQztBQXdCcEQsTUFBTSxPQUFPLFdBQXlDLFNBQVEsTUFBTTtJQUNsRSxTQUFTO0lBQ1QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFjLEVBQUUsT0FBdUM7UUFDdkUsTUFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0MsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDcEIsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN6QixXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsNkJBQTZCO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQU1PLFFBQVEsQ0FBQyxVQUFrQjtRQUNqQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRUQsWUFBWSxVQUFpRDtRQUMzRCxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFYcEIsV0FBVztRQUNILHVCQUFrQixHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBVyxDQUFDO1FBOEJuRSwrQkFBMEIsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFnQixDQUFDO1FBbkI3RSxJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztJQUM1QixDQUFDO0lBRU0sS0FB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
|
package/package.json
CHANGED
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { Duplex, type DuplexOptions } from 'stream';
|
|
|
3
3
|
|
|
4
4
|
export interface IStreamTools {
|
|
5
5
|
truncate: () => void;
|
|
6
|
-
push: (pipeObject: any) => void
|
|
6
|
+
push: (pipeObject: any) => Promise<void>;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
export interface IStreamWriteFunction<T, rT> {
|
|
@@ -17,7 +17,6 @@ export interface IStreamFinalFunction<rT> {
|
|
|
17
17
|
export interface ISmartDuplexOptions<TInput, TOutput> extends DuplexOptions {
|
|
18
18
|
debug?: boolean;
|
|
19
19
|
name?: string;
|
|
20
|
-
handleBackpressure?: boolean;
|
|
21
20
|
readFunction?: () => Promise<void>;
|
|
22
21
|
writeFunction?: IStreamWriteFunction<TInput, TOutput>;
|
|
23
22
|
finalFunction?: IStreamFinalFunction<TOutput>;
|
|
@@ -80,8 +79,13 @@ export class SmartDuplex<TInput = any, TOutput = any> extends Duplex {
|
|
|
80
79
|
isTruncated = true;
|
|
81
80
|
callback();
|
|
82
81
|
},
|
|
83
|
-
push: (pushArg: TOutput) => {
|
|
84
|
-
this.backpressuredArray.push(pushArg);
|
|
82
|
+
push: async (pushArg: TOutput) => {
|
|
83
|
+
const canPushMore = this.backpressuredArray.push(pushArg);
|
|
84
|
+
if (!canPushMore) {
|
|
85
|
+
this.debugLog(`${this.options.name}: cannot push more`);
|
|
86
|
+
await this.backpressuredArray.waitForSpace();
|
|
87
|
+
this.debugLog(`${this.options.name}: can push more again`);
|
|
88
|
+
}
|
|
85
89
|
},
|
|
86
90
|
};
|
|
87
91
|
|
|
@@ -93,12 +97,7 @@ export class SmartDuplex<TInput = any, TOutput = any> extends Duplex {
|
|
|
93
97
|
return;
|
|
94
98
|
}
|
|
95
99
|
if (modifiedChunk) {
|
|
96
|
-
|
|
97
|
-
if (!canPushMore) {
|
|
98
|
-
this.debugLog(`${this.options.name}: cannot push more`);
|
|
99
|
-
await this.backpressuredArray.waitForSpace();
|
|
100
|
-
this.debugLog(`${this.options.name}: can push more again`);
|
|
101
|
-
}
|
|
100
|
+
await tools.push(modifiedChunk);
|
|
102
101
|
}
|
|
103
102
|
callback();
|
|
104
103
|
writeDeferred.resolve();
|
|
@@ -115,7 +114,9 @@ export class SmartDuplex<TInput = any, TOutput = any> extends Duplex {
|
|
|
115
114
|
if (this.options.finalFunction) {
|
|
116
115
|
const tools: IStreamTools = {
|
|
117
116
|
truncate: () => callback(),
|
|
118
|
-
push: (pipeObject) =>
|
|
117
|
+
push: async (pipeObject) => {
|
|
118
|
+
this.push(pipeObject);
|
|
119
|
+
},
|
|
119
120
|
};
|
|
120
121
|
|
|
121
122
|
try {
|