@konker.dev/tiny-utils-fp 0.0.1 → 0.0.2
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/README.md +2 -37
- package/dist/array.d.ts +2 -0
- package/dist/array.js +11 -0
- package/dist/array.js.map +1 -0
- package/dist/{index.js → hash.js} +1 -1
- package/dist/hash.js.map +1 -0
- package/dist/stream/BufferWriteableStream.d.ts +26 -0
- package/dist/stream/BufferWriteableStream.js +44 -0
- package/dist/stream/BufferWriteableStream.js.map +1 -0
- package/dist/stream/BufferWriteableStream.test.d.ts +1 -0
- package/dist/stream/BufferWriteableStream.test.js +45 -0
- package/dist/stream/BufferWriteableStream.test.js.map +1 -0
- package/dist/stream/ChildProcessStreamPipe.d.ts +21 -0
- package/dist/stream/ChildProcessStreamPipe.js +97 -0
- package/dist/stream/ChildProcessStreamPipe.js.map +1 -0
- package/dist/stream/ChildProcessStreamPipe.test.d.ts +1 -0
- package/dist/stream/ChildProcessStreamPipe.test.js +95 -0
- package/dist/stream/ChildProcessStreamPipe.test.js.map +1 -0
- package/dist/stream/index.d.ts +20 -0
- package/dist/stream/index.js +110 -0
- package/dist/stream/index.js.map +1 -0
- package/dist/stream/index.test.d.ts +1 -0
- package/dist/stream/index.test.js +86 -0
- package/dist/stream/index.test.js.map +1 -0
- package/package.json +2 -2
- package/dist/index.js.map +0 -1
- /package/dist/{index.d.ts → hash.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -2,44 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
General utility functions for [Node.js](https://nodejs.org/) based on [Effect-TS](https://www.effect.website/)
|
|
4
4
|
|
|
5
|
+
FIXME: test coverage for `src/stream/ChildProcessStreamPipe.ts`
|
|
6
|
+
|
|
5
7
|

|
|
6
8
|
[](https://www.npmjs.com/package/@konker.dev/tiny-utils-fp)
|
|
7
9
|
[](https://github.com/konkerdotdev/tiny-utils-fp/actions/workflows/ci.yml)
|
|
8
10
|
[](https://codecov.io/gh/konkerdotdev/tiny-utils-fp)
|
|
9
|
-
|
|
10
|
-
## Usage
|
|
11
|
-
|
|
12
|
-
Copy the contents of this repo, and:
|
|
13
|
-
|
|
14
|
-
- Search and replace files for `YOUR_SRC_DIR_COULD_BE_DOT` and substitute for the desired source directory
|
|
15
|
-
- Edit package.json `staticFiles` property as needed
|
|
16
|
-
- Run `pnpm install`
|
|
17
|
-
- Run `git init`
|
|
18
|
-
- Run: `pnpm dlx husky-init && pnpm install`
|
|
19
|
-
- Replace this with your actual README.md
|
|
20
|
-
- Replace ISC.LICENSE as needed
|
|
21
|
-
- Amend .github/workflows/cd.yml to replace `PATH_TO_PACKAGE_JSON`
|
|
22
|
-
- Remember:
|
|
23
|
-
- README.md title / content
|
|
24
|
-
- package.json name
|
|
25
|
-
- package.json description
|
|
26
|
-
|
|
27
|
-
## For An Existing Project
|
|
28
|
-
|
|
29
|
-
- Copy the following. merging as necessary:
|
|
30
|
-
- .editorconfig
|
|
31
|
-
- .eslintignore
|
|
32
|
-
- .eslintrc.json
|
|
33
|
-
- .madgerc
|
|
34
|
-
- .nvmrc
|
|
35
|
-
- .prettierignore
|
|
36
|
-
- .prettierrc
|
|
37
|
-
- gulpfile.mjs
|
|
38
|
-
- jest.config.ts
|
|
39
|
-
- Replaces jest.config.js if applicable
|
|
40
|
-
- tsconfig.json
|
|
41
|
-
- Search and replace for `YOUR_SRC_DIR_COULD_BE_DOT`
|
|
42
|
-
- Merge .gitignore
|
|
43
|
-
- Copy over dev dependencies not already present
|
|
44
|
-
- Copy over dependencies not already present
|
|
45
|
-
- LICENSE
|
package/dist/array.d.ts
ADDED
package/dist/array.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stringToUint8Array = stringToUint8Array;
|
|
4
|
+
exports.arrayBufferToString = arrayBufferToString;
|
|
5
|
+
function stringToUint8Array(s) {
|
|
6
|
+
return new TextEncoder().encode(String(s));
|
|
7
|
+
}
|
|
8
|
+
function arrayBufferToString(a) {
|
|
9
|
+
return new TextDecoder('utf-8').decode(a);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=array.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array.js","sourceRoot":"","sources":["../src/array.ts"],"names":[],"mappings":";;AAAA,gDAEC;AAED,kDAEC;AAND,SAAgB,kBAAkB,CAAC,CAAkB;IACnD,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAgB,mBAAmB,CAAC,CAAc;IAChD,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC"}
|
package/dist/hash.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAmD;AAEnD,4DAA6D;AAC7D,8DAAiC;AAE1B,MAAM,MAAM,GAAG,CAAC,CAAS,EAAkC,EAAE,CAClE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IACX,GAAG,EAAE,GAAG,EAAE,CAAC,qBAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IAC3D,KAAK,EAAE,aAAO;CACf,CAAC,CAAC;AAJQ,QAAA,MAAM,UAId;AAEE,MAAM,SAAS,GAAG,CAAC,CAAS,EAAkC,EAAE,CACrE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IACX,GAAG,EAAE,GAAG,EAAE,CAAC,qBAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IAC9D,KAAK,EAAE,aAAO;CACf,CAAC,CAAC;AAJQ,QAAA,SAAS,aAIjB;AAEE,MAAM,aAAa,GAAG,CAAC,CAAS,EAAE,MAAc,EAAkC,EAAE,CACzF,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IACX,GAAG,EAAE,GAAG,EAAE,CAAC,qBAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IACtE,KAAK,EAAE,aAAO;CACf,CAAC,CAAC;AAJQ,QAAA,aAAa,iBAIrB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Writable } from 'node:stream';
|
|
2
|
+
/**
|
|
3
|
+
* Simplistic implementation of a Writeable which stores the data in a Buffer
|
|
4
|
+
* The contents can be extracted as a Buffer or as a UTF-8 string.
|
|
5
|
+
*
|
|
6
|
+
* Mainly useful for testing stream based code. If something like this is
|
|
7
|
+
* needed for production use, consider a more comprehensive/optimized
|
|
8
|
+
* implementation such as: https://github.com/samcday/node-stream-buffer
|
|
9
|
+
*/
|
|
10
|
+
export declare class BufferWriteableStream extends Writable {
|
|
11
|
+
readonly bufferList: Array<Buffer>;
|
|
12
|
+
constructor();
|
|
13
|
+
_write(chunk: never, _encoding: BufferEncoding, callback: (error?: Error | null) => void): void;
|
|
14
|
+
/**
|
|
15
|
+
* Get the current size of the data in the buffer
|
|
16
|
+
*/
|
|
17
|
+
get size(): number;
|
|
18
|
+
/**
|
|
19
|
+
* Get the underlying buffer for this stream
|
|
20
|
+
*/
|
|
21
|
+
get buffer(): Buffer;
|
|
22
|
+
/**
|
|
23
|
+
* Get the contents of the buffer as a UTF-8 string
|
|
24
|
+
*/
|
|
25
|
+
get string(): string;
|
|
26
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BufferWriteableStream = void 0;
|
|
4
|
+
/* eslint-disable fp/no-class,fp/no-unused-expression,fp/no-nil,fp/no-mutating-methods,fp/no-this,fp/no-mutation */
|
|
5
|
+
const node_stream_1 = require("node:stream");
|
|
6
|
+
/**
|
|
7
|
+
* Simplistic implementation of a Writeable which stores the data in a Buffer
|
|
8
|
+
* The contents can be extracted as a Buffer or as a UTF-8 string.
|
|
9
|
+
*
|
|
10
|
+
* Mainly useful for testing stream based code. If something like this is
|
|
11
|
+
* needed for production use, consider a more comprehensive/optimized
|
|
12
|
+
* implementation such as: https://github.com/samcday/node-stream-buffer
|
|
13
|
+
*/
|
|
14
|
+
class BufferWriteableStream extends node_stream_1.Writable {
|
|
15
|
+
bufferList;
|
|
16
|
+
constructor() {
|
|
17
|
+
super();
|
|
18
|
+
this.bufferList = [];
|
|
19
|
+
}
|
|
20
|
+
_write(chunk, _encoding, callback) {
|
|
21
|
+
this.bufferList.push(Buffer.from(chunk));
|
|
22
|
+
callback();
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Get the current size of the data in the buffer
|
|
26
|
+
*/
|
|
27
|
+
get size() {
|
|
28
|
+
return this.bufferList.reduce((acc, val) => acc + val.length, 0);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get the underlying buffer for this stream
|
|
32
|
+
*/
|
|
33
|
+
get buffer() {
|
|
34
|
+
return Buffer.concat(this.bufferList);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get the contents of the buffer as a UTF-8 string
|
|
38
|
+
*/
|
|
39
|
+
get string() {
|
|
40
|
+
return this.buffer.toString('utf8');
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.BufferWriteableStream = BufferWriteableStream;
|
|
44
|
+
//# sourceMappingURL=BufferWriteableStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BufferWriteableStream.js","sourceRoot":"","sources":["../../src/stream/BufferWriteableStream.ts"],"names":[],"mappings":";;;AAAA,mHAAmH;AACnH,6CAAuC;AAEvC;;;;;;;GAOG;AACH,MAAa,qBAAsB,SAAQ,sBAAQ;IACxC,UAAU,CAAgB;IAEnC;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACvB,CAAC;IAEQ,MAAM,CAAC,KAAY,EAAE,SAAyB,EAAE,QAAwC;QAC/F,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,QAAQ,EAAE,CAAC;IACb,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;CACF;AAjCD,sDAiCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const unit = __importStar(require("./BufferWriteableStream"));
|
|
27
|
+
describe('BufferWriteableStream', () => {
|
|
28
|
+
const TEST_STRING_1 = 'hoi noi broin coi';
|
|
29
|
+
const TEST_STRING_2 = 'three blind mice';
|
|
30
|
+
it('should work as expected', () => {
|
|
31
|
+
const actual = new unit.BufferWriteableStream();
|
|
32
|
+
actual.write(TEST_STRING_1);
|
|
33
|
+
actual.end();
|
|
34
|
+
expect(actual.size).toEqual(TEST_STRING_1.length);
|
|
35
|
+
expect(actual.string).toEqual(TEST_STRING_1);
|
|
36
|
+
});
|
|
37
|
+
it('should work as expected', () => {
|
|
38
|
+
const actual = new unit.BufferWriteableStream();
|
|
39
|
+
actual.write(TEST_STRING_2);
|
|
40
|
+
actual.end();
|
|
41
|
+
expect(actual.size).toEqual(TEST_STRING_2.length);
|
|
42
|
+
expect(actual.string).toEqual(TEST_STRING_2);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=BufferWriteableStream.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BufferWriteableStream.test.js","sourceRoot":"","sources":["../../src/stream/BufferWriteableStream.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8DAAgD;AAEhD,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,MAAM,aAAa,GAAG,mBAAmB,CAAC;IAC1C,MAAM,aAAa,GAAG,kBAAkB,CAAC;IAEzC,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAChD,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,EAAE,CAAC;QAEb,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAChD,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,EAAE,CAAC;QAEb,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ChildProcessWithoutNullStreams } from 'node:child_process';
|
|
2
|
+
import type { TransformCallback } from 'node:stream';
|
|
3
|
+
import { Stream } from 'node:stream';
|
|
4
|
+
export declare class ChildProcessStreamPipe extends Stream.Transform {
|
|
5
|
+
readonly cmd: string;
|
|
6
|
+
readonly _args: Array<string>;
|
|
7
|
+
_input: string;
|
|
8
|
+
_output: string;
|
|
9
|
+
_execStarted: boolean;
|
|
10
|
+
_childProcess: ChildProcessWithoutNullStreams | undefined;
|
|
11
|
+
constructor(cmd: string, args?: Array<string>);
|
|
12
|
+
_transform(chunk: unknown, encoding: BufferEncoding, callback: TransformCallback): void;
|
|
13
|
+
_flush(callback: (error?: Error | null) => void): void;
|
|
14
|
+
resume(): this;
|
|
15
|
+
input(s: string): ChildProcessStreamPipe;
|
|
16
|
+
output(s: string): ChildProcessStreamPipe;
|
|
17
|
+
arg(arg: string): ChildProcessStreamPipe;
|
|
18
|
+
get args(): Array<string>;
|
|
19
|
+
exec(): void;
|
|
20
|
+
onError(err: unknown | undefined): void;
|
|
21
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChildProcessStreamPipe = void 0;
|
|
4
|
+
const node_child_process_1 = require("node:child_process");
|
|
5
|
+
const node_stream_1 = require("node:stream");
|
|
6
|
+
const types_1 = require("node:util/types");
|
|
7
|
+
/*
|
|
8
|
+
* See: https://www.jameskerr.blog/posts/pipe-nodejs-readable-stream-into-child-process/
|
|
9
|
+
* See: https://www.npmjs.com/package/imagemagick-stream
|
|
10
|
+
*/
|
|
11
|
+
class ChildProcessStreamPipe extends node_stream_1.Stream.Transform {
|
|
12
|
+
cmd;
|
|
13
|
+
_args;
|
|
14
|
+
_input;
|
|
15
|
+
_output;
|
|
16
|
+
_execStarted;
|
|
17
|
+
_childProcess;
|
|
18
|
+
constructor(cmd, args = []) {
|
|
19
|
+
super();
|
|
20
|
+
this.cmd = cmd;
|
|
21
|
+
this._input = '-';
|
|
22
|
+
this._output = '-';
|
|
23
|
+
this._args = args;
|
|
24
|
+
this._execStarted = false;
|
|
25
|
+
}
|
|
26
|
+
_transform(chunk, encoding, callback) {
|
|
27
|
+
if (!this.destroyed && this._childProcess?.stdin.write(chunk, encoding)) {
|
|
28
|
+
process.nextTick(callback);
|
|
29
|
+
}
|
|
30
|
+
else if (!this.destroyed) {
|
|
31
|
+
this._childProcess?.stdin.once('drain', callback);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
callback();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
_flush(callback) {
|
|
38
|
+
this._childProcess?.stdin.end();
|
|
39
|
+
if (this._childProcess?.stdout.destroyed) {
|
|
40
|
+
callback();
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
this._childProcess?.stdout.on('close', () => callback());
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
resume() {
|
|
47
|
+
if (!this._execStarted) {
|
|
48
|
+
this.exec();
|
|
49
|
+
}
|
|
50
|
+
this._execStarted = true;
|
|
51
|
+
return super.resume();
|
|
52
|
+
}
|
|
53
|
+
input(s) {
|
|
54
|
+
this._input = s;
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
output(s) {
|
|
58
|
+
this._output = s;
|
|
59
|
+
return this;
|
|
60
|
+
}
|
|
61
|
+
arg(arg) {
|
|
62
|
+
this._args.push(arg);
|
|
63
|
+
return this;
|
|
64
|
+
}
|
|
65
|
+
get args() {
|
|
66
|
+
return this._args.flatMap((x) => x.split(' '));
|
|
67
|
+
}
|
|
68
|
+
exec() {
|
|
69
|
+
const onError = this.onError.bind(this);
|
|
70
|
+
try {
|
|
71
|
+
this._childProcess = (0, node_child_process_1.spawn)(this.cmd, [this._input, ...this.args, this._output]);
|
|
72
|
+
this._childProcess.on('error', onError);
|
|
73
|
+
this._childProcess.stdout.on('data', (data) => this.push(data));
|
|
74
|
+
this._childProcess.stdin?.on('error', (e) => {
|
|
75
|
+
if (e.code === 'EPIPE') {
|
|
76
|
+
this.emit('end');
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
onError(e);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
this._childProcess.stdout.on('error', onError);
|
|
83
|
+
this._childProcess.stderr.on('error', onError);
|
|
84
|
+
this._childProcess.stderr.on('data', (data) => onError(new Error(data.toString())));
|
|
85
|
+
}
|
|
86
|
+
catch (e) {
|
|
87
|
+
onError(e);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
onError(err) {
|
|
91
|
+
const errorErr = (0, types_1.isNativeError)(err) ? err : new Error(String(err));
|
|
92
|
+
this.destroy(errorErr);
|
|
93
|
+
this.emit('end');
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
exports.ChildProcessStreamPipe = ChildProcessStreamPipe;
|
|
97
|
+
//# sourceMappingURL=ChildProcessStreamPipe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChildProcessStreamPipe.js","sourceRoot":"","sources":["../../src/stream/ChildProcessStreamPipe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
/* eslint-disable fp/no-mutating-methods,fp/no-throw */
|
|
27
|
+
const childProcess = __importStar(require("node:child_process"));
|
|
28
|
+
const node_stream_1 = require("node:stream");
|
|
29
|
+
const BufferWriteableStream_1 = require("./BufferWriteableStream");
|
|
30
|
+
const unit = __importStar(require("./ChildProcessStreamPipe"));
|
|
31
|
+
const index_1 = require("./index");
|
|
32
|
+
describe('ChildProcessStreamPipe', () => {
|
|
33
|
+
const TEST_S = 'hoi noi broin coi';
|
|
34
|
+
it('should formulate args as expected', () => {
|
|
35
|
+
const actual = new unit.ChildProcessStreamPipe('sed', []);
|
|
36
|
+
actual.arg('-foo bar').arg('-baz');
|
|
37
|
+
expect(actual.args).toStrictEqual(['-foo', 'bar', '-baz']);
|
|
38
|
+
});
|
|
39
|
+
it('should work as expected in the success case', async () => {
|
|
40
|
+
const actual = new unit.ChildProcessStreamPipe('sed', ['-e', 's/\\(.*\\)/\\U\\1/']).input('-').output('-');
|
|
41
|
+
const inStream = node_stream_1.Readable.from(TEST_S);
|
|
42
|
+
const outStream = new BufferWriteableStream_1.BufferWriteableStream();
|
|
43
|
+
inStream.pipe(actual).pipe(outStream);
|
|
44
|
+
await (0, index_1.waitForWriteStreamPromise)(outStream);
|
|
45
|
+
actual._flush(jest.fn);
|
|
46
|
+
expect(outStream.string).toEqual('HOI NOI BROIN COI');
|
|
47
|
+
});
|
|
48
|
+
// Test fails due to Unhandled error
|
|
49
|
+
// FIXME: Needs further work
|
|
50
|
+
xit('should work as expected with a stdin error', async () => {
|
|
51
|
+
const actual = new unit.ChildProcessStreamPipe('sed', ['-e', 's/\\(.*\\)/\\U\\1/']).input('-').output('-');
|
|
52
|
+
const inStream = node_stream_1.Readable.from(TEST_S);
|
|
53
|
+
const outStream = new BufferWriteableStream_1.BufferWriteableStream();
|
|
54
|
+
inStream.pipe(actual).pipe(outStream);
|
|
55
|
+
actual._childProcess?.stdin.emit('error', new Error('BOOM!'));
|
|
56
|
+
await (0, index_1.waitForWriteStreamPromise)(outStream);
|
|
57
|
+
expect(outStream.string).toEqual('');
|
|
58
|
+
});
|
|
59
|
+
it('should work as expected with a stdin EPIPE error', async () => {
|
|
60
|
+
const actual = new unit.ChildProcessStreamPipe('sed', ['-e', 's/\\(.*\\)/\\U\\1/']).input('-').output('-');
|
|
61
|
+
const inStream = node_stream_1.Readable.from(TEST_S);
|
|
62
|
+
const outStream = new BufferWriteableStream_1.BufferWriteableStream();
|
|
63
|
+
inStream.pipe(actual).pipe(outStream);
|
|
64
|
+
actual._childProcess?.stdin.emit('error', { code: 'EPIPE' });
|
|
65
|
+
await (0, index_1.waitForWriteStreamPromise)(outStream);
|
|
66
|
+
expect(outStream.string).toEqual('');
|
|
67
|
+
});
|
|
68
|
+
// Test fails with: TypeError: Cannot redefine property: spawn
|
|
69
|
+
// FIXME: Needs more work
|
|
70
|
+
xit('should work as expected in error case', () => {
|
|
71
|
+
jest.spyOn(childProcess, 'spawn').mockImplementationOnce(() => {
|
|
72
|
+
throw new Error('BOOM!');
|
|
73
|
+
});
|
|
74
|
+
const inStream = node_stream_1.Readable.from(TEST_S);
|
|
75
|
+
const outStream = new node_stream_1.PassThrough();
|
|
76
|
+
const actual = new unit.ChildProcessStreamPipe('cat', ['/tmp/LICENSE']);
|
|
77
|
+
inStream.pipe(actual).pipe(outStream);
|
|
78
|
+
expect(() => {
|
|
79
|
+
return (0, index_1.waitForWriteStreamPromise)(outStream);
|
|
80
|
+
}).toBeDefined();
|
|
81
|
+
});
|
|
82
|
+
// Causes Unhandled error, but still passes.
|
|
83
|
+
// Plus is not really a proper test for errors due to tricky stream stuff
|
|
84
|
+
// FIXME: Needs further work
|
|
85
|
+
xit('should work as expected in error case', () => {
|
|
86
|
+
const inStream = node_stream_1.Readable.from(TEST_S);
|
|
87
|
+
const outStream = new node_stream_1.PassThrough();
|
|
88
|
+
const actual = new unit.ChildProcessStreamPipe('cat', ['/tmp/doesnotexist']);
|
|
89
|
+
inStream.pipe(actual).pipe(outStream);
|
|
90
|
+
expect(() => {
|
|
91
|
+
return (0, index_1.waitForWriteStreamPromise)(outStream);
|
|
92
|
+
}).toBeDefined();
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
//# sourceMappingURL=ChildProcessStreamPipe.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChildProcessStreamPipe.test.js","sourceRoot":"","sources":["../../src/stream/ChildProcessStreamPipe.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as P from '@konker.dev/effect-ts-prelude';
|
|
2
|
+
import type { Readable, Writable } from 'node:stream';
|
|
3
|
+
import type { ReadableStream } from 'node:stream/web';
|
|
4
|
+
/**
|
|
5
|
+
* Consume a readStream
|
|
6
|
+
* @param readStream
|
|
7
|
+
*/
|
|
8
|
+
export declare function readStreamToBuffer(readStream: Readable | ReadableStream): P.Effect.Effect<Uint8Array, Error>;
|
|
9
|
+
/**
|
|
10
|
+
* Wait for a writable stream to finish
|
|
11
|
+
*/
|
|
12
|
+
export declare function waitForWriteStreamPromise(writeStream: Writable): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Wait for a writable stream to finish
|
|
15
|
+
*/
|
|
16
|
+
export declare function waitForWriteStream(writeStream: Writable): P.Effect.Effect<void, Error>;
|
|
17
|
+
/**
|
|
18
|
+
* Wait for a readable stream to fully pipe to a write-stream
|
|
19
|
+
*/
|
|
20
|
+
export declare function waitForStreamPipe(readStream: Readable, writeStream: Writable): P.Effect.Effect<number, Error>;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.readStreamToBuffer = readStreamToBuffer;
|
|
27
|
+
exports.waitForWriteStreamPromise = waitForWriteStreamPromise;
|
|
28
|
+
exports.waitForWriteStream = waitForWriteStream;
|
|
29
|
+
exports.waitForStreamPipe = waitForStreamPipe;
|
|
30
|
+
const P = __importStar(require("@konker.dev/effect-ts-prelude"));
|
|
31
|
+
const effect_ts_prelude_1 = require("@konker.dev/effect-ts-prelude");
|
|
32
|
+
const array_1 = require("../array");
|
|
33
|
+
/**
|
|
34
|
+
* Consume a readStream
|
|
35
|
+
* @param readStream
|
|
36
|
+
*/
|
|
37
|
+
function readStreamToBuffer(readStream) {
|
|
38
|
+
return P.Effect.tryPromise({
|
|
39
|
+
try: async () => {
|
|
40
|
+
const chunks = [];
|
|
41
|
+
// FIXME: disabled lint
|
|
42
|
+
// eslint-disable-next-line fp/no-loops,fp/no-nil
|
|
43
|
+
for await (const chunk of readStream) {
|
|
44
|
+
// eslint-disable-next-line fp/no-mutating-methods,fp/no-unused-expression
|
|
45
|
+
chunks.push(typeof chunk === 'string' ? (0, array_1.stringToUint8Array)(chunk) : new Uint8Array(chunk));
|
|
46
|
+
}
|
|
47
|
+
// Merge chunks
|
|
48
|
+
return chunks.reduce((acc, val) => new Uint8Array([...acc, ...val]), new Uint8Array());
|
|
49
|
+
},
|
|
50
|
+
catch: effect_ts_prelude_1.toError,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Wait for a writable stream to finish
|
|
55
|
+
*/
|
|
56
|
+
function waitForWriteStreamPromise(writeStream) {
|
|
57
|
+
// eslint-disable-next-line fp/no-nil
|
|
58
|
+
return new Promise((resolve, reject) => {
|
|
59
|
+
// eslint-disable-next-line fp/no-unused-expression
|
|
60
|
+
writeStream.on('finish', resolve);
|
|
61
|
+
// eslint-disable-next-line fp/no-unused-expression
|
|
62
|
+
writeStream.on('error', reject);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Wait for a writable stream to finish
|
|
67
|
+
*/
|
|
68
|
+
function waitForWriteStream(writeStream) {
|
|
69
|
+
return P.Effect.tryPromise({
|
|
70
|
+
try: () =>
|
|
71
|
+
// eslint-disable-next-line fp/no-nil
|
|
72
|
+
new Promise((resolve, reject) => {
|
|
73
|
+
// eslint-disable-next-line fp/no-unused-expression
|
|
74
|
+
writeStream.on('finish', resolve);
|
|
75
|
+
// eslint-disable-next-line fp/no-unused-expression
|
|
76
|
+
writeStream.on('error', reject);
|
|
77
|
+
}),
|
|
78
|
+
catch: effect_ts_prelude_1.toError,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Wait for a readable stream to fully pipe to a write-stream
|
|
83
|
+
*/
|
|
84
|
+
function waitForStreamPipe(readStream, writeStream) {
|
|
85
|
+
return P.Effect.tryPromise({
|
|
86
|
+
try: () =>
|
|
87
|
+
// eslint-disable-next-line fp/no-nil
|
|
88
|
+
new Promise((resolve, reject) => {
|
|
89
|
+
// eslint-disable-next-line fp/no-let
|
|
90
|
+
let size = 0;
|
|
91
|
+
// eslint-disable-next-line fp/no-unused-expression,fp/no-nil
|
|
92
|
+
readStream.on('data', (data) => {
|
|
93
|
+
// eslint-disable-next-line fp/no-mutation
|
|
94
|
+
size = size + data.length;
|
|
95
|
+
});
|
|
96
|
+
// eslint-disable-next-line fp/no-unused-expression
|
|
97
|
+
readStream.on('error', reject);
|
|
98
|
+
// eslint-disable-next-line fp/no-unused-expression
|
|
99
|
+
writeStream.on('finish', () => resolve(size));
|
|
100
|
+
// eslint-disable-next-line fp/no-unused-expression
|
|
101
|
+
writeStream.on('error', reject);
|
|
102
|
+
// eslint-disable-next-line fp/no-unused-expression
|
|
103
|
+
readStream.pipe(writeStream);
|
|
104
|
+
// eslint-disable-next-line fp/no-unused-expression
|
|
105
|
+
readStream.resume();
|
|
106
|
+
}),
|
|
107
|
+
catch: effect_ts_prelude_1.toError,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/stream/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const P = __importStar(require("@konker.dev/effect-ts-prelude"));
|
|
27
|
+
const node_stream_1 = require("node:stream");
|
|
28
|
+
const array_1 = require("../array");
|
|
29
|
+
const BufferWriteableStream_1 = require("./BufferWriteableStream");
|
|
30
|
+
const unit = __importStar(require("./index"));
|
|
31
|
+
describe('stream utils', () => {
|
|
32
|
+
describe('readStreamToBuffer', () => {
|
|
33
|
+
it('should resolve as expected', async () => {
|
|
34
|
+
const readStream = node_stream_1.Readable.from('konker');
|
|
35
|
+
const data = await P.Effect.runPromise(unit.readStreamToBuffer(readStream));
|
|
36
|
+
expect((0, array_1.arrayBufferToString)(data)).toEqual('konker');
|
|
37
|
+
});
|
|
38
|
+
it('should resolve as expected', async () => {
|
|
39
|
+
const readStream = node_stream_1.Readable.from(Buffer.from('konker'));
|
|
40
|
+
const data = await P.Effect.runPromise(unit.readStreamToBuffer(readStream));
|
|
41
|
+
expect((0, array_1.arrayBufferToString)(data)).toEqual('konker');
|
|
42
|
+
});
|
|
43
|
+
it('should reject as expected', async () => {
|
|
44
|
+
const readStream = node_stream_1.Readable.from('konker');
|
|
45
|
+
readStream.on('data', () => {
|
|
46
|
+
readStream.emit('error', new Error('Boom!'));
|
|
47
|
+
});
|
|
48
|
+
await expect(P.Effect.runPromise(unit.readStreamToBuffer(readStream))).rejects.toThrow('Boom!');
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
describe('waitForWriteStreamPromise', () => {
|
|
52
|
+
it('should work as expected', async () => {
|
|
53
|
+
const readStream = node_stream_1.Readable.from('konker');
|
|
54
|
+
const writeStream = new BufferWriteableStream_1.BufferWriteableStream();
|
|
55
|
+
readStream.pipe(writeStream);
|
|
56
|
+
await unit.waitForWriteStreamPromise(writeStream);
|
|
57
|
+
expect(writeStream.string).toEqual('konker');
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
describe('waitForWriteStream', () => {
|
|
61
|
+
it('should work as expected', async () => {
|
|
62
|
+
const readStream = node_stream_1.Readable.from('konker');
|
|
63
|
+
const writeStream = new BufferWriteableStream_1.BufferWriteableStream();
|
|
64
|
+
readStream.pipe(writeStream);
|
|
65
|
+
await P.Effect.runPromise(unit.waitForWriteStream(writeStream));
|
|
66
|
+
expect(writeStream.string).toEqual('konker');
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
describe('waitForStreamPipe', () => {
|
|
70
|
+
it('should resolve as expected', async () => {
|
|
71
|
+
const readStream = node_stream_1.Readable.from('konker');
|
|
72
|
+
const writeStream = new node_stream_1.PassThrough();
|
|
73
|
+
const data = await P.Effect.runPromise(unit.waitForStreamPipe(readStream, writeStream));
|
|
74
|
+
expect(data).toEqual(6);
|
|
75
|
+
});
|
|
76
|
+
it('should reject as expected', async () => {
|
|
77
|
+
const readStream = node_stream_1.Readable.from('konker');
|
|
78
|
+
const writeStream = new node_stream_1.PassThrough();
|
|
79
|
+
writeStream.on('data', () => {
|
|
80
|
+
writeStream.emit('error', new Error('Boom!'));
|
|
81
|
+
});
|
|
82
|
+
await expect(P.Effect.runPromise(unit.waitForStreamPipe(readStream, writeStream))).rejects.toThrow('Boom!');
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=index.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/stream/index.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@konker.dev/tiny-utils-fp",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"author": "Konrad Markus <mail@konker.dev>",
|
|
5
5
|
"description": "General utility functions for Node.js TypeScript projects based on Effect-ts",
|
|
6
6
|
"license": "ISC",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"clean": "rm -rf dist && rm -f tsconfig.tsbuildinfo",
|
|
62
62
|
"typecheck": "tsc --noEmit",
|
|
63
63
|
"build": "pnpm run clean && tsc && gulp copy-static",
|
|
64
|
-
"type-coverage-check": "type-coverage --detail --at-least 100",
|
|
64
|
+
"type-coverage-check": "type-coverage --detail --at-least 100 --ignore-files src/stream/ChildProcessStreamPipe.ts --ignore-files src/stream/index.ts",
|
|
65
65
|
"circular-check": "madge --extensions ts --circular --no-color --no-spinner --warning --ts-config ./tsconfig.json src",
|
|
66
66
|
"eslint-check": "eslint --max-warnings=0 '**/*.{ts,js,json}'",
|
|
67
67
|
"fixme-check": "leasot --exit-nicely --skip-unsupported --ignore node_modules src",
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAmD;AAEnD,4DAA6D;AAC7D,8DAAiC;AAE1B,MAAM,MAAM,GAAG,CAAC,CAAS,EAAkC,EAAE,CAClE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IACX,GAAG,EAAE,GAAG,EAAE,CAAC,qBAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IAC3D,KAAK,EAAE,aAAO;CACf,CAAC,CAAC;AAJQ,QAAA,MAAM,UAId;AAEE,MAAM,SAAS,GAAG,CAAC,CAAS,EAAkC,EAAE,CACrE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IACX,GAAG,EAAE,GAAG,EAAE,CAAC,qBAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IAC9D,KAAK,EAAE,aAAO;CACf,CAAC,CAAC;AAJQ,QAAA,SAAS,aAIjB;AAEE,MAAM,aAAa,GAAG,CAAC,CAAS,EAAE,MAAc,EAAkC,EAAE,CACzF,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IACX,GAAG,EAAE,GAAG,EAAE,CAAC,qBAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IACtE,KAAK,EAAE,aAAO;CACf,CAAC,CAAC;AAJQ,QAAA,aAAa,iBAIrB"}
|
|
File without changes
|