@push.rocks/smartstream 3.0.45 → 3.1.0
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 +2 -2
- package/dist_ts/index.d.ts +2 -0
- package/dist_ts/index.js +3 -1
- package/dist_ts/smartstream.nodewebhelpers.d.ts +7 -0
- package/dist_ts/smartstream.nodewebhelpers.js +31 -0
- package/dist_ts_web/00_commitinfo_data.js +2 -2
- package/dist_ts_web/classes.webduplexstream.js +9 -8
- package/package.json +1 -1
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/index.ts +4 -0
- package/ts/smartstream.nodewebhelpers.ts +34 -0
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/classes.webduplexstream.ts +9 -9
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartstream',
|
|
6
|
-
version: '3.0
|
|
6
|
+
version: '3.1.0',
|
|
7
7
|
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.'
|
|
8
8
|
};
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx5QkFBeUI7SUFDL0IsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLHNMQUFzTDtDQUNwTSxDQUFBIn0=
|
package/dist_ts/index.d.ts
CHANGED
|
@@ -6,3 +6,5 @@ export * from './smartstream.classes.streamintake.js';
|
|
|
6
6
|
export * from './smartstream.functions.js';
|
|
7
7
|
import * as plugins from './smartstream.plugins.js';
|
|
8
8
|
export declare const webstream: typeof plugins.webstream;
|
|
9
|
+
import * as nodewebhelpers from './smartstream.nodewebhelpers.js';
|
|
10
|
+
export { nodewebhelpers, };
|
package/dist_ts/index.js
CHANGED
|
@@ -6,4 +6,6 @@ export * from './smartstream.classes.streamintake.js';
|
|
|
6
6
|
export * from './smartstream.functions.js';
|
|
7
7
|
import * as plugins from './smartstream.plugins.js';
|
|
8
8
|
export const webstream = plugins.webstream;
|
|
9
|
-
|
|
9
|
+
import * as nodewebhelpers from './smartstream.nodewebhelpers.js';
|
|
10
|
+
export { nodewebhelpers, };
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEQsT0FBTyxFQUNMLE1BQU0sR0FDUCxDQUFBO0FBRUQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsdUNBQXVDLENBQUM7QUFFdEQsY0FBYyw0QkFBNEIsQ0FBQztBQUUzQyxPQUFPLEtBQUssT0FBTyxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO0FBQzNDLE9BQU8sS0FBSyxjQUFjLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUNMLGNBQWMsR0FDZixDQUFBIn0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a Web ReadableStream from a file.
|
|
3
|
+
*
|
|
4
|
+
* @param filePath - The path to the file to be read
|
|
5
|
+
* @returns A Web ReadableStream that reads the file in chunks
|
|
6
|
+
*/
|
|
7
|
+
export declare function createWebReadableStreamFromFile(filePath: string): ReadableStream<Uint8Array>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { createReadStream } from 'fs';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a Web ReadableStream from a file.
|
|
4
|
+
*
|
|
5
|
+
* @param filePath - The path to the file to be read
|
|
6
|
+
* @returns A Web ReadableStream that reads the file in chunks
|
|
7
|
+
*/
|
|
8
|
+
export function createWebReadableStreamFromFile(filePath) {
|
|
9
|
+
const fileStream = createReadStream(filePath);
|
|
10
|
+
return new ReadableStream({
|
|
11
|
+
start(controller) {
|
|
12
|
+
// When data is available, enqueue it into the Web ReadableStream
|
|
13
|
+
fileStream.on('data', (chunk) => {
|
|
14
|
+
controller.enqueue(chunk);
|
|
15
|
+
});
|
|
16
|
+
// When the file stream ends, close the Web ReadableStream
|
|
17
|
+
fileStream.on('end', () => {
|
|
18
|
+
controller.close();
|
|
19
|
+
});
|
|
20
|
+
// If there's an error, error the Web ReadableStream
|
|
21
|
+
fileStream.on('error', (err) => {
|
|
22
|
+
controller.error(err);
|
|
23
|
+
});
|
|
24
|
+
},
|
|
25
|
+
cancel() {
|
|
26
|
+
// If the Web ReadableStream is canceled, destroy the file stream
|
|
27
|
+
fileStream.destroy();
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzdHJlYW0ubm9kZXdlYmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydHN0cmVhbS5ub2Rld2ViaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFFdEM7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsK0JBQStCLENBQUMsUUFBZ0I7SUFDOUQsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFOUMsT0FBTyxJQUFJLGNBQWMsQ0FBQztRQUN4QixLQUFLLENBQUMsVUFBVTtZQUNkLGlFQUFpRTtZQUNqRSxVQUFVLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUM5QixVQUFVLENBQUMsT0FBTyxDQUFDLEtBQW1CLENBQUMsQ0FBQztZQUMxQyxDQUFDLENBQUMsQ0FBQztZQUVILDBEQUEwRDtZQUMxRCxVQUFVLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ3hCLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQixDQUFDLENBQUMsQ0FBQztZQUVILG9EQUFvRDtZQUNwRCxVQUFVLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUM3QixVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE1BQU07WUFDSixpRUFBaUU7WUFDakUsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3ZCLENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIn0=
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartstream',
|
|
6
|
-
version: '3.0
|
|
6
|
+
version: '3.1.0',
|
|
7
7
|
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.'
|
|
8
8
|
};
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUseUJBQXlCO0lBQy9CLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLFdBQVcsRUFBRSxzTEFBc0w7Q0FDcE0sQ0FBQSJ9
|
|
@@ -12,6 +12,7 @@ export class WebDuplexStream extends TransformStream {
|
|
|
12
12
|
return stream;
|
|
13
13
|
}
|
|
14
14
|
constructor(optionsArg) {
|
|
15
|
+
// here we call into the official web stream api
|
|
15
16
|
super({
|
|
16
17
|
async transform(chunk, controller) {
|
|
17
18
|
// Transformation logic remains unchanged
|
|
@@ -20,15 +21,15 @@ export class WebDuplexStream extends TransformStream {
|
|
|
20
21
|
truncate: () => controller.terminate(),
|
|
21
22
|
push: (pushArg) => controller.enqueue(pushArg),
|
|
22
23
|
};
|
|
23
|
-
|
|
24
|
-
.
|
|
25
|
-
|
|
26
|
-
// just in case the write function returns something other than void.
|
|
27
|
-
if (writeReturnChunk) {
|
|
24
|
+
try {
|
|
25
|
+
const writeReturnChunk = await optionsArg.writeFunction(chunk, tools);
|
|
26
|
+
if (writeReturnChunk) { // return chunk is optional
|
|
28
27
|
controller.enqueue(writeReturnChunk);
|
|
29
28
|
}
|
|
30
|
-
}
|
|
31
|
-
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
controller.error(err);
|
|
32
|
+
}
|
|
32
33
|
}
|
|
33
34
|
else {
|
|
34
35
|
controller.error(new Error('No write function provided'));
|
|
@@ -99,4 +100,4 @@ export class WebDuplexStream extends TransformStream {
|
|
|
99
100
|
return customReadable;
|
|
100
101
|
}
|
|
101
102
|
}
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy53ZWJkdXBsZXhzdHJlYW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c193ZWIvY2xhc3Nlcy53ZWJkdXBsZXhzdHJlYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUE4Q3hDLE1BQU0sT0FBTyxlQUE2QyxTQUFRLGVBQWdDO0lBQ2hHLE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBc0I7UUFDMUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQXlCO1lBQ3pELGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsZ0NBQWdDO2dCQUM3QyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7U0FDRixDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRXBELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFLRCxZQUFZLFVBQW1EO1FBQzdELGdEQUFnRDtRQUNoRCxLQUFLLENBQUM7WUFDSixLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxVQUFVO2dCQUMvQix5Q0FBeUM7Z0JBQ3pDLElBQUksVUFBVSxFQUFFLGFBQWEsRUFBRSxDQUFDO29CQUM5QixNQUFNLEtBQUssR0FBdUM7d0JBQ2hELFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFO3dCQUN0QyxJQUFJLEVBQUUsQ0FBQyxPQUFnQixFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztxQkFD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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@push.rocks/smartstream",
|
|
3
|
-
"version": "3.0
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"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.",
|
|
6
6
|
"type": "module",
|
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartstream',
|
|
6
|
-
version: '3.0
|
|
6
|
+
version: '3.1.0',
|
|
7
7
|
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.'
|
|
8
8
|
}
|
package/ts/index.ts
CHANGED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { createReadStream } from 'fs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Creates a Web ReadableStream from a file.
|
|
5
|
+
*
|
|
6
|
+
* @param filePath - The path to the file to be read
|
|
7
|
+
* @returns A Web ReadableStream that reads the file in chunks
|
|
8
|
+
*/
|
|
9
|
+
export function createWebReadableStreamFromFile(filePath: string): ReadableStream<Uint8Array> {
|
|
10
|
+
const fileStream = createReadStream(filePath);
|
|
11
|
+
|
|
12
|
+
return new ReadableStream({
|
|
13
|
+
start(controller) {
|
|
14
|
+
// When data is available, enqueue it into the Web ReadableStream
|
|
15
|
+
fileStream.on('data', (chunk) => {
|
|
16
|
+
controller.enqueue(chunk as Uint8Array);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
// When the file stream ends, close the Web ReadableStream
|
|
20
|
+
fileStream.on('end', () => {
|
|
21
|
+
controller.close();
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
// If there's an error, error the Web ReadableStream
|
|
25
|
+
fileStream.on('error', (err) => {
|
|
26
|
+
controller.error(err);
|
|
27
|
+
});
|
|
28
|
+
},
|
|
29
|
+
cancel() {
|
|
30
|
+
// If the Web ReadableStream is canceled, destroy the file stream
|
|
31
|
+
fileStream.destroy();
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartstream',
|
|
6
|
-
version: '3.0
|
|
6
|
+
version: '3.1.0',
|
|
7
7
|
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.'
|
|
8
8
|
}
|
|
@@ -63,6 +63,7 @@ export class WebDuplexStream<TInput = any, TOutput = any> extends TransformStrea
|
|
|
63
63
|
options: WebDuplexStreamOptions<TInput, TOutput>;
|
|
64
64
|
|
|
65
65
|
constructor(optionsArg: WebDuplexStreamOptions<TInput, TOutput>) {
|
|
66
|
+
// here we call into the official web stream api
|
|
66
67
|
super({
|
|
67
68
|
async transform(chunk, controller) {
|
|
68
69
|
// Transformation logic remains unchanged
|
|
@@ -72,15 +73,14 @@ export class WebDuplexStream<TInput = any, TOutput = any> extends TransformStrea
|
|
|
72
73
|
push: (pushArg: TOutput) => controller.enqueue(pushArg),
|
|
73
74
|
};
|
|
74
75
|
|
|
75
|
-
|
|
76
|
-
.
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
.catch(err => controller.error(err));
|
|
76
|
+
try {
|
|
77
|
+
const writeReturnChunk = await optionsArg.writeFunction(chunk, tools);
|
|
78
|
+
if (writeReturnChunk) { // return chunk is optional
|
|
79
|
+
controller.enqueue(writeReturnChunk);
|
|
80
|
+
}
|
|
81
|
+
} catch (err) {
|
|
82
|
+
controller.error(err);
|
|
83
|
+
}
|
|
84
84
|
} else {
|
|
85
85
|
controller.error(new Error('No write function provided'));
|
|
86
86
|
}
|