Compare commits

...

8 Commits

Author SHA1 Message Date
c8465b82be 3.0.44 2024-06-04 18:58:08 +02:00
b593e3a32c fix(core): update 2024-06-04 18:58:08 +02:00
a490f521ab 3.0.43 2024-06-03 15:29:15 +02:00
59027782dc fix(core): update 2024-06-03 15:29:14 +02:00
8c7dd7970c 3.0.42 2024-06-03 14:59:41 +02:00
22d18dc21f fix(core): update 2024-06-03 14:59:40 +02:00
1cb6f727af 3.0.41 2024-06-03 10:27:08 +02:00
824c44d165 fix(core): update 2024-06-03 10:27:07 +02:00
6 changed files with 48 additions and 4 deletions

View File

@ -1,6 +1,6 @@
{
"name": "@push.rocks/smartstream",
"version": "3.0.40",
"version": "3.0.44",
"private": false,
"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.",
"type": "module",

View File

@ -3,6 +3,6 @@
*/
export const commitinfo = {
name: '@push.rocks/smartstream',
version: '3.0.40',
version: '3.0.44',
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.'
}

View File

@ -1,3 +1,8 @@
import { stream } from './smartstream.plugins.js';
export {
stream,
}
export * from './smartstream.classes.smartduplex.js';
export * from './smartstream.classes.streamwrapper.js';
export * from './smartstream.classes.streamintake.js';

View File

@ -158,7 +158,7 @@ export class SmartDuplex<TInput = any, TOutput = any> extends Duplex {
callback();
}
public getWebStreams(): { readable: ReadableStream, writable: WritableStream } {
public async getWebStreams(): Promise<{ readable: ReadableStream, writable: WritableStream }> {
const duplex = this;
const readable = new ReadableStream({
start(controller) {

View File

@ -1,6 +1,45 @@
import * as plugins from './smartstream.plugins.js';
export class StreamIntake<T> extends plugins.stream.Readable {
// STATIC
public static async fromStream<U>(inputStream: plugins.stream.Readable | ReadableStream, options?: plugins.stream.ReadableOptions): Promise<StreamIntake<U>> {
const intakeStream = new StreamIntake<U>(options);
if (inputStream instanceof plugins.stream.Readable) {
inputStream.on('data', (chunk: U) => {
intakeStream.pushData(chunk);
});
inputStream.on('end', () => {
intakeStream.signalEnd();
});
inputStream.on('error', (err: Error) => {
intakeStream.destroy(err);
});
} else {
const reader = (inputStream as ReadableStream).getReader();
const readChunk = () => {
reader.read().then(({ done, value }) => {
if (done) {
intakeStream.signalEnd();
} else {
intakeStream.pushData(value);
readChunk();
}
}).catch((err) => {
intakeStream.destroy(err);
});
};
readChunk();
}
return intakeStream;
}
// INSTANCE
private signalEndBoolean = false;
private chunkStore: T[] = [];
public pushNextObservable = new plugins.smartrx.ObservableIntake<any>();

View File

@ -3,6 +3,6 @@
*/
export const commitinfo = {
name: '@push.rocks/smartstream',
version: '3.0.40',
version: '3.0.44',
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.'
}