@push.rocks/smartstream 3.0.5 → 3.0.7

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.5',
6
+ version: '3.0.7',
7
7
  description: 'simplifies access to node streams'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx5QkFBeUI7SUFDL0IsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLG1DQUFtQztDQUNqRCxDQUFBIn0=
@@ -2,3 +2,4 @@ export * from './smartstream.classes.passthrough.js';
2
2
  export * from './smartstream.classes.smartduplex.js';
3
3
  export * from './smartstream.classes.streamwrapper.js';
4
4
  export * from './smartstream.classes.streamintake.js';
5
+ export * from './smartstream.functions.js';
package/dist_ts/index.js CHANGED
@@ -2,4 +2,5 @@ export * from './smartstream.classes.passthrough.js';
2
2
  export * from './smartstream.classes.smartduplex.js';
3
3
  export * from './smartstream.classes.streamwrapper.js';
4
4
  export * from './smartstream.classes.streamintake.js';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHVDQUF1QyxDQUFDIn0=
5
+ export * from './smartstream.functions.js';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHVDQUF1QyxDQUFDO0FBRXRELGNBQWMsNEJBQTRCLENBQUEifQ==
@@ -11,8 +11,10 @@ export class PassThrough extends plugins.stream.Duplex {
11
11
  callback();
12
12
  }
13
13
  else {
14
- this.once('drain', callback);
14
+ this.once('drain', () => {
15
+ callback();
16
+ });
15
17
  }
16
18
  }
17
19
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzdHJlYW0uY2xhc3Nlcy5wYXNzdGhyb3VnaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0c3RyZWFtLmNsYXNzZXMucGFzc3Rocm91Z2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUVwRCxNQUFNLE9BQU8sV0FBWSxTQUFRLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTTtJQUNwRCxZQUFZLE9BQXNDO1FBQ2hELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQVk7UUFDaEIsbUVBQW1FO0lBQ3JFLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBVSxFQUFFLFFBQXdCLEVBQUUsUUFBd0M7UUFDbkYsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsRUFBRTtZQUM5QixRQUFRLEVBQUUsQ0FBQztTQUNaO2FBQU07WUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztTQUM5QjtJQUNILENBQUM7Q0FDRiJ9
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzdHJlYW0uY2xhc3Nlcy5wYXNzdGhyb3VnaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0c3RyZWFtLmNsYXNzZXMucGFzc3Rocm91Z2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUVwRCxNQUFNLE9BQU8sV0FBWSxTQUFRLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTTtJQUNwRCxZQUFZLE9BQXNDO1FBQ2hELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQVk7UUFDaEIsbUVBQW1FO0lBQ3JFLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBVSxFQUFFLFFBQXdCLEVBQUUsUUFBd0M7UUFDbkYsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsRUFBRTtZQUM5QixRQUFRLEVBQUUsQ0FBQztTQUNaO2FBQU07WUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0JBQ3RCLFFBQVEsRUFBRSxDQUFDO1lBQ2IsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7Q0FDRiJ9
@@ -0,0 +1,6 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { Transform, type TransformOptions } from 'stream';
3
+ export interface AsyncTransformFunction<TInput, TOutput> {
4
+ (chunkArg: TInput): Promise<TOutput>;
5
+ }
6
+ export declare function createTransformFunction<TInput, TOutput>(asyncFunction: AsyncTransformFunction<TInput, TOutput>, options?: TransformOptions): Transform;
@@ -0,0 +1,19 @@
1
+ import { Transform } from 'stream';
2
+ export function createTransformFunction(asyncFunction, options) {
3
+ const transformStream = new Transform({
4
+ ...options,
5
+ objectMode: true,
6
+ async transform(chunk, encoding, callback) {
7
+ try {
8
+ const transformed = await asyncFunction(chunk);
9
+ this.push(transformed);
10
+ callback();
11
+ }
12
+ catch (error) {
13
+ callback(error instanceof Error ? error : new Error(String(error)));
14
+ }
15
+ }
16
+ });
17
+ return transformStream;
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzdHJlYW0uZnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRzdHJlYW0uZnVuY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWlELE1BQU0sUUFBUSxDQUFDO0FBTWxGLE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsYUFBc0QsRUFDdEQsT0FBMEI7SUFFMUIsTUFBTSxlQUFlLEdBQUcsSUFBSSxTQUFTLENBQUM7UUFDcEMsR0FBRyxPQUFPO1FBQ1YsVUFBVSxFQUFFLElBQUk7UUFDaEIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFhLEVBQUUsUUFBZ0IsRUFBRSxRQUEyQjtZQUMxRSxJQUFJO2dCQUNGLE1BQU0sV0FBVyxHQUFHLE1BQU0sYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUN2QixRQUFRLEVBQUUsQ0FBQzthQUNaO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ2QsUUFBUSxDQUFDLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNyRTtRQUNILENBQUM7S0FDRixDQUFDLENBQUM7SUFFSCxPQUFPLGVBQWUsQ0FBQztBQUN6QixDQUFDIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@push.rocks/smartstream",
3
- "version": "3.0.5",
3
+ "version": "3.0.7",
4
4
  "private": false,
5
5
  "description": "simplifies access to node streams",
6
6
  "main": "dist_ts/index.js",
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@push.rocks/smartstream',
6
- version: '3.0.5',
6
+ version: '3.0.7',
7
7
  description: 'simplifies access to node streams'
8
8
  }
package/ts/index.ts CHANGED
@@ -2,3 +2,5 @@ export * from './smartstream.classes.passthrough.js';
2
2
  export * from './smartstream.classes.smartduplex.js';
3
3
  export * from './smartstream.classes.streamwrapper.js';
4
4
  export * from './smartstream.classes.streamintake.js';
5
+
6
+ export * from './smartstream.functions.js'
@@ -13,7 +13,9 @@ export class PassThrough extends plugins.stream.Duplex {
13
13
  if (this.push(chunk, encoding)) {
14
14
  callback();
15
15
  } else {
16
- this.once('drain', callback);
16
+ this.once('drain', () => {
17
+ callback();
18
+ });
17
19
  }
18
20
  }
19
21
  }
@@ -0,0 +1,26 @@
1
+ import { Transform, type TransformCallback, type TransformOptions } from 'stream';
2
+
3
+ export interface AsyncTransformFunction<TInput, TOutput> {
4
+ (chunkArg: TInput): Promise<TOutput>;
5
+ }
6
+
7
+ export function createTransformFunction<TInput, TOutput>(
8
+ asyncFunction: AsyncTransformFunction<TInput, TOutput>,
9
+ options?: TransformOptions
10
+ ): Transform {
11
+ const transformStream = new Transform({
12
+ ...options,
13
+ objectMode: true, // Ensure we operate in object mode
14
+ async transform(chunk: TInput, encoding: string, callback: TransformCallback) {
15
+ try {
16
+ const transformed = await asyncFunction(chunk);
17
+ this.push(transformed);
18
+ callback();
19
+ } catch (error) {
20
+ callback(error instanceof Error ? error : new Error(String(error)));
21
+ }
22
+ }
23
+ });
24
+
25
+ return transformStream;
26
+ }