@push.rocks/smartstream 3.0.17 → 3.0.19
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.js +1 -1
- package/dist_ts/smartstream.classes.smartduplex.d.ts +2 -3
- package/dist_ts/smartstream.classes.smartduplex.js +30 -21
- package/dist_ts/smartstream.plugins.d.ts +2 -1
- package/dist_ts/smartstream.plugins.js +3 -2
- package/package.json +3 -1
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/smartstream.classes.smartduplex.ts +27 -19
- package/ts/smartstream.plugins.ts +2 -1
|
@@ -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.19',
|
|
7
7
|
description: 'simplifies access to node streams'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx5QkFBeUI7SUFDL0IsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLG1DQUFtQztDQUNqRCxDQUFBIn0=
|
|
@@ -29,8 +29,7 @@ export declare class SmartDuplex<TInput = any, TOutput = any> extends Duplex {
|
|
|
29
29
|
private observableSubscription?;
|
|
30
30
|
constructor(optionsArg?: ISmartDuplexOptions<TInput, TOutput>);
|
|
31
31
|
_read(size: number): Promise<void>;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
_write(chunk: TInput, encoding: string, callback: (error?: Error | null) => void): Promise<boolean | void>;
|
|
32
|
+
private asyncWritePromiseObjectmap;
|
|
33
|
+
_write(chunk: TInput, encoding: string, callback: (error?: Error | null) => void): Promise<void>;
|
|
35
34
|
_final(callback: (error?: Error | null) => void): Promise<void>;
|
|
36
35
|
}
|
|
@@ -75,7 +75,7 @@ export class SmartDuplex extends Duplex {
|
|
|
75
75
|
}
|
|
76
76
|
constructor(optionsArg) {
|
|
77
77
|
super(optionsArg);
|
|
78
|
-
this.
|
|
78
|
+
this.asyncWritePromiseObjectmap = new plugins.lik.ObjectMap();
|
|
79
79
|
this.readFunction = optionsArg?.readFunction;
|
|
80
80
|
this.writeFunction = optionsArg?.writeFunction;
|
|
81
81
|
this.finalFunction = optionsArg?.finalFunction;
|
|
@@ -86,19 +86,6 @@ export class SmartDuplex extends Duplex {
|
|
|
86
86
|
await this.readFunction();
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
push(chunkArg) {
|
|
90
|
-
const result = super.push(chunkArg);
|
|
91
|
-
if (!result && this.handleBackpressure) {
|
|
92
|
-
this.notBackpressured = false;
|
|
93
|
-
this.pause();
|
|
94
|
-
// Listen for 'drain' event to resume
|
|
95
|
-
this.once('drain', () => {
|
|
96
|
-
this.notBackpressured = true;
|
|
97
|
-
this.resume(); // Resume the source of data
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
return result;
|
|
101
|
-
}
|
|
102
89
|
// Ensure the _write method types the chunk as TInput and encodes TOutput
|
|
103
90
|
async _write(chunk, encoding, callback) {
|
|
104
91
|
if (!this.writeFunction) {
|
|
@@ -112,18 +99,41 @@ export class SmartDuplex extends Duplex {
|
|
|
112
99
|
push: (pushArg) => this.push(pushArg),
|
|
113
100
|
};
|
|
114
101
|
try {
|
|
102
|
+
const writeDeferred = plugins.smartpromise.defer();
|
|
103
|
+
this.asyncWritePromiseObjectmap.add(writeDeferred.promise);
|
|
115
104
|
const modifiedChunk = await this.writeFunction(chunk, tools);
|
|
116
105
|
if (modifiedChunk) {
|
|
117
|
-
|
|
106
|
+
const drainDeferred = plugins.smartpromise.defer();
|
|
107
|
+
this.once('drain', () => {
|
|
108
|
+
drainDeferred.resolve();
|
|
109
|
+
});
|
|
110
|
+
const canPushMore = this.push(modifiedChunk);
|
|
111
|
+
if (!canPushMore) {
|
|
112
|
+
await drainDeferred.promise;
|
|
113
|
+
console.log('jojojo');
|
|
114
|
+
callback();
|
|
115
|
+
writeDeferred.resolve();
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
callback();
|
|
119
|
+
writeDeferred.resolve();
|
|
120
|
+
}
|
|
118
121
|
}
|
|
119
|
-
|
|
122
|
+
else {
|
|
123
|
+
callback();
|
|
124
|
+
writeDeferred.resolve();
|
|
125
|
+
}
|
|
126
|
+
writeDeferred.resolve();
|
|
127
|
+
writeDeferred.promise.then(() => {
|
|
128
|
+
this.asyncWritePromiseObjectmap.remove(writeDeferred.promise);
|
|
129
|
+
});
|
|
120
130
|
}
|
|
121
131
|
catch (err) {
|
|
122
132
|
callback(err);
|
|
123
133
|
}
|
|
124
|
-
return this.notBackpressured;
|
|
125
134
|
}
|
|
126
135
|
async _final(callback) {
|
|
136
|
+
await Promise.all(this.asyncWritePromiseObjectmap.getArray());
|
|
127
137
|
if (this.finalFunction) {
|
|
128
138
|
const tools = {
|
|
129
139
|
truncate: () => callback(),
|
|
@@ -136,14 +146,13 @@ export class SmartDuplex extends Duplex {
|
|
|
136
146
|
}
|
|
137
147
|
}
|
|
138
148
|
catch (err) {
|
|
149
|
+
this.push(null);
|
|
139
150
|
callback(err);
|
|
151
|
+
return;
|
|
140
152
|
}
|
|
141
153
|
}
|
|
142
|
-
else {
|
|
143
|
-
// nothing here
|
|
144
|
-
}
|
|
145
154
|
this.push(null);
|
|
146
155
|
callback();
|
|
147
156
|
}
|
|
148
157
|
}
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzdHJlYW0uY2xhc3Nlcy5zbWFydGR1cGxleC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0c3RyZWFtLmNsYXNzZXMuc21hcnRkdXBsZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFzQixNQUFNLFFBQVEsQ0FBQztBQXVCcEQsTUFBTSxPQUFPLFdBQXlDLFNBQVEsTUFBTTtJQUNsRSxTQUFTO0lBQ1QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFjLEVBQUUsT0FBdUM7UUFDdkUsTUFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0MsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDcEIsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN6QixXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsNkJBQTZCO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQ25CLFVBQWdELEVBQ2hELE9BQXVDO1FBRXZDLE1BQU0sV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLFdBQVcsQ0FBQyxzQkFBc0IsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDO1lBQ3hELElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNiLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRTtvQkFDN0Qsb0RBQW9EO29CQUNwRCxXQUFXLENBQUMsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLENBQUM7b0JBQ2xELFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcs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
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as stream from 'stream';
|
|
2
2
|
export { stream };
|
|
3
|
+
import * as lik from '@push.rocks/lik';
|
|
3
4
|
import * as smartpromise from '@push.rocks/smartpromise';
|
|
4
5
|
import * as smartrx from '@push.rocks/smartrx';
|
|
5
|
-
export { smartpromise, smartrx };
|
|
6
|
+
export { lik, smartpromise, smartrx };
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
import * as stream from 'stream';
|
|
3
3
|
export { stream };
|
|
4
4
|
// pushrocks scope
|
|
5
|
+
import * as lik from '@push.rocks/lik';
|
|
5
6
|
import * as smartpromise from '@push.rocks/smartpromise';
|
|
6
7
|
import * as smartrx from '@push.rocks/smartrx';
|
|
7
|
-
export { smartpromise, smartrx };
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
export { lik, smartpromise, smartrx };
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzdHJlYW0ucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0c3RyZWFtLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYztBQUNkLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRWpDLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUVsQixrQkFBa0I7QUFDbEIsT0FBTyxLQUFLLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEtBQUssWUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxPQUFPLE1BQU0scUJBQXFCLENBQUM7QUFFL0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLENBQUMifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@push.rocks/smartstream",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.19",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "simplifies access to node streams",
|
|
6
6
|
"main": "dist_ts/index.js",
|
|
@@ -25,11 +25,13 @@
|
|
|
25
25
|
"@git.zone/tsbuild": "^2.1.66",
|
|
26
26
|
"@git.zone/tsrun": "^1.2.44",
|
|
27
27
|
"@git.zone/tstest": "^1.0.84",
|
|
28
|
+
"@push.rocks/smartdelay": "^3.0.5",
|
|
28
29
|
"@push.rocks/smartfile": "^11.0.0",
|
|
29
30
|
"@push.rocks/tapbundle": "^5.0.15",
|
|
30
31
|
"@types/node": "^20.9.0"
|
|
31
32
|
},
|
|
32
33
|
"dependencies": {
|
|
34
|
+
"@push.rocks/lik": "^6.0.6",
|
|
33
35
|
"@push.rocks/smartpromise": "^4.0.3",
|
|
34
36
|
"@push.rocks/smartrx": "^3.0.7"
|
|
35
37
|
},
|
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -129,20 +129,7 @@ export class SmartDuplex<TInput = any, TOutput = any> extends Duplex {
|
|
|
129
129
|
}
|
|
130
130
|
}
|
|
131
131
|
|
|
132
|
-
|
|
133
|
-
public push(chunkArg?: TOutput | null): boolean {
|
|
134
|
-
const result = super.push(chunkArg);
|
|
135
|
-
if (!result && this.handleBackpressure) {
|
|
136
|
-
this.notBackpressured = false;
|
|
137
|
-
this.pause();
|
|
138
|
-
// Listen for 'drain' event to resume
|
|
139
|
-
this.once('drain', () => {
|
|
140
|
-
this.notBackpressured = true;
|
|
141
|
-
this.resume(); // Resume the source of data
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
return result;
|
|
145
|
-
}
|
|
132
|
+
private asyncWritePromiseObjectmap = new plugins.lik.ObjectMap<Promise<any>>();
|
|
146
133
|
|
|
147
134
|
// Ensure the _write method types the chunk as TInput and encodes TOutput
|
|
148
135
|
public async _write(chunk: TInput, encoding: string, callback: (error?: Error | null) => void) {
|
|
@@ -159,18 +146,39 @@ export class SmartDuplex<TInput = any, TOutput = any> extends Duplex {
|
|
|
159
146
|
};
|
|
160
147
|
|
|
161
148
|
try {
|
|
149
|
+
const writeDeferred = plugins.smartpromise.defer();
|
|
150
|
+
this.asyncWritePromiseObjectmap.add(writeDeferred.promise);
|
|
162
151
|
const modifiedChunk = await this.writeFunction(chunk, tools);
|
|
163
152
|
if (modifiedChunk) {
|
|
164
|
-
|
|
153
|
+
const drainDeferred = plugins.smartpromise.defer();
|
|
154
|
+
this.once('drain', () => {
|
|
155
|
+
drainDeferred.resolve();
|
|
156
|
+
});
|
|
157
|
+
const canPushMore = this.push(modifiedChunk);
|
|
158
|
+
if (!canPushMore) {
|
|
159
|
+
await drainDeferred.promise;
|
|
160
|
+
console.log('jojojo');
|
|
161
|
+
callback();
|
|
162
|
+
writeDeferred.resolve();
|
|
163
|
+
} else {
|
|
164
|
+
callback();
|
|
165
|
+
writeDeferred.resolve();
|
|
166
|
+
}
|
|
167
|
+
} else {
|
|
168
|
+
callback();
|
|
169
|
+
writeDeferred.resolve();
|
|
165
170
|
}
|
|
166
|
-
|
|
171
|
+
writeDeferred.resolve();
|
|
172
|
+
writeDeferred.promise.then(() => {
|
|
173
|
+
this.asyncWritePromiseObjectmap.remove(writeDeferred.promise);
|
|
174
|
+
});
|
|
167
175
|
} catch (err) {
|
|
168
176
|
callback(err);
|
|
169
177
|
}
|
|
170
|
-
return this.notBackpressured;
|
|
171
178
|
}
|
|
172
179
|
|
|
173
180
|
public async _final(callback: (error?: Error | null) => void) {
|
|
181
|
+
await Promise.all(this.asyncWritePromiseObjectmap.getArray());
|
|
174
182
|
if (this.finalFunction) {
|
|
175
183
|
const tools: IStreamTools = {
|
|
176
184
|
truncate: () => callback(),
|
|
@@ -183,10 +191,10 @@ export class SmartDuplex<TInput = any, TOutput = any> extends Duplex {
|
|
|
183
191
|
this.push(finalChunk);
|
|
184
192
|
}
|
|
185
193
|
} catch (err) {
|
|
194
|
+
this.push(null);
|
|
186
195
|
callback(err);
|
|
196
|
+
return;
|
|
187
197
|
}
|
|
188
|
-
} else {
|
|
189
|
-
// nothing here
|
|
190
198
|
}
|
|
191
199
|
this.push(null);
|
|
192
200
|
callback();
|
|
@@ -4,8 +4,9 @@ import * as stream from 'stream';
|
|
|
4
4
|
export { stream };
|
|
5
5
|
|
|
6
6
|
// pushrocks scope
|
|
7
|
+
import * as lik from '@push.rocks/lik';
|
|
7
8
|
import * as smartpromise from '@push.rocks/smartpromise';
|
|
8
9
|
import * as smartrx from '@push.rocks/smartrx';
|
|
9
10
|
|
|
10
|
-
export { smartpromise, smartrx };
|
|
11
|
+
export { lik, smartpromise, smartrx };
|
|
11
12
|
|