Compare commits

..

6 Commits

Author SHA1 Message Date
d9d96b8bb7 3.0.34 2024-03-16 18:29:45 +01:00
a961eea431 fix(core): update 2024-03-16 18:29:44 +01:00
edb58ade28 3.0.33 2024-02-29 12:15:01 +01:00
753a481765 fix(core): update 2024-02-29 12:15:00 +01:00
bbbd1b73b9 3.0.32 2024-02-25 20:14:33 +01:00
271d0be106 fix(core): update 2024-02-25 20:14:33 +01:00
6 changed files with 386 additions and 1222 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "@push.rocks/smartstream", "name": "@push.rocks/smartstream",
"version": "3.0.31", "version": "3.0.34",
"private": false, "private": false,
"description": "simplifies access to node streams", "description": "simplifies access to node streams",
"main": "dist_ts/index.js", "main": "dist_ts/index.js",
@ -24,10 +24,10 @@
"devDependencies": { "devDependencies": {
"@git.zone/tsbuild": "^2.1.72", "@git.zone/tsbuild": "^2.1.72",
"@git.zone/tsrun": "^1.2.44", "@git.zone/tsrun": "^1.2.44",
"@git.zone/tstest": "^1.0.86", "@git.zone/tstest": "^1.0.88",
"@push.rocks/smartfile": "^11.0.4", "@push.rocks/smartfile": "^11.0.4",
"@push.rocks/tapbundle": "^5.0.15", "@push.rocks/tapbundle": "^5.0.17",
"@types/node": "^20.11.20" "@types/node": "^20.11.28"
}, },
"dependencies": { "dependencies": {
"@push.rocks/lik": "^6.0.14", "@push.rocks/lik": "^6.0.14",

1580
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -44,7 +44,4 @@ hi+wow
hi+wow hi+wow
hi+wow hi+wow
hi+wow hi+wow
hi+wow hi
hi+wow
hi+wow
hi+wow

View File

@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@push.rocks/smartstream', name: '@push.rocks/smartstream',
version: '3.0.31', version: '3.0.34',
description: 'simplifies access to node streams' description: 'simplifies access to node streams'
} }

View File

@ -3,7 +3,7 @@ import { Duplex, type DuplexOptions } from 'stream';
export interface IStreamTools { export interface IStreamTools {
truncate: () => void; truncate: () => void;
push: (pipeObject: any) => Promise<void>; push: (pipeObject: any) => Promise<boolean>;
} }
export interface IStreamWriteFunction<T, rT> { export interface IStreamWriteFunction<T, rT> {
@ -34,11 +34,11 @@ export interface ISmartDuplexOptions<TInput, TOutput> extends DuplexOptions {
* it can push or return chunks (but does not have to) to be written to the readable side of the stream * it can push or return chunks (but does not have to) to be written to the readable side of the stream
*/ */
writeFunction?: IStreamWriteFunction<TInput, TOutput>; writeFunction?: IStreamWriteFunction<TInput, TOutput>;
/** /**
* a final function that is being sent to the end of the stream * a final function that is run at the end of the stream
*/ */
finalFunction?: IStreamFinalFunction<TOutput>; finalFunction?: IStreamFinalFunction<TOutput>;
// Add other custom options if necessary
} }
export class SmartDuplex<TInput = any, TOutput = any> extends Duplex { export class SmartDuplex<TInput = any, TOutput = any> extends Duplex {
@ -91,6 +91,7 @@ export class SmartDuplex<TInput = any, TOutput = any> extends Duplex {
await this.backpressuredArray.waitForSpace(); await this.backpressuredArray.waitForSpace();
this.debugLog(`${this.options.name}: can push more again`); this.debugLog(`${this.options.name}: can push more again`);
} }
return canPushMore;
}; };
private asyncWritePromiseObjectmap = new plugins.lik.ObjectMap<Promise<any>>(); private asyncWritePromiseObjectmap = new plugins.lik.ObjectMap<Promise<any>>();
@ -108,7 +109,7 @@ export class SmartDuplex<TInput = any, TOutput = any> extends Duplex {
callback(); callback();
}, },
push: async (pushArg: TOutput) => { push: async (pushArg: TOutput) => {
await this.backpressuredPush(pushArg); return await this.backpressuredPush(pushArg);
} }
}; };
@ -138,7 +139,7 @@ export class SmartDuplex<TInput = any, TOutput = any> extends Duplex {
const tools: IStreamTools = { const tools: IStreamTools = {
truncate: () => callback(), truncate: () => callback(),
push: async (pipeObject) => { push: async (pipeObject) => {
this.backpressuredArray.push(pipeObject); return this.backpressuredArray.push(pipeObject);
}, },
}; };