From 838c8554b1871e239cbb7debfd6c5bdea053ff2d Mon Sep 17 00:00:00 2001 From: isaacs Date: Thu, 6 Jul 2023 16:33:07 -0700 Subject: [PATCH] Rewrite in TypeScript This is a big one, please read carefully before upgrading from prior versions, especially if you extend Minipass in a subclass. *** Breaking Changes *** - Rewritten in TypeScript as hybrid esm/cjs build, so a lot of types changed in subtle ways, and several behaviors got stricter. - Minipass now inherits from `EventEmitter` rather than `Stream`. Nothing from the `Stream` class was ever used by Minipass, but it inherited from `Stream` to pass checks in some stream libraries that checked `instanceof Stream`. Unfortunately, the type difference in the `pipe()` method signature made it challenging to continue doing in TypeScript. - It is no longer possible to change the type of data emitted after a Minipass stream is instantiated, as this would thwart TypeScript's static checks. As a consequence: - The `setEncoding` method and the `encoding` setter are deprecated. Encoding may _only_ be set in the constructor options object. - `objectMode` is no longer inferred by writing something other than a string or Buffer. It may _only_ be set in the constructor options object. - If all existing data consumers are removed, via `stream.unpipe(dest)`, `stream.removeListener('data', handler)`, `stream.removeAllListeners('data')`, and/or `stream.removeAllListeners()`, then the data will stop flowing. Note that it is still possible to explicitly discard a stream's data by calling `stream.resume()` in the absence of any consumers. *** Features and Fixes *** - Removed a very subtle performance issue that made objectMode Minipass streams slower in some cases than node core streams. Minipass is now faster than node core streams for all data types. - The array returned by `stream.collect()` for objectMode streams will have a `dataLength` property equal to 0, rather than undefined. - `isStream` is moved from a static member on the Minipass class to a named export. - `isWritable()` and `isReadable()` methods added. --- .github/workflows/ci.yml | 2 +- .gitignore | 7 +- CHANGELOG.md | 46 + README.md | 16 +- bench/results.json | 600 +++--- bench/results.tab | 600 +++--- bench/results/baseline-fast-fast-1.json | 6 +- bench/results/baseline-fast-fast-20.json | 6 +- bench/results/baseline-fast-mixed-1.json | 6 +- bench/results/baseline-fast-mixed-20.json | 6 +- bench/results/baseline-fast-slow-1.json | 6 +- bench/results/baseline-fast-slow-20.json | 6 +- bench/results/baseline-slow-fast-1.json | 6 +- bench/results/baseline-slow-fast-20.json | 6 +- bench/results/baseline-slow-slow-1.json | 6 +- bench/results/baseline-slow-slow-20.json | 6 +- .../core-extend-transform-fast-fast-1.json | 6 +- .../core-extend-transform-fast-fast-20.json | 6 +- .../core-extend-transform-fast-mixed-1.json | 6 +- .../core-extend-transform-fast-mixed-20.json | 6 +- .../core-extend-transform-fast-slow-1.json | 6 +- .../core-extend-transform-fast-slow-20.json | 6 +- .../core-extend-transform-slow-fast-1.json | 6 +- .../core-extend-transform-slow-fast-20.json | 6 +- .../core-extend-transform-slow-slow-1.json | 6 +- .../core-extend-transform-slow-slow-20.json | 6 +- .../results/core-passthrough-fast-fast-1.json | 6 +- .../core-passthrough-fast-fast-20.json | 6 +- .../core-passthrough-fast-mixed-1.json | 6 +- .../core-passthrough-fast-mixed-20.json | 6 +- .../results/core-passthrough-fast-slow-1.json | 6 +- .../core-passthrough-fast-slow-20.json | 6 +- .../results/core-passthrough-slow-fast-1.json | 6 +- .../core-passthrough-slow-fast-20.json | 6 +- .../results/core-passthrough-slow-slow-1.json | 6 +- .../core-passthrough-slow-slow-20.json | 6 +- .../extend-minipass-current-fast-fast-1.json | 6 +- .../extend-minipass-current-fast-fast-20.json | 6 +- .../extend-minipass-current-fast-mixed-1.json | 6 +- ...extend-minipass-current-fast-mixed-20.json | 6 +- .../extend-minipass-current-fast-slow-1.json | 6 +- .../extend-minipass-current-fast-slow-20.json | 6 +- .../extend-minipass-current-slow-fast-1.json | 6 +- .../extend-minipass-current-slow-fast-20.json | 6 +- .../extend-minipass-current-slow-slow-1.json | 6 +- .../extend-minipass-current-slow-slow-20.json | 6 +- .../minipass-current-async-fast-fast-1.json | 6 +- .../minipass-current-async-fast-fast-20.json | 6 +- .../minipass-current-async-fast-mixed-1.json | 6 +- .../minipass-current-async-fast-mixed-20.json | 6 +- .../minipass-current-async-fast-slow-1.json | 6 +- .../minipass-current-async-fast-slow-20.json | 6 +- .../minipass-current-async-slow-fast-1.json | 6 +- .../minipass-current-async-slow-fast-20.json | 6 +- .../minipass-current-async-slow-slow-1.json | 6 +- .../minipass-current-async-slow-slow-20.json | 6 +- .../results/minipass-current-fast-fast-1.json | 6 +- .../minipass-current-fast-fast-20.json | 6 +- .../minipass-current-fast-mixed-1.json | 6 +- .../minipass-current-fast-mixed-20.json | 6 +- .../results/minipass-current-fast-slow-1.json | 6 +- .../minipass-current-fast-slow-20.json | 6 +- .../results/minipass-current-slow-fast-1.json | 6 +- .../minipass-current-slow-fast-20.json | 6 +- .../results/minipass-current-slow-slow-1.json | 6 +- .../minipass-current-slow-slow-20.json | 6 +- .../results/minipass-latest-fast-fast-1.json | 6 +- .../results/minipass-latest-fast-fast-20.json | 6 +- .../results/minipass-latest-fast-mixed-1.json | 6 +- .../minipass-latest-fast-mixed-20.json | 6 +- .../results/minipass-latest-fast-slow-1.json | 6 +- .../results/minipass-latest-fast-slow-20.json | 6 +- .../results/minipass-latest-slow-fast-1.json | 6 +- .../results/minipass-latest-slow-fast-20.json | 6 +- .../results/minipass-latest-slow-slow-1.json | 6 +- .../results/minipass-latest-slow-slow-20.json | 6 +- bench/results/minipass-v3-fast-fast-1.json | 6 +- bench/results/minipass-v3-fast-fast-20.json | 6 +- bench/results/minipass-v3-fast-mixed-1.json | 6 +- bench/results/minipass-v3-fast-mixed-20.json | 6 +- bench/results/minipass-v3-fast-slow-1.json | 6 +- bench/results/minipass-v3-fast-slow-20.json | 6 +- bench/results/minipass-v3-slow-fast-1.json | 6 +- bench/results/minipass-v3-slow-fast-20.json | 6 +- bench/results/minipass-v3-slow-slow-1.json | 6 +- bench/results/minipass-v3-slow-slow-20.json | 6 +- bench/results/minipass-v4-fast-fast-1.json | 6 +- bench/results/minipass-v4-fast-fast-20.json | 6 +- bench/results/minipass-v4-fast-mixed-1.json | 6 +- bench/results/minipass-v4-fast-mixed-20.json | 6 +- bench/results/minipass-v4-fast-slow-1.json | 6 +- bench/results/minipass-v4-fast-slow-20.json | 6 +- bench/results/minipass-v4-slow-fast-1.json | 6 +- bench/results/minipass-v4-slow-fast-20.json | 6 +- bench/results/minipass-v4-slow-slow-1.json | 6 +- bench/results/minipass-v4-slow-slow-20.json | 6 +- bench/results/minipass-v5-fast-fast-1.json | 6 +- bench/results/minipass-v5-fast-fast-20.json | 6 +- bench/results/minipass-v5-fast-mixed-1.json | 6 +- bench/results/minipass-v5-fast-mixed-20.json | 6 +- bench/results/minipass-v5-fast-slow-1.json | 6 +- bench/results/minipass-v5-fast-slow-20.json | 6 +- bench/results/minipass-v5-slow-fast-1.json | 6 +- bench/results/minipass-v5-slow-fast-20.json | 6 +- bench/results/minipass-v5-slow-slow-1.json | 6 +- bench/results/minipass-v5-slow-slow-20.json | 6 +- index.d.ts | 183 -- index.js | 702 ------- package-lock.json | 1845 ++++++++++++----- package.json | 98 +- scripts/fixup.sh | 16 + src/index.ts | 1343 ++++++++++++ test/basic.js | 170 +- test/collect.js | 11 +- test/esm.mjs | 2 +- test/flowing-after-removing-consumers.js | 81 + test/is-stream.js | 163 +- test/iteration-unsupported.js | 17 - test/iteration.js | 6 +- tsconfig-base.json | 16 + tsconfig-esm.json | 7 + tsconfig.json | 17 +- 122 files changed, 4016 insertions(+), 2532 deletions(-) delete mode 100644 index.d.ts delete mode 100644 index.js create mode 100644 scripts/fixup.sh create mode 100644 src/index.ts create mode 100644 test/flowing-after-removing-consumers.js delete mode 100644 test/iteration-unsupported.js create mode 100644 tsconfig-base.json create mode 100644 tsconfig-esm.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8582233..726af4d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,7 +6,7 @@ jobs: build: strategy: matrix: - node-version: [14.x, 16.x, 18.x] + node-version: [16.x, 18.x] platform: - os: ubuntu-latest shell: bash diff --git a/.gitignore b/.gitignore index 953c048..5341552 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ -.*.swp node_modules -.nyc_output/ -coverage/ -/index.mjs +/.nyc_output/ +/coverage/ +/dist diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e8d3ae..ac917ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,51 @@ # chernge lerg +## 7.0 + +This is a big one, please read carefully before upgrading from +prior versions, especially if you extend Minipass in a subclass. + +### Breaking Changes + +- Rewritten in TypeScript as hybrid esm/cjs build, so a lot of + types changed in subtle ways, and several behaviors got + stricter. +- Minipass now inherits from `EventEmitter` rather than `Stream`. + Nothing from the `Stream` class was ever used by Minipass, but + it inherited from `Stream` to pass checks in some stream + libraries that checked `instanceof Stream`. Unfortunately, the + type difference in the `pipe()` method signature made it + challenging to continue doing in TypeScript. +- It is no longer possible to change the type of data emitted + after a Minipass stream is instantiated, as this would thwart + TypeScript's static checks. As a consequence: + - The `setEncoding` method and the `encoding` setter are + deprecated. Encoding may _only_ be set in the constructor + options object. + - `objectMode` is no longer inferred by writing something other + than a string or Buffer. It may _only_ be set in the + constructor options object. +- If all existing data consumers are removed, via + `stream.unpipe(dest)`, `stream.removeListener('data', handler)`, + `stream.removeAllListeners('data')`, and/or + `stream.removeAllListeners()`, then the data will stop flowing. + Note that it is still possible to explicitly discard a stream's + data by calling `stream.resume()` in the absence of any + consumers. + +### Features and Fixes + +- Removed a very subtle performance issue that made objectMode + Minipass streams slower in some cases than node core streams. + Minipass is now faster than node core streams for all data + types. +- The array returned by `stream.collect()` for objectMode streams + will have a `dataLength` property equal to 0, rather than + undefined. +- `isStream` is moved from a static member on the Minipass class + to a named export. +- `isWritable()` and `isReadable()` methods added. + ## 6.0 - Define event argument types in an extensible manner, defaulting diff --git a/README.md b/README.md index 4b12abf..1126330 100644 --- a/README.md +++ b/README.md @@ -23,9 +23,9 @@ written will be emitted. Otherwise, it'll do a minimal amount of Buffer copying to ensure proper Streams semantics when `read(n)` is called. -`objectMode` can also be set by doing `stream.objectMode = true`, -or by writing any non-string/non-buffer data. `objectMode` cannot -be set to false once it is set. +`objectMode` can only be set at instantiation. Attempting to +write something other than a String or Buffer without having set +`objectMode` in the options will throw an error. This is not a `through` or `through2` stream. It doesn't transform the data, it just passes it right through. If you want @@ -444,7 +444,7 @@ you want. ```js import { Minipass } from 'minipass' -const mp = new Minipass(options) // optional: { encoding, objectMode } +const mp = new Minipass(options) // options is optional mp.write('foo') mp.pipe(someOtherStream) mp.end('bar') @@ -483,8 +483,6 @@ Implements the user-facing portions of Node.js's `Readable` and - `end([chunk, [encoding]], [callback])` - Signal that you have no more data to write. This will queue an `end` event to be fired when all the data has been consumed. -- `setEncoding(encoding)` - Set the encoding for data coming of - the stream. This can only be done once. - `pause()` - No more data for a while, please. This also prevents `end` from being emitted for empty streams until the stream is resumed. @@ -535,9 +533,7 @@ Implements the user-facing portions of Node.js's `Readable` and - `bufferLength` Read-only. Total number of bytes buffered, or in the case of objectMode, the total number of objects. -- `encoding` The encoding that has been set. (Setting this is - equivalent to calling `setEncoding(enc)` and has the same - prohibition against setting multiple times.) +- `encoding` Read-only. The encoding that has been set. - `flowing` Read-only. Boolean indicating whether a chunk written to the stream will be immediately emitted. - `emittedEnd` Read-only. Boolean indicating whether the end-ish @@ -554,7 +550,6 @@ Implements the user-facing portions of Node.js's `Readable` and - `paused` True if the stream has been explicitly paused, otherwise false. - `objectMode` Indicates whether the stream is in `objectMode`. - Once set to `true`, it cannot be set to `false`. - `aborted` Readonly property set when the `AbortSignal` dispatches an `abort` event. @@ -758,6 +753,7 @@ class SlowEnd extends Minipass { console.log('ok, ready to end now') super.emit('end', ...args) }, 100) + return true } else { return super.emit(ev, ...args) } diff --git a/bench/results.json b/bench/results.json index 672604e..242da34 100644 --- a/bench/results.json +++ b/bench/results.json @@ -2,620 +2,620 @@ "baseline": { "fast-fast": { "1": { - "defaults": 3.442207932472229, - "str": 2.8753750324249268, - "obj": 1.7675409317016602 + "defaults": 3.3990838527679443, + "str": 2.658750057220459, + "obj": 1.8272500038146973 }, "20": { - "defaults": 3.4866249561309814, - "str": 2.9250420331954956, - "obj": 1.7282921075820923 + "defaults": 3.3317079544067383, + "str": 2.5267090797424316, + "obj": 1.6895420551300049 } }, "fast-slow": { "1": { - "defaults": 3.4544999599456787, - "str": 2.6360830068588257, - "obj": 1.7927500009536743 + "defaults": 3.533208131790161, + "str": 2.6589999198913574, + "obj": 1.7267498970031738 }, "20": { - "defaults": 3.518875002861023, - "str": 3.0439999103546143, - "obj": 1.7697919607162476 + "defaults": 3.558332920074463, + "str": 2.7277917861938477, + "obj": 1.825958013534546 } }, "slow-fast": { "1": { - "defaults": 7.529915928840637, - "str": 7.622833013534546, - "obj": 5.5887919664382935 + "defaults": 7.663082838058472, + "str": 7.863041877746582, + "obj": 5.66966700553894 }, "20": { - "defaults": 7.802249908447266, - "str": 7.662291884422302, - "obj": 5.392500042915344 + "defaults": 7.421875, + "str": 7.890166997909546, + "obj": 5.565249919891357 } }, "slow-slow": { "1": { - "defaults": 7.692291975021362, - "str": 7.873832941055298, - "obj": 5.586833953857422 + "defaults": 7.716665983200073, + "str": 7.789834022521973, + "obj": 5.735374927520752 }, "20": { - "defaults": 7.750833034515381, - "str": 7.746875047683716, - "obj": 5.37624990940094 + "defaults": 7.742792129516602, + "str": 7.878582954406738, + "obj": 5.557208061218262 } }, "fast-mixed": { "1": { - "defaults": 3.6228749752044678, - "str": 2.7109580039978027, - "obj": 1.7681249380111694 + "defaults": 3.6327500343322754, + "str": 2.7679169178009033, + "obj": 1.7796669006347656 }, "20": { - "defaults": 3.593625068664551, - "str": 2.7782089710235596, - "obj": 1.8817919492721558 + "defaults": 3.5595409870147705, + "str": 2.654458999633789, + "obj": 1.7744169235229492 } } }, "minipass-v3": { "fast-fast": { "1": { - "defaults": 9.991374969482422, - "str": 8.99762499332428, - "obj": 5.436582922935486 + "defaults": 8.96229100227356, + "str": 8.173666954040527, + "obj": 5.094624996185303 }, "20": { - "defaults": 56.744750022888184, - "str": 59.71320903301239, - "obj": 29.284834027290344 + "defaults": 56.02125000953674, + "str": 59.039124965667725, + "obj": 29.18766713142395 } }, "fast-slow": { "1": { - "defaults": 12.836833000183105, - "str": 12.92941701412201, - "obj": 8.141417026519775 + "defaults": 12.820749998092651, + "str": 12.260708093643188, + "obj": 7.883208990097046 }, "20": { - "defaults": 116.09641695022583, - "str": 127.65012502670288, - "obj": 97.09899997711182 + "defaults": 112.68245792388916, + "str": 124.49425005912781, + "obj": 93.80837512016296 } }, "slow-fast": { "1": { - "defaults": 13.328750014305115, - "str": 13.893125057220459, - "obj": 9.958582997322083 + "defaults": 13.644958019256592, + "str": 13.941625118255615, + "obj": 9.986666917800903 }, "20": { - "defaults": 61.24558389186859, - "str": 62.25849997997284, - "obj": 37.876917004585266 + "defaults": 58.234708070755005, + "str": 60.60979080200195, + "obj": 36.09575009346008 } }, "slow-slow": { "1": { - "defaults": 19.70970904827118, - "str": 20.06712508201599, - "obj": 17.246999979019165 + "defaults": 19.341042041778564, + "str": 19.677291870117188, + "obj": 16.29824995994568 }, "20": { - "defaults": 114.48662507534027, - "str": 126.36362493038177, - "obj": 97.96820795536041 + "defaults": 108.75849986076355, + "str": 119.96637487411499, + "obj": 92.20295882225037 } }, "fast-mixed": { "1": { - "defaults": 14.314666986465454, - "str": 13.60479199886322, - "obj": 8.298417091369629 + "defaults": 14.748833894729614, + "str": 14.528291940689087, + "obj": 8.816375017166138 }, "20": { - "defaults": 119.11833393573761, - "str": 129.67150008678436, - "obj": 98.28970897197723 + "defaults": 112.7664577960968, + "str": 124.79616594314575, + "obj": 94.15024995803833 } } }, "minipass-v4": { "fast-fast": { "1": { - "defaults": 9.019958019256592, - "str": 8.39662492275238, - "obj": 5.291291952133179 + "defaults": 9.067874908447266, + "str": 8.513124942779541, + "obj": 5.3687920570373535 }, "20": { - "defaults": 57.88370907306671, - "str": 60.756958961486816, - "obj": 29.646209001541138 + "defaults": 55.740999937057495, + "str": 57.79591608047485, + "obj": 28.896167039871216 } }, "fast-slow": { "1": { - "defaults": 12.98199999332428, - "str": 12.487249970436096, - "obj": 8.032541036605835 + "defaults": 12.763917207717896, + "str": 12.276791095733643, + "obj": 7.75220799446106 }, "20": { - "defaults": 113.390958070755, - "str": 125.72883296012878, - "obj": 91.53458392620087 + "defaults": 109.29241704940796, + "str": 120.14249992370605, + "obj": 88.43941688537598 } }, "slow-fast": { "1": { - "defaults": 12.530249953269958, - "str": 14.387542009353638, - "obj": 9.92158305644989 + "defaults": 12.893832921981812, + "str": 13.651708126068115, + "obj": 9.69395899772644 }, "20": { - "defaults": 59.353208899497986, - "str": 63.61800003051758, - "obj": 37.76174998283386 + "defaults": 58.75887489318848, + "str": 61.16729211807251, + "obj": 36.75349998474121 } }, "slow-slow": { "1": { - "defaults": 20.01687502861023, - "str": 18.69504201412201, - "obj": 16.518290996551514 + "defaults": 19.634707927703857, + "str": 19.170832872390747, + "obj": 16.464499950408936 }, "20": { - "defaults": 117.32275009155273, - "str": 125.12608301639557, - "obj": 96.39866697788239 + "defaults": 114.11229205131531, + "str": 123.68508315086365, + "obj": 95.43070816993713 } }, "fast-mixed": { "1": { - "defaults": 12.962167024612427, - "str": 12.558375000953674, - "obj": 7.944625020027161 + "defaults": 13.131667137145996, + "str": 12.219375133514404, + "obj": 7.822416067123413 }, "20": { - "defaults": 114.1967499256134, - "str": 123.09395802021027, - "obj": 91.53399991989136 + "defaults": 110.00562500953674, + "str": 119.71024990081787, + "obj": 89.30245780944824 } } }, "minipass-v5": { "fast-fast": { "1": { - "defaults": 8.861541986465454, - "str": 8.416458010673523, - "obj": 5.3903340101242065 + "defaults": 9.045500040054321, + "str": 8.363375186920166, + "obj": 5.296582937240601 }, "20": { - "defaults": 56.76462495326996, - "str": 58.60199999809265, - "obj": 29.388957977294922 + "defaults": 55.41020894050598, + "str": 57.3116250038147, + "obj": 29.30795907974243 } }, "fast-slow": { "1": { - "defaults": 12.699750065803528, - "str": 12.111208081245422, - "obj": 7.8963329792022705 + "defaults": 12.69533395767212, + "str": 12.118332862854004, + "obj": 7.893208026885986 }, "20": { - "defaults": 112.19987499713898, - "str": 122.30604100227356, - "obj": 90.54145896434784 + "defaults": 109.11375021934509, + "str": 119.16074991226196, + "obj": 87.87933301925659 } }, "slow-fast": { "1": { - "defaults": 12.730375051498413, - "str": 13.549291968345642, - "obj": 9.331416010856628 + "defaults": 12.915709018707275, + "str": 14.087542057037354, + "obj": 9.628709077835083 }, "20": { - "defaults": 59.4458749294281, - "str": 62.936041951179504, - "obj": 38.064375042915344 + "defaults": 58.45437502861023, + "str": 60.98283386230469, + "obj": 36.37870812416077 } }, "slow-slow": { "1": { - "defaults": 19.284375071525574, - "str": 18.673540949821472, - "obj": 17.366083025932312 + "defaults": 19.6010000705719, + "str": 19.504374980926514, + "obj": 16.68008303642273 }, "20": { - "defaults": 116.4670000076294, - "str": 126.47654092311859, - "obj": 98.07375001907349 + "defaults": 113.02391600608826, + "str": 122.68854212760925, + "obj": 93.84029197692871 } }, "fast-mixed": { "1": { - "defaults": 12.790333032608032, - "str": 12.488708972930908, - "obj": 7.851499915122986 + "defaults": 13.159540891647339, + "str": 12.466333150863647, + "obj": 7.881624937057495 }, "20": { - "defaults": 112.75820803642273, - "str": 123.39258301258087, - "obj": 91.13495898246765 + "defaults": 110.05741691589355, + "str": 119.14762496948242, + "obj": 88.40920901298523 } } }, "minipass-latest": { "fast-fast": { "1": { - "defaults": 9.006374955177307, - "str": 8.402208089828491, - "obj": 5.372582912445068 + "defaults": 9.106709003448486, + "str": 8.27245807647705, + "obj": 5.223582983016968 }, "20": { - "defaults": 57.05970907211304, - "str": 58.760249972343445, - "obj": 29.28237497806549 + "defaults": 55.94037485122681, + "str": 57.88187503814697, + "obj": 29.797584056854248 } }, "fast-slow": { "1": { - "defaults": 14.112375020980835, - "str": 14.106082916259766, - "obj": 8.911999940872192 + "defaults": 12.913458108901978, + "str": 12.469624996185303, + "obj": 7.9867918491363525 }, "20": { - "defaults": 112.57000005245209, - "str": 121.75041604042053, - "obj": 90.32737505435944 + "defaults": 109.13374996185303, + "str": 119.18562507629395, + "obj": 88.77216601371765 } }, "slow-fast": { "1": { - "defaults": 12.974624991416931, - "str": 14.089292049407959, - "obj": 10.196707963943481 + "defaults": 13.740790843963623, + "str": 13.026999950408936, + "obj": 11.303791046142578 }, "20": { - "defaults": 60.46066701412201, - "str": 62.154541969299316, - "obj": 37.26616597175598 + "defaults": 58.92799997329712, + "str": 61.270041942596436, + "obj": 36.384124994277954 } }, "slow-slow": { "1": { - "defaults": 19.617667078971863, - "str": 19.31058394908905, - "obj": 17.546957969665527 + "defaults": 19.82358407974243, + "str": 19.03404211997986, + "obj": 16.994542121887207 }, "20": { - "defaults": 117.06987500190735, - "str": 125.56391704082489, - "obj": 97.52154195308685 + "defaults": 113.54299998283386, + "str": 122.18516683578491, + "obj": 94.0842502117157 } }, "fast-mixed": { "1": { - "defaults": 13.652250051498413, - "str": 13.876582980155945, - "obj": 8.559291958808899 + "defaults": 13.074541091918945, + "str": 12.364291906356812, + "obj": 7.872082948684692 }, "20": { - "defaults": 112.75670802593231, - "str": 121.95370900630951, - "obj": 90.06733298301697 + "defaults": 109.3677499294281, + "str": 120.48091697692871, + "obj": 88.43137502670288 } } }, "minipass-current": { "fast-fast": { "1": { - "defaults": 9.00616705417633, - "str": 8.558458089828491, - "obj": 5.563665986061096 + "defaults": 9.237291097640991, + "str": 8.494791984558105, + "obj": 5.270291805267334 }, "20": { - "defaults": 57.08733403682709, - "str": 59.901875019073486, - "obj": 29.437790989875793 + "defaults": 55.45591592788696, + "str": 60.21724987030029, + "obj": 30.116125106811523 } }, "fast-slow": { "1": { - "defaults": 12.497583031654358, - "str": 12.10783302783966, - "obj": 7.822792053222656 + "defaults": 12.837042093276978, + "str": 12.397625207901001, + "obj": 8.142207860946655 }, "20": { - "defaults": 111.76954197883606, - "str": 122.47616600990295, - "obj": 90.42129194736481 + "defaults": 112.8249580860138, + "str": 119.85637497901917, + "obj": 93.4788339138031 } }, "slow-fast": { "1": { - "defaults": 12.808166980743408, - "str": 13.886415958404541, - "obj": 9.495208978652954 + "defaults": 13.317584037780762, + "str": 13.745499849319458, + "obj": 7.646499872207642 }, "20": { - "defaults": 60.190375089645386, - "str": 64.01145792007446, - "obj": 36.9105829000473 + "defaults": 58.255666971206665, + "str": 62.18691611289978, + "obj": 38.114166021347046 } }, "slow-slow": { "1": { - "defaults": 19.24495792388916, - "str": 20.47504198551178, - "obj": 17.39049994945526 + "defaults": 19.602458000183105, + "str": 19.340165853500366, + "obj": 17.1333749294281 }, "20": { - "defaults": 115.83945894241333, - "str": 125.54474997520447, - "obj": 97.4453330039978 + "defaults": 114.9782497882843, + "str": 122.02308297157288, + "obj": 95.23783302307129 } }, "fast-mixed": { "1": { - "defaults": 12.802457928657532, - "str": 12.223124980926514, - "obj": 8.009207963943481 + "defaults": 13.639082908630371, + "str": 12.444166898727417, + "obj": 7.978666067123413 }, "20": { - "defaults": 112.42704200744629, - "str": 124.54533398151398, - "obj": 90.83437490463257 + "defaults": 112.22262501716614, + "str": 118.59824991226196, + "obj": 89.4826250076294 } } }, "minipass-current-async": { "fast-fast": { "1": { - "defaults": 15.625333070755005, - "str": 13.595166087150574, - "obj": 8.424084067344666 + "defaults": 16.789916038513184, + "str": 13.664083003997803, + "obj": 8.046792030334473 }, "20": { - "defaults": 138.3176670074463, - "str": 138.06941604614258, - "obj": 106.02308309078217 + "defaults": 164.3801248073578, + "str": 156.7847089767456, + "obj": 125.96362495422363 } }, "fast-slow": { "1": { - "defaults": 26.819707989692688, - "str": 17.864084005355835, - "obj": 11.643916010856628 + "defaults": 23.611124992370605, + "str": 24.252208948135376, + "obj": 13.320249795913696 }, "20": { - "defaults": 144.29450011253357, - "str": 143.48766696453094, - "obj": 107.52308309078217 + "defaults": 167.81833291053772, + "str": 162.2190420627594, + "obj": 133.96308302879333 } }, "slow-fast": { "1": { - "defaults": 14.943750023841858, - "str": 14.345583081245422, - "obj": 13.515666961669922 + "defaults": 15.29449987411499, + "str": 14.680792093276978, + "obj": 12.648375034332275 }, "20": { - "defaults": 85.21333301067352, - "str": 88.02425003051758, - "obj": 59.35362505912781 + "defaults": 85.04554104804993, + "str": 87.39795804023743, + "obj": 59.65033411979675 } }, "slow-slow": { "1": { - "defaults": 21.783707976341248, - "str": 18.673874974250793, - "obj": 14.390041947364807 + "defaults": 21.52458381652832, + "str": 18.75612497329712, + "obj": 14.529249906539917 }, "20": { - "defaults": 176.62541604042053, - "str": 164.64012503623962, - "obj": 127.81299996376038 + "defaults": 176.85458302497864, + "str": 166.02983283996582, + "obj": 127.8735420703888 } }, "fast-mixed": { "1": { - "defaults": 28.594624996185303, - "str": 19.377125024795532, - "obj": 12.353209018707275 + "defaults": 22.599792003631592, + "str": 24.439208030700684, + "obj": 13.420375108718872 }, "20": { - "defaults": 144.73733401298523, - "str": 148.0581250190735, - "obj": 113.50233399868011 + "defaults": 167.20274996757507, + "str": 161.45175004005432, + "obj": 134.34225010871887 } } }, "extend-minipass-current": { "fast-fast": { "1": { - "defaults": 9.140750050544739, - "str": 8.64004111289978, - "obj": 5.417958974838257 + "defaults": 9.193875074386597, + "str": 8.732290983200073, + "obj": 5.323959112167358 }, "20": { - "defaults": 57.37579107284546, - "str": 60.1637909412384, - "obj": 29.899250030517578 + "defaults": 55.100250005722046, + "str": 62.77754187583923, + "obj": 31.361207962036133 } }, "fast-slow": { "1": { - "defaults": 12.647625088691711, - "str": 12.273958086967468, - "obj": 8.015959024429321 + "defaults": 13.048874855041504, + "str": 12.627707958221436, + "obj": 7.943833112716675 }, "20": { - "defaults": 112.59149992465973, - "str": 122.923583984375, - "obj": 90.85945808887482 + "defaults": 112.71425008773804, + "str": 119.46612501144409, + "obj": 88.86787509918213 } }, "slow-fast": { "1": { - "defaults": 12.678249955177307, - "str": 13.712583065032959, - "obj": 9.786041975021362 + "defaults": 13.905959129333496, + "str": 15.27899980545044, + "obj": 8.198750019073486 }, "20": { - "defaults": 60.498250007629395, - "str": 63.19883394241333, - "obj": 38.34554195404053 + "defaults": 59.27174997329712, + "str": 62.621875047683716, + "obj": 37.86075019836426 } }, "slow-slow": { "1": { - "defaults": 19.36074995994568, - "str": 18.793750047683716, - "obj": 16.4716659784317 + "defaults": 19.91116714477539, + "str": 19.340209007263184, + "obj": 17.08750009536743 }, "20": { - "defaults": 117.03358399868011, - "str": 127.52441596984863, - "obj": 97.87795794010162 + "defaults": 115.68562483787537, + "str": 123.51199984550476, + "obj": 95.79333400726318 } }, "fast-mixed": { "1": { - "defaults": 13.088165998458862, - "str": 12.378084063529968, - "obj": 8.092041015625 + "defaults": 13.097042083740234, + "str": 12.528666973114014, + "obj": 7.946000099182129 }, "20": { - "defaults": 113.45395910739899, - "str": 123.82245790958405, - "obj": 91.68816697597504 + "defaults": 113.75462508201599, + "str": 122.74500012397766, + "obj": 89.51083302497864 } } }, "core-extend-transform": { "fast-fast": { "1": { - "defaults": 24.470834016799927, - "str": 1463.6756669282913, - "obj": 6.729416012763977 + "defaults": 24.127000093460083, + "str": 1415.3659579753876, + "obj": 6.487624883651733 }, "20": { - "defaults": 248.6313339471817, - "str": 31131.524999976158, - "obj": 75.06924998760223 + "defaults": 242.2933750152588, + "str": 30514.069749832153, + "obj": 75.56558299064636 } }, "fast-slow": { "1": { - "defaults": 33.369749903678894, - "str": 1494.179624915123, - "obj": 23.620875000953674 + "defaults": 32.54316711425781, + "str": 1453.245125055313, + "obj": 23.765000104904175 }, "20": { - "defaults": 293.10554099082947, - "str": 31694.717208981514, - "obj": 127.75437498092651 + "defaults": 277.2532501220703, + "str": 30932.80695796013, + "obj": 124.2115831375122 } }, "slow-fast": { "1": { - "defaults": 32.30425000190735, - "str": 1499.8680419921875, - "obj": 12.504958033561707 + "defaults": 30.72125005722046, + "str": 1442.7514998912811, + "obj": 11.64175009727478 }, "20": { - "defaults": 278.6273750066757, - "str": 31981.722874999046, - "obj": 85.5019999742508 + "defaults": 261.35354113578796, + "str": 30612.279416799545, + "obj": 78.83837509155273 } }, "slow-slow": { "1": { - "defaults": 39.82520794868469, - "str": 1547.5587919950485, - "obj": 15.588624954223633 + "defaults": 39.06583285331726, + "str": 1452.0763339996338, + "obj": 14.533082962036133 }, "20": { - "defaults": 302.5486670732498, - "str": 31157.460375070572, - "obj": 81.95633292198181 + "defaults": 271.046875, + "str": 30285.33316707611, + "obj": 94.80037498474121 } }, "fast-mixed": { "1": { - "defaults": 37.823875069618225, - "str": 1506.3974170684814, - "obj": 27.5341659784317 + "defaults": 36.86058306694031, + "str": 1484.2210412025452, + "obj": 28.041290998458862 }, "20": { - "defaults": 294.7855839729309, - "str": 32232.268458008766, - "obj": 207.33175003528595 + "defaults": 299.55041694641113, + "str": 32348.9279589653, + "obj": 129.61362504959106 } } }, "core-passthrough": { "fast-fast": { "1": { - "defaults": 24.93754208087921, - "str": 1487.0115000009537, - "obj": 6.850332975387573 + "defaults": 24.39108395576477, + "str": 1457.369541168213, + "obj": 6.425541877746582 }, "20": { - "defaults": 246.67112493515015, - "str": 31075.06575000286, - "obj": 75.19824993610382 + "defaults": 246.28545904159546, + "str": 30877.510459184647, + "obj": 81.12966704368591 } }, "fast-slow": { "1": { - "defaults": 33.18045902252197, - "str": 1488.295499920845, - "obj": 24.188707947731018 + "defaults": 35.926417112350464, + "str": 1636.9020409584045, + "obj": 25.536499977111816 }, "20": { - "defaults": 292.6447080373764, - "str": 31695.29912507534, - "obj": 136.27929091453552 + "defaults": 309.2916250228882, + "str": 31383.35754084587, + "obj": 126.46375012397766 } }, "slow-fast": { "1": { - "defaults": 31.73199999332428, - "str": 1476.718083024025, - "obj": 12.018165946006775 + "defaults": 31.042332887649536, + "str": 1462.309958934784, + "obj": 11.72333288192749 }, "20": { - "defaults": 270.70408296585083, - "str": 31249.86229097843, - "obj": 82.98341691493988 + "defaults": 263.05920791625977, + "str": 30782.21883392334, + "obj": 81.56983304023743 } }, "slow-slow": { "1": { - "defaults": 39.56950008869171, - "str": 1532.9924590587616, - "obj": 14.956582903862 + "defaults": 38.84020781517029, + "str": 1576.2104170322418, + "obj": 15.817957878112793 }, "20": { - "defaults": 276.2491250038147, - "str": 31648.490207910538, - "obj": 97.59745800495148 + "defaults": 276.67433404922485, + "str": 30440.37458395958, + "obj": 95.23049998283386 } }, "fast-mixed": { "1": { - "defaults": 38.20787501335144, - "str": 1519.799584031105, - "obj": 27.10199999809265 + "defaults": 37.690500020980835, + "str": 1469.4447920322418, + "obj": 25.87837505340576 }, "20": { - "defaults": 300.7239580154419, - "str": 32430.658625006676, - "obj": 239.2268339395523 + "defaults": 290.7175419330597, + "str": 31910.76212501526, + "obj": 128.84325003623962 } } } diff --git a/bench/results.tab b/bench/results.tab index e7e44d4..852831f 100644 --- a/bench/results.tab +++ b/bench/results.tab @@ -1,301 +1,301 @@ impl case pipeline type time score -core-passthrough fast-mixed 20 str 32430.658625006676 1 -core-extend-transform fast-mixed 20 str 32232.268458008766 1.0061550172075653 -core-extend-transform slow-fast 20 str 31981.722874999046 1.0140372597111889 -core-passthrough fast-slow 20 str 31695.29912507534 1.0232009010872394 -core-extend-transform fast-slow 20 str 31694.717208981514 1.0232196870908383 -core-passthrough slow-slow 20 str 31648.490207910538 1.0247142410888415 -core-passthrough slow-fast 20 str 31249.86229097843 1.0377856491984967 -core-extend-transform slow-slow 20 str 31157.460375070572 1.040863351332537 -core-extend-transform fast-fast 20 str 31131.524999976158 1.041730484614278 -core-passthrough fast-fast 20 str 31075.06575000286 1.0436231699687937 -core-extend-transform slow-slow 1 str 1547.5587919950485 20.956010713621044 -core-passthrough slow-slow 1 str 1532.9924590587616 21.155132520951014 -core-passthrough fast-mixed 1 str 1519.799584031105 21.33877319467863 -core-extend-transform fast-mixed 1 str 1506.3974170684814 21.528620706292916 -core-extend-transform slow-fast 1 str 1499.8680419921875 21.622341244054322 -core-extend-transform fast-slow 1 str 1494.179624915123 21.704658586044435 -core-passthrough fast-slow 1 str 1488.295499920845 21.790470122856313 -core-passthrough fast-fast 1 str 1487.0115000009537 21.80928568809715 -core-passthrough slow-fast 1 str 1476.718083024025 21.961306628408813 -core-extend-transform fast-fast 1 str 1463.6756669282913 22.156997863513382 -core-extend-transform slow-slow 20 defaults 302.5486670732498 107.19154355803165 -core-passthrough fast-mixed 20 defaults 300.7239580154419 107.84195193168279 -core-extend-transform fast-mixed 20 defaults 294.7855839729309 110.01439822099532 -core-extend-transform fast-slow 20 defaults 293.10554099082947 110.6449864965922 -core-passthrough fast-slow 20 defaults 292.6447080373764 110.81922117267418 -core-extend-transform slow-fast 20 defaults 278.6273750066757 116.3943730375727 -core-passthrough slow-slow 20 defaults 276.2491250038147 117.39642116353797 -core-passthrough slow-fast 20 defaults 270.70408296585083 119.80114326202381 -core-extend-transform fast-fast 20 defaults 248.6313339471817 130.4367318074886 -core-passthrough fast-fast 20 defaults 246.67112493515015 131.4732668184519 -core-passthrough fast-mixed 20 obj 239.2268339395523 135.56446862980778 -core-extend-transform fast-mixed 20 obj 207.33175003528595 156.41916213743085 -minipass-current-async slow-slow 20 defaults 176.62541604042053 183.61263827163444 -minipass-current-async slow-slow 20 str 164.64012503623962 196.9790694575106 -minipass-current-async fast-mixed 20 str 148.0581250190735 219.0400467439988 -minipass-current-async fast-mixed 20 defaults 144.73733401298523 224.06560716461127 -minipass-current-async fast-slow 20 defaults 144.29450011253357 224.75325531960254 -minipass-current-async fast-slow 20 str 143.48766696453094 226.0170460017535 -minipass-current-async fast-fast 20 defaults 138.3176670074463 234.46504937985097 -minipass-current-async fast-fast 20 str 138.06941604614258 234.88662119182428 -core-passthrough fast-slow 20 obj 136.27929091453552 237.97202353617197 -minipass-v3 fast-mixed 20 str 129.67150008678436 250.0985845255282 -minipass-current-async slow-slow 20 obj 127.81299996376038 253.73521186578787 -core-extend-transform fast-slow 20 obj 127.75437498092651 253.85164797564477 -minipass-v3 fast-slow 20 str 127.65012502670288 254.0589648323695 -extend-minipass-current slow-slow 20 str 127.52441596984863 254.3094071701097 -minipass-v5 slow-slow 20 str 126.47654092311859 256.416394600168 -minipass-v3 slow-slow 20 str 126.36362493038177 256.6455231311533 -minipass-v4 fast-slow 20 str 125.72883296012878 257.94130003013 -minipass-latest slow-slow 20 str 125.56391704082489 258.28008068960145 -minipass-current slow-slow 20 str 125.54474997520447 258.3195126153172 -minipass-v4 slow-slow 20 str 125.12608301639557 259.183839557714 -minipass-current fast-mixed 20 str 124.54533398151398 260.3924016119327 -extend-minipass-current fast-mixed 20 str 123.82245790958405 261.91257363577574 -minipass-v5 fast-mixed 20 str 123.39258301258087 262.8250242698956 -minipass-v4 fast-mixed 20 str 123.09395802021027 263.4626357508305 -extend-minipass-current fast-slow 20 str 122.923583984375 263.8277991400656 -minipass-current fast-slow 20 str 122.47616600990295 264.7915891030134 -minipass-v5 fast-slow 20 str 122.30604100227356 265.15990836792616 -minipass-latest fast-mixed 20 str 121.95370900630951 265.925972151686 -minipass-latest fast-slow 20 str 121.75041604042053 266.37000249953854 -minipass-v3 fast-mixed 20 defaults 119.11833393573761 272.2558111205827 -minipass-v4 slow-slow 20 defaults 117.32275009155273 276.4225915238045 -minipass-latest slow-slow 20 defaults 117.06987500190735 277.01967414314146 -extend-minipass-current slow-slow 20 defaults 117.03358399868011 277.10557531394085 -minipass-v5 slow-slow 20 defaults 116.4670000076294 278.45362740417664 -minipass-v3 fast-slow 20 defaults 116.09641695022583 279.34245928460234 -minipass-current slow-slow 20 defaults 115.83945894241333 279.9621037692239 -minipass-v3 slow-slow 20 defaults 114.48662507534027 283.27028247766947 -minipass-v4 fast-mixed 20 defaults 114.1967499256134 283.9893310985792 -minipass-current-async fast-mixed 20 obj 113.50233399868011 285.72679946285336 -extend-minipass-current fast-mixed 20 defaults 113.45395910739899 285.84862864333206 -minipass-v4 fast-slow 20 defaults 113.390958070755 286.00744871359336 -minipass-v5 fast-mixed 20 defaults 112.75820803642273 287.6123981549179 -minipass-latest fast-mixed 20 defaults 112.75670802593231 287.6162242830655 -extend-minipass-current fast-slow 20 defaults 112.59149992465973 288.03825019390945 -minipass-latest fast-slow 20 defaults 112.57000005245209 288.09326294657177 -minipass-current fast-mixed 20 defaults 112.42704200744629 288.45959162439516 -minipass-v5 fast-slow 20 defaults 112.19987499713898 289.0436252788484 -minipass-current fast-slow 20 defaults 111.76954197883606 290.1564956859851 -minipass-current-async fast-slow 20 obj 107.52308309078217 301.6157804703697 -minipass-current-async fast-fast 20 obj 106.02308309078217 305.8829990563277 -minipass-v3 fast-mixed 20 obj 98.28970897197723 329.9496861289189 -minipass-v5 slow-slow 20 obj 98.07375001907349 330.6762372061793 -minipass-v3 slow-slow 20 obj 97.96820795536041 331.0324777991635 -extend-minipass-current slow-slow 20 obj 97.87795794010162 331.33771185595504 -core-passthrough slow-slow 20 obj 97.59745800495148 332.28999287421345 -minipass-latest slow-slow 20 obj 97.52154195308685 332.5486654077678 -minipass-current slow-slow 20 obj 97.4453330039978 332.80874132449395 -minipass-v3 fast-slow 20 obj 97.09899997711182 333.99580461849484 -minipass-v4 slow-slow 20 obj 96.39866697788239 336.4222726487238 -extend-minipass-current fast-mixed 20 obj 91.68816697597504 353.70604184403044 -minipass-v4 fast-slow 20 obj 91.53458392620087 354.29951428144005 -minipass-v4 fast-mixed 20 obj 91.53399991989136 354.30177478739387 -minipass-v5 fast-mixed 20 obj 91.13495898246765 355.85311045397646 -extend-minipass-current fast-slow 20 obj 90.85945808887482 356.9321158979883 -minipass-current fast-mixed 20 obj 90.83437490463257 357.0306798396067 -minipass-v5 fast-slow 20 obj 90.54145896434784 358.1857305588236 -minipass-current fast-slow 20 obj 90.42129194736481 358.661747986137 -minipass-latest fast-slow 20 obj 90.32737505435944 359.03466258694834 -minipass-latest fast-mixed 20 obj 90.06733298301697 360.0712661395423 -minipass-current-async slow-fast 20 str 88.02425003051758 368.428684297374 -core-extend-transform slow-fast 20 obj 85.5019999742508 379.2970764984828 -minipass-current-async slow-fast 20 defaults 85.21333301067352 380.58197560403516 -core-passthrough slow-fast 20 obj 82.98341691493988 390.8089089444091 -core-extend-transform slow-slow 20 obj 81.95633292198181 395.7065606617488 -core-passthrough fast-fast 20 obj 75.19824993610382 431.268794853113 -core-extend-transform fast-fast 20 obj 75.06924998760223 432.0098926039974 -minipass-current slow-fast 20 str 64.01145792007446 506.6383375535676 -minipass-v4 slow-fast 20 str 63.61800003051758 509.7717408508547 -extend-minipass-current slow-fast 20 str 63.19883394241333 513.1528004861203 -minipass-v5 slow-fast 20 str 62.936041951179504 515.2954907803648 -minipass-v3 slow-fast 20 str 62.25849997997284 520.9033085512643 -minipass-latest slow-fast 20 str 62.154541969299316 521.7745573770861 -minipass-v3 slow-fast 20 defaults 61.24558389186859 529.5183189413989 -minipass-v4 fast-fast 20 str 60.756958961486816 533.7768574882775 -extend-minipass-current slow-fast 20 defaults 60.498250007629395 536.0594499992457 -minipass-latest slow-fast 20 defaults 60.46066701412201 536.3926702534018 -minipass-current slow-fast 20 defaults 60.190375089645386 538.8014043226283 -extend-minipass-current fast-fast 20 str 60.1637909412384 539.0394806850103 -minipass-current fast-fast 20 str 59.901875019073486 541.3963855835958 -minipass-v3 fast-fast 20 str 59.71320903301239 543.1069465229614 -minipass-v5 slow-fast 20 defaults 59.4458749294281 545.5493533152154 -minipass-current-async slow-fast 20 obj 59.35362505912781 546.3972687885433 -minipass-v4 slow-fast 20 defaults 59.353208899497986 546.4010998953921 -minipass-latest fast-fast 20 str 58.760249972343445 551.9149193591031 -minipass-v5 fast-fast 20 str 58.60199999809265 553.4053210822534 -minipass-v4 fast-fast 20 defaults 57.88370907306671 560.2726422397949 -extend-minipass-current fast-fast 20 defaults 57.37579107284546 565.2324441824612 -minipass-current fast-fast 20 defaults 57.08733403682709 568.088511614251 -minipass-latest fast-fast 20 defaults 57.05970907211304 568.3635467545104 -minipass-v5 fast-fast 20 defaults 56.76462495326996 571.3181167268241 -minipass-v3 fast-fast 20 defaults 56.744750022888184 571.5182217196422 -core-extend-transform slow-slow 1 defaults 39.82520794868469 814.3249036337489 -core-passthrough slow-slow 1 defaults 39.56950008869171 819.5872718208741 -extend-minipass-current slow-fast 20 obj 38.34554195404053 845.7478228858207 -core-passthrough fast-mixed 1 defaults 38.20787501335144 848.7951401032913 -minipass-v5 slow-fast 20 obj 38.064375042915344 851.9950370508649 -minipass-v3 slow-fast 20 obj 37.876917004585266 856.211676918708 -core-extend-transform fast-mixed 1 defaults 37.823875069618225 857.412376847035 -minipass-v4 slow-fast 20 obj 37.76174998283386 858.8229793309195 -minipass-latest slow-fast 20 obj 37.26616597175598 870.2440344838765 -minipass-current slow-fast 20 obj 36.9105829000473 878.6276475998193 -core-extend-transform fast-slow 1 defaults 33.369749903678894 971.8580066862087 -core-passthrough fast-slow 1 defaults 33.18045902252197 977.4023500697699 -core-extend-transform slow-fast 1 defaults 32.30425000190735 1003.9130647853414 -core-passthrough slow-fast 1 defaults 31.73199999332428 1022.0174786281791 -extend-minipass-current fast-fast 20 obj 29.899250030517578 1084.6646184069948 -minipass-v4 fast-fast 20 obj 29.646209001541138 1093.9226200328276 -minipass-current fast-fast 20 obj 29.437790989875793 1101.6675346380503 -minipass-v5 fast-fast 20 obj 29.388957977294922 1103.4980774092667 -minipass-v3 fast-fast 20 obj 29.284834027290344 1107.4216297345158 -minipass-latest fast-fast 20 obj 29.28237497806549 1107.5146278025422 -minipass-current-async fast-mixed 1 defaults 28.594624996185303 1134.1522621588192 -core-extend-transform fast-mixed 1 obj 27.5341659784317 1177.833338057544 -core-passthrough fast-mixed 1 obj 27.10199999809265 1196.6149593125613 -minipass-current-async fast-slow 1 defaults 26.819707989692688 1209.2099823558997 -core-passthrough fast-fast 1 defaults 24.93754208087921 1300.47534435532 -core-extend-transform fast-fast 1 defaults 24.470834016799927 1325.278027007257 -core-passthrough fast-slow 1 obj 24.188707947731018 1340.7354661144182 -core-extend-transform fast-slow 1 obj 23.620875000953674 1372.9660151750227 -minipass-current-async slow-slow 1 defaults 21.783707976341248 1488.7574998815087 -minipass-current slow-slow 1 str 20.47504198551178 1583.911703231414 -minipass-v3 slow-slow 1 str 20.06712508201599 1616.1088592640901 -minipass-v4 slow-slow 1 defaults 20.01687502861023 1620.1659139427786 -minipass-v3 slow-slow 1 defaults 19.70970904827118 1645.415391246037 -minipass-latest slow-slow 1 defaults 19.617667078971863 1653.1353343114397 -minipass-current-async fast-mixed 1 str 19.377125024795532 1673.6568806521846 -extend-minipass-current slow-slow 1 defaults 19.36074995994568 1675.0724373849446 -minipass-latest slow-slow 1 str 19.31058394908905 1679.4240252137247 -minipass-v5 slow-slow 1 defaults 19.284375071525574 1681.706485417425 -minipass-current slow-slow 1 defaults 19.24495792388916 1685.1509238557408 -extend-minipass-current slow-slow 1 str 18.793750047683716 1725.6087019739668 -minipass-v4 slow-slow 1 str 18.69504201412201 1734.719750857417 -minipass-current-async slow-slow 1 str 18.673874974250793 1736.686074514527 -minipass-v5 slow-slow 1 str 18.673540949821472 1736.7171396229876 -minipass-current-async fast-slow 1 str 17.864084005355835 1815.411224851139 -minipass-latest slow-slow 1 obj 17.546957969665527 1848.2211378787986 -minipass-current slow-slow 1 obj 17.39049994945526 1864.849125629797 -minipass-v5 slow-slow 1 obj 17.366083025932312 1867.471126135861 -minipass-v3 slow-slow 1 obj 17.246999979019165 1880.3652034822467 -minipass-v4 slow-slow 1 obj 16.518290996551514 1963.318035248147 -extend-minipass-current slow-slow 1 obj 16.4716659784317 1968.8754414685175 -minipass-current-async fast-fast 1 defaults 15.625333070755005 2075.517909164137 -core-extend-transform slow-slow 1 obj 15.588624954223633 2080.405341730914 -core-passthrough slow-slow 1 obj 14.956582903862 2168.3200523451533 -minipass-current-async slow-fast 1 defaults 14.943750023841858 2170.182087713292 -minipass-current-async slow-slow 1 obj 14.390041947364807 2253.6875669737415 -minipass-v4 slow-fast 1 str 14.387542009353638 2254.079161257902 -minipass-current-async slow-fast 1 str 14.345583081245422 2260.672043885384 -minipass-v3 fast-mixed 1 defaults 14.314666986465454 2265.5545291881344 -minipass-latest fast-slow 1 defaults 14.112375020980835 2298.029819700234 -minipass-latest fast-slow 1 str 14.106082916259766 2299.0548699826927 -minipass-latest slow-fast 1 str 14.089292049407959 2301.794760963127 -minipass-v3 slow-fast 1 str 13.893125057220459 2334.295451270842 -minipass-current slow-fast 1 str 13.886415958404541 2335.42324543278 -minipass-latest fast-mixed 1 str 13.876582980155945 2337.078131654153 -extend-minipass-current slow-fast 1 str 13.712583065032959 2365.0291466751255 -minipass-latest fast-mixed 1 defaults 13.652250051498413 2375.4808549999584 -minipass-v3 fast-mixed 1 str 13.60479199886322 2383.767324610071 -minipass-current-async fast-fast 1 str 13.595166087150574 2385.455125528654 -minipass-v5 slow-fast 1 str 13.549291968345642 2393.531610417163 -minipass-current-async slow-fast 1 obj 13.515666961669922 2399.486367707874 -minipass-v3 slow-fast 1 defaults 13.328750014305115 2433.135784691017 -extend-minipass-current fast-mixed 1 defaults 13.088165998458862 2477.8611937551373 -minipass-v4 fast-slow 1 defaults 12.98199999332428 2498.1249916564057 -minipass-latest slow-fast 1 defaults 12.974624991416931 2499.544969234983 -minipass-v4 fast-mixed 1 defaults 12.962167024612427 2501.9472873191403 -minipass-v3 fast-slow 1 str 12.92941701412201 2508.284680553242 -minipass-v3 fast-slow 1 defaults 12.836833000183105 2526.3753625636546 -minipass-current slow-fast 1 defaults 12.808166980743408 2532.0296552789277 -minipass-current fast-mixed 1 defaults 12.802457928657532 2533.1587735518033 -minipass-v5 fast-mixed 1 defaults 12.790333032608032 2535.560140797511 -minipass-v5 slow-fast 1 defaults 12.730375051498413 2547.502213706537 -minipass-v5 fast-slow 1 defaults 12.699750065803528 2553.6454227026356 -extend-minipass-current slow-fast 1 defaults 12.678249955177307 2557.9759619554784 -extend-minipass-current fast-slow 1 defaults 12.647625088691711 2564.1698261599363 -minipass-v4 fast-mixed 1 str 12.558375000953674 2582.3929148909724 -minipass-v4 slow-fast 1 defaults 12.530249953269958 2588.189281614722 -core-extend-transform slow-fast 1 obj 12.504958033561707 2593.4240273311543 -minipass-current fast-slow 1 defaults 12.497583031654358 2594.9544438204616 -minipass-v5 fast-mixed 1 str 12.488708972930908 2596.7983316209584 -minipass-v4 fast-slow 1 str 12.487249970436096 2597.101739917687 -extend-minipass-current fast-mixed 1 str 12.378084063529968 2620.006332042807 -minipass-current-async fast-mixed 1 obj 12.353209018707275 2625.2821089560452 -extend-minipass-current fast-slow 1 str 12.273958086967468 2642.2331244101006 -minipass-current fast-mixed 1 str 12.223124980926514 2653.221551412823 -minipass-v5 fast-slow 1 str 12.111208081245422 2677.739364021542 -minipass-current fast-slow 1 str 12.10783302783966 2678.4857827522515 -core-passthrough slow-fast 1 obj 12.018165946006775 2698.4698639298017 -minipass-current-async fast-slow 1 obj 11.643916010856628 2785.2020398265304 -minipass-latest slow-fast 1 obj 10.196707963943481 3180.502838728395 -minipass-v3 fast-fast 1 defaults 9.991374969482422 3245.865431340794 -minipass-v3 slow-fast 1 obj 9.958582997322083 3256.553531132638 -minipass-v4 slow-fast 1 obj 9.92158305644989 3268.6979931014066 -extend-minipass-current slow-fast 1 obj 9.786041975021362 3313.9709300026666 -minipass-current slow-fast 1 obj 9.495208978652954 3415.4760256374557 -minipass-v5 slow-fast 1 obj 9.331416010856628 3475.427372145369 -extend-minipass-current fast-fast 1 defaults 9.140750050544739 3547.9209524030234 -minipass-v4 fast-fast 1 defaults 9.019958019256592 3595.4334328131995 -minipass-latest fast-fast 1 defaults 9.006374955177307 3600.855925542378 -minipass-current fast-fast 1 defaults 9.00616705417633 3600.93904875637 -minipass-v3 fast-fast 1 str 8.99762499332428 3604.3576665029227 -minipass-latest fast-slow 1 obj 8.911999940872192 3638.987751365804 -minipass-v5 fast-fast 1 defaults 8.861541986465454 3659.70828491691 -extend-minipass-current fast-fast 1 str 8.64004111289978 3753.530591027739 -minipass-latest fast-mixed 1 obj 8.559291958808899 3788.9417467095827 -minipass-current fast-fast 1 str 8.558458089828491 3789.3109114537447 -minipass-current-async fast-fast 1 obj 8.424084067344666 3849.7548654246825 -minipass-v5 fast-fast 1 str 8.416458010673523 3853.2430844280334 -minipass-latest fast-fast 1 str 8.402208089828491 3859.7780819385375 -minipass-v4 fast-fast 1 str 8.39662492275238 3862.3445638412577 -minipass-v3 fast-mixed 1 obj 8.298417091369629 3908.053580330956 -minipass-v3 fast-slow 1 obj 8.141417026519775 3983.4169554719224 -extend-minipass-current fast-mixed 1 obj 8.092041015625 4007.722966602122 -minipass-v4 fast-slow 1 obj 8.032541036605835 4037.4096412597114 -extend-minipass-current fast-slow 1 obj 8.015959024429321 4045.761527244771 -minipass-current fast-mixed 1 obj 8.009207963943481 4049.1717496918186 -minipass-v4 fast-mixed 1 obj 7.944625020027161 4082.0880209266065 -minipass-v5 fast-slow 1 obj 7.8963329792022705 4107.053072663482 -baseline slow-slow 1 str 7.873832941055298 4118.789269189159 -minipass-v5 fast-mixed 1 obj 7.851499915122986 4130.504868571814 -minipass-current fast-slow 1 obj 7.822792053222656 4145.66287897767 -baseline slow-fast 20 defaults 7.802249908447266 4156.577782761734 -baseline slow-slow 20 defaults 7.750833034515381 4184.151365484084 -baseline slow-slow 20 str 7.746875047683716 4186.2891069481375 -baseline slow-slow 1 defaults 7.692291975021362 4215.994235569381 -baseline slow-fast 20 str 7.662291884422302 4232.50107333281 -baseline slow-fast 1 str 7.622833013534546 4254.4102130304 -baseline slow-fast 1 defaults 7.529915928840637 4306.9084610616555 -core-passthrough fast-fast 1 obj 6.850332975387573 4734.172593000391 -core-extend-transform fast-fast 1 obj 6.729416012763977 4819.2381870126665 -baseline slow-fast 1 obj 5.5887919664382935 5802.8029706166635 -baseline slow-slow 1 obj 5.586833953857422 5804.836673661112 -minipass-current fast-fast 1 obj 5.563665986061096 5829.008913593424 -minipass-v3 fast-fast 1 obj 5.436582922935486 5965.265146272381 -extend-minipass-current fast-fast 1 obj 5.417958974838257 5985.770430455286 -baseline slow-fast 20 obj 5.392500042915344 6014.030295208622 -minipass-v5 fast-fast 1 obj 5.3903340101242065 6016.446951913355 -baseline slow-slow 20 obj 5.37624990940094 6032.208169545514 -minipass-latest fast-fast 1 obj 5.372582912445068 6036.3253864140825 -minipass-v4 fast-fast 1 obj 5.291291952133179 6129.062413940756 -baseline fast-mixed 1 defaults 3.6228749752044678 8951.636158290656 -baseline fast-mixed 20 defaults 3.593625068664551 9024.496992686672 -baseline fast-slow 20 defaults 3.518875002861023 9216.200802426603 -baseline fast-fast 20 defaults 3.4866249561309814 9301.447397713275 -baseline fast-slow 1 defaults 3.4544999599456787 9387.945868008243 -baseline fast-fast 1 defaults 3.442207932472229 9421.469958008796 -baseline fast-slow 20 str 3.0439999103546143 10653.961754298682 -baseline fast-fast 20 str 2.9250420331954956 11087.245330822625 -baseline fast-fast 1 str 2.8753750324249268 11278.757817430345 -baseline fast-mixed 20 str 2.7782089710235596 11673.225075311177 -baseline fast-mixed 1 str 2.7109580039978027 11962.803767960162 -baseline fast-slow 1 str 2.6360830068588257 12302.593863935745 -baseline fast-mixed 20 obj 1.8817919492721558 17233.92356819801 -baseline fast-slow 1 obj 1.7927500009536743 18089.894635478904 -baseline fast-slow 20 obj 1.7697919607162476 18324.559804126216 -baseline fast-mixed 1 obj 1.7681249380111694 18341.836556802078 -baseline fast-fast 1 obj 1.7675409317016602 18347.896811523788 -baseline fast-fast 20 obj 1.7282921075820923 18764.570226718024 +core-extend-transform fast-mixed 20 str 32348.9279589653 1 +core-passthrough fast-mixed 20 str 31910.76212501526 1.0137309736518816 +core-passthrough fast-slow 20 str 31383.35754084587 1.0307669571957916 +core-extend-transform fast-slow 20 str 30932.80695796013 1.045780552761661 +core-passthrough fast-fast 20 str 30877.510459184647 1.047653372240798 +core-passthrough slow-fast 20 str 30782.21883392334 1.0508965625088527 +core-extend-transform slow-fast 20 str 30612.279416799545 1.0567304550739436 +core-extend-transform fast-fast 20 str 30514.069749832153 1.0601315466660504 +core-passthrough slow-slow 20 str 30440.37458395958 1.062698090975905 +core-extend-transform slow-slow 20 str 30285.33316707611 1.068138421344249 +core-passthrough fast-slow 1 str 1636.9020409584045 19.762287021173872 +core-passthrough slow-slow 1 str 1576.2104170322418 20.523229392096827 +core-extend-transform fast-mixed 1 str 1484.2210412025452 21.79522258541461 +core-passthrough fast-mixed 1 str 1469.4447920322418 22.014388110646024 +core-passthrough slow-fast 1 str 1462.309958934784 22.121799664504643 +core-passthrough fast-fast 1 str 1457.369541168213 22.196791579049144 +core-extend-transform fast-slow 1 str 1453.245125055313 22.259787699431673 +core-extend-transform slow-slow 1 str 1452.0763339996338 22.277704829650823 +core-extend-transform slow-fast 1 str 1442.7514998912811 22.421690749517822 +core-extend-transform fast-fast 1 str 1415.3659579753876 22.85552211898531 +core-passthrough fast-slow 20 defaults 309.2916250228882 104.5903779534005 +core-extend-transform fast-mixed 20 defaults 299.55041694641113 107.991597169943 +core-passthrough fast-mixed 20 defaults 290.7175419330597 111.27270732914332 +core-extend-transform fast-slow 20 defaults 277.2532501220703 116.67646076185787 +core-passthrough slow-slow 20 defaults 276.67433404922485 116.92059572540582 +core-extend-transform slow-slow 20 defaults 271.046875 119.34809415886201 +core-passthrough slow-fast 20 defaults 263.05920791625977 122.97204197947335 +core-extend-transform slow-fast 20 defaults 261.35354113578796 123.77459214206017 +core-passthrough fast-fast 20 defaults 246.28545904159546 131.34729141074402 +core-extend-transform fast-fast 20 defaults 242.2933750152588 133.51140103161333 +minipass-current-async slow-slow 20 defaults 176.85458302497864 182.91257939522208 +minipass-current-async fast-slow 20 defaults 167.81833291053772 192.76158568569616 +minipass-current-async fast-mixed 20 defaults 167.20274996757507 193.4712674596476 +minipass-current-async slow-slow 20 str 166.02983283996582 194.83804449858147 +minipass-current-async fast-fast 20 defaults 164.3801248073578 196.79342619356217 +minipass-current-async fast-slow 20 str 162.2190420627594 199.4151090255491 +minipass-current-async fast-mixed 20 str 161.45175004005432 200.362820167263 +minipass-current-async fast-fast 20 str 156.7847089767456 206.3270593802825 +minipass-current-async fast-mixed 20 obj 134.34225010871887 240.79489462761234 +minipass-current-async fast-slow 20 obj 133.96308302879333 241.47643684799633 +core-extend-transform fast-mixed 20 obj 129.61362504959106 249.5796869085976 +core-passthrough fast-mixed 20 obj 128.84325003623962 251.0719649641448 +minipass-current-async slow-slow 20 obj 127.8735420703888 252.9759278988192 +core-passthrough fast-slow 20 obj 126.46375012397766 255.79605165315994 +minipass-current-async fast-fast 20 obj 125.96362495422363 256.81166265833656 +minipass-v3 fast-mixed 20 str 124.79616594314575 259.21411699220573 +minipass-v3 fast-slow 20 str 124.49425005912781 259.84274730440455 +core-extend-transform fast-slow 20 obj 124.2115831375122 260.4340685614838 +minipass-v4 slow-slow 20 str 123.68508315086365 261.5426786713481 +extend-minipass-current slow-slow 20 str 123.51199984550476 261.9091910051576 +extend-minipass-current fast-mixed 20 str 122.74500012397766 263.545789452047 +minipass-v5 slow-slow 20 str 122.68854212760925 263.6670661985611 +minipass-latest slow-slow 20 str 122.18516683578491 264.7533149620509 +minipass-current slow-slow 20 str 122.02308297157288 265.1049880988622 +minipass-latest fast-mixed 20 str 120.48091697692871 268.49835451667343 +minipass-v4 fast-slow 20 str 120.14249992370605 269.254659920576 +minipass-v3 slow-slow 20 str 119.96637487411499 269.6499581062626 +minipass-current fast-slow 20 str 119.85637497901917 269.8974331955891 +minipass-v4 fast-mixed 20 str 119.71024990081787 270.22688521464937 +extend-minipass-current fast-slow 20 str 119.46612501144409 270.77908449668456 +minipass-latest fast-slow 20 str 119.18562507629395 271.41635527151766 +minipass-v5 fast-slow 20 str 119.16074991226196 271.4730142499423 +minipass-v5 fast-mixed 20 str 119.14762496948242 271.5029188978875 +minipass-current fast-mixed 20 str 118.59824991226196 272.76058443439746 +extend-minipass-current slow-slow 20 defaults 115.68562483787537 279.6278967615888 +minipass-current slow-slow 20 defaults 114.9782497882843 281.3482377626302 +minipass-v4 slow-slow 20 defaults 114.11229205131531 283.4832898143722 +extend-minipass-current fast-mixed 20 defaults 113.75462508201599 284.37461716956153 +minipass-latest slow-slow 20 defaults 113.54299998283386 284.90464373722745 +minipass-v5 slow-slow 20 defaults 113.02391600608826 286.2131228688162 +minipass-current fast-slow 20 defaults 112.8249580860138 286.7178371500357 +minipass-v3 fast-mixed 20 defaults 112.7664577960968 286.8665788674352 +extend-minipass-current fast-slow 20 defaults 112.71425008773804 286.99945156698936 +minipass-v3 fast-slow 20 defaults 112.68245792388916 287.0804254271347 +minipass-current fast-mixed 20 defaults 112.22262501716614 288.25673926284514 +minipass-v5 fast-mixed 20 defaults 110.05741691589355 293.9277412233518 +minipass-v4 fast-mixed 20 defaults 110.00562500953674 294.0661257654858 +minipass-latest fast-mixed 20 defaults 109.3677499294281 295.7812333145662 +minipass-v4 fast-slow 20 defaults 109.29241704940796 295.98510886936725 +minipass-latest fast-slow 20 defaults 109.13374996185303 296.41543491607916 +minipass-v5 fast-slow 20 defaults 109.11375021934509 296.46976567056043 +minipass-v3 slow-slow 20 defaults 108.75849986076355 297.43815886003887 +extend-minipass-current slow-slow 20 obj 95.79333400726318 337.69497944932743 +minipass-v4 slow-slow 20 obj 95.43070816993713 338.97818196382156 +minipass-current slow-slow 20 obj 95.23783302307129 339.66467875354533 +core-passthrough slow-slow 20 obj 95.23049998283386 339.6908339743725 +core-extend-transform slow-slow 20 obj 94.80037498474121 341.23206753319374 +minipass-v3 fast-mixed 20 obj 94.15024995803833 343.58833856928516 +minipass-latest slow-slow 20 obj 94.0842502117157 343.8293644916256 +minipass-v5 slow-slow 20 obj 93.84029197692871 344.72322365448855 +minipass-v3 fast-slow 20 obj 93.80837512016296 344.84051042914075 +minipass-current fast-slow 20 obj 93.4788339138031 346.05617768824834 +minipass-v3 slow-slow 20 obj 92.20295882225037 350.8447925334786 +extend-minipass-current fast-mixed 20 obj 89.51083302497864 361.3967926087572 +minipass-current fast-mixed 20 obj 89.4826250076294 361.5107173734252 +minipass-v4 fast-mixed 20 obj 89.30245780944824 362.24006317934476 +extend-minipass-current fast-slow 20 obj 88.86787509918213 364.01149372438425 +minipass-latest fast-slow 20 obj 88.77216601371765 364.4039501521967 +minipass-v4 fast-slow 20 obj 88.43941688537598 365.7750028009785 +minipass-latest fast-mixed 20 obj 88.43137502670288 365.8082660051047 +minipass-v5 fast-mixed 20 obj 88.40920901298523 365.8999816887176 +minipass-v5 fast-slow 20 obj 87.87933301925659 368.1062070859918 +minipass-current-async slow-fast 20 str 87.39795804023743 370.133681430773 +minipass-current-async slow-fast 20 defaults 85.04554104804993 380.37182855581415 +core-passthrough slow-fast 20 obj 81.56983304023743 396.5795534117124 +core-passthrough fast-fast 20 obj 81.12966704368591 398.7311810554623 +core-extend-transform slow-fast 20 obj 78.83837509155273 410.31956736043105 +core-extend-transform fast-fast 20 obj 75.56558299064636 428.09076141144186 +extend-minipass-current fast-fast 20 str 62.77754187583923 515.2945940913818 +extend-minipass-current slow-fast 20 str 62.621875047683716 516.5755246762104 +minipass-current slow-fast 20 str 62.18691611289978 520.1886502980163 +minipass-latest slow-fast 20 str 61.270041942596436 527.9730017040438 +minipass-v4 slow-fast 20 str 61.16729211807251 528.8598994462839 +minipass-v5 slow-fast 20 str 60.98283386230469 530.4595721479113 +minipass-v3 slow-fast 20 str 60.60979080200195 533.7244615253945 +minipass-current fast-fast 20 str 60.21724987030029 537.2036755022931 +minipass-current-async slow-fast 20 obj 59.65033411979675 542.3092500035024 +extend-minipass-current slow-fast 20 defaults 59.27174997329712 545.7731208128496 +minipass-v3 fast-fast 20 str 59.039124965667725 547.9235672577594 +minipass-latest slow-fast 20 defaults 58.92799997329712 548.9568282246814 +minipass-v4 slow-fast 20 defaults 58.75887489318848 550.5368851559698 +minipass-v5 slow-fast 20 defaults 58.45437502861023 553.4047356272694 +minipass-current slow-fast 20 defaults 58.255666971206665 555.2923799662962 +minipass-v3 slow-fast 20 defaults 58.234708070755005 555.4922318776192 +minipass-latest fast-fast 20 str 57.88187503814697 558.8783697426143 +minipass-v4 fast-fast 20 str 57.79591608047485 559.7095807586604 +minipass-v5 fast-fast 20 str 57.3116250038147 564.4392033346138 +minipass-v3 fast-fast 20 defaults 56.02125000953674 577.4403097656408 +minipass-latest fast-fast 20 defaults 55.94037485122681 578.2751375012616 +minipass-v4 fast-fast 20 defaults 55.740999937057495 580.3435172582763 +minipass-current fast-fast 20 defaults 55.45591592788696 583.3269078276658 +minipass-v5 fast-fast 20 defaults 55.41020894050598 583.8080847826867 +extend-minipass-current fast-fast 20 defaults 55.100250005722046 587.0922174691755 +core-extend-transform slow-slow 1 defaults 39.06583285331726 828.0619046425476 +core-passthrough slow-slow 1 defaults 38.84020781517029 832.8721646625792 +minipass-current slow-fast 20 obj 38.114166021347046 848.7376567769385 +extend-minipass-current slow-fast 20 obj 37.86075019836426 854.4185677642201 +core-passthrough fast-mixed 1 defaults 37.690500020980835 858.2780260531941 +core-extend-transform fast-mixed 1 defaults 36.86058306694031 877.6021773778874 +minipass-v4 slow-fast 20 obj 36.75349998474121 880.1591133469047 +minipass-latest slow-fast 20 obj 36.384124994277954 889.0945697897845 +minipass-v5 slow-fast 20 obj 36.37870812416077 889.226957938094 +minipass-v3 slow-fast 20 obj 36.09575009346008 896.1976929474132 +core-passthrough fast-slow 1 defaults 35.926417112350464 900.421766462336 +core-extend-transform fast-slow 1 defaults 32.54316711425781 994.0313382956691 +extend-minipass-current fast-fast 20 obj 31.361207962036133 1031.4949602108707 +core-passthrough slow-fast 1 defaults 31.042332887649536 1042.0907499460393 +core-extend-transform slow-fast 1 defaults 30.72125005722046 1052.9821507495033 +minipass-current fast-fast 20 obj 30.116125106811523 1074.139778747591 +minipass-latest fast-fast 20 obj 29.797584056854248 1085.6225087659136 +minipass-v5 fast-fast 20 obj 29.30795907974243 1103.759148528523 +minipass-v3 fast-fast 20 obj 29.18766713142395 1108.3081019564556 +minipass-v4 fast-fast 20 obj 28.896167039871216 1119.488543734189 +core-extend-transform fast-mixed 1 obj 28.041290998458862 1153.6176405267213 +core-passthrough fast-mixed 1 obj 25.87837505340576 1250.0370634634562 +core-passthrough fast-slow 1 obj 25.536499977111816 1266.7721883562515 +minipass-current-async fast-mixed 1 str 24.439208030700684 1323.6487826581115 +core-passthrough fast-fast 1 defaults 24.39108395576477 1326.2603670108608 +minipass-current-async fast-slow 1 str 24.252208948135376 1333.8549089753096 +core-extend-transform fast-fast 1 defaults 24.127000093460083 1340.777047857428 +core-extend-transform fast-slow 1 obj 23.765000104904175 1361.2004130515336 +minipass-current-async fast-slow 1 defaults 23.611124992370605 1370.0714374862746 +minipass-current-async fast-mixed 1 defaults 22.599792003631592 1431.3816673076951 +minipass-current-async slow-slow 1 defaults 21.52458381652832 1502.8828540752168 +extend-minipass-current slow-slow 1 defaults 19.91116714477539 1624.6625686859109 +minipass-latest slow-slow 1 defaults 19.82358407974243 1631.8405303924037 +minipass-v3 slow-slow 1 str 19.677291870117188 1643.972563525971 +minipass-v4 slow-slow 1 defaults 19.634707927703857 1647.5380269508437 +minipass-current slow-slow 1 defaults 19.602458000183105 1650.2485534550378 +minipass-v5 slow-slow 1 defaults 19.6010000705719 1650.371299550812 +minipass-v5 slow-slow 1 str 19.504374980926514 1658.5472741679537 +minipass-v3 slow-slow 1 defaults 19.341042041778564 1672.5535205956544 +extend-minipass-current slow-slow 1 str 19.340209007263184 1672.6255619479973 +minipass-current slow-slow 1 str 19.340165853500366 1672.6292940818025 +minipass-v4 slow-slow 1 str 19.170832872390747 1687.4033681423016 +minipass-latest slow-slow 1 str 19.03404211997986 1699.530123714969 +minipass-current-async slow-slow 1 str 18.75612497329712 1724.712754101399 +minipass-current slow-slow 1 obj 17.1333749294281 1888.0651414102385 +extend-minipass-current slow-slow 1 obj 17.08750009536743 1893.1340323875331 +minipass-latest slow-slow 1 obj 16.994542121887207 1903.4892335994882 +minipass-current-async fast-fast 1 defaults 16.789916038513184 1926.6878931831711 +minipass-v5 slow-slow 1 obj 16.68008303642273 1939.3745156021098 +minipass-v4 slow-slow 1 obj 16.464499950408936 1964.7683231437488 +minipass-v3 slow-slow 1 obj 16.29824995994568 1984.809905263787 +core-passthrough slow-slow 1 obj 15.817957878112793 2045.0761222298047 +minipass-current-async slow-fast 1 defaults 15.29449987411499 2115.069353376758 +extend-minipass-current slow-fast 1 str 15.27899980545044 2117.2150252548304 +minipass-v3 fast-mixed 1 defaults 14.748833894729614 2193.321057776978 +minipass-current-async slow-fast 1 str 14.680792093276978 2203.486552594079 +core-extend-transform slow-slow 1 obj 14.533082962036133 2225.882013022866 +minipass-current-async slow-slow 1 obj 14.529249906539917 2226.469237369534 +minipass-v3 fast-mixed 1 str 14.528291940689087 2226.6160461964787 +minipass-v5 slow-fast 1 str 14.087542057037354 2296.2790689810627 +minipass-v3 slow-fast 1 str 13.941625118255615 2320.3125664745185 +extend-minipass-current slow-fast 1 defaults 13.905959129333496 2326.263701633342 +minipass-current slow-fast 1 str 13.745499849319458 2353.4195419286193 +minipass-latest slow-fast 1 defaults 13.740790843963623 2354.2260650285857 +minipass-current-async fast-fast 1 str 13.664083003997803 2367.442290090066 +minipass-v4 slow-fast 1 str 13.651708126068115 2369.588307941817 +minipass-v3 slow-fast 1 defaults 13.644958019256592 2370.760533913885 +minipass-current fast-mixed 1 defaults 13.639082908630371 2371.781752165752 +minipass-current-async fast-mixed 1 obj 13.420375108718872 2410.4339630528684 +minipass-current-async fast-slow 1 obj 13.320249795913696 2428.5526513841432 +minipass-current slow-fast 1 defaults 13.317584037780762 2429.0387706354522 +minipass-v5 fast-mixed 1 defaults 13.159540891647339 2458.2109835988203 +minipass-v4 fast-mixed 1 defaults 13.131667137145996 2463.428871682163 +extend-minipass-current fast-mixed 1 defaults 13.097042083740234 2469.941514437521 +minipass-latest fast-mixed 1 defaults 13.074541091918945 2474.192228357398 +extend-minipass-current fast-slow 1 defaults 13.048874855041504 2479.058793829042 +minipass-latest slow-fast 1 str 13.026999950408936 2483.2216229454907 +minipass-v5 slow-fast 1 defaults 12.915709018707275 2504.618825966945 +minipass-latest fast-slow 1 defaults 12.913458108901978 2505.0553992710406 +minipass-v4 slow-fast 1 defaults 12.893832921981812 2508.8682438110263 +minipass-current fast-slow 1 defaults 12.837042093276978 2519.9674289380964 +minipass-v3 fast-slow 1 defaults 12.820749998092651 2523.169702535177 +minipass-v4 fast-slow 1 defaults 12.763917207717896 2534.404402075331 +minipass-v5 fast-slow 1 defaults 12.69533395767212 2548.095864734303 +minipass-current-async slow-fast 1 obj 12.648375034332275 2557.556039503777 +extend-minipass-current fast-slow 1 str 12.627707958221436 2561.7418510145467 +extend-minipass-current fast-mixed 1 str 12.528666973114014 2581.992803255504 +minipass-latest fast-slow 1 str 12.469624996185303 2594.21818770504 +minipass-v5 fast-mixed 1 str 12.466333150863647 2594.903213919341 +minipass-current fast-mixed 1 str 12.444166898727417 2599.5254019193053 +minipass-current fast-slow 1 str 12.397625207901001 2609.2842311727045 +minipass-latest fast-mixed 1 str 12.364291906356812 2616.318686421004 +minipass-v4 fast-slow 1 str 12.276791095733643 2634.966067819384 +minipass-v3 fast-slow 1 str 12.260708093643188 2638.422488480682 +minipass-v4 fast-mixed 1 str 12.219375133514404 2647.3471520029725 +minipass-v5 fast-slow 1 str 12.118332862854004 2669.420647630797 +core-passthrough slow-fast 1 obj 11.72333288192749 2759.362741361197 +core-extend-transform slow-fast 1 obj 11.64175009727478 2778.699739185938 +minipass-latest slow-fast 1 obj 11.303791046142578 2861.776887675607 +minipass-v3 slow-fast 1 obj 9.986666917800903 3239.2116634334134 +minipass-v4 slow-fast 1 obj 9.69395899772644 3337.0192680361256 +minipass-v5 slow-fast 1 obj 9.628709077835083 3359.632916257828 +minipass-current fast-fast 1 defaults 9.237291097640991 3501.9929129684497 +extend-minipass-current fast-fast 1 defaults 9.193875074386597 3518.530292965024 +minipass-latest fast-fast 1 defaults 9.106709003448486 3552.208371511109 +minipass-v4 fast-fast 1 defaults 9.067874908447266 3567.4210645352364 +minipass-v5 fast-fast 1 defaults 9.045500040054321 3576.2454055299563 +minipass-v3 fast-fast 1 defaults 8.96229100227356 3609.4485160947133 +minipass-v3 fast-mixed 1 obj 8.816375017166138 3669.1869272778818 +extend-minipass-current fast-fast 1 str 8.732290983200073 3704.5178660675565 +minipass-v4 fast-fast 1 str 8.513124942779541 3799.8887807234923 +minipass-current fast-fast 1 str 8.494791984558105 3808.0894762072357 +minipass-v5 fast-fast 1 str 8.363375186920166 3867.9273900753788 +minipass-latest fast-fast 1 str 8.27245807647705 3910.437219494689 +extend-minipass-current slow-fast 1 obj 8.198750019073486 3945.5926676272716 +minipass-v3 fast-fast 1 str 8.173666954040527 3957.700765257398 +minipass-current fast-slow 1 obj 8.142207860946655 3972.992155373966 +minipass-current-async fast-fast 1 obj 8.046792030334473 4020.102400685592 +minipass-latest fast-slow 1 obj 7.9867918491363525 4050.3031217050357 +minipass-current fast-mixed 1 obj 7.978666067123413 4054.428107006641 +extend-minipass-current fast-mixed 1 obj 7.946000099182129 4071.095841327127 +extend-minipass-current fast-slow 1 obj 7.943833112716675 4072.206389530059 +minipass-v5 fast-slow 1 obj 7.893208026885986 4098.324515048609 +baseline slow-fast 20 str 7.890166997909546 4099.904091705025 +minipass-v3 fast-slow 1 obj 7.883208990097046 4103.522816609619 +minipass-v5 fast-mixed 1 obj 7.881624937057495 4104.347544738961 +baseline slow-slow 20 str 7.878582954406738 4105.932265506138 +minipass-latest fast-mixed 1 obj 7.872082948684692 4109.322547772483 +baseline slow-fast 1 str 7.863041877746582 4114.04752281899 +minipass-v4 fast-mixed 1 obj 7.822416067123413 4135.41387742383 +baseline slow-slow 1 str 7.789834022521973 4152.710810710223 +minipass-v4 fast-slow 1 obj 7.75220799446106 4172.866360407069 +baseline slow-slow 20 defaults 7.742792129516602 4177.94090527714 +baseline slow-slow 1 defaults 7.716665983200073 4192.086067920011 +baseline slow-fast 1 defaults 7.663082838058472 4221.398703705161 +minipass-current slow-fast 1 obj 7.646499872207642 4230.553651945038 +baseline slow-fast 20 defaults 7.421875 4358.592398681641 +core-extend-transform fast-fast 1 obj 6.487624883651733 4986.251292130324 +core-passthrough fast-fast 1 obj 6.425541877746582 5034.428002251224 +baseline slow-slow 1 obj 5.735374927520752 5640.2464298788 +baseline slow-fast 1 obj 5.66966700553894 5705.613385647208 +baseline slow-fast 20 obj 5.565249919891357 5812.664017718867 +baseline slow-slow 20 obj 5.557208061218262 5821.075547758726 +minipass-v4 fast-fast 1 obj 5.3687920570373535 6025.364293363287 +extend-minipass-current fast-fast 1 obj 5.323959112167358 6076.103756138015 +minipass-v5 fast-fast 1 obj 5.296582937240601 6107.509000098535 +minipass-current fast-fast 1 obj 5.270291805267334 6137.976634734822 +minipass-latest fast-fast 1 obj 5.223582983016968 6192.861885058373 +minipass-v3 fast-fast 1 obj 5.094624996185303 6349.619056002586 +baseline fast-mixed 1 defaults 3.6327500343322754 8904.804253869137 +baseline fast-mixed 20 defaults 3.5595409870147705 9087.949282498617 +baseline fast-slow 20 defaults 3.558332920074463 9091.034674262113 +baseline fast-slow 1 defaults 3.533208131790161 9155.68139558627 +baseline fast-fast 1 defaults 3.3990838527679443 9516.954967916694 +baseline fast-fast 20 defaults 3.3317079544067383 9709.412830190731 +baseline fast-mixed 1 str 2.7679169178009033 11687.102221502504 +baseline fast-slow 20 str 2.7277917861938477 11859.016557895911 +baseline fast-slow 1 str 2.6589999198913574 12165.825097236944 +baseline fast-fast 1 str 2.658750057220459 12166.968411007347 +baseline fast-mixed 20 str 2.654458999633789 12186.636886622917 +baseline fast-fast 20 str 2.5267090797424316 12802.790878585394 +baseline fast-fast 1 obj 1.8272500038146973 17703.61356761876 +baseline fast-slow 20 obj 1.825958013534546 17716.140086018073 +baseline fast-mixed 1 obj 1.7796669006347656 18176.956568348378 +baseline fast-mixed 20 obj 1.7744169235229492 18230.736829729587 +baseline fast-slow 1 obj 1.7267498970031738 18733.997329380378 +baseline fast-fast 20 obj 1.6895420551300049 19146.56569852365 diff --git a/bench/results/baseline-fast-fast-1.json b/bench/results/baseline-fast-fast-1.json index d46bea5..3ad948b 100644 --- a/bench/results/baseline-fast-fast-1.json +++ b/bench/results/baseline-fast-fast-1.json @@ -1,5 +1,5 @@ { - "defaults": 3.442207932472229, - "str": 2.8753750324249268, - "obj": 1.7675409317016602 + "defaults": 3.3990838527679443, + "str": 2.658750057220459, + "obj": 1.8272500038146973 } \ No newline at end of file diff --git a/bench/results/baseline-fast-fast-20.json b/bench/results/baseline-fast-fast-20.json index e32f6d7..6859876 100644 --- a/bench/results/baseline-fast-fast-20.json +++ b/bench/results/baseline-fast-fast-20.json @@ -1,5 +1,5 @@ { - "defaults": 3.4866249561309814, - "str": 2.9250420331954956, - "obj": 1.7282921075820923 + "defaults": 3.3317079544067383, + "str": 2.5267090797424316, + "obj": 1.6895420551300049 } \ No newline at end of file diff --git a/bench/results/baseline-fast-mixed-1.json b/bench/results/baseline-fast-mixed-1.json index e1ba291..b2a334d 100644 --- a/bench/results/baseline-fast-mixed-1.json +++ b/bench/results/baseline-fast-mixed-1.json @@ -1,5 +1,5 @@ { - "defaults": 3.6228749752044678, - "str": 2.7109580039978027, - "obj": 1.7681249380111694 + "defaults": 3.6327500343322754, + "str": 2.7679169178009033, + "obj": 1.7796669006347656 } \ No newline at end of file diff --git a/bench/results/baseline-fast-mixed-20.json b/bench/results/baseline-fast-mixed-20.json index d9e9a77..5ab3711 100644 --- a/bench/results/baseline-fast-mixed-20.json +++ b/bench/results/baseline-fast-mixed-20.json @@ -1,5 +1,5 @@ { - "defaults": 3.593625068664551, - "str": 2.7782089710235596, - "obj": 1.8817919492721558 + "defaults": 3.5595409870147705, + "str": 2.654458999633789, + "obj": 1.7744169235229492 } \ No newline at end of file diff --git a/bench/results/baseline-fast-slow-1.json b/bench/results/baseline-fast-slow-1.json index e84c0d9..76c0b27 100644 --- a/bench/results/baseline-fast-slow-1.json +++ b/bench/results/baseline-fast-slow-1.json @@ -1,5 +1,5 @@ { - "defaults": 3.4544999599456787, - "str": 2.6360830068588257, - "obj": 1.7927500009536743 + "defaults": 3.533208131790161, + "str": 2.6589999198913574, + "obj": 1.7267498970031738 } \ No newline at end of file diff --git a/bench/results/baseline-fast-slow-20.json b/bench/results/baseline-fast-slow-20.json index 0071c73..1a4456b 100644 --- a/bench/results/baseline-fast-slow-20.json +++ b/bench/results/baseline-fast-slow-20.json @@ -1,5 +1,5 @@ { - "defaults": 3.518875002861023, - "str": 3.0439999103546143, - "obj": 1.7697919607162476 + "defaults": 3.558332920074463, + "str": 2.7277917861938477, + "obj": 1.825958013534546 } \ No newline at end of file diff --git a/bench/results/baseline-slow-fast-1.json b/bench/results/baseline-slow-fast-1.json index 3b9e213..4424f75 100644 --- a/bench/results/baseline-slow-fast-1.json +++ b/bench/results/baseline-slow-fast-1.json @@ -1,5 +1,5 @@ { - "defaults": 7.529915928840637, - "str": 7.622833013534546, - "obj": 5.5887919664382935 + "defaults": 7.663082838058472, + "str": 7.863041877746582, + "obj": 5.66966700553894 } \ No newline at end of file diff --git a/bench/results/baseline-slow-fast-20.json b/bench/results/baseline-slow-fast-20.json index a21c463..95b72cc 100644 --- a/bench/results/baseline-slow-fast-20.json +++ b/bench/results/baseline-slow-fast-20.json @@ -1,5 +1,5 @@ { - "defaults": 7.802249908447266, - "str": 7.662291884422302, - "obj": 5.392500042915344 + "defaults": 7.421875, + "str": 7.890166997909546, + "obj": 5.565249919891357 } \ No newline at end of file diff --git a/bench/results/baseline-slow-slow-1.json b/bench/results/baseline-slow-slow-1.json index 1c6555e..f76654f 100644 --- a/bench/results/baseline-slow-slow-1.json +++ b/bench/results/baseline-slow-slow-1.json @@ -1,5 +1,5 @@ { - "defaults": 7.692291975021362, - "str": 7.873832941055298, - "obj": 5.586833953857422 + "defaults": 7.716665983200073, + "str": 7.789834022521973, + "obj": 5.735374927520752 } \ No newline at end of file diff --git a/bench/results/baseline-slow-slow-20.json b/bench/results/baseline-slow-slow-20.json index 75306d9..4c4551d 100644 --- a/bench/results/baseline-slow-slow-20.json +++ b/bench/results/baseline-slow-slow-20.json @@ -1,5 +1,5 @@ { - "defaults": 7.750833034515381, - "str": 7.746875047683716, - "obj": 5.37624990940094 + "defaults": 7.742792129516602, + "str": 7.878582954406738, + "obj": 5.557208061218262 } \ No newline at end of file diff --git a/bench/results/core-extend-transform-fast-fast-1.json b/bench/results/core-extend-transform-fast-fast-1.json index f0c1480..4e9ef1c 100644 --- a/bench/results/core-extend-transform-fast-fast-1.json +++ b/bench/results/core-extend-transform-fast-fast-1.json @@ -1,5 +1,5 @@ { - "defaults": 24.470834016799927, - "str": 1463.6756669282913, - "obj": 6.729416012763977 + "defaults": 24.127000093460083, + "str": 1415.3659579753876, + "obj": 6.487624883651733 } \ No newline at end of file diff --git a/bench/results/core-extend-transform-fast-fast-20.json b/bench/results/core-extend-transform-fast-fast-20.json index 6754a7d..70abfb4 100644 --- a/bench/results/core-extend-transform-fast-fast-20.json +++ b/bench/results/core-extend-transform-fast-fast-20.json @@ -1,5 +1,5 @@ { - "defaults": 248.6313339471817, - "str": 31131.524999976158, - "obj": 75.06924998760223 + "defaults": 242.2933750152588, + "str": 30514.069749832153, + "obj": 75.56558299064636 } \ No newline at end of file diff --git a/bench/results/core-extend-transform-fast-mixed-1.json b/bench/results/core-extend-transform-fast-mixed-1.json index 5ae8ab6..dc0b523 100644 --- a/bench/results/core-extend-transform-fast-mixed-1.json +++ b/bench/results/core-extend-transform-fast-mixed-1.json @@ -1,5 +1,5 @@ { - "defaults": 37.823875069618225, - "str": 1506.3974170684814, - "obj": 27.5341659784317 + "defaults": 36.86058306694031, + "str": 1484.2210412025452, + "obj": 28.041290998458862 } \ No newline at end of file diff --git a/bench/results/core-extend-transform-fast-mixed-20.json b/bench/results/core-extend-transform-fast-mixed-20.json index 79fa620..f22cd35 100644 --- a/bench/results/core-extend-transform-fast-mixed-20.json +++ b/bench/results/core-extend-transform-fast-mixed-20.json @@ -1,5 +1,5 @@ { - "defaults": 294.7855839729309, - "str": 32232.268458008766, - "obj": 207.33175003528595 + "defaults": 299.55041694641113, + "str": 32348.9279589653, + "obj": 129.61362504959106 } \ No newline at end of file diff --git a/bench/results/core-extend-transform-fast-slow-1.json b/bench/results/core-extend-transform-fast-slow-1.json index 2e3cd5f..0093cc8 100644 --- a/bench/results/core-extend-transform-fast-slow-1.json +++ b/bench/results/core-extend-transform-fast-slow-1.json @@ -1,5 +1,5 @@ { - "defaults": 33.369749903678894, - "str": 1494.179624915123, - "obj": 23.620875000953674 + "defaults": 32.54316711425781, + "str": 1453.245125055313, + "obj": 23.765000104904175 } \ No newline at end of file diff --git a/bench/results/core-extend-transform-fast-slow-20.json b/bench/results/core-extend-transform-fast-slow-20.json index bb504c6..3c8185c 100644 --- a/bench/results/core-extend-transform-fast-slow-20.json +++ b/bench/results/core-extend-transform-fast-slow-20.json @@ -1,5 +1,5 @@ { - "defaults": 293.10554099082947, - "str": 31694.717208981514, - "obj": 127.75437498092651 + "defaults": 277.2532501220703, + "str": 30932.80695796013, + "obj": 124.2115831375122 } \ No newline at end of file diff --git a/bench/results/core-extend-transform-slow-fast-1.json b/bench/results/core-extend-transform-slow-fast-1.json index 04df97e..7bb9a90 100644 --- a/bench/results/core-extend-transform-slow-fast-1.json +++ b/bench/results/core-extend-transform-slow-fast-1.json @@ -1,5 +1,5 @@ { - "defaults": 32.30425000190735, - "str": 1499.8680419921875, - "obj": 12.504958033561707 + "defaults": 30.72125005722046, + "str": 1442.7514998912811, + "obj": 11.64175009727478 } \ No newline at end of file diff --git a/bench/results/core-extend-transform-slow-fast-20.json b/bench/results/core-extend-transform-slow-fast-20.json index 70721e2..c0a6c28 100644 --- a/bench/results/core-extend-transform-slow-fast-20.json +++ b/bench/results/core-extend-transform-slow-fast-20.json @@ -1,5 +1,5 @@ { - "defaults": 278.6273750066757, - "str": 31981.722874999046, - "obj": 85.5019999742508 + "defaults": 261.35354113578796, + "str": 30612.279416799545, + "obj": 78.83837509155273 } \ No newline at end of file diff --git a/bench/results/core-extend-transform-slow-slow-1.json b/bench/results/core-extend-transform-slow-slow-1.json index ae05785..a1b51af 100644 --- a/bench/results/core-extend-transform-slow-slow-1.json +++ b/bench/results/core-extend-transform-slow-slow-1.json @@ -1,5 +1,5 @@ { - "defaults": 39.82520794868469, - "str": 1547.5587919950485, - "obj": 15.588624954223633 + "defaults": 39.06583285331726, + "str": 1452.0763339996338, + "obj": 14.533082962036133 } \ No newline at end of file diff --git a/bench/results/core-extend-transform-slow-slow-20.json b/bench/results/core-extend-transform-slow-slow-20.json index c8171c5..67bf387 100644 --- a/bench/results/core-extend-transform-slow-slow-20.json +++ b/bench/results/core-extend-transform-slow-slow-20.json @@ -1,5 +1,5 @@ { - "defaults": 302.5486670732498, - "str": 31157.460375070572, - "obj": 81.95633292198181 + "defaults": 271.046875, + "str": 30285.33316707611, + "obj": 94.80037498474121 } \ No newline at end of file diff --git a/bench/results/core-passthrough-fast-fast-1.json b/bench/results/core-passthrough-fast-fast-1.json index 04e2d0d..0cba70b 100644 --- a/bench/results/core-passthrough-fast-fast-1.json +++ b/bench/results/core-passthrough-fast-fast-1.json @@ -1,5 +1,5 @@ { - "defaults": 24.93754208087921, - "str": 1487.0115000009537, - "obj": 6.850332975387573 + "defaults": 24.39108395576477, + "str": 1457.369541168213, + "obj": 6.425541877746582 } \ No newline at end of file diff --git a/bench/results/core-passthrough-fast-fast-20.json b/bench/results/core-passthrough-fast-fast-20.json index f9b1273..334fdea 100644 --- a/bench/results/core-passthrough-fast-fast-20.json +++ b/bench/results/core-passthrough-fast-fast-20.json @@ -1,5 +1,5 @@ { - "defaults": 246.67112493515015, - "str": 31075.06575000286, - "obj": 75.19824993610382 + "defaults": 246.28545904159546, + "str": 30877.510459184647, + "obj": 81.12966704368591 } \ No newline at end of file diff --git a/bench/results/core-passthrough-fast-mixed-1.json b/bench/results/core-passthrough-fast-mixed-1.json index 103c39f..3e99869 100644 --- a/bench/results/core-passthrough-fast-mixed-1.json +++ b/bench/results/core-passthrough-fast-mixed-1.json @@ -1,5 +1,5 @@ { - "defaults": 38.20787501335144, - "str": 1519.799584031105, - "obj": 27.10199999809265 + "defaults": 37.690500020980835, + "str": 1469.4447920322418, + "obj": 25.87837505340576 } \ No newline at end of file diff --git a/bench/results/core-passthrough-fast-mixed-20.json b/bench/results/core-passthrough-fast-mixed-20.json index 091f68c..c662649 100644 --- a/bench/results/core-passthrough-fast-mixed-20.json +++ b/bench/results/core-passthrough-fast-mixed-20.json @@ -1,5 +1,5 @@ { - "defaults": 300.7239580154419, - "str": 32430.658625006676, - "obj": 239.2268339395523 + "defaults": 290.7175419330597, + "str": 31910.76212501526, + "obj": 128.84325003623962 } \ No newline at end of file diff --git a/bench/results/core-passthrough-fast-slow-1.json b/bench/results/core-passthrough-fast-slow-1.json index 2c8464a..ab27193 100644 --- a/bench/results/core-passthrough-fast-slow-1.json +++ b/bench/results/core-passthrough-fast-slow-1.json @@ -1,5 +1,5 @@ { - "defaults": 33.18045902252197, - "str": 1488.295499920845, - "obj": 24.188707947731018 + "defaults": 35.926417112350464, + "str": 1636.9020409584045, + "obj": 25.536499977111816 } \ No newline at end of file diff --git a/bench/results/core-passthrough-fast-slow-20.json b/bench/results/core-passthrough-fast-slow-20.json index 287a676..247887b 100644 --- a/bench/results/core-passthrough-fast-slow-20.json +++ b/bench/results/core-passthrough-fast-slow-20.json @@ -1,5 +1,5 @@ { - "defaults": 292.6447080373764, - "str": 31695.29912507534, - "obj": 136.27929091453552 + "defaults": 309.2916250228882, + "str": 31383.35754084587, + "obj": 126.46375012397766 } \ No newline at end of file diff --git a/bench/results/core-passthrough-slow-fast-1.json b/bench/results/core-passthrough-slow-fast-1.json index c054423..7d08e73 100644 --- a/bench/results/core-passthrough-slow-fast-1.json +++ b/bench/results/core-passthrough-slow-fast-1.json @@ -1,5 +1,5 @@ { - "defaults": 31.73199999332428, - "str": 1476.718083024025, - "obj": 12.018165946006775 + "defaults": 31.042332887649536, + "str": 1462.309958934784, + "obj": 11.72333288192749 } \ No newline at end of file diff --git a/bench/results/core-passthrough-slow-fast-20.json b/bench/results/core-passthrough-slow-fast-20.json index 9c990d9..42903c9 100644 --- a/bench/results/core-passthrough-slow-fast-20.json +++ b/bench/results/core-passthrough-slow-fast-20.json @@ -1,5 +1,5 @@ { - "defaults": 270.70408296585083, - "str": 31249.86229097843, - "obj": 82.98341691493988 + "defaults": 263.05920791625977, + "str": 30782.21883392334, + "obj": 81.56983304023743 } \ No newline at end of file diff --git a/bench/results/core-passthrough-slow-slow-1.json b/bench/results/core-passthrough-slow-slow-1.json index 1a37afd..b0d452a 100644 --- a/bench/results/core-passthrough-slow-slow-1.json +++ b/bench/results/core-passthrough-slow-slow-1.json @@ -1,5 +1,5 @@ { - "defaults": 39.56950008869171, - "str": 1532.9924590587616, - "obj": 14.956582903862 + "defaults": 38.84020781517029, + "str": 1576.2104170322418, + "obj": 15.817957878112793 } \ No newline at end of file diff --git a/bench/results/core-passthrough-slow-slow-20.json b/bench/results/core-passthrough-slow-slow-20.json index 75c1e2e..29b7ddf 100644 --- a/bench/results/core-passthrough-slow-slow-20.json +++ b/bench/results/core-passthrough-slow-slow-20.json @@ -1,5 +1,5 @@ { - "defaults": 276.2491250038147, - "str": 31648.490207910538, - "obj": 97.59745800495148 + "defaults": 276.67433404922485, + "str": 30440.37458395958, + "obj": 95.23049998283386 } \ No newline at end of file diff --git a/bench/results/extend-minipass-current-fast-fast-1.json b/bench/results/extend-minipass-current-fast-fast-1.json index fdafcba..f0d72cb 100644 --- a/bench/results/extend-minipass-current-fast-fast-1.json +++ b/bench/results/extend-minipass-current-fast-fast-1.json @@ -1,5 +1,5 @@ { - "defaults": 9.140750050544739, - "str": 8.64004111289978, - "obj": 5.417958974838257 + "defaults": 9.193875074386597, + "str": 8.732290983200073, + "obj": 5.323959112167358 } \ No newline at end of file diff --git a/bench/results/extend-minipass-current-fast-fast-20.json b/bench/results/extend-minipass-current-fast-fast-20.json index 1da8482..fdeb8f6 100644 --- a/bench/results/extend-minipass-current-fast-fast-20.json +++ b/bench/results/extend-minipass-current-fast-fast-20.json @@ -1,5 +1,5 @@ { - "defaults": 57.37579107284546, - "str": 60.1637909412384, - "obj": 29.899250030517578 + "defaults": 55.100250005722046, + "str": 62.77754187583923, + "obj": 31.361207962036133 } \ No newline at end of file diff --git a/bench/results/extend-minipass-current-fast-mixed-1.json b/bench/results/extend-minipass-current-fast-mixed-1.json index 6857210..8f03451 100644 --- a/bench/results/extend-minipass-current-fast-mixed-1.json +++ b/bench/results/extend-minipass-current-fast-mixed-1.json @@ -1,5 +1,5 @@ { - "defaults": 13.088165998458862, - "str": 12.378084063529968, - "obj": 8.092041015625 + "defaults": 13.097042083740234, + "str": 12.528666973114014, + "obj": 7.946000099182129 } \ No newline at end of file diff --git a/bench/results/extend-minipass-current-fast-mixed-20.json b/bench/results/extend-minipass-current-fast-mixed-20.json index c7f2d97..9ce13f1 100644 --- a/bench/results/extend-minipass-current-fast-mixed-20.json +++ b/bench/results/extend-minipass-current-fast-mixed-20.json @@ -1,5 +1,5 @@ { - "defaults": 113.45395910739899, - "str": 123.82245790958405, - "obj": 91.68816697597504 + "defaults": 113.75462508201599, + "str": 122.74500012397766, + "obj": 89.51083302497864 } \ No newline at end of file diff --git a/bench/results/extend-minipass-current-fast-slow-1.json b/bench/results/extend-minipass-current-fast-slow-1.json index 339a593..f25ad21 100644 --- a/bench/results/extend-minipass-current-fast-slow-1.json +++ b/bench/results/extend-minipass-current-fast-slow-1.json @@ -1,5 +1,5 @@ { - "defaults": 12.647625088691711, - "str": 12.273958086967468, - "obj": 8.015959024429321 + "defaults": 13.048874855041504, + "str": 12.627707958221436, + "obj": 7.943833112716675 } \ No newline at end of file diff --git a/bench/results/extend-minipass-current-fast-slow-20.json b/bench/results/extend-minipass-current-fast-slow-20.json index cdb0bb8..ea35c7f 100644 --- a/bench/results/extend-minipass-current-fast-slow-20.json +++ b/bench/results/extend-minipass-current-fast-slow-20.json @@ -1,5 +1,5 @@ { - "defaults": 112.59149992465973, - "str": 122.923583984375, - "obj": 90.85945808887482 + "defaults": 112.71425008773804, + "str": 119.46612501144409, + "obj": 88.86787509918213 } \ No newline at end of file diff --git a/bench/results/extend-minipass-current-slow-fast-1.json b/bench/results/extend-minipass-current-slow-fast-1.json index 399e746..a59cd26 100644 --- a/bench/results/extend-minipass-current-slow-fast-1.json +++ b/bench/results/extend-minipass-current-slow-fast-1.json @@ -1,5 +1,5 @@ { - "defaults": 12.678249955177307, - "str": 13.712583065032959, - "obj": 9.786041975021362 + "defaults": 13.905959129333496, + "str": 15.27899980545044, + "obj": 8.198750019073486 } \ No newline at end of file diff --git a/bench/results/extend-minipass-current-slow-fast-20.json b/bench/results/extend-minipass-current-slow-fast-20.json index 06404a8..9e79525 100644 --- a/bench/results/extend-minipass-current-slow-fast-20.json +++ b/bench/results/extend-minipass-current-slow-fast-20.json @@ -1,5 +1,5 @@ { - "defaults": 60.498250007629395, - "str": 63.19883394241333, - "obj": 38.34554195404053 + "defaults": 59.27174997329712, + "str": 62.621875047683716, + "obj": 37.86075019836426 } \ No newline at end of file diff --git a/bench/results/extend-minipass-current-slow-slow-1.json b/bench/results/extend-minipass-current-slow-slow-1.json index 6dce373..2f6c31f 100644 --- a/bench/results/extend-minipass-current-slow-slow-1.json +++ b/bench/results/extend-minipass-current-slow-slow-1.json @@ -1,5 +1,5 @@ { - "defaults": 19.36074995994568, - "str": 18.793750047683716, - "obj": 16.4716659784317 + "defaults": 19.91116714477539, + "str": 19.340209007263184, + "obj": 17.08750009536743 } \ No newline at end of file diff --git a/bench/results/extend-minipass-current-slow-slow-20.json b/bench/results/extend-minipass-current-slow-slow-20.json index e5303cd..2fd38db 100644 --- a/bench/results/extend-minipass-current-slow-slow-20.json +++ b/bench/results/extend-minipass-current-slow-slow-20.json @@ -1,5 +1,5 @@ { - "defaults": 117.03358399868011, - "str": 127.52441596984863, - "obj": 97.87795794010162 + "defaults": 115.68562483787537, + "str": 123.51199984550476, + "obj": 95.79333400726318 } \ No newline at end of file diff --git a/bench/results/minipass-current-async-fast-fast-1.json b/bench/results/minipass-current-async-fast-fast-1.json index 84fe8c9..22e524b 100644 --- a/bench/results/minipass-current-async-fast-fast-1.json +++ b/bench/results/minipass-current-async-fast-fast-1.json @@ -1,5 +1,5 @@ { - "defaults": 15.625333070755005, - "str": 13.595166087150574, - "obj": 8.424084067344666 + "defaults": 16.789916038513184, + "str": 13.664083003997803, + "obj": 8.046792030334473 } \ No newline at end of file diff --git a/bench/results/minipass-current-async-fast-fast-20.json b/bench/results/minipass-current-async-fast-fast-20.json index 55641ec..370c3b5 100644 --- a/bench/results/minipass-current-async-fast-fast-20.json +++ b/bench/results/minipass-current-async-fast-fast-20.json @@ -1,5 +1,5 @@ { - "defaults": 138.3176670074463, - "str": 138.06941604614258, - "obj": 106.02308309078217 + "defaults": 164.3801248073578, + "str": 156.7847089767456, + "obj": 125.96362495422363 } \ No newline at end of file diff --git a/bench/results/minipass-current-async-fast-mixed-1.json b/bench/results/minipass-current-async-fast-mixed-1.json index f93c7c4..332e285 100644 --- a/bench/results/minipass-current-async-fast-mixed-1.json +++ b/bench/results/minipass-current-async-fast-mixed-1.json @@ -1,5 +1,5 @@ { - "defaults": 28.594624996185303, - "str": 19.377125024795532, - "obj": 12.353209018707275 + "defaults": 22.599792003631592, + "str": 24.439208030700684, + "obj": 13.420375108718872 } \ No newline at end of file diff --git a/bench/results/minipass-current-async-fast-mixed-20.json b/bench/results/minipass-current-async-fast-mixed-20.json index 6ea41ee..c575df9 100644 --- a/bench/results/minipass-current-async-fast-mixed-20.json +++ b/bench/results/minipass-current-async-fast-mixed-20.json @@ -1,5 +1,5 @@ { - "defaults": 144.73733401298523, - "str": 148.0581250190735, - "obj": 113.50233399868011 + "defaults": 167.20274996757507, + "str": 161.45175004005432, + "obj": 134.34225010871887 } \ No newline at end of file diff --git a/bench/results/minipass-current-async-fast-slow-1.json b/bench/results/minipass-current-async-fast-slow-1.json index d06c52c..9ffa047 100644 --- a/bench/results/minipass-current-async-fast-slow-1.json +++ b/bench/results/minipass-current-async-fast-slow-1.json @@ -1,5 +1,5 @@ { - "defaults": 26.819707989692688, - "str": 17.864084005355835, - "obj": 11.643916010856628 + "defaults": 23.611124992370605, + "str": 24.252208948135376, + "obj": 13.320249795913696 } \ No newline at end of file diff --git a/bench/results/minipass-current-async-fast-slow-20.json b/bench/results/minipass-current-async-fast-slow-20.json index df70e63..96abf4e 100644 --- a/bench/results/minipass-current-async-fast-slow-20.json +++ b/bench/results/minipass-current-async-fast-slow-20.json @@ -1,5 +1,5 @@ { - "defaults": 144.29450011253357, - "str": 143.48766696453094, - "obj": 107.52308309078217 + "defaults": 167.81833291053772, + "str": 162.2190420627594, + "obj": 133.96308302879333 } \ No newline at end of file diff --git a/bench/results/minipass-current-async-slow-fast-1.json b/bench/results/minipass-current-async-slow-fast-1.json index 514fa34..de4db1d 100644 --- a/bench/results/minipass-current-async-slow-fast-1.json +++ b/bench/results/minipass-current-async-slow-fast-1.json @@ -1,5 +1,5 @@ { - "defaults": 14.943750023841858, - "str": 14.345583081245422, - "obj": 13.515666961669922 + "defaults": 15.29449987411499, + "str": 14.680792093276978, + "obj": 12.648375034332275 } \ No newline at end of file diff --git a/bench/results/minipass-current-async-slow-fast-20.json b/bench/results/minipass-current-async-slow-fast-20.json index 4d8a850..9d86c36 100644 --- a/bench/results/minipass-current-async-slow-fast-20.json +++ b/bench/results/minipass-current-async-slow-fast-20.json @@ -1,5 +1,5 @@ { - "defaults": 85.21333301067352, - "str": 88.02425003051758, - "obj": 59.35362505912781 + "defaults": 85.04554104804993, + "str": 87.39795804023743, + "obj": 59.65033411979675 } \ No newline at end of file diff --git a/bench/results/minipass-current-async-slow-slow-1.json b/bench/results/minipass-current-async-slow-slow-1.json index 4b1ff9e..487348c 100644 --- a/bench/results/minipass-current-async-slow-slow-1.json +++ b/bench/results/minipass-current-async-slow-slow-1.json @@ -1,5 +1,5 @@ { - "defaults": 21.783707976341248, - "str": 18.673874974250793, - "obj": 14.390041947364807 + "defaults": 21.52458381652832, + "str": 18.75612497329712, + "obj": 14.529249906539917 } \ No newline at end of file diff --git a/bench/results/minipass-current-async-slow-slow-20.json b/bench/results/minipass-current-async-slow-slow-20.json index 432b9fb..97d784e 100644 --- a/bench/results/minipass-current-async-slow-slow-20.json +++ b/bench/results/minipass-current-async-slow-slow-20.json @@ -1,5 +1,5 @@ { - "defaults": 176.62541604042053, - "str": 164.64012503623962, - "obj": 127.81299996376038 + "defaults": 176.85458302497864, + "str": 166.02983283996582, + "obj": 127.8735420703888 } \ No newline at end of file diff --git a/bench/results/minipass-current-fast-fast-1.json b/bench/results/minipass-current-fast-fast-1.json index fbe8b67..bc5fa31 100644 --- a/bench/results/minipass-current-fast-fast-1.json +++ b/bench/results/minipass-current-fast-fast-1.json @@ -1,5 +1,5 @@ { - "defaults": 9.00616705417633, - "str": 8.558458089828491, - "obj": 5.563665986061096 + "defaults": 9.237291097640991, + "str": 8.494791984558105, + "obj": 5.270291805267334 } \ No newline at end of file diff --git a/bench/results/minipass-current-fast-fast-20.json b/bench/results/minipass-current-fast-fast-20.json index 236d0d1..215031f 100644 --- a/bench/results/minipass-current-fast-fast-20.json +++ b/bench/results/minipass-current-fast-fast-20.json @@ -1,5 +1,5 @@ { - "defaults": 57.08733403682709, - "str": 59.901875019073486, - "obj": 29.437790989875793 + "defaults": 55.45591592788696, + "str": 60.21724987030029, + "obj": 30.116125106811523 } \ No newline at end of file diff --git a/bench/results/minipass-current-fast-mixed-1.json b/bench/results/minipass-current-fast-mixed-1.json index 9e420bb..a39a7a0 100644 --- a/bench/results/minipass-current-fast-mixed-1.json +++ b/bench/results/minipass-current-fast-mixed-1.json @@ -1,5 +1,5 @@ { - "defaults": 12.802457928657532, - "str": 12.223124980926514, - "obj": 8.009207963943481 + "defaults": 13.639082908630371, + "str": 12.444166898727417, + "obj": 7.978666067123413 } \ No newline at end of file diff --git a/bench/results/minipass-current-fast-mixed-20.json b/bench/results/minipass-current-fast-mixed-20.json index 9bc7a2c..266cae6 100644 --- a/bench/results/minipass-current-fast-mixed-20.json +++ b/bench/results/minipass-current-fast-mixed-20.json @@ -1,5 +1,5 @@ { - "defaults": 112.42704200744629, - "str": 124.54533398151398, - "obj": 90.83437490463257 + "defaults": 112.22262501716614, + "str": 118.59824991226196, + "obj": 89.4826250076294 } \ No newline at end of file diff --git a/bench/results/minipass-current-fast-slow-1.json b/bench/results/minipass-current-fast-slow-1.json index 1e1c450..154d51d 100644 --- a/bench/results/minipass-current-fast-slow-1.json +++ b/bench/results/minipass-current-fast-slow-1.json @@ -1,5 +1,5 @@ { - "defaults": 12.497583031654358, - "str": 12.10783302783966, - "obj": 7.822792053222656 + "defaults": 12.837042093276978, + "str": 12.397625207901001, + "obj": 8.142207860946655 } \ No newline at end of file diff --git a/bench/results/minipass-current-fast-slow-20.json b/bench/results/minipass-current-fast-slow-20.json index 54722c4..8f4a726 100644 --- a/bench/results/minipass-current-fast-slow-20.json +++ b/bench/results/minipass-current-fast-slow-20.json @@ -1,5 +1,5 @@ { - "defaults": 111.76954197883606, - "str": 122.47616600990295, - "obj": 90.42129194736481 + "defaults": 112.8249580860138, + "str": 119.85637497901917, + "obj": 93.4788339138031 } \ No newline at end of file diff --git a/bench/results/minipass-current-slow-fast-1.json b/bench/results/minipass-current-slow-fast-1.json index 32e63a3..cf32239 100644 --- a/bench/results/minipass-current-slow-fast-1.json +++ b/bench/results/minipass-current-slow-fast-1.json @@ -1,5 +1,5 @@ { - "defaults": 12.808166980743408, - "str": 13.886415958404541, - "obj": 9.495208978652954 + "defaults": 13.317584037780762, + "str": 13.745499849319458, + "obj": 7.646499872207642 } \ No newline at end of file diff --git a/bench/results/minipass-current-slow-fast-20.json b/bench/results/minipass-current-slow-fast-20.json index f86e4c9..3fab8ef 100644 --- a/bench/results/minipass-current-slow-fast-20.json +++ b/bench/results/minipass-current-slow-fast-20.json @@ -1,5 +1,5 @@ { - "defaults": 60.190375089645386, - "str": 64.01145792007446, - "obj": 36.9105829000473 + "defaults": 58.255666971206665, + "str": 62.18691611289978, + "obj": 38.114166021347046 } \ No newline at end of file diff --git a/bench/results/minipass-current-slow-slow-1.json b/bench/results/minipass-current-slow-slow-1.json index 221e1a3..aab4bda 100644 --- a/bench/results/minipass-current-slow-slow-1.json +++ b/bench/results/minipass-current-slow-slow-1.json @@ -1,5 +1,5 @@ { - "defaults": 19.24495792388916, - "str": 20.47504198551178, - "obj": 17.39049994945526 + "defaults": 19.602458000183105, + "str": 19.340165853500366, + "obj": 17.1333749294281 } \ No newline at end of file diff --git a/bench/results/minipass-current-slow-slow-20.json b/bench/results/minipass-current-slow-slow-20.json index f971425..f84bae4 100644 --- a/bench/results/minipass-current-slow-slow-20.json +++ b/bench/results/minipass-current-slow-slow-20.json @@ -1,5 +1,5 @@ { - "defaults": 115.83945894241333, - "str": 125.54474997520447, - "obj": 97.4453330039978 + "defaults": 114.9782497882843, + "str": 122.02308297157288, + "obj": 95.23783302307129 } \ No newline at end of file diff --git a/bench/results/minipass-latest-fast-fast-1.json b/bench/results/minipass-latest-fast-fast-1.json index 0126919..8c598e4 100644 --- a/bench/results/minipass-latest-fast-fast-1.json +++ b/bench/results/minipass-latest-fast-fast-1.json @@ -1,5 +1,5 @@ { - "defaults": 9.006374955177307, - "str": 8.402208089828491, - "obj": 5.372582912445068 + "defaults": 9.106709003448486, + "str": 8.27245807647705, + "obj": 5.223582983016968 } \ No newline at end of file diff --git a/bench/results/minipass-latest-fast-fast-20.json b/bench/results/minipass-latest-fast-fast-20.json index c7683a4..bbed901 100644 --- a/bench/results/minipass-latest-fast-fast-20.json +++ b/bench/results/minipass-latest-fast-fast-20.json @@ -1,5 +1,5 @@ { - "defaults": 57.05970907211304, - "str": 58.760249972343445, - "obj": 29.28237497806549 + "defaults": 55.94037485122681, + "str": 57.88187503814697, + "obj": 29.797584056854248 } \ No newline at end of file diff --git a/bench/results/minipass-latest-fast-mixed-1.json b/bench/results/minipass-latest-fast-mixed-1.json index 6a90490..b8bd034 100644 --- a/bench/results/minipass-latest-fast-mixed-1.json +++ b/bench/results/minipass-latest-fast-mixed-1.json @@ -1,5 +1,5 @@ { - "defaults": 13.652250051498413, - "str": 13.876582980155945, - "obj": 8.559291958808899 + "defaults": 13.074541091918945, + "str": 12.364291906356812, + "obj": 7.872082948684692 } \ No newline at end of file diff --git a/bench/results/minipass-latest-fast-mixed-20.json b/bench/results/minipass-latest-fast-mixed-20.json index ef60438..6daa4a5 100644 --- a/bench/results/minipass-latest-fast-mixed-20.json +++ b/bench/results/minipass-latest-fast-mixed-20.json @@ -1,5 +1,5 @@ { - "defaults": 112.75670802593231, - "str": 121.95370900630951, - "obj": 90.06733298301697 + "defaults": 109.3677499294281, + "str": 120.48091697692871, + "obj": 88.43137502670288 } \ No newline at end of file diff --git a/bench/results/minipass-latest-fast-slow-1.json b/bench/results/minipass-latest-fast-slow-1.json index 131c78d..6251075 100644 --- a/bench/results/minipass-latest-fast-slow-1.json +++ b/bench/results/minipass-latest-fast-slow-1.json @@ -1,5 +1,5 @@ { - "defaults": 14.112375020980835, - "str": 14.106082916259766, - "obj": 8.911999940872192 + "defaults": 12.913458108901978, + "str": 12.469624996185303, + "obj": 7.9867918491363525 } \ No newline at end of file diff --git a/bench/results/minipass-latest-fast-slow-20.json b/bench/results/minipass-latest-fast-slow-20.json index e27b476..e480d53 100644 --- a/bench/results/minipass-latest-fast-slow-20.json +++ b/bench/results/minipass-latest-fast-slow-20.json @@ -1,5 +1,5 @@ { - "defaults": 112.57000005245209, - "str": 121.75041604042053, - "obj": 90.32737505435944 + "defaults": 109.13374996185303, + "str": 119.18562507629395, + "obj": 88.77216601371765 } \ No newline at end of file diff --git a/bench/results/minipass-latest-slow-fast-1.json b/bench/results/minipass-latest-slow-fast-1.json index 41fed5f..b67c7e1 100644 --- a/bench/results/minipass-latest-slow-fast-1.json +++ b/bench/results/minipass-latest-slow-fast-1.json @@ -1,5 +1,5 @@ { - "defaults": 12.974624991416931, - "str": 14.089292049407959, - "obj": 10.196707963943481 + "defaults": 13.740790843963623, + "str": 13.026999950408936, + "obj": 11.303791046142578 } \ No newline at end of file diff --git a/bench/results/minipass-latest-slow-fast-20.json b/bench/results/minipass-latest-slow-fast-20.json index da019d4..78d86ec 100644 --- a/bench/results/minipass-latest-slow-fast-20.json +++ b/bench/results/minipass-latest-slow-fast-20.json @@ -1,5 +1,5 @@ { - "defaults": 60.46066701412201, - "str": 62.154541969299316, - "obj": 37.26616597175598 + "defaults": 58.92799997329712, + "str": 61.270041942596436, + "obj": 36.384124994277954 } \ No newline at end of file diff --git a/bench/results/minipass-latest-slow-slow-1.json b/bench/results/minipass-latest-slow-slow-1.json index 5badce6..f5bff1e 100644 --- a/bench/results/minipass-latest-slow-slow-1.json +++ b/bench/results/minipass-latest-slow-slow-1.json @@ -1,5 +1,5 @@ { - "defaults": 19.617667078971863, - "str": 19.31058394908905, - "obj": 17.546957969665527 + "defaults": 19.82358407974243, + "str": 19.03404211997986, + "obj": 16.994542121887207 } \ No newline at end of file diff --git a/bench/results/minipass-latest-slow-slow-20.json b/bench/results/minipass-latest-slow-slow-20.json index e36890c..1a73781 100644 --- a/bench/results/minipass-latest-slow-slow-20.json +++ b/bench/results/minipass-latest-slow-slow-20.json @@ -1,5 +1,5 @@ { - "defaults": 117.06987500190735, - "str": 125.56391704082489, - "obj": 97.52154195308685 + "defaults": 113.54299998283386, + "str": 122.18516683578491, + "obj": 94.0842502117157 } \ No newline at end of file diff --git a/bench/results/minipass-v3-fast-fast-1.json b/bench/results/minipass-v3-fast-fast-1.json index 1b2120d..4841604 100644 --- a/bench/results/minipass-v3-fast-fast-1.json +++ b/bench/results/minipass-v3-fast-fast-1.json @@ -1,5 +1,5 @@ { - "defaults": 9.991374969482422, - "str": 8.99762499332428, - "obj": 5.436582922935486 + "defaults": 8.96229100227356, + "str": 8.173666954040527, + "obj": 5.094624996185303 } \ No newline at end of file diff --git a/bench/results/minipass-v3-fast-fast-20.json b/bench/results/minipass-v3-fast-fast-20.json index b2004b5..5437be0 100644 --- a/bench/results/minipass-v3-fast-fast-20.json +++ b/bench/results/minipass-v3-fast-fast-20.json @@ -1,5 +1,5 @@ { - "defaults": 56.744750022888184, - "str": 59.71320903301239, - "obj": 29.284834027290344 + "defaults": 56.02125000953674, + "str": 59.039124965667725, + "obj": 29.18766713142395 } \ No newline at end of file diff --git a/bench/results/minipass-v3-fast-mixed-1.json b/bench/results/minipass-v3-fast-mixed-1.json index 601bf2d..e14f80a 100644 --- a/bench/results/minipass-v3-fast-mixed-1.json +++ b/bench/results/minipass-v3-fast-mixed-1.json @@ -1,5 +1,5 @@ { - "defaults": 14.314666986465454, - "str": 13.60479199886322, - "obj": 8.298417091369629 + "defaults": 14.748833894729614, + "str": 14.528291940689087, + "obj": 8.816375017166138 } \ No newline at end of file diff --git a/bench/results/minipass-v3-fast-mixed-20.json b/bench/results/minipass-v3-fast-mixed-20.json index 2da8b6a..19916c8 100644 --- a/bench/results/minipass-v3-fast-mixed-20.json +++ b/bench/results/minipass-v3-fast-mixed-20.json @@ -1,5 +1,5 @@ { - "defaults": 119.11833393573761, - "str": 129.67150008678436, - "obj": 98.28970897197723 + "defaults": 112.7664577960968, + "str": 124.79616594314575, + "obj": 94.15024995803833 } \ No newline at end of file diff --git a/bench/results/minipass-v3-fast-slow-1.json b/bench/results/minipass-v3-fast-slow-1.json index 0b34a5e..6fdf970 100644 --- a/bench/results/minipass-v3-fast-slow-1.json +++ b/bench/results/minipass-v3-fast-slow-1.json @@ -1,5 +1,5 @@ { - "defaults": 12.836833000183105, - "str": 12.92941701412201, - "obj": 8.141417026519775 + "defaults": 12.820749998092651, + "str": 12.260708093643188, + "obj": 7.883208990097046 } \ No newline at end of file diff --git a/bench/results/minipass-v3-fast-slow-20.json b/bench/results/minipass-v3-fast-slow-20.json index fc1349c..b6f1148 100644 --- a/bench/results/minipass-v3-fast-slow-20.json +++ b/bench/results/minipass-v3-fast-slow-20.json @@ -1,5 +1,5 @@ { - "defaults": 116.09641695022583, - "str": 127.65012502670288, - "obj": 97.09899997711182 + "defaults": 112.68245792388916, + "str": 124.49425005912781, + "obj": 93.80837512016296 } \ No newline at end of file diff --git a/bench/results/minipass-v3-slow-fast-1.json b/bench/results/minipass-v3-slow-fast-1.json index 304a9bd..7a5306b 100644 --- a/bench/results/minipass-v3-slow-fast-1.json +++ b/bench/results/minipass-v3-slow-fast-1.json @@ -1,5 +1,5 @@ { - "defaults": 13.328750014305115, - "str": 13.893125057220459, - "obj": 9.958582997322083 + "defaults": 13.644958019256592, + "str": 13.941625118255615, + "obj": 9.986666917800903 } \ No newline at end of file diff --git a/bench/results/minipass-v3-slow-fast-20.json b/bench/results/minipass-v3-slow-fast-20.json index 3db8c52..699b63d 100644 --- a/bench/results/minipass-v3-slow-fast-20.json +++ b/bench/results/minipass-v3-slow-fast-20.json @@ -1,5 +1,5 @@ { - "defaults": 61.24558389186859, - "str": 62.25849997997284, - "obj": 37.876917004585266 + "defaults": 58.234708070755005, + "str": 60.60979080200195, + "obj": 36.09575009346008 } \ No newline at end of file diff --git a/bench/results/minipass-v3-slow-slow-1.json b/bench/results/minipass-v3-slow-slow-1.json index db73221..a63ba53 100644 --- a/bench/results/minipass-v3-slow-slow-1.json +++ b/bench/results/minipass-v3-slow-slow-1.json @@ -1,5 +1,5 @@ { - "defaults": 19.70970904827118, - "str": 20.06712508201599, - "obj": 17.246999979019165 + "defaults": 19.341042041778564, + "str": 19.677291870117188, + "obj": 16.29824995994568 } \ No newline at end of file diff --git a/bench/results/minipass-v3-slow-slow-20.json b/bench/results/minipass-v3-slow-slow-20.json index 18ce04e..bc78bfe 100644 --- a/bench/results/minipass-v3-slow-slow-20.json +++ b/bench/results/minipass-v3-slow-slow-20.json @@ -1,5 +1,5 @@ { - "defaults": 114.48662507534027, - "str": 126.36362493038177, - "obj": 97.96820795536041 + "defaults": 108.75849986076355, + "str": 119.96637487411499, + "obj": 92.20295882225037 } \ No newline at end of file diff --git a/bench/results/minipass-v4-fast-fast-1.json b/bench/results/minipass-v4-fast-fast-1.json index a84497d..cc4bac1 100644 --- a/bench/results/minipass-v4-fast-fast-1.json +++ b/bench/results/minipass-v4-fast-fast-1.json @@ -1,5 +1,5 @@ { - "defaults": 9.019958019256592, - "str": 8.39662492275238, - "obj": 5.291291952133179 + "defaults": 9.067874908447266, + "str": 8.513124942779541, + "obj": 5.3687920570373535 } \ No newline at end of file diff --git a/bench/results/minipass-v4-fast-fast-20.json b/bench/results/minipass-v4-fast-fast-20.json index 36e778b..49757b2 100644 --- a/bench/results/minipass-v4-fast-fast-20.json +++ b/bench/results/minipass-v4-fast-fast-20.json @@ -1,5 +1,5 @@ { - "defaults": 57.88370907306671, - "str": 60.756958961486816, - "obj": 29.646209001541138 + "defaults": 55.740999937057495, + "str": 57.79591608047485, + "obj": 28.896167039871216 } \ No newline at end of file diff --git a/bench/results/minipass-v4-fast-mixed-1.json b/bench/results/minipass-v4-fast-mixed-1.json index 3de2ff2..82e371e 100644 --- a/bench/results/minipass-v4-fast-mixed-1.json +++ b/bench/results/minipass-v4-fast-mixed-1.json @@ -1,5 +1,5 @@ { - "defaults": 12.962167024612427, - "str": 12.558375000953674, - "obj": 7.944625020027161 + "defaults": 13.131667137145996, + "str": 12.219375133514404, + "obj": 7.822416067123413 } \ No newline at end of file diff --git a/bench/results/minipass-v4-fast-mixed-20.json b/bench/results/minipass-v4-fast-mixed-20.json index 3784512..99b693c 100644 --- a/bench/results/minipass-v4-fast-mixed-20.json +++ b/bench/results/minipass-v4-fast-mixed-20.json @@ -1,5 +1,5 @@ { - "defaults": 114.1967499256134, - "str": 123.09395802021027, - "obj": 91.53399991989136 + "defaults": 110.00562500953674, + "str": 119.71024990081787, + "obj": 89.30245780944824 } \ No newline at end of file diff --git a/bench/results/minipass-v4-fast-slow-1.json b/bench/results/minipass-v4-fast-slow-1.json index 39ba4cb..7a06769 100644 --- a/bench/results/minipass-v4-fast-slow-1.json +++ b/bench/results/minipass-v4-fast-slow-1.json @@ -1,5 +1,5 @@ { - "defaults": 12.98199999332428, - "str": 12.487249970436096, - "obj": 8.032541036605835 + "defaults": 12.763917207717896, + "str": 12.276791095733643, + "obj": 7.75220799446106 } \ No newline at end of file diff --git a/bench/results/minipass-v4-fast-slow-20.json b/bench/results/minipass-v4-fast-slow-20.json index fca96b6..f29a05b 100644 --- a/bench/results/minipass-v4-fast-slow-20.json +++ b/bench/results/minipass-v4-fast-slow-20.json @@ -1,5 +1,5 @@ { - "defaults": 113.390958070755, - "str": 125.72883296012878, - "obj": 91.53458392620087 + "defaults": 109.29241704940796, + "str": 120.14249992370605, + "obj": 88.43941688537598 } \ No newline at end of file diff --git a/bench/results/minipass-v4-slow-fast-1.json b/bench/results/minipass-v4-slow-fast-1.json index db9bfb2..8ca53cd 100644 --- a/bench/results/minipass-v4-slow-fast-1.json +++ b/bench/results/minipass-v4-slow-fast-1.json @@ -1,5 +1,5 @@ { - "defaults": 12.530249953269958, - "str": 14.387542009353638, - "obj": 9.92158305644989 + "defaults": 12.893832921981812, + "str": 13.651708126068115, + "obj": 9.69395899772644 } \ No newline at end of file diff --git a/bench/results/minipass-v4-slow-fast-20.json b/bench/results/minipass-v4-slow-fast-20.json index d20985c..6d1aad7 100644 --- a/bench/results/minipass-v4-slow-fast-20.json +++ b/bench/results/minipass-v4-slow-fast-20.json @@ -1,5 +1,5 @@ { - "defaults": 59.353208899497986, - "str": 63.61800003051758, - "obj": 37.76174998283386 + "defaults": 58.75887489318848, + "str": 61.16729211807251, + "obj": 36.75349998474121 } \ No newline at end of file diff --git a/bench/results/minipass-v4-slow-slow-1.json b/bench/results/minipass-v4-slow-slow-1.json index c92387f..654046e 100644 --- a/bench/results/minipass-v4-slow-slow-1.json +++ b/bench/results/minipass-v4-slow-slow-1.json @@ -1,5 +1,5 @@ { - "defaults": 20.01687502861023, - "str": 18.69504201412201, - "obj": 16.518290996551514 + "defaults": 19.634707927703857, + "str": 19.170832872390747, + "obj": 16.464499950408936 } \ No newline at end of file diff --git a/bench/results/minipass-v4-slow-slow-20.json b/bench/results/minipass-v4-slow-slow-20.json index 5f1936e..ae1e5ab 100644 --- a/bench/results/minipass-v4-slow-slow-20.json +++ b/bench/results/minipass-v4-slow-slow-20.json @@ -1,5 +1,5 @@ { - "defaults": 117.32275009155273, - "str": 125.12608301639557, - "obj": 96.39866697788239 + "defaults": 114.11229205131531, + "str": 123.68508315086365, + "obj": 95.43070816993713 } \ No newline at end of file diff --git a/bench/results/minipass-v5-fast-fast-1.json b/bench/results/minipass-v5-fast-fast-1.json index e17238d..4aa5a48 100644 --- a/bench/results/minipass-v5-fast-fast-1.json +++ b/bench/results/minipass-v5-fast-fast-1.json @@ -1,5 +1,5 @@ { - "defaults": 8.861541986465454, - "str": 8.416458010673523, - "obj": 5.3903340101242065 + "defaults": 9.045500040054321, + "str": 8.363375186920166, + "obj": 5.296582937240601 } \ No newline at end of file diff --git a/bench/results/minipass-v5-fast-fast-20.json b/bench/results/minipass-v5-fast-fast-20.json index d08f74d..dc72d2d 100644 --- a/bench/results/minipass-v5-fast-fast-20.json +++ b/bench/results/minipass-v5-fast-fast-20.json @@ -1,5 +1,5 @@ { - "defaults": 56.76462495326996, - "str": 58.60199999809265, - "obj": 29.388957977294922 + "defaults": 55.41020894050598, + "str": 57.3116250038147, + "obj": 29.30795907974243 } \ No newline at end of file diff --git a/bench/results/minipass-v5-fast-mixed-1.json b/bench/results/minipass-v5-fast-mixed-1.json index da03e09..275c8f6 100644 --- a/bench/results/minipass-v5-fast-mixed-1.json +++ b/bench/results/minipass-v5-fast-mixed-1.json @@ -1,5 +1,5 @@ { - "defaults": 12.790333032608032, - "str": 12.488708972930908, - "obj": 7.851499915122986 + "defaults": 13.159540891647339, + "str": 12.466333150863647, + "obj": 7.881624937057495 } \ No newline at end of file diff --git a/bench/results/minipass-v5-fast-mixed-20.json b/bench/results/minipass-v5-fast-mixed-20.json index 068ce21..a5d2d86 100644 --- a/bench/results/minipass-v5-fast-mixed-20.json +++ b/bench/results/minipass-v5-fast-mixed-20.json @@ -1,5 +1,5 @@ { - "defaults": 112.75820803642273, - "str": 123.39258301258087, - "obj": 91.13495898246765 + "defaults": 110.05741691589355, + "str": 119.14762496948242, + "obj": 88.40920901298523 } \ No newline at end of file diff --git a/bench/results/minipass-v5-fast-slow-1.json b/bench/results/minipass-v5-fast-slow-1.json index 62ef42c..734c55d 100644 --- a/bench/results/minipass-v5-fast-slow-1.json +++ b/bench/results/minipass-v5-fast-slow-1.json @@ -1,5 +1,5 @@ { - "defaults": 12.699750065803528, - "str": 12.111208081245422, - "obj": 7.8963329792022705 + "defaults": 12.69533395767212, + "str": 12.118332862854004, + "obj": 7.893208026885986 } \ No newline at end of file diff --git a/bench/results/minipass-v5-fast-slow-20.json b/bench/results/minipass-v5-fast-slow-20.json index 202f8b5..8156afc 100644 --- a/bench/results/minipass-v5-fast-slow-20.json +++ b/bench/results/minipass-v5-fast-slow-20.json @@ -1,5 +1,5 @@ { - "defaults": 112.19987499713898, - "str": 122.30604100227356, - "obj": 90.54145896434784 + "defaults": 109.11375021934509, + "str": 119.16074991226196, + "obj": 87.87933301925659 } \ No newline at end of file diff --git a/bench/results/minipass-v5-slow-fast-1.json b/bench/results/minipass-v5-slow-fast-1.json index 80a1f61..78c00a8 100644 --- a/bench/results/minipass-v5-slow-fast-1.json +++ b/bench/results/minipass-v5-slow-fast-1.json @@ -1,5 +1,5 @@ { - "defaults": 12.730375051498413, - "str": 13.549291968345642, - "obj": 9.331416010856628 + "defaults": 12.915709018707275, + "str": 14.087542057037354, + "obj": 9.628709077835083 } \ No newline at end of file diff --git a/bench/results/minipass-v5-slow-fast-20.json b/bench/results/minipass-v5-slow-fast-20.json index 4b857ae..757b038 100644 --- a/bench/results/minipass-v5-slow-fast-20.json +++ b/bench/results/minipass-v5-slow-fast-20.json @@ -1,5 +1,5 @@ { - "defaults": 59.4458749294281, - "str": 62.936041951179504, - "obj": 38.064375042915344 + "defaults": 58.45437502861023, + "str": 60.98283386230469, + "obj": 36.37870812416077 } \ No newline at end of file diff --git a/bench/results/minipass-v5-slow-slow-1.json b/bench/results/minipass-v5-slow-slow-1.json index 62fc63b..6b3fffd 100644 --- a/bench/results/minipass-v5-slow-slow-1.json +++ b/bench/results/minipass-v5-slow-slow-1.json @@ -1,5 +1,5 @@ { - "defaults": 19.284375071525574, - "str": 18.673540949821472, - "obj": 17.366083025932312 + "defaults": 19.6010000705719, + "str": 19.504374980926514, + "obj": 16.68008303642273 } \ No newline at end of file diff --git a/bench/results/minipass-v5-slow-slow-20.json b/bench/results/minipass-v5-slow-slow-20.json index 6370c5b..b384a01 100644 --- a/bench/results/minipass-v5-slow-slow-20.json +++ b/bench/results/minipass-v5-slow-slow-20.json @@ -1,5 +1,5 @@ { - "defaults": 116.4670000076294, - "str": 126.47654092311859, - "obj": 98.07375001907349 + "defaults": 113.02391600608826, + "str": 122.68854212760925, + "obj": 93.84029197692871 } \ No newline at end of file diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index 6437bad..0000000 --- a/index.d.ts +++ /dev/null @@ -1,183 +0,0 @@ -/// - -// Note: marking anything protected or private in the exported -// class will limit Minipass's ability to be used as the base -// for mixin classes. -import { EventEmitter } from 'events' -import { Stream } from 'stream' - -export namespace Minipass { - export type Encoding = BufferEncoding | 'buffer' | null - - export type Writable = - | Minipass - | NodeJS.WriteStream - | (NodeJS.WriteStream & { fd: number }) - | (EventEmitter & { - end(): any - write(chunk: any, ...args: any[]): any - }) - - export type Readable = - | Minipass - | NodeJS.ReadStream - | (NodeJS.ReadStream & { fd: number }) - | (EventEmitter & { - pause(): any - resume(): any - pipe(...destArgs: any[]): any - }) - - export type DualIterable = Iterable & AsyncIterable - - export type ContiguousData = - | Buffer - | ArrayBufferLike - | ArrayBufferView - | string - - export type BufferOrString = Buffer | string - - export interface SharedOptions { - async?: boolean - signal?: AbortSignal - } - - export interface StringOptions extends SharedOptions { - encoding: BufferEncoding - objectMode?: boolean - } - - export interface BufferOptions extends SharedOptions { - encoding?: null | 'buffer' - objectMode?: boolean - } - - export interface ObjectModeOptions extends SharedOptions { - objectMode: true - } - - export interface PipeOptions { - end?: boolean - proxyErrors?: boolean - } - - export type Options = T extends string - ? StringOptions - : T extends Buffer - ? BufferOptions - : ObjectModeOptions - - interface EventArguments { - [k: string | symbol]: unknown[] - } - /** - * The listing of events that a Minipass class can emit. - * Extend this when extending the Minipass class, and pass as - * the third template argument. The key is the name of the event, - * and the value is the argument list. - * - * Any undeclared events will still be allowed, but the handler will get - * arguments as "unknown". - */ - export interface Events extends EventArguments { - readable: [] - data: [chunk: RType] - error: [er: unknown] - abort: [reason: unknown] - drain: [] - resume: [] - end: [] - finish: [] - prefinish: [] - close: [] - } -} - -export class Minipass< - RType extends any = Buffer, - WType extends any = RType extends Minipass.BufferOrString - ? Minipass.ContiguousData - : RType, - Events extends Minipass.Events = Minipass.Events - > - extends Stream - implements Minipass.DualIterable -{ - static isStream(stream: any): stream is Minipass.Readable | Minipass.Writable - - readonly bufferLength: number - readonly flowing: boolean - readonly writable: boolean - readonly readable: boolean - readonly aborted: boolean - readonly paused: boolean - readonly emittedEnd: boolean - readonly destroyed: boolean - - /** - * Technically writable, but mutating it can change the type, - * so is not safe to do in TypeScript. - */ - readonly objectMode: boolean - async: boolean - - /** - * Note: encoding is not actually read-only, and setEncoding(enc) - * exists. However, this type definition will insist that TypeScript - * programs declare the type of a Minipass stream up front, and if - * that type is string, then an encoding MUST be set in the ctor. If - * the type is Buffer, then the encoding must be missing, or set to - * 'buffer' or null. If the type is anything else, then objectMode - * must be set in the constructor options. So there is effectively - * no allowed way that a TS program can set the encoding after - * construction, as doing so will destroy any hope of type safety. - * TypeScript does not provide many options for changing the type of - * an object at run-time, which is what changing the encoding does. - */ - readonly encoding: Minipass.Encoding - // setEncoding(encoding: Encoding): void - - // Options required if not reading buffers - constructor( - ...args: RType extends Buffer - ? [] | [Minipass.Options] - : [Minipass.Options] - ) - - on( - ev: Event, - handler: (...args: Events[Event]) => any - ): this - - once( - ev: Event, - handler: (...args: Events[Event]) => any - ): this - - addListener( - ev: Event, - handler: (...args: Events[Event]) => any - ): this - - emit(ev: Event, ...data: Events[Event]): boolean - - write(chunk: WType, cb?: () => void): boolean - write(chunk: WType, encoding?: Minipass.Encoding, cb?: () => void): boolean - read(size?: number): RType - end(cb?: () => void): this - end(chunk: any, cb?: () => void): this - end(chunk: any, encoding?: Minipass.Encoding, cb?: () => void): this - pause(): void - resume(): void - promise(): Promise - collect(): Promise - - concat(): RType extends Minipass.BufferOrString ? Promise : never - destroy(er?: any): void - pipe(dest: W, opts?: Minipass.PipeOptions): W - unpipe(dest: W): void - - [Symbol.iterator](): Generator - [Symbol.asyncIterator](): AsyncGenerator -} diff --git a/index.js b/index.js deleted file mode 100644 index ed07c17..0000000 --- a/index.js +++ /dev/null @@ -1,702 +0,0 @@ -'use strict' -const proc = - typeof process === 'object' && process - ? process - : { - stdout: null, - stderr: null, - } -const EE = require('events') -const Stream = require('stream') -const stringdecoder = require('string_decoder') -const SD = stringdecoder.StringDecoder - -const EOF = Symbol('EOF') -const MAYBE_EMIT_END = Symbol('maybeEmitEnd') -const EMITTED_END = Symbol('emittedEnd') -const EMITTING_END = Symbol('emittingEnd') -const EMITTED_ERROR = Symbol('emittedError') -const CLOSED = Symbol('closed') -const READ = Symbol('read') -const FLUSH = Symbol('flush') -const FLUSHCHUNK = Symbol('flushChunk') -const ENCODING = Symbol('encoding') -const DECODER = Symbol('decoder') -const FLOWING = Symbol('flowing') -const PAUSED = Symbol('paused') -const RESUME = Symbol('resume') -const BUFFER = Symbol('buffer') -const PIPES = Symbol('pipes') -const BUFFERLENGTH = Symbol('bufferLength') -const BUFFERPUSH = Symbol('bufferPush') -const BUFFERSHIFT = Symbol('bufferShift') -const OBJECTMODE = Symbol('objectMode') -// internal event when stream is destroyed -const DESTROYED = Symbol('destroyed') -// internal event when stream has an error -const ERROR = Symbol('error') -const EMITDATA = Symbol('emitData') -const EMITEND = Symbol('emitEnd') -const EMITEND2 = Symbol('emitEnd2') -const ASYNC = Symbol('async') -const ABORT = Symbol('abort') -const ABORTED = Symbol('aborted') -const SIGNAL = Symbol('signal') - -const defer = fn => Promise.resolve().then(fn) - -// TODO remove when Node v8 support drops -const doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1' -const ASYNCITERATOR = - (doIter && Symbol.asyncIterator) || Symbol('asyncIterator not implemented') -const ITERATOR = - (doIter && Symbol.iterator) || Symbol('iterator not implemented') - -// events that mean 'the stream is over' -// these are treated specially, and re-emitted -// if they are listened for after emitting. -const isEndish = ev => ev === 'end' || ev === 'finish' || ev === 'prefinish' - -const isArrayBuffer = b => - b instanceof ArrayBuffer || - (typeof b === 'object' && - b.constructor && - b.constructor.name === 'ArrayBuffer' && - b.byteLength >= 0) - -const isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b) - -class Pipe { - constructor(src, dest, opts) { - this.src = src - this.dest = dest - this.opts = opts - this.ondrain = () => src[RESUME]() - dest.on('drain', this.ondrain) - } - unpipe() { - this.dest.removeListener('drain', this.ondrain) - } - // istanbul ignore next - only here for the prototype - proxyErrors() {} - end() { - this.unpipe() - if (this.opts.end) this.dest.end() - } -} - -class PipeProxyErrors extends Pipe { - unpipe() { - this.src.removeListener('error', this.proxyErrors) - super.unpipe() - } - constructor(src, dest, opts) { - super(src, dest, opts) - this.proxyErrors = er => dest.emit('error', er) - src.on('error', this.proxyErrors) - } -} - -class Minipass extends Stream { - constructor(options) { - super() - this[FLOWING] = false - // whether we're explicitly paused - this[PAUSED] = false - this[PIPES] = [] - this[BUFFER] = [] - this[OBJECTMODE] = (options && options.objectMode) || false - if (this[OBJECTMODE]) this[ENCODING] = null - else this[ENCODING] = (options && options.encoding) || null - if (this[ENCODING] === 'buffer') this[ENCODING] = null - this[ASYNC] = (options && !!options.async) || false - this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null - this[EOF] = false - this[EMITTED_END] = false - this[EMITTING_END] = false - this[CLOSED] = false - this[EMITTED_ERROR] = null - this.writable = true - this.readable = true - this[BUFFERLENGTH] = 0 - this[DESTROYED] = false - if (options && options.debugExposeBuffer === true) { - Object.defineProperty(this, 'buffer', { get: () => this[BUFFER] }) - } - if (options && options.debugExposePipes === true) { - Object.defineProperty(this, 'pipes', { get: () => this[PIPES] }) - } - this[SIGNAL] = options && options.signal - this[ABORTED] = false - if (this[SIGNAL]) { - this[SIGNAL].addEventListener('abort', () => this[ABORT]()) - if (this[SIGNAL].aborted) { - this[ABORT]() - } - } - } - - get bufferLength() { - return this[BUFFERLENGTH] - } - - get encoding() { - return this[ENCODING] - } - set encoding(enc) { - if (this[OBJECTMODE]) throw new Error('cannot set encoding in objectMode') - - if ( - this[ENCODING] && - enc !== this[ENCODING] && - ((this[DECODER] && this[DECODER].lastNeed) || this[BUFFERLENGTH]) - ) - throw new Error('cannot change encoding') - - if (this[ENCODING] !== enc) { - this[DECODER] = enc ? new SD(enc) : null - if (this[BUFFER].length) - this[BUFFER] = this[BUFFER].map(chunk => this[DECODER].write(chunk)) - } - - this[ENCODING] = enc - } - - setEncoding(enc) { - this.encoding = enc - } - - get objectMode() { - return this[OBJECTMODE] - } - set objectMode(om) { - this[OBJECTMODE] = this[OBJECTMODE] || !!om - } - - get ['async']() { - return this[ASYNC] - } - set ['async'](a) { - this[ASYNC] = this[ASYNC] || !!a - } - - // drop everything and get out of the flow completely - [ABORT]() { - this[ABORTED] = true - this.emit('abort', this[SIGNAL].reason) - this.destroy(this[SIGNAL].reason) - } - - get aborted() { - return this[ABORTED] - } - set aborted(_) {} - - write(chunk, encoding, cb) { - if (this[ABORTED]) return false - if (this[EOF]) throw new Error('write after end') - - if (this[DESTROYED]) { - this.emit( - 'error', - Object.assign( - new Error('Cannot call write after a stream was destroyed'), - { code: 'ERR_STREAM_DESTROYED' } - ) - ) - return true - } - - if (typeof encoding === 'function') (cb = encoding), (encoding = 'utf8') - - if (!encoding) encoding = 'utf8' - - const fn = this[ASYNC] ? defer : f => f() - - // convert array buffers and typed array views into buffers - // at some point in the future, we may want to do the opposite! - // leave strings and buffers as-is - // anything else switches us into object mode - if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) { - if (isArrayBufferView(chunk)) - chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength) - else if (isArrayBuffer(chunk)) chunk = Buffer.from(chunk) - else if (typeof chunk !== 'string') - // use the setter so we throw if we have encoding set - this.objectMode = true - } - - // handle object mode up front, since it's simpler - // this yields better performance, fewer checks later. - if (this[OBJECTMODE]) { - /* istanbul ignore if - maybe impossible? */ - if (this.flowing && this[BUFFERLENGTH] !== 0) this[FLUSH](true) - - if (this.flowing) this.emit('data', chunk) - else this[BUFFERPUSH](chunk) - - if (this[BUFFERLENGTH] !== 0) this.emit('readable') - - if (cb) fn(cb) - - return this.flowing - } - - // at this point the chunk is a buffer or string - // don't buffer it up or send it to the decoder - if (!chunk.length) { - if (this[BUFFERLENGTH] !== 0) this.emit('readable') - if (cb) fn(cb) - return this.flowing - } - - // fast-path writing strings of same encoding to a stream with - // an empty buffer, skipping the buffer/decoder dance - if ( - typeof chunk === 'string' && - // unless it is a string already ready for us to use - !(encoding === this[ENCODING] && !this[DECODER].lastNeed) - ) { - chunk = Buffer.from(chunk, encoding) - } - - if (Buffer.isBuffer(chunk) && this[ENCODING]) - chunk = this[DECODER].write(chunk) - - // Note: flushing CAN potentially switch us into not-flowing mode - if (this.flowing && this[BUFFERLENGTH] !== 0) this[FLUSH](true) - - if (this.flowing) this.emit('data', chunk) - else this[BUFFERPUSH](chunk) - - if (this[BUFFERLENGTH] !== 0) this.emit('readable') - - if (cb) fn(cb) - - return this.flowing - } - - read(n) { - if (this[DESTROYED]) return null - - if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) { - this[MAYBE_EMIT_END]() - return null - } - - if (this[OBJECTMODE]) n = null - - if (this[BUFFER].length > 1 && !this[OBJECTMODE]) { - if (this.encoding) this[BUFFER] = [this[BUFFER].join('')] - else this[BUFFER] = [Buffer.concat(this[BUFFER], this[BUFFERLENGTH])] - } - - const ret = this[READ](n || null, this[BUFFER][0]) - this[MAYBE_EMIT_END]() - return ret - } - - [READ](n, chunk) { - if (n === chunk.length || n === null) this[BUFFERSHIFT]() - else { - this[BUFFER][0] = chunk.slice(n) - chunk = chunk.slice(0, n) - this[BUFFERLENGTH] -= n - } - - this.emit('data', chunk) - - if (!this[BUFFER].length && !this[EOF]) this.emit('drain') - - return chunk - } - - end(chunk, encoding, cb) { - if (typeof chunk === 'function') (cb = chunk), (chunk = null) - if (typeof encoding === 'function') (cb = encoding), (encoding = 'utf8') - if (chunk) this.write(chunk, encoding) - if (cb) this.once('end', cb) - this[EOF] = true - this.writable = false - - // if we haven't written anything, then go ahead and emit, - // even if we're not reading. - // we'll re-emit if a new 'end' listener is added anyway. - // This makes MP more suitable to write-only use cases. - if (this.flowing || !this[PAUSED]) this[MAYBE_EMIT_END]() - return this - } - - // don't let the internal resume be overwritten - [RESUME]() { - if (this[DESTROYED]) return - - this[PAUSED] = false - this[FLOWING] = true - this.emit('resume') - if (this[BUFFER].length) this[FLUSH]() - else if (this[EOF]) this[MAYBE_EMIT_END]() - else this.emit('drain') - } - - resume() { - return this[RESUME]() - } - - pause() { - this[FLOWING] = false - this[PAUSED] = true - } - - get destroyed() { - return this[DESTROYED] - } - - get flowing() { - return this[FLOWING] - } - - get paused() { - return this[PAUSED] - } - - [BUFFERPUSH](chunk) { - if (this[OBJECTMODE]) this[BUFFERLENGTH] += 1 - else this[BUFFERLENGTH] += chunk.length - this[BUFFER].push(chunk) - } - - [BUFFERSHIFT]() { - if (this[OBJECTMODE]) this[BUFFERLENGTH] -= 1 - else this[BUFFERLENGTH] -= this[BUFFER][0].length - return this[BUFFER].shift() - } - - [FLUSH](noDrain) { - do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()) && this[BUFFER].length) - - if (!noDrain && !this[BUFFER].length && !this[EOF]) this.emit('drain') - } - - [FLUSHCHUNK](chunk) { - this.emit('data', chunk) - return this.flowing - } - - pipe(dest, opts) { - if (this[DESTROYED]) return - - const ended = this[EMITTED_END] - opts = opts || {} - if (dest === proc.stdout || dest === proc.stderr) opts.end = false - else opts.end = opts.end !== false - opts.proxyErrors = !!opts.proxyErrors - - // piping an ended stream ends immediately - if (ended) { - if (opts.end) dest.end() - } else { - this[PIPES].push( - !opts.proxyErrors - ? new Pipe(this, dest, opts) - : new PipeProxyErrors(this, dest, opts) - ) - if (this[ASYNC]) defer(() => this[RESUME]()) - else this[RESUME]() - } - - return dest - } - - unpipe(dest) { - const p = this[PIPES].find(p => p.dest === dest) - if (p) { - this[PIPES].splice(this[PIPES].indexOf(p), 1) - p.unpipe() - } - } - - addListener(ev, fn) { - return this.on(ev, fn) - } - - on(ev, fn) { - const ret = super.on(ev, fn) - if (ev === 'data' && !this[PIPES].length && !this.flowing) this[RESUME]() - else if (ev === 'readable' && this[BUFFERLENGTH] !== 0) - super.emit('readable') - else if (isEndish(ev) && this[EMITTED_END]) { - super.emit(ev) - this.removeAllListeners(ev) - } else if (ev === 'error' && this[EMITTED_ERROR]) { - if (this[ASYNC]) defer(() => fn.call(this, this[EMITTED_ERROR])) - else fn.call(this, this[EMITTED_ERROR]) - } - return ret - } - - get emittedEnd() { - return this[EMITTED_END] - } - - [MAYBE_EMIT_END]() { - if ( - !this[EMITTING_END] && - !this[EMITTED_END] && - !this[DESTROYED] && - this[BUFFER].length === 0 && - this[EOF] - ) { - this[EMITTING_END] = true - this.emit('end') - this.emit('prefinish') - this.emit('finish') - if (this[CLOSED]) this.emit('close') - this[EMITTING_END] = false - } - } - - emit(ev, data, ...extra) { - // error and close are only events allowed after calling destroy() - if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED]) - return - else if (ev === 'data') { - return !this[OBJECTMODE] && !data - ? false - : this[ASYNC] - ? defer(() => this[EMITDATA](data)) - : this[EMITDATA](data) - } else if (ev === 'end') { - return this[EMITEND]() - } else if (ev === 'close') { - this[CLOSED] = true - // don't emit close before 'end' and 'finish' - if (!this[EMITTED_END] && !this[DESTROYED]) return - const ret = super.emit('close') - this.removeAllListeners('close') - return ret - } else if (ev === 'error') { - this[EMITTED_ERROR] = data - super.emit(ERROR, data) - const ret = - !this[SIGNAL] || this.listeners('error').length - ? super.emit('error', data) - : false - this[MAYBE_EMIT_END]() - return ret - } else if (ev === 'resume') { - const ret = super.emit('resume') - this[MAYBE_EMIT_END]() - return ret - } else if (ev === 'finish' || ev === 'prefinish') { - const ret = super.emit(ev) - this.removeAllListeners(ev) - return ret - } - - // Some other unknown event - const ret = super.emit(ev, data, ...extra) - this[MAYBE_EMIT_END]() - return ret - } - - [EMITDATA](data) { - for (const p of this[PIPES]) { - if (p.dest.write(data) === false) this.pause() - } - const ret = super.emit('data', data) - this[MAYBE_EMIT_END]() - return ret - } - - [EMITEND]() { - if (this[EMITTED_END]) return - - this[EMITTED_END] = true - this.readable = false - if (this[ASYNC]) defer(() => this[EMITEND2]()) - else this[EMITEND2]() - } - - [EMITEND2]() { - if (this[DECODER]) { - const data = this[DECODER].end() - if (data) { - for (const p of this[PIPES]) { - p.dest.write(data) - } - super.emit('data', data) - } - } - - for (const p of this[PIPES]) { - p.end() - } - const ret = super.emit('end') - this.removeAllListeners('end') - return ret - } - - // const all = await stream.collect() - collect() { - const buf = [] - if (!this[OBJECTMODE]) buf.dataLength = 0 - // set the promise first, in case an error is raised - // by triggering the flow here. - const p = this.promise() - this.on('data', c => { - buf.push(c) - if (!this[OBJECTMODE]) buf.dataLength += c.length - }) - return p.then(() => buf) - } - - // const data = await stream.concat() - concat() { - return this[OBJECTMODE] - ? Promise.reject(new Error('cannot concat in objectMode')) - : this.collect().then(buf => - this[OBJECTMODE] - ? Promise.reject(new Error('cannot concat in objectMode')) - : this[ENCODING] - ? buf.join('') - : Buffer.concat(buf, buf.dataLength) - ) - } - - // stream.promise().then(() => done, er => emitted error) - promise() { - return new Promise((resolve, reject) => { - this.on(DESTROYED, () => reject(new Error('stream destroyed'))) - this.on('error', er => reject(er)) - this.on('end', () => resolve()) - }) - } - - // for await (let chunk of stream) - [ASYNCITERATOR]() { - let stopped = false - const stop = () => { - this.pause() - stopped = true - return Promise.resolve({ done: true }) - } - const next = () => { - if (stopped) return stop() - const res = this.read() - if (res !== null) return Promise.resolve({ done: false, value: res }) - - if (this[EOF]) return stop() - - let resolve = null - let reject = null - const onerr = er => { - this.removeListener('data', ondata) - this.removeListener('end', onend) - this.removeListener(DESTROYED, ondestroy) - stop() - reject(er) - } - const ondata = value => { - this.removeListener('error', onerr) - this.removeListener('end', onend) - this.removeListener(DESTROYED, ondestroy) - this.pause() - resolve({ value: value, done: !!this[EOF] }) - } - const onend = () => { - this.removeListener('error', onerr) - this.removeListener('data', ondata) - this.removeListener(DESTROYED, ondestroy) - stop() - resolve({ done: true }) - } - const ondestroy = () => onerr(new Error('stream destroyed')) - return new Promise((res, rej) => { - reject = rej - resolve = res - this.once(DESTROYED, ondestroy) - this.once('error', onerr) - this.once('end', onend) - this.once('data', ondata) - }) - } - - return { - next, - throw: stop, - return: stop, - [ASYNCITERATOR]() { - return this - }, - } - } - - // for (let chunk of stream) - [ITERATOR]() { - let stopped = false - const stop = () => { - this.pause() - this.removeListener(ERROR, stop) - this.removeListener(DESTROYED, stop) - this.removeListener('end', stop) - stopped = true - return { done: true } - } - - const next = () => { - if (stopped) return stop() - const value = this.read() - return value === null ? stop() : { value } - } - this.once('end', stop) - this.once(ERROR, stop) - this.once(DESTROYED, stop) - - return { - next, - throw: stop, - return: stop, - [ITERATOR]() { - return this - }, - } - } - - destroy(er) { - if (this[DESTROYED]) { - if (er) this.emit('error', er) - else this.emit(DESTROYED) - return this - } - - this[DESTROYED] = true - - // throw away all buffered data, it's never coming out - this[BUFFER].length = 0 - this[BUFFERLENGTH] = 0 - - if (typeof this.close === 'function' && !this[CLOSED]) this.close() - - if (er) this.emit('error', er) - // if no error to emit, still reject pending promises - else this.emit(DESTROYED) - - return this - } - - static isStream(s) { - return ( - !!s && - (s instanceof Minipass || - s instanceof Stream || - (s instanceof EE && - // readable - (typeof s.pipe === 'function' || - // writable - (typeof s.write === 'function' && typeof s.end === 'function')))) - ) - } -} - -exports.Minipass = Minipass diff --git a/package-lock.json b/package-lock.json index 3663e06..ac80310 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,35 +1,38 @@ { "name": "minipass", - "version": "6.0.2", + "version": "7.0.0-0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "minipass", - "version": "6.0.2", + "version": "7.0.0-0", "license": "ISC", "devDependencies": { - "@types/node": "^17.0.41", + "@types/node": "^20.1.2", + "@types/tap": "^15.0.8", + "c8": "^7.13.0", "end-of-stream": "^1.4.0", "node-abort-controller": "^3.1.1", "prettier": "^2.6.2", - "tap": "^16.2.0", + "sync-content": "^1.0.2", + "tap": "^16.3.0", "through2": "^2.0.3", - "ts-node": "^10.8.1", - "typedoc": "^0.23.24", - "typescript": "^4.7.3" + "ts-node": "^10.9.1", + "typedoc": "^0.24.8", + "typescript": "^5.1.3" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" }, "engines": { @@ -37,47 +40,47 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", + "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", "dev": true, "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.20.14", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz", - "integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.6.tgz", + "integrity": "sha512-29tfsWTq2Ftu7MXmimyC0C5FDZv5DYxOZkh3XD3+QW4V/BYuv/LyEsjj3c0hqedEaDt6DBfDvexMKU8YevdqFg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.20.12", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", - "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helpers": "^7.20.7", - "@babel/parser": "^7.20.7", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.12", - "@babel/types": "^7.20.7", + "version": "7.22.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.8.tgz", + "integrity": "sha512-75+KxFB4CZqYRXjx4NlR4J7yGvKumBuZTmV4NV6v09dVXXkuYVYLT68N6HCzLvfJ+fWCxQsntNzKwwIXL4bHnw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.7", + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helpers": "^7.22.6", + "@babel/parser": "^7.22.7", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.8", + "@babel/types": "^7.22.5", + "@nicolo-ribaudo/semver-v6": "^6.3.3", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" + "json5": "^2.2.2" }, "engines": { "node": ">=6.9.0" @@ -88,44 +91,31 @@ } }, "node_modules/@babel/generator": { - "version": "7.20.14", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz", - "integrity": "sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==", + "version": "7.22.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.7.tgz", + "integrity": "sha512-p+jPjMG+SI8yvIaxGgeW24u7q9+5+TGpZh8/CuB7RhBKd7RCy8FayNEFNNKrNK/eUcY/4ExQqLmyrvBXKsIcwQ==", "dev": true, "dependencies": { - "@babel/types": "^7.20.7", + "@babel/types": "^7.22.5", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.6.tgz", + "integrity": "sha512-534sYEqWD9VfUm3IPn2SLcH4Q3P86XL+QvqdC7ZsFrzyyPF3T4XGiVghF6PTYNdWg6pXuoqXxNQAhbYeEInTzA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" + "@babel/compat-data": "^7.22.6", + "@babel/helper-validator-option": "^7.22.5", + "@nicolo-ribaudo/semver-v6": "^6.3.3", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1" }, "engines": { "node": ">=6.9.0" @@ -134,143 +124,152 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", + "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", "dev": true, "dependencies": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", + "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", - "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz", + "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.10", - "@babel/types": "^7.20.7" + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, "dependencies": { - "@babel/types": "^7.20.2" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", + "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", - "integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", + "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", "dev": true, "dependencies": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.13", - "@babel/types": "^7.20.7" + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.6", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", + "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-validator-identifier": "^7.22.5", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -279,9 +278,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", - "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==", + "version": "7.22.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", + "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -291,33 +290,33 @@ } }, "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", - "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.13", - "@babel/types": "^7.20.7", + "version": "7.22.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", + "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.7", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.22.7", + "@babel/types": "^7.22.5", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -326,19 +325,25 @@ } }, "node_modules/@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", + "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", "to-fast-properties": "^2.0.0" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -361,6 +366,102 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -377,6 +478,58 @@ "node": ">=8" } }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", @@ -387,13 +540,14 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" }, "engines": { "node": ">=6.0.0" @@ -418,21 +572,46 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.14" } }, + "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@nicolo-ribaudo/semver-v6": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz", + "integrity": "sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@tsconfig/node10": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", @@ -452,21 +631,36 @@ "dev": true }, "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", "dev": true }, "node_modules/@types/node": { - "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.0.tgz", + "integrity": "sha512-jfT7iTf/4kOQ9S7CHV9BIyRaQqHu67mOjsIQBC3BKZvzvUB6zLxEwJ6sBE3ozcvP8kF6Uk5PXN0Q+c0dfhGX0g==", "dev": true }, + "node_modules/@types/tap": { + "version": "15.0.8", + "resolved": "https://registry.npmjs.org/@types/tap/-/tap-15.0.8.tgz", + "integrity": "sha512-ZfeoiZlLIaFi4t6wccwbTEicrHREkP0bOq8dZVi/nWvG5F8O7LlS2cSUZBiOW/D4cgWS/p2uhM3lJoyzFAl80w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -506,6 +700,12 @@ "node": ">=8" } }, + "node_modules/ansi-sequence-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", + "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", + "dev": true + }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -620,9 +820,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "version": "4.21.9", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", + "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", "dev": true, "funding": [ { @@ -632,13 +832,17 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" + "caniuse-lite": "^1.0.30001503", + "electron-to-chromium": "^1.4.431", + "node-releases": "^2.0.12", + "update-browserslist-db": "^1.0.11" }, "bin": { "browserslist": "cli.js" @@ -653,6 +857,32 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "node_modules/c8": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-7.14.0.tgz", + "integrity": "sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^2.0.0", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-reports": "^3.1.4", + "rimraf": "^3.0.2", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9" + }, + "bin": { + "c8": "bin/c8.js" + }, + "engines": { + "node": ">=10.12.0" + } + }, "node_modules/caching-transform": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", @@ -678,9 +908,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001449", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001449.tgz", - "integrity": "sha512-CPB+UL9XMT/Av+pJxCKGhdx+yg1hzplvFJQlJ2n68PyQGMz9L/E2zCyLdOL8uasbouTUgnPl+y0tccI/se+BEw==", + "version": "1.0.30001512", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001512.tgz", + "integrity": "sha512-2S9nK0G/mE+jasCUsMPlARhRCts1ebcp2Ji8Y8PWi4NDE1iRdLCnEPHkEfeBrGC45L4isBx5ur3IQ6yTE2mRZw==", "dev": true, "funding": [ { @@ -690,6 +920,10 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ] }, @@ -707,6 +941,27 @@ "node": ">=4" } }, + "node_modules/chalk/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -872,10 +1127,16 @@ "node": ">=0.3.1" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "version": "1.4.451", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.451.tgz", + "integrity": "sha512-YYbXHIBxAHe3KWvGOJOuWa6f3tgow44rBW+QAuwVp2DvGqNZeE//K2MowNdWS7XE8li5cgQDrX1LdBr41LufkA==", "dev": true }, "node_modules/emoji-regex": { @@ -966,16 +1227,19 @@ } }, "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", + "locate-path": "^6.0.0", "path-exists": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/findit": { @@ -1118,18 +1382,18 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/hasha": { @@ -1345,27 +1609,6 @@ "node": ">=8" } }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", @@ -1455,9 +1698,9 @@ "dev": true }, "node_modules/libtap": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/libtap/-/libtap-1.4.0.tgz", - "integrity": "sha512-STLFynswQ2A6W14JkabgGetBNk6INL1REgJ9UeNKw5llXroC2cGLgKTqavv0sl8OLVztLLipVKMcQ7yeUcqpmg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/libtap/-/libtap-1.4.1.tgz", + "integrity": "sha512-S9v19shLTigoMn3c02V7LZ4t09zxmVP3r3RbEAwuHFYeKgF+ESFJxoQ0PMFKW4XdgQhcjVBEwDoopG6WROq/gw==", "dev": true, "dependencies": { "async-hook-domain": "^2.0.4", @@ -1481,18 +1724,39 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, + "node_modules/libtap/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "yallist": "^4.0.0" }, "engines": { "node": ">=8" } }, + "node_modules/libtap/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", @@ -1500,20 +1764,14 @@ "dev": true }, "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.0.tgz", + "integrity": "sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==", "dev": true, - "dependencies": { - "yallist": "^3.0.2" + "engines": { + "node": "14 || >=16.14" } }, - "node_modules/lru-cache/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, "node_modules/lunr": { "version": "2.3.9", "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", @@ -1542,9 +1800,9 @@ "dev": true }, "node_modules/marked": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.12.tgz", - "integrity": "sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", "dev": true, "bin": { "marked": "bin/marked.js" @@ -1566,27 +1824,27 @@ } }, "node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", + "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", "dev": true, "bin": { - "mkdirp": "bin/cmd.js" + "mkdirp": "dist/cjs/src/bin.js" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/ms": { @@ -1614,9 +1872,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", - "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", + "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", "dev": true }, "node_modules/normalize-path": { @@ -1669,6 +1927,157 @@ "node": ">=8.9" } }, + "node_modules/nyc/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/nyc/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/nyc/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/nyc/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/nyc/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nyc/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/nyc/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -1703,30 +2112,33 @@ } }, "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-map": { @@ -1792,6 +2204,22 @@ "node": ">=8" } }, + "node_modules/path-scurry": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.0.tgz", + "integrity": "sha512-tZFEaRQbMLjwrsmidsGJ6wDMv0iazJWk6SfIKnY4Xru8auXgmJkOBa5DUbYFcFD2Rzk2+KDlIiF0GVXNCbgC7g==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -1822,10 +2250,62 @@ "node": ">=8" } }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/prettier": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz", - "integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, "bin": { "prettier": "bin-prettier.js" @@ -1865,9 +2345,9 @@ } }, "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "dependencies": { "core-util-is": "~1.0.0", @@ -1985,11 +2465,12 @@ } }, "node_modules/shiki": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.12.1.tgz", - "integrity": "sha512-aieaV1m349rZINEBkjxh2QbBvFFQOlgqYTNtCal82hHj4dDZ76oMlQIX+C7ryerBTDiga3e5NfH6smjdJ02BbQ==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.3.tgz", + "integrity": "sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==", "dev": true, "dependencies": { + "ansi-sequence-parser": "^1.1.0", "jsonc-parser": "^3.2.0", "vscode-oniguruma": "^1.7.0", "vscode-textmate": "^8.0.0" @@ -2087,6 +2568,21 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -2099,6 +2595,19 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -2109,21 +2618,152 @@ } }, "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" + } + }, + "node_modules/sync-content": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/sync-content/-/sync-content-1.0.2.tgz", + "integrity": "sha512-znd3rYiiSxU3WteWyS9a6FXkTA/Wjk8WQsOyzHbineeL837dLn3DA4MRhsIX3qGcxDMH6+uuFV4axztssk7wEQ==", + "dev": true, + "dependencies": { + "glob": "^10.2.6", + "mkdirp": "^3.0.1", + "path-scurry": "^1.9.2", + "rimraf": "^5.0.1" + }, + "bin": { + "sync-content": "dist/mjs/bin.mjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sync-content/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/sync-content/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sync-content/node_modules/glob": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.1.tgz", + "integrity": "sha512-9BKYcEeIs7QwlCYs+Y3GBvqAMISufUS0i2ELd11zpZjxI5V9iyRj0HgzB5/cLf2NY4vcYBTYzJ7GIui7j/4DOw==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2", + "path-scurry": "^1.10.0" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sync-content/node_modules/jackspeak": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", + "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/sync-content/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sync-content/node_modules/rimraf": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.1.tgz", + "integrity": "sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==", + "dev": true, + "dependencies": { + "glob": "^10.2.5" + }, + "bin": { + "rimraf": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sync-content/node_modules/signal-exit": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", + "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/tap": { - "version": "16.3.4", - "resolved": "https://registry.npmjs.org/tap/-/tap-16.3.4.tgz", - "integrity": "sha512-SAexdt2ZF4XBgye6TPucFI2y7VE0qeFXlXucJIV1XDPCs+iJodk0MYacr1zR6Ycltzz7PYg8zrblDXKbAZM2LQ==", + "version": "16.3.7", + "resolved": "https://registry.npmjs.org/tap/-/tap-16.3.7.tgz", + "integrity": "sha512-AaovVsfXVKcIf9eD1NxgwIqSDz5LauvybTpS6bjAKVYqz3+iavHC1abwxTkXmswb2n7eq8qKLt8DvY3D6iWcYA==", "bundleDependencies": [ "ink", "treport", @@ -2238,6 +2878,24 @@ "node": ">= 8" } }, + "node_modules/tap-parser/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tap-parser/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/tap-yaml": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/tap-yaml/-/tap-yaml-1.0.2.tgz", @@ -2248,31 +2906,32 @@ } }, "node_modules/tap/node_modules/@ampproject/remapping": { - "version": "2.1.2", + "version": "2.2.1", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.0" + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" }, "engines": { "node": ">=6.0.0" } }, "node_modules/tap/node_modules/@babel/code-frame": { - "version": "7.16.7", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/compat-data": { - "version": "7.17.7", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", @@ -2281,25 +2940,25 @@ } }, "node_modules/tap/node_modules/@babel/core": { - "version": "7.17.8", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.7", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.8", - "@babel/parser": "^7.17.8", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0", + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helpers": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", + "json5": "^2.2.2", "semver": "^6.3.0" }, "engines": { @@ -2311,40 +2970,42 @@ } }, "node_modules/tap/node_modules/@babel/generator": { - "version": "7.17.7", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.22.5", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.16.7", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-compilation-targets": { - "version": "7.17.7", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", + "@babel/compat-data": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", "semver": "^6.3.0" }, "engines": { @@ -2355,88 +3016,72 @@ } }, "node_modules/tap/node_modules/@babel/helper-environment-visitor": { - "version": "7.16.7", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", - "dependencies": { - "@babel/types": "^7.16.7" - }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-function-name": { - "version": "7.16.7", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/tap/node_modules/@babel/helper-get-function-arity": { - "version": "7.16.7", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.16.7" + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-hoist-variables": { - "version": "7.16.7", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-module-imports": { - "version": "7.16.7", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-module-transforms": { - "version": "7.17.7", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-plugin-utils": { - "version": "7.16.7", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", @@ -2445,31 +3090,40 @@ } }, "node_modules/tap/node_modules/@babel/helper-simple-access": { - "version": "7.17.7", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.17.0" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.7", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/tap/node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/tap/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", @@ -2478,7 +3132,7 @@ } }, "node_modules/tap/node_modules/@babel/helper-validator-option": { - "version": "7.16.7", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", @@ -2487,26 +3141,26 @@ } }, "node_modules/tap/node_modules/@babel/helpers": { - "version": "7.17.8", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/highlight": { - "version": "7.16.10", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.22.5", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -2515,7 +3169,7 @@ } }, "node_modules/tap/node_modules/@babel/parser": { - "version": "7.17.8", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", @@ -2527,16 +3181,16 @@ } }, "node_modules/tap/node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.17.3", + "version": "7.20.7", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.17.0", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.7" + "@babel/plugin-transform-parameters": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -2546,12 +3200,12 @@ } }, "node_modules/tap/node_modules/@babel/plugin-syntax-jsx": { - "version": "7.16.7", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2573,12 +3227,12 @@ } }, "node_modules/tap/node_modules/@babel/plugin-transform-destructuring": { - "version": "7.17.7", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2588,12 +3242,12 @@ } }, "node_modules/tap/node_modules/@babel/plugin-transform-parameters": { - "version": "7.16.7", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2603,16 +3257,16 @@ } }, "node_modules/tap/node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.17.3", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-jsx": "^7.16.7", - "@babel/types": "^7.17.0" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2622,33 +3276,33 @@ } }, "node_modules/tap/node_modules/@babel/template": { - "version": "7.16.7", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/traverse": { - "version": "7.17.3", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2657,12 +3311,13 @@ } }, "node_modules/tap/node_modules/@babel/types": { - "version": "7.17.0", + "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2689,8 +3344,31 @@ "node": ">=10" } }, + "node_modules/tap/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/tap/node_modules/@jridgewell/resolve-uri": { - "version": "3.0.5", + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/tap/node_modules/@jridgewell/set-array": { + "version": "1.1.2", "dev": true, "inBundle": true, "license": "MIT", @@ -2699,29 +3377,35 @@ } }, "node_modules/tap/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.11", + "version": "1.4.15", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.4", + "version": "0.3.18", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, + "node_modules/tap/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "dev": true, + "inBundle": true, + "license": "MIT" + }, "node_modules/tap/node_modules/@types/prop-types": { - "version": "15.7.4", + "version": "15.7.5", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/@types/react": { - "version": "17.0.52", + "version": "17.0.62", "dev": true, "inBundle": true, "license": "MIT", @@ -2732,7 +3416,7 @@ } }, "node_modules/tap/node_modules/@types/scheduler": { - "version": "0.16.2", + "version": "0.16.3", "dev": true, "inBundle": true, "license": "MIT" @@ -2835,7 +3519,7 @@ } }, "node_modules/tap/node_modules/browserslist": { - "version": "4.20.2", + "version": "4.21.9", "dev": true, "funding": [ { @@ -2845,16 +3529,19 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "inBundle": true, "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001317", - "electron-to-chromium": "^1.4.84", - "escalade": "^3.1.1", - "node-releases": "^2.0.2", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001503", + "electron-to-chromium": "^1.4.431", + "node-releases": "^2.0.12", + "update-browserslist-db": "^1.0.11" }, "bin": { "browserslist": "cli.js" @@ -2897,7 +3584,7 @@ } }, "node_modules/tap/node_modules/caniuse-lite": { - "version": "1.0.30001319", + "version": "1.0.30001506", "dev": true, "funding": [ { @@ -2907,6 +3594,10 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "inBundle": true, @@ -3025,13 +3716,10 @@ "license": "MIT" }, "node_modules/tap/node_modules/convert-source-map": { - "version": "1.8.0", + "version": "1.9.0", "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.1" - } + "inBundle": true, + "license": "MIT" }, "node_modules/tap/node_modules/convert-to-spaces": { "version": "1.0.2", @@ -3043,7 +3731,7 @@ } }, "node_modules/tap/node_modules/csstype": { - "version": "3.0.11", + "version": "3.1.2", "dev": true, "inBundle": true, "license": "MIT" @@ -3066,7 +3754,7 @@ } }, "node_modules/tap/node_modules/electron-to-chromium": { - "version": "1.4.89", + "version": "1.4.438", "dev": true, "inBundle": true, "license": "ISC" @@ -3416,6 +4104,15 @@ "loose-envify": "cli.js" } }, + "node_modules/tap/node_modules/lru-cache": { + "version": "5.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, "node_modules/tap/node_modules/make-dir": { "version": "3.1.0", "dev": true, @@ -3453,7 +4150,7 @@ } }, "node_modules/tap/node_modules/minipass": { - "version": "3.3.4", + "version": "3.3.6", "dev": true, "inBundle": true, "license": "ISC", @@ -3464,6 +4161,24 @@ "node": ">=8" } }, + "node_modules/tap/node_modules/minipass/node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/tap/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/tap/node_modules/ms": { "version": "2.1.2", "dev": true, @@ -3471,7 +4186,7 @@ "license": "MIT" }, "node_modules/tap/node_modules/node-releases": { - "version": "2.0.2", + "version": "2.0.12", "dev": true, "inBundle": true, "license": "MIT" @@ -3591,7 +4306,7 @@ } }, "node_modules/tap/node_modules/punycode": { - "version": "2.1.1", + "version": "2.3.0", "dev": true, "inBundle": true, "license": "MIT", @@ -3613,7 +4328,7 @@ } }, "node_modules/tap/node_modules/react-devtools-core": { - "version": "4.24.1", + "version": "4.27.8", "dev": true, "inBundle": true, "license": "MIT", @@ -3685,12 +4400,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/tap/node_modules/safe-buffer": { - "version": "5.1.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, "node_modules/tap/node_modules/scheduler": { "version": "0.20.2", "dev": true, @@ -3711,10 +4420,13 @@ } }, "node_modules/tap/node_modules/shell-quote": { - "version": "1.7.3", + "version": "1.8.1", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/tap/node_modules/signal-exit": { "version": "3.0.7", @@ -3769,17 +4481,8 @@ "inBundle": true, "license": "MIT" }, - "node_modules/tap/node_modules/source-map": { - "version": "0.5.7", - "dev": true, - "inBundle": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/tap/node_modules/stack-utils": { - "version": "2.0.5", + "version": "2.0.6", "dev": true, "inBundle": true, "license": "MIT", @@ -3971,34 +4674,42 @@ } }, "node_modules/tap/node_modules/unicode-length": { - "version": "2.0.2", + "version": "2.1.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "punycode": "^2.0.0", - "strip-ansi": "^3.0.1" - } - }, - "node_modules/tap/node_modules/unicode-length/node_modules/ansi-regex": { - "version": "2.1.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "punycode": "^2.0.0" } }, - "node_modules/tap/node_modules/unicode-length/node_modules/strip-ansi": { - "version": "3.0.1", + "node_modules/tap/node_modules/update-browserslist-db": { + "version": "1.0.11", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "inBundle": true, "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "escalade": "^3.1.1", + "picocolors": "^1.0.0" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, "node_modules/tap/node_modules/widest-line": { @@ -4067,7 +4778,7 @@ "license": "ISC" }, "node_modules/tap/node_modules/ws": { - "version": "7.5.7", + "version": "7.5.9", "dev": true, "inBundle": true, "license": "MIT", @@ -4088,7 +4799,7 @@ } }, "node_modules/tap/node_modules/yallist": { - "version": "4.0.0", + "version": "3.1.1", "dev": true, "inBundle": true, "license": "ISC" @@ -4172,10 +4883,13 @@ } }, "node_modules/trivial-deferred": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trivial-deferred/-/trivial-deferred-1.0.1.tgz", - "integrity": "sha512-dagAKX7vaesNNAwOc9Np9C2mJ+7YopF4lk+jE2JML9ta4kZ91Y6UruJNH65bLRYoUROD8EY+Pmi44qQWwXR7sw==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/trivial-deferred/-/trivial-deferred-1.1.2.tgz", + "integrity": "sha512-vDPiDBC3hyP6O4JrJYMImW3nl3c03Tsj9fEXc7Qc/XKa1O7gf5ZtFfIR/E0dun9SnDHdwjna1Z2rSzYgqpxh/g==", + "dev": true, + "engines": { + "node": ">= 8" + } }, "node_modules/ts-node": { "version": "10.9.1", @@ -4239,15 +4953,15 @@ } }, "node_modules/typedoc": { - "version": "0.23.24", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.24.tgz", - "integrity": "sha512-bfmy8lNQh+WrPYcJbtjQ6JEEsVl/ce1ZIXyXhyW+a1vFrjO39t6J8sL/d6FfAGrJTc7McCXgk9AanYBSNvLdIA==", + "version": "0.24.8", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.24.8.tgz", + "integrity": "sha512-ahJ6Cpcvxwaxfu4KtjA8qZNqS43wYt6JL27wYiIgl1vd38WW/KWX11YuAeZhuz9v+ttrutSsgK+XO1CjL1kA3w==", "dev": true, "dependencies": { "lunr": "^2.3.9", - "marked": "^4.2.5", - "minimatch": "^5.1.2", - "shiki": "^0.12.1" + "marked": "^4.3.0", + "minimatch": "^9.0.0", + "shiki": "^0.14.1" }, "bin": { "typedoc": "bin/typedoc" @@ -4256,7 +4970,7 @@ "node": ">= 14.14" }, "peerDependencies": { - "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x" + "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x" } }, "node_modules/typedoc/node_modules/brace-expansion": { @@ -4269,28 +4983,31 @@ } }, "node_modules/typedoc/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/typescript": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", - "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/unicode-length": { @@ -4303,9 +5020,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", "dev": true, "funding": [ { @@ -4315,6 +5032,10 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { @@ -4322,7 +5043,7 @@ "picocolors": "^1.0.0" }, "bin": { - "browserslist-lint": "cli.js" + "update-browserslist-db": "cli.js" }, "peerDependencies": { "browserslist": ">= 4.21.0" @@ -4349,6 +5070,20 @@ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true }, + "node_modules/v8-to-istanbul": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, "node_modules/vscode-oniguruma": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", @@ -4377,9 +5112,9 @@ } }, "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", "dev": true }, "node_modules/wrap-ansi": { @@ -4399,6 +5134,57 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -4460,15 +5246,18 @@ } }, "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } }, "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, "node_modules/yaml": { @@ -4481,96 +5270,30 @@ } }, "node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/yargs/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/yargs/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/yargs/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/yargs/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/yn": { @@ -4581,6 +5304,18 @@ "engines": { "node": ">=6" } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/package.json b/package.json index ac8e7a0..f51652e 100644 --- a/package.json +++ b/package.json @@ -1,70 +1,50 @@ { "name": "minipass", - "version": "6.0.2", + "version": "7.0.0-0", "description": "minimal implementation of a PassThrough stream", - "main": "./index.js", - "module": "./index.mjs", - "types": "./index.d.ts", + "main": "./dist/cjs/index.js", + "module": "./dist/mjs/index.js", + "types": "./dist/cjs/index.js", "exports": { ".": { "import": { - "types": "./index.d.ts", - "default": "./index.mjs" + "types": "./dist/mjs/index.d.ts", + "default": "./dist/mjs/index.js" }, "require": { - "types": "./index.d.ts", - "default": "./index.js" + "types": "./dist/cjs/index.d.ts", + "default": "./dist/cjs/index.js" } }, "./package.json": "./package.json" }, - "devDependencies": { - "@types/node": "^17.0.41", - "end-of-stream": "^1.4.0", - "node-abort-controller": "^3.1.1", - "prettier": "^2.6.2", - "tap": "^16.2.0", - "through2": "^2.0.3", - "ts-node": "^10.8.1", - "typedoc": "^0.23.24", - "typescript": "^4.7.3" - }, + "files": ["dist"], "scripts": { - "pretest": "npm run prepare", - "presnap": "npm run prepare", - "prepare": "node ./scripts/transpile-to-esm.js", - "snap": "tap", - "test": "tap", "preversion": "npm test", "postversion": "npm publish", - "postpublish": "git push origin --follow-tags", - "typedoc": "typedoc ./index.d.ts", - "format": "prettier --write . --loglevel warn" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/isaacs/minipass.git" + "prepublishOnly": "git push origin --follow-tags", + "preprepare": "rm -rf dist", + "prepare": "tsc -p tsconfig.json && tsc -p tsconfig-esm.json && bash ./scripts/fixup.sh", + "pretest": "npm run prepare", + "presnap": "npm run prepare", + "test": "c8 tap", + "snap": "c8 tap", + "format": "prettier --write . --loglevel warn", + "typedoc": "typedoc --tsconfig tsconfig-esm.json ./src/*.ts" }, - "keywords": [ - "passthrough", - "stream" - ], - "author": "Isaac Z. Schlueter (http://blog.izs.me/)", - "license": "ISC", - "files": [ - "index.d.ts", - "index.js", - "index.mjs" - ], "tap": { - "check-coverage": true - }, - "engines": { - "node": ">=16 || 14 >=14.17" + "coverage": false, + "node-arg": [ + "--enable-source-maps", + "--no-warnings", + "--loader", + "ts-node/esm" + ], + "ts": false }, "prettier": { "semi": false, - "printWidth": 80, + "printWidth": 75, "tabWidth": 2, "useTabs": false, "singleQuote": true, @@ -72,5 +52,29 @@ "bracketSameLine": true, "arrowParens": "avoid", "endOfLine": "lf" + }, + "devDependencies": { + "@types/node": "^20.1.2", + "@types/tap": "^15.0.8", + "c8": "^7.13.0", + "prettier": "^2.6.2", + "tap": "^16.3.0", + "ts-node": "^10.9.1", + "typedoc": "^0.24.8", + "typescript": "^5.1.3", + "end-of-stream": "^1.4.0", + "node-abort-controller": "^3.1.1", + "sync-content": "^1.0.2", + "through2": "^2.0.3" + }, + "repository": "https://github.com/isaacs/minipass", + "keywords": [ + "passthrough", + "stream" + ], + "author": "Isaac Z. Schlueter (http://blog.izs.me/)", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" } } diff --git a/scripts/fixup.sh b/scripts/fixup.sh new file mode 100644 index 0000000..42ce032 --- /dev/null +++ b/scripts/fixup.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +cat >dist-tmp/cjs/package.json <dist-tmp/mjs/package.json < + !!s && + typeof s === 'object' && + (s instanceof Minipass || + s instanceof Stream || + isReadable(s) || + isWritable(s)) + +/** + * Return true if the argument is a valid {@link Minipass.Readable} + */ +export const isReadable = (s: any): s is Minipass.Readable => + !!s && + typeof s === 'object' && + s instanceof EventEmitter && + typeof (s as Minipass.Readable).pipe === 'function' && + // node core Writable streams have a pipe() method, but it throws + (s as Minipass.Readable).pipe !== Stream.Writable.prototype.pipe + +/** + * Return true if the argument is a valid {@link Minipass.Writable} + */ +export const isWritable = (s: any): s is Minipass.Readable => + !!s && + typeof s === 'object' && + s instanceof EventEmitter && + typeof (s as Minipass.Writable).write === 'function' && + typeof (s as Minipass.Writable).end === 'function' + +const EOF = Symbol('EOF') +const MAYBE_EMIT_END = Symbol('maybeEmitEnd') +const EMITTED_END = Symbol('emittedEnd') +const EMITTING_END = Symbol('emittingEnd') +const EMITTED_ERROR = Symbol('emittedError') +const CLOSED = Symbol('closed') +const READ = Symbol('read') +const FLUSH = Symbol('flush') +const FLUSHCHUNK = Symbol('flushChunk') +const ENCODING = Symbol('encoding') +const DECODER = Symbol('decoder') +const FLOWING = Symbol('flowing') +const PAUSED = Symbol('paused') +const RESUME = Symbol('resume') +const BUFFER = Symbol('buffer') +const PIPES = Symbol('pipes') +const BUFFERLENGTH = Symbol('bufferLength') +const BUFFERPUSH = Symbol('bufferPush') +const BUFFERSHIFT = Symbol('bufferShift') +const OBJECTMODE = Symbol('objectMode') +// internal event when stream is destroyed +const DESTROYED = Symbol('destroyed') +// internal event when stream has an error +const ERROR = Symbol('error') +const EMITDATA = Symbol('emitData') +const EMITEND = Symbol('emitEnd') +const EMITEND2 = Symbol('emitEnd2') +const ASYNC = Symbol('async') +const ABORT = Symbol('abort') +const ABORTED = Symbol('aborted') +const SIGNAL = Symbol('signal') +const DATALISTENERS = Symbol('dataListeners') +const DISCARDED = Symbol('discarded') + +const defer = (fn: (...a: any[]) => any) => Promise.resolve().then(fn) +const nodefer = (fn: (...a: any[]) => any) => fn() + +// events that mean 'the stream is over' +// these are treated specially, and re-emitted +// if they are listened for after emitting. +type EndishEvent = 'end' | 'finish' | 'prefinish' +const isEndish = (ev: any): ev is EndishEvent => + ev === 'end' || ev === 'finish' || ev === 'prefinish' + +const isArrayBufferLike = (b: any): b is ArrayBufferLike => + b instanceof ArrayBuffer || + (!!b && + typeof b === 'object' && + b.constructor && + b.constructor.name === 'ArrayBuffer' && + b.byteLength >= 0) + +const isArrayBufferView = (b: any): b is ArrayBufferView => + !Buffer.isBuffer(b) && ArrayBuffer.isView(b) + +/** + * Options that may be passed to stream.pipe() + */ +export interface PipeOptions { + /** + * end the destination stream when the source stream ends + */ + end?: boolean + /** + * proxy errors from the source stream to the destination stream + */ + proxyErrors?: boolean +} + +/** + * Internal class representing a pipe to a destination stream. + * + * @internal + */ +class Pipe { + src: Minipass + dest: Minipass + opts: PipeOptions + ondrain: () => any + constructor( + src: Minipass, + dest: Minipass.Writable, + opts: PipeOptions + ) { + this.src = src + this.dest = dest as Minipass + this.opts = opts + this.ondrain = () => src[RESUME]() + this.dest.on('drain', this.ondrain) + } + unpipe() { + this.dest.removeListener('drain', this.ondrain) + } + // only here for the prototype + /* c8 ignore start */ + proxyErrors(_er: any) {} + /* c8 ignore stop */ + end() { + this.unpipe() + if (this.opts.end) this.dest.end() + } +} + +/** + * Internal class representing a pipe to a destination stream where + * errors are proxied. + * + * @internal + */ +class PipeProxyErrors extends Pipe { + unpipe() { + this.src.removeListener('error', this.proxyErrors) + super.unpipe() + } + constructor( + src: Minipass, + dest: Minipass.Writable, + opts: PipeOptions + ) { + super(src, dest, opts) + this.proxyErrors = er => dest.emit('error', er) + src.on('error', this.proxyErrors) + } +} + +export namespace Minipass { + /** + * Encoding used to create a stream that outputs strings rather than + * Buffer objects. + */ + export type Encoding = BufferEncoding | 'buffer' | null + + /** + * Any stream that Minipass can pipe into + */ + export type Writable = + | Minipass + | NodeJS.WriteStream + | (NodeJS.WriteStream & { fd: number }) + | (EventEmitter & { + end(): any + write(chunk: any, ...args: any[]): any + }) + + /** + * Any stream that can be read from + */ + export type Readable = + | Minipass + | NodeJS.ReadStream + | (NodeJS.ReadStream & { fd: number }) + | (EventEmitter & { + pause(): any + resume(): any + pipe(...destArgs: any[]): any + }) + + /** + * Utility type that can be iterated sync or async + */ + export type DualIterable = Iterable & AsyncIterable + + type EventArguments = Record + + /** + * The listing of events that a Minipass class can emit. + * Extend this when extending the Minipass class, and pass as + * the third template argument. The key is the name of the event, + * and the value is the argument list. + * + * Any undeclared events will still be allowed, but the handler will get + * arguments as `unknown[]`. + */ + export interface Events + extends EventArguments { + readable: [] + data: [chunk: RType] + error: [er: unknown] + abort: [reason: unknown] + drain: [] + resume: [] + end: [] + finish: [] + prefinish: [] + close: [] + [DESTROYED]: [er?: unknown] + [ERROR]: [er: unknown] + } + + /** + * String or buffer-like data that can be joined and sliced + */ + export type ContiguousData = + | Buffer + | ArrayBufferLike + | ArrayBufferView + | string + export type BufferOrString = Buffer | string + + /** + * Options passed to the Minipass constructor. + */ + export type SharedOptions = { + /** + * Defer all data emission and other events until the end of the + * current tick, similar to Node core streams + */ + async?: boolean + /** + * A signal which will abort the stream + */ + signal?: AbortSignal + /** + * Output string encoding. Set to `null` or `'buffer'` (or omit) to + * emit Buffer objects rather than strings. + * + * Conflicts with `objectMode` + */ + encoding?: BufferEncoding | null | 'buffer' + /** + * Output data exactly as it was written, supporting non-buffer/string + * data (such as arbitrary objects, falsey values, etc.) + * + * Conflicts with `encoding` + */ + objectMode?: boolean + } + + /** + * Options for a string encoded output + */ + export type EncodingOptions = SharedOptions & { + encoding: BufferEncoding + objectMode?: false + } + + /** + * Options for contiguous data buffer output + */ + export type BufferOptions = SharedOptions & { + encoding?: null | 'buffer' + objectMode?: false + } + + /** + * Options for objectMode arbitrary output + */ + export type ObjectModeOptions = SharedOptions & { + objectMode: true + encoding?: null + } + + /** + * Utility type to determine allowed options based on read type + */ + export type Options = T extends string + ? EncodingOptions | ObjectModeOptions + : T extends Buffer + ? BufferOptions | ObjectModeOptions + : SharedOptions +} + +const isObjectModeOptions = ( + o: Minipass.SharedOptions +): o is Minipass.ObjectModeOptions => !!o.objectMode + +const isEncodingOptions = ( + o: Minipass.SharedOptions +): o is Minipass.EncodingOptions => + !o.objectMode && !!o.encoding && o.encoding !== 'buffer' + +/** + * Main export, the Minipass class + * + * `RType` is the type of data emitted, defaults to Buffer + * + * `WType` is the type of data to be written, if RType is buffer or string, + * then any {@link Minipass.ContiguousData} is allowed. + * + * `Events` is the set of event handler signatures that this object + * will emit, see {@link Minipass.Events} + */ +export class Minipass< + RType extends unknown = Buffer, + WType extends unknown = RType extends Minipass.BufferOrString + ? Minipass.ContiguousData + : RType, + Events extends Minipass.Events = Minipass.Events + > + extends EventEmitter + implements Minipass.DualIterable +{ + [FLOWING]: boolean = false; + [PAUSED]: boolean = false; + [PIPES]: Pipe[] = []; + [BUFFER]: RType[] = []; + [OBJECTMODE]: boolean; + [ENCODING]: BufferEncoding | null; + [ASYNC]: boolean; + [DECODER]: SD | null; + [EOF]: boolean = false; + [EMITTED_END]: boolean = false; + [EMITTING_END]: boolean = false; + [CLOSED]: boolean = false; + [EMITTED_ERROR]: unknown = null; + [BUFFERLENGTH]: number = 0; + [DESTROYED]: boolean = false; + [SIGNAL]?: AbortSignal; + [ABORTED]: boolean = false; + [DATALISTENERS]: number = 0; + [DISCARDED]: boolean = false + + /** + * true if the stream can be written + */ + writable: boolean = true + /** + * true if the stream can be read + */ + readable: boolean = true + + /** + * If `RType` is Buffer, then options do not need to be provided. + * Otherwise, an options object must be provided to specify either + * {@link Minipass.SharedOptions.objectMode} or + * {@link Minipass.SharedOptions.encoding}, as appropriate. + */ + constructor( + ...args: RType extends Buffer + ? [] | [Minipass.Options] + : [Minipass.Options] + ) { + const options: Minipass.Options = (args[0] || + {}) as Minipass.Options + super() + if (options.objectMode && typeof options.encoding === 'string') { + throw new TypeError( + 'Encoding and objectMode may not be used together' + ) + } + if (isObjectModeOptions(options)) { + this[OBJECTMODE] = true + this[ENCODING] = null + } else if (isEncodingOptions(options)) { + this[ENCODING] = options.encoding + this[OBJECTMODE] = false + } else { + this[OBJECTMODE] = false + this[ENCODING] = null + } + this[ASYNC] = !!options.async + this[DECODER] = this[ENCODING] + ? (new StringDecoder(this[ENCODING]) as SD) + : null + + //@ts-ignore - private option for debugging and testing + if (options && options.debugExposeBuffer === true) { + Object.defineProperty(this, 'buffer', { get: () => this[BUFFER] }) + } + //@ts-ignore - private option for debugging and testing + if (options && options.debugExposePipes === true) { + Object.defineProperty(this, 'pipes', { get: () => this[PIPES] }) + } + + const { signal } = options + if (signal) { + this[SIGNAL] = signal + if (signal.aborted) { + this[ABORT]() + } else { + signal.addEventListener('abort', () => this[ABORT]()) + } + } + } + + /** + * The amount of data stored in the buffer waiting to be read. + * + * For Buffer strings, this will be the total byte length. + * For string encoding streams, this will be the string character length, + * according to JavaScript's `string.length` logic. + * For objectMode streams, this is a count of the items waiting to be + * emitted. + */ + get bufferLength() { + return this[BUFFERLENGTH] + } + + /** + * The `BufferEncoding` currently in use, or `null` + */ + get encoding() { + return this[ENCODING] + } + + /** + * @deprecated - This is a read only property + */ + set encoding(_enc) { + throw new Error('Encoding must be set at instantiation time') + } + + /** + * @deprecated - Encoding may only be set at instantiation time + */ + setEncoding(_enc: Minipass.Encoding) { + throw new Error('Encoding must be set at instantiation time') + } + + /** + * True if this is an objectMode stream + */ + get objectMode() { + return this[OBJECTMODE] + } + + /** + * @deprecated - This is a read-only property + */ + set objectMode(_om) { + throw new Error('objectMode must be set at instantiation time') + } + + /** + * true if this is an async stream + */ + get ['async'](): boolean { + return this[ASYNC] + } + /** + * Set to true to make this stream async. + * + * Once set, it cannot be unset, as this would potentially cause incorrect + * behavior. Ie, a sync stream can be made async, but an async stream + * cannot be safely made sync. + */ + set ['async'](a: boolean) { + this[ASYNC] = this[ASYNC] || !!a + } + + // drop everything and get out of the flow completely + [ABORT]() { + this[ABORTED] = true + this.emit('abort', this[SIGNAL]?.reason) + this.destroy(this[SIGNAL]?.reason) + } + + /** + * True if the stream has been aborted. + */ + get aborted() { + return this[ABORTED] + } + /** + * No-op setter. Stream aborted status is set via the AbortSignal provided + * in the constructor options. + */ + set aborted(_) {} + + /** + * Write data into the stream + * + * If the chunk written is a string, and encoding is not specified, then + * `utf8` will be assumed. If the stream encoding matches the encoding of + * a written string, and the state of the string decoder allows it, then + * the string will be passed through to either the output or the internal + * buffer without any processing. Otherwise, it will be turned into a + * Buffer object for processing into the desired encoding. + * + * If provided, `cb` function is called immediately before return for + * sync streams, or on next tick for async streams, because for this + * base class, a chunk is considered "processed" once it is accepted + * and either emitted or buffered. That is, the callback does not indicate + * that the chunk has been eventually emitted, though of course child + * classes can override this function to do whatever processing is required + * and call `super.write(...)` only once processing is completed. + */ + write(chunk: WType, cb?: () => void): boolean + write( + chunk: WType, + encoding?: Minipass.Encoding, + cb?: () => void + ): boolean + write( + chunk: WType, + encoding?: Minipass.Encoding | (() => void), + cb?: () => void + ): boolean { + if (this[ABORTED]) return false + if (this[EOF]) throw new Error('write after end') + + if (this[DESTROYED]) { + this.emit( + 'error', + Object.assign( + new Error('Cannot call write after a stream was destroyed'), + { code: 'ERR_STREAM_DESTROYED' } + ) + ) + return true + } + + if (typeof encoding === 'function') { + cb = encoding + encoding = 'utf8' + } + + if (!encoding) encoding = 'utf8' + + const fn = this[ASYNC] ? defer : nodefer + + // convert array buffers and typed array views into buffers + // at some point in the future, we may want to do the opposite! + // leave strings and buffers as-is + // anything is only allowed if in object mode, so throw + if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) { + if (isArrayBufferView(chunk)) { + //@ts-ignore - sinful unsafe type changing + chunk = Buffer.from( + chunk.buffer, + chunk.byteOffset, + chunk.byteLength + ) + } else if (isArrayBufferLike(chunk)) { + //@ts-ignore - sinful unsafe type changing + chunk = Buffer.from(chunk) + } else if (typeof chunk !== 'string') { + throw new Error( + 'Non-contiguous data written to non-objectMode stream' + ) + } + } + + // handle object mode up front, since it's simpler + // this yields better performance, fewer checks later. + if (this[OBJECTMODE]) { + // maybe impossible? + /* c8 ignore start */ + if (this[FLOWING] && this[BUFFERLENGTH] !== 0) this[FLUSH](true) + /* c8 ignore stop */ + + if (this[FLOWING]) this.emit('data', chunk as unknown as RType) + else this[BUFFERPUSH](chunk as unknown as RType) + + if (this[BUFFERLENGTH] !== 0) this.emit('readable') + + if (cb) fn(cb) + + return this[FLOWING] + } + + // at this point the chunk is a buffer or string + // don't buffer it up or send it to the decoder + if (!(chunk as Minipass.BufferOrString).length) { + if (this[BUFFERLENGTH] !== 0) this.emit('readable') + if (cb) fn(cb) + return this[FLOWING] + } + + // fast-path writing strings of same encoding to a stream with + // an empty buffer, skipping the buffer/decoder dance + if ( + typeof chunk === 'string' && + // unless it is a string already ready for us to use + !(encoding === this[ENCODING] && !this[DECODER]?.lastNeed) + ) { + //@ts-ignore - sinful unsafe type change + chunk = Buffer.from(chunk, encoding) + } + + if (Buffer.isBuffer(chunk) && this[ENCODING]) { + //@ts-ignore - sinful unsafe type change + chunk = this[DECODER].write(chunk) + } + + // Note: flushing CAN potentially switch us into not-flowing mode + if (this[FLOWING] && this[BUFFERLENGTH] !== 0) this[FLUSH](true) + + if (this[FLOWING]) this.emit('data', chunk as unknown as RType) + else this[BUFFERPUSH](chunk as unknown as RType) + + if (this[BUFFERLENGTH] !== 0) this.emit('readable') + + if (cb) fn(cb) + + return this[FLOWING] + } + + /** + * Low-level explicit read method. + * + * In objectMode, the argument is ignored, and one item is returned if + * available. + * + * `n` is the number of bytes (or in the case of encoding streams, + * characters) to consume. If `n` is not provided, then the entire buffer + * is returned, or `null` is returned if no data is available. + * + * If `n` is greater that the amount of data in the internal buffer, + * then `null` is returned. + */ + read(n?: number | null): RType | null { + if (this[DESTROYED]) return null + this[DISCARDED] = false + + if ( + this[BUFFERLENGTH] === 0 || + n === 0 || + (n && n > this[BUFFERLENGTH]) + ) { + this[MAYBE_EMIT_END]() + return null + } + + if (this[OBJECTMODE]) n = null + + if (this[BUFFER].length > 1 && !this[OBJECTMODE]) { + // not object mode, so if we have an encoding, then RType is string + // otherwise, must be Buffer + this[BUFFER] = [ + (this[ENCODING] + ? this[BUFFER].join('') + : Buffer.concat( + this[BUFFER] as Buffer[], + this[BUFFERLENGTH] + )) as RType, + ] + } + + const ret = this[READ](n || null, this[BUFFER][0]) + this[MAYBE_EMIT_END]() + return ret + } + + [READ](n: number | null, chunk: RType) { + if (this[OBJECTMODE]) this[BUFFERSHIFT]() + else { + const c = chunk as Minipass.BufferOrString + if (n === c.length || n === null) this[BUFFERSHIFT]() + else if (typeof c === 'string') { + this[BUFFER][0] = c.slice(n) as RType + chunk = c.slice(0, n) as RType + this[BUFFERLENGTH] -= n + } else { + this[BUFFER][0] = c.subarray(n) as RType + chunk = c.subarray(0, n) as RType + this[BUFFERLENGTH] -= n + } + } + + this.emit('data', chunk) + + if (!this[BUFFER].length && !this[EOF]) this.emit('drain') + + return chunk + } + + /** + * End the stream, optionally providing a final write. + * + * See {@link Minipass#write} for argument descriptions + */ + end(cb?: () => void): this + end(chunk: WType, cb?: () => void): this + end(chunk: WType, encoding?: Minipass.Encoding, cb?: () => void): this + end( + chunk?: WType | (() => void), + encoding?: Minipass.Encoding | (() => void), + cb?: () => void + ) { + if (typeof chunk === 'function') { + cb = chunk as () => void + chunk = undefined + } + if (typeof encoding === 'function') { + cb = encoding + encoding = 'utf8' + } + if (chunk !== undefined) this.write(chunk, encoding) + if (cb) this.once('end', cb) + this[EOF] = true + this.writable = false + + // if we haven't written anything, then go ahead and emit, + // even if we're not reading. + // we'll re-emit if a new 'end' listener is added anyway. + // This makes MP more suitable to write-only use cases. + if (this[FLOWING] || !this[PAUSED]) this[MAYBE_EMIT_END]() + return this + } + + // don't let the internal resume be overwritten + [RESUME]() { + if (this[DESTROYED]) return + + if (!this[DATALISTENERS] && !this[PIPES].length) { + this[DISCARDED] = true + } + this[PAUSED] = false + this[FLOWING] = true + this.emit('resume') + if (this[BUFFER].length) this[FLUSH]() + else if (this[EOF]) this[MAYBE_EMIT_END]() + else this.emit('drain') + } + + /** + * Resume the stream if it is currently in a paused state + * + * If called when there are no pipe destinations or `data` event listeners, + * this will place the stream in a "discarded" state, where all data will + * be thrown away. The discarded state is removed if a pipe destination or + * data handler is added, if pause() is called, or if any synchronous or + * asynchronous iteration is started. + */ + resume() { + return this[RESUME]() + } + + /** + * Pause the stream + */ + pause() { + this[FLOWING] = false + this[PAUSED] = true + this[DISCARDED] = false + } + + /** + * true if the stream has been forcibly destroyed + */ + get destroyed() { + return this[DESTROYED] + } + + /** + * true if the stream is currently in a flowing state, meaning that + * any writes will be immediately emitted. + */ + get flowing() { + return this[FLOWING] + } + + /** + * true if the stream is currently in a paused state + */ + get paused() { + return this[PAUSED] + } + + [BUFFERPUSH](chunk: RType) { + if (this[OBJECTMODE]) this[BUFFERLENGTH] += 1 + else this[BUFFERLENGTH] += (chunk as Minipass.BufferOrString).length + this[BUFFER].push(chunk) + } + + [BUFFERSHIFT](): RType { + if (this[OBJECTMODE]) this[BUFFERLENGTH] -= 1 + else + this[BUFFERLENGTH] -= ( + this[BUFFER][0] as Minipass.BufferOrString + ).length + return this[BUFFER].shift() as RType + } + + [FLUSH](noDrain: boolean = false) { + do {} while ( + this[FLUSHCHUNK](this[BUFFERSHIFT]()) && + this[BUFFER].length + ) + + if (!noDrain && !this[BUFFER].length && !this[EOF]) this.emit('drain') + } + + [FLUSHCHUNK](chunk: RType) { + this.emit('data', chunk) + return this[FLOWING] + } + + /** + * Pipe all data emitted by this stream into the destination provided. + * + * Triggers the flow of data. + */ + pipe(dest: W, opts?: PipeOptions) { + if (this[DESTROYED]) return + this[DISCARDED] = false + + const ended = this[EMITTED_END] + opts = opts || {} + if (dest === proc.stdout || dest === proc.stderr) opts.end = false + else opts.end = opts.end !== false + opts.proxyErrors = !!opts.proxyErrors + + // piping an ended stream ends immediately + if (ended) { + if (opts.end) dest.end() + } else { + // "as" here just ignores the WType, which pipes don't care about, + // since they're only consuming from us, and writing to the dest + this[PIPES].push( + !opts.proxyErrors + ? new Pipe(this as Minipass, dest, opts) + : new PipeProxyErrors(this as Minipass, dest, opts) + ) + if (this[ASYNC]) defer(() => this[RESUME]()) + else this[RESUME]() + } + + return dest + } + + /** + * Fully unhook a piped destination stream. + * + * If the destination stream was the only consumer of this stream (ie, + * there are no other piped destinations or `'data'` event listeners) + * then the flow of data will stop until there is another consumer or + * {@link Minipass#resume} is explicitly called. + */ + unpipe(dest: W) { + const p = this[PIPES].find(p => p.dest === dest) + if (p) { + if (this[PIPES].length === 1) { + if (this[FLOWING] && this[DATALISTENERS] === 0) { + this[FLOWING] = false + } + this[PIPES] = [] + } else this[PIPES].splice(this[PIPES].indexOf(p), 1) + p.unpipe() + } + } + + /** + * Alias for {@link Minipass#on} + */ + addListener( + ev: Event, + handler: (...args: Events[Event]) => any + ): this { + return this.on(ev, handler) + } + + /** + * Mostly identical to `EventEmitter.on`, with the following + * behavior differences to prevent data loss and unnecessary hangs: + * + * - Adding a 'data' event handler will trigger the flow of data + * + * - Adding a 'readable' event handler when there is data waiting to be read + * will cause 'readable' to be emitted immediately. + * + * - Adding an 'endish' event handler ('end', 'finish', etc.) which has + * already passed will cause the event to be emitted immediately and all + * handlers removed. + * + * - Adding an 'error' event handler after an error has been emitted will + * cause the event to be re-emitted immediately with the error previously + * raised. + */ + on( + ev: Event, + handler: (...args: Events[Event]) => any + ): this { + const ret = super.on( + ev as string | symbol, + handler as (...a: any[]) => any + ) + if (ev === 'data') { + this[DISCARDED] = false + this[DATALISTENERS]++ + if (!this[PIPES].length && !this[FLOWING]) { + this[RESUME]() + } + } else if (ev === 'readable' && this[BUFFERLENGTH] !== 0) { + super.emit('readable') + } else if (isEndish(ev) && this[EMITTED_END]) { + super.emit(ev) + this.removeAllListeners(ev) + } else if (ev === 'error' && this[EMITTED_ERROR]) { + const h = handler as (...a: Events['error']) => any + if (this[ASYNC]) defer(() => h.call(this, this[EMITTED_ERROR])) + else h.call(this, this[EMITTED_ERROR]) + } + return ret + } + + /** + * Alias for {@link Minipass#off} + */ + removeListener( + ev: Event, + handler: (...args: Events[Event]) => any + ) { + return this.off(ev, handler) + } + + /** + * Mostly identical to `EventEmitter.off` + * + * If a 'data' event handler is removed, and it was the last consumer + * (ie, there are no pipe destinations or other 'data' event listeners), + * then the flow of data will stop until there is another consumer or + * {@link Minipass#resume} is explicitly called. + */ + off( + ev: Event, + handler: (...args: Events[Event]) => any + ) { + const ret = super.off( + ev as string | symbol, + handler as (...a: any[]) => any + ) + // if we previously had listeners, and now we don't, and we don't + // have any pipes, then stop the flow, unless it's been explicitly + // put in a discarded flowing state via stream.resume(). + if (ev === 'data') { + this[DATALISTENERS] = this.listeners('data').length + if ( + this[DATALISTENERS] === 0 && + !this[DISCARDED] && + !this[PIPES].length + ) { + this[FLOWING] = false + } + } + return ret + } + + /** + * Mostly identical to `EventEmitter.removeAllListeners` + * + * If all 'data' event handlers are removed, and they were the last consumer + * (ie, there are no pipe destinations), then the flow of data will stop + * until there is another consumer or {@link Minipass#resume} is explicitly + * called. + */ + removeAllListeners(ev?: Event) { + const ret = super.removeAllListeners(ev as string | symbol | undefined) + if (ev === 'data' || ev === undefined) { + this[DATALISTENERS] = 0 + if (!this[DISCARDED] && !this[PIPES].length) { + this[FLOWING] = false + } + } + return ret + } + + /** + * true if the 'end' event has been emitted + */ + get emittedEnd() { + return this[EMITTED_END] + } + + [MAYBE_EMIT_END]() { + if ( + !this[EMITTING_END] && + !this[EMITTED_END] && + !this[DESTROYED] && + this[BUFFER].length === 0 && + this[EOF] + ) { + this[EMITTING_END] = true + this.emit('end') + this.emit('prefinish') + this.emit('finish') + if (this[CLOSED]) this.emit('close') + this[EMITTING_END] = false + } + } + + /** + * Mostly identical to `EventEmitter.emit`, with the following + * behavior differences to prevent data loss and unnecessary hangs: + * + * If the stream has been destroyed, and the event is something other + * than 'close' or 'error', then `false` is returned and no handlers + * are called. + * + * If the event is 'end', and has already been emitted, then the event + * is ignored. If the stream is in a paused or non-flowing state, then + * the event will be deferred until data flow resumes. If the stream is + * async, then handlers will be called on the next tick rather than + * immediately. + * + * If the event is 'close', and 'end' has not yet been emitted, then + * the event will be deferred until after 'end' is emitted. + * + * If the event is 'error', and an AbortSignal was provided for the stream, + * and there are no listeners, then the event is ignored, matching the + * behavior of node core streams in the presense of an AbortSignal. + * + * If the event is 'finish' or 'prefinish', then all listeners will be + * removed after emitting the event, to prevent double-firing. + */ + emit( + ev: Event, + ...args: Events[Event] + ): boolean { + const data = args[0] + // error and close are only events allowed after calling destroy() + if ( + ev !== 'error' && + ev !== 'close' && + ev !== DESTROYED && + this[DESTROYED] + ) { + return false + } else if (ev === 'data') { + return !this[OBJECTMODE] && !data + ? false + : this[ASYNC] + ? (defer(() => this[EMITDATA](data as RType)), true) + : this[EMITDATA](data as RType) + } else if (ev === 'end') { + return this[EMITEND]() + } else if (ev === 'close') { + this[CLOSED] = true + // don't emit close before 'end' and 'finish' + if (!this[EMITTED_END] && !this[DESTROYED]) return false + const ret = super.emit('close') + this.removeAllListeners('close') + return ret + } else if (ev === 'error') { + this[EMITTED_ERROR] = data + super.emit(ERROR, data) + const ret = + !this[SIGNAL] || this.listeners('error').length + ? super.emit('error', data) + : false + this[MAYBE_EMIT_END]() + return ret + } else if (ev === 'resume') { + const ret = super.emit('resume') + this[MAYBE_EMIT_END]() + return ret + } else if (ev === 'finish' || ev === 'prefinish') { + const ret = super.emit(ev) + this.removeAllListeners(ev) + return ret + } + + // Some other unknown event + const ret = super.emit(ev as string, ...args) + this[MAYBE_EMIT_END]() + return ret + } + + [EMITDATA](data: RType) { + for (const p of this[PIPES]) { + if (p.dest.write(data) === false) this.pause() + } + const ret = this[DISCARDED] ? false : super.emit('data', data) + this[MAYBE_EMIT_END]() + return ret + } + + [EMITEND]() { + if (this[EMITTED_END]) return false + + this[EMITTED_END] = true + this.readable = false + return this[ASYNC] + ? (defer(() => this[EMITEND2]()), true) + : this[EMITEND2]() + } + + [EMITEND2]() { + if (this[DECODER]) { + const data = this[DECODER].end() + if (data) { + for (const p of this[PIPES]) { + p.dest.write(data as RType) + } + if (!this[DISCARDED]) super.emit('data', data) + } + } + + for (const p of this[PIPES]) { + p.end() + } + const ret = super.emit('end') + this.removeAllListeners('end') + return ret + } + + /** + * Return a Promise that resolves to an array of all emitted data once + * the stream ends. + */ + async collect() { + const buf: RType[] & { dataLength: number } = Object.assign([], { + dataLength: 0, + }) + if (!this[OBJECTMODE]) buf.dataLength = 0 + // set the promise first, in case an error is raised + // by triggering the flow here. + const p = this.promise() + this.on('data', c => { + buf.push(c) + if (!this[OBJECTMODE]) + buf.dataLength += (c as Minipass.BufferOrString).length + }) + await p + return buf + } + + /** + * Return a Promise that resolves to the concatenation of all emitted data + * once the stream ends. + * + * Not allowed on objectMode streams. + */ + async concat() { + if (this[OBJECTMODE]) { + throw new Error('cannot concat in objectMode') + } + const buf = await this.collect() + return this[ENCODING] + ? buf.join('') + : Buffer.concat(buf as Buffer[], buf.dataLength) + } + + /** + * Return a void Promise that resolves once the stream ends. + */ + async promise() { + return new Promise((resolve, reject) => { + this.on(DESTROYED, () => reject(new Error('stream destroyed'))) + this.on('error', er => reject(er)) + this.on('end', () => resolve()) + }) + } + + /** + * Asynchronous `for await of` iteration. + * + * This will continue emitting all chunks until the stream terminates. + */ + [Symbol.asyncIterator](): AsyncGenerator { + // set this up front, in case the consumer doesn't call next() + // right away. + this[DISCARDED] = false + let stopped = false + const stop = async (): Promise> => { + this.pause() + stopped = true + return { value: undefined, done: true } + } + const next = (): Promise> => { + if (stopped) return stop() + const res = this.read() + if (res !== null) return Promise.resolve({ done: false, value: res }) + + if (this[EOF]) return stop() + + let resolve!: (res: IteratorResult) => void + let reject!: (er: unknown) => void + const onerr = (er: unknown) => { + this.off('data', ondata) + this.off('end', onend) + this.off(DESTROYED, ondestroy) + stop() + reject(er) + } + const ondata = (value: RType) => { + this.off('error', onerr) + this.off('end', onend) + this.off(DESTROYED, ondestroy) + this.pause() + resolve({ value, done: !!this[EOF] }) + } + const onend = () => { + this.off('error', onerr) + this.off('data', ondata) + this.off(DESTROYED, ondestroy) + stop() + resolve({ done: true, value: undefined }) + } + const ondestroy = () => onerr(new Error('stream destroyed')) + return new Promise>((res, rej) => { + reject = rej + resolve = res + this.once(DESTROYED, ondestroy) + this.once('error', onerr) + this.once('end', onend) + this.once('data', ondata) + }) + } + + return { + next, + throw: stop, + return: stop, + [Symbol.asyncIterator]() { + return this + }, + } + } + + /** + * Synchronous `for of` iteration. + * + * The iteration will terminate when the internal buffer runs out, even + * if the stream has not yet terminated. + */ + [Symbol.iterator](): Generator { + // set this up front, in case the consumer doesn't call next() + // right away. + this[DISCARDED] = false + let stopped = false + const stop = (): IteratorReturnResult => { + this.pause() + this.off(ERROR, stop) + this.off(DESTROYED, stop) + this.off('end', stop) + stopped = true + return { done: true, value: undefined } + } + + const next = (): IteratorResult => { + if (stopped) return stop() + const value = this.read() + return value === null ? stop() : { done: false, value } + } + + this.once('end', stop) + this.once(ERROR, stop) + this.once(DESTROYED, stop) + + return { + next, + throw: stop, + return: stop, + [Symbol.iterator]() { + return this + }, + } + } + + /** + * Destroy a stream, preventing it from being used for any further purpose. + * + * If the stream has a `close()` method, then it will be called on + * destruction. + * + * After destruction, any attempt to write data, read data, or emit most + * events will be ignored. + * + * If an error argument is provided, then it will be emitted in an + * 'error' event. + */ + destroy(er: unknown) { + if (this[DESTROYED]) { + if (er) this.emit('error', er) + else this.emit(DESTROYED) + return this + } + + this[DESTROYED] = true + this[DISCARDED] = true + + // throw away all buffered data, it's never coming out + this[BUFFER].length = 0 + this[BUFFERLENGTH] = 0 + + const wc = this as Minipass & { + close?: () => void + } + if (typeof wc.close === 'function' && !this[CLOSED]) wc.close() + + if (er) this.emit('error', er) + // if no error to emit, still reject pending promises + else this.emit(DESTROYED) + + return this + } + + /** + * Alias for {@link isStream} + * + * Former export location, maintained for backwards compatibility. + * + * @deprecated + */ + static get isStream() { + return isStream + } +} diff --git a/test/basic.js b/test/basic.js index be53364..70d5c1a 100644 --- a/test/basic.js +++ b/test/basic.js @@ -8,19 +8,24 @@ t.test('some basic piping and writing', async t => { mp.flowing = true t.notOk(mp.flowing) t.equal(mp.encoding, 'base64') - mp.encoding = null - t.equal(mp.encoding, null) + t.throws(() => (mp.encoding = null), { + message: 'Encoding must be set at instantiation time', + }) + t.throws(() => mp.setEncoding(null), { + message: 'Encoding must be set at instantiation time', + }) t.equal(mp.readable, true) t.equal(mp.writable, true) t.equal(mp.write('hello'), false) let dest = new Minipass({ debugExposeBuffer: true }) let sawDestData = false - dest.once('data', chunk => { + dest.on('data', chunk => { sawDestData = true t.type(chunk, Buffer) }) t.equal(mp.pipe(dest), dest, 'pipe returns dest') t.ok(sawDestData, 'got data becasue pipe() flushes') + t.equal(mp.flowing, true, 'pipe() triggers flowing state') t.equal(mp.write('bye'), true, 'write() returns true when flowing') dest.pause() t.equal(mp.write('after pause'), false, 'false when dest is paused') @@ -41,30 +46,10 @@ t.test('unicode splitting', async t => { t.equal(chunk, butterfly) }) const butterbuf = Buffer.from([0xf0, 0x9f, 0xa6, 0x8b]) - mp.write(butterbuf.slice(0, 1)) - mp.write(butterbuf.slice(1, 2)) - mp.write(butterbuf.slice(2, 3)) - mp.write(butterbuf.slice(3, 4)) - mp.end() -}) - -t.test('unicode splitting with setEncoding', async t => { - const butterfly = '🦋' - const mp = new Minipass({ encoding: 'hex' }) - t.plan(4) - t.equal(mp.encoding, 'hex') - mp.setEncoding('hex') - t.equal(mp.encoding, 'hex') - mp.setEncoding('utf8') - t.equal(mp.encoding, 'utf8') - mp.on('data', chunk => { - t.equal(chunk, butterfly) - }) - const butterbuf = Buffer.from([0xf0, 0x9f, 0xa6, 0x8b]) - mp.write(butterbuf.slice(0, 1)) - mp.write(butterbuf.slice(1, 2)) - mp.write(butterbuf.slice(2, 3)) - mp.write(butterbuf.slice(3, 4)) + mp.write(butterbuf.subarray(0, 1)) + mp.write(butterbuf.subarray(1, 2)) + mp.write(butterbuf.subarray(2, 3)) + mp.write(butterbuf.subarray(3, 4)) mp.end() }) @@ -117,8 +102,8 @@ t.test('read with no args', async t => { mp.on('data', c => t.equal(c, butterfly)) mp.pause() const butterbuf = Buffer.from(butterfly) - mp.write(butterbuf.slice(0, 2)) - mp.write(butterbuf.slice(2)) + mp.write(butterbuf.subarray(0, 2)) + mp.write(butterbuf.subarray(2)) t.same(mp.read(), butterfly) t.equal(mp.read(), null) }) @@ -128,8 +113,8 @@ t.test('read with no args', async t => { const mp = new Minipass() mp.on('data', c => t.same(c, butterfly)) mp.pause() - mp.write(butterfly.slice(0, 2)) - mp.write(butterfly.slice(2)) + mp.write(butterfly.subarray(0, 2)) + mp.write(butterfly.subarray(2)) t.same(mp.read(), butterfly) t.equal(mp.read(), null) }) @@ -161,14 +146,14 @@ t.test('partial read', async t => { const butterfly = '🦋' const mp = new Minipass() const butterbuf = Buffer.from(butterfly) - mp.write(butterbuf.slice(0, 1)) - mp.write(butterbuf.slice(1, 2)) - mp.write(butterbuf.slice(2, 3)) - mp.write(butterbuf.slice(3, 4)) + mp.write(butterbuf.subarray(0, 1)) + mp.write(butterbuf.subarray(1, 2)) + mp.write(butterbuf.subarray(2, 3)) + mp.write(butterbuf.subarray(3, 4)) t.equal(mp.read(5), null) t.equal(mp.read(0), null) - t.same(mp.read(2), butterbuf.slice(0, 2)) - t.same(mp.read(2), butterbuf.slice(2, 4)) + t.same(mp.read(2), butterbuf.subarray(0, 2)) + t.same(mp.read(2), butterbuf.subarray(2, 4)) }) t.test('write after end', async t => { @@ -284,8 +269,7 @@ t.test('emit works with many args', t => { }) t.test('emit drain on resume, even if no flush', t => { - const mp = new Minipass({ debugExposeBuffer: true }) - mp.encoding = 'utf8' + const mp = new Minipass({ debugExposeBuffer: true, encoding: 'utf8' }) const chunks = [] class SlowStream extends EE { @@ -346,7 +330,6 @@ t.test('eos works', t => { }) t.test('bufferLength property', t => { - const eos = require('end-of-stream') const mp = new Minipass() mp.write('a') mp.write('a') @@ -374,11 +357,30 @@ t.test('emit resume event on resume', t => { t.equal(mp.flowing, true, 'flowing after resume') }) +t.test('no changing into objectMode mid-stream', t => { + const s = new Minipass() + const message = 'Non-contiguous data written to non-objectMode stream' + const d = [ + { ok: 'not really' }, + null, + 99, + true, + /patterns everywhere/, + Symbol('hello, world'), + ] + t.plan(d.length) + for (const chunk of d) { + t.throws(() => s.write(chunk), { message }, { chunk }) + } + t.end() +}) + t.test('objectMode', t => { const mp = new Minipass({ objectMode: true }) t.equal(mp.objectMode, true, 'objectMode getter returns value') - mp.objectMode = false - t.equal(mp.objectMode, true, 'objectMode getter is read-only') + t.throws(() => (mp.objectMode = false), { + message: 'objectMode must be set at instantiation time', + }) const a = { a: 1 } const b = { b: 1 } const out = [] @@ -400,7 +402,6 @@ t.test('objectMode', t => { t.test('objectMode no encoding', t => { const mp = new Minipass({ objectMode: true, - encoding: 'utf8', }) t.equal(mp.encoding, null) const a = { a: 1 } @@ -432,30 +433,11 @@ t.test('objectMode read() and buffering', t => { t.test('set encoding in object mode throws', async t => t.throws( - _ => (new Minipass({ objectMode: true }).encoding = 'utf8'), - new Error('cannot set encoding in objectMode') + _ => new Minipass({ objectMode: true, encoding: 'utf8' }), + new Error('Encoding and objectMode may not be used together') ) ) -t.test('set encoding again throws', async t => - t.throws(_ => { - const mp = new Minipass({ encoding: 'hex' }) - mp.write('ok') - mp.encoding = 'utf8' - }, new Error('cannot change encoding')) -) - -t.test('set encoding with existing buffer', async t => { - const mp = new Minipass() - const butterfly = '🦋' - const butterbuf = Buffer.from(butterfly) - mp.write(butterbuf.slice(0, 1)) - mp.write(butterbuf.slice(1, 2)) - mp.setEncoding('utf8') - mp.write(butterbuf.slice(2)) - t.equal(mp.read(), butterfly) -}) - t.test('end:false', async t => { t.plan(1) const mp = new Minipass({ encoding: 'utf8' }) @@ -482,3 +464,63 @@ t.test('objectMode allows falsey values for data', t => { mp.write([]) mp.end() }) + +t.test('partial read string', t => { + const mp = new Minipass({ encoding: 'utf8' }) + mp.write('Here at Milk Farm, we know one thing\n') + mp.write('Milk has calcium\n') + mp.write('We pride ourselves on changing the lives and DNA structures\n') + mp.write('Of each our our special initiates\n') + mp.write('Milk farm has One Mission\n') + mp.write('To bring you closer to God through the power of calcium\n') + mp.write('Milk has calcium\n') + let i = 0 + let s = '' + let c + while ((c = mp.read(++i)) !== null) s += c + c = mp.read() + t.not(c, null) + s += c + t.equal( + s, + `Here at Milk Farm, we know one thing +Milk has calcium +We pride ourselves on changing the lives and DNA structures +Of each our our special initiates +Milk farm has One Mission +To bring you closer to God through the power of calcium +Milk has calcium +` + ) + t.end() +}) + +t.test('partial read buffer', t => { + const mp = new Minipass() + mp.write('Here at Milk Farm, we know one thing\n') + mp.write('Milk has calcium\n') + mp.write('We pride ourselves on changing the lives and DNA structures\n') + mp.write('Of each our our special initiates\n') + mp.write('Milk farm has One Mission\n') + mp.write('To bring you closer to God through the power of calcium\n') + mp.write('Milk has calcium\n') + let i = 0 + const s = [] + let c + while ((c = mp.read(++i)) !== null) s.push(c) + c = mp.read() + t.not(c, null) + s.push(c) + t.equal( + Buffer.concat(s).toString(), + `Here at Milk Farm, we know one thing +Milk has calcium +We pride ourselves on changing the lives and DNA structures +Of each our our special initiates +Milk farm has One Mission +To bring you closer to God through the power of calcium +Milk has calcium +` + ) + t.end() +}) diff --git a/test/collect.js b/test/collect.js index c743297..a5f5881 100644 --- a/test/collect.js +++ b/test/collect.js @@ -1,9 +1,9 @@ 'use strict' const t = require('tap') -const { Minipass: MP } = require('../index.js') +const { Minipass: MP } = require('../') t.test('basic', async t => { - const mp = new MP() + const mp = new MP({ encoding: 'utf8' }) let i = 5 const interval = setInterval(() => { if (i-- > 0) mp.write('foo\n') @@ -12,7 +12,6 @@ t.test('basic', async t => { mp.end() } }) - mp.setEncoding('utf8') const all = await mp.collect() t.same(all, ['foo\n', 'foo\n', 'foo\n', 'foo\n', 'foo\n']) }) @@ -44,10 +43,6 @@ t.test('concat buffers', async t => { t.test('concat objectMode fails', async t => { const a = new MP({ objectMode: true }) await t.rejects(a.concat(), new Error('cannot concat in objectMode')) - const b = new MP() - b.write('asdf') - setTimeout(() => b.end({ foo: 1 })) - await t.rejects(b.concat(), new Error('cannot concat in objectMode')) }) t.test('collect does not set bodyLength in objectMode', t => @@ -55,7 +50,7 @@ t.test('collect does not set bodyLength in objectMode', t => .end({ a: 1 }) .collect() .then(data => { - t.equal(typeof data.dataLength, 'undefined') + t.equal(data.dataLength, 0) t.same(data, [{ a: 1 }]) }) ) diff --git a/test/esm.mjs b/test/esm.mjs index f3f283e..2f44c44 100644 --- a/test/esm.mjs +++ b/test/esm.mjs @@ -1,4 +1,4 @@ -import { Minipass } from '../index.mjs' +import { Minipass } from '../dist/mjs/index.js' import t from 'tap' t.test(`just make sure it's actually a stream`, async t => { diff --git a/test/flowing-after-removing-consumers.js b/test/flowing-after-removing-consumers.js new file mode 100644 index 0000000..9addef0 --- /dev/null +++ b/test/flowing-after-removing-consumers.js @@ -0,0 +1,81 @@ +const t = require('tap') +const { Minipass } = require('../') + +t.test('removing last data listener stops data flow', t => { + const s = new Minipass() + t.equal(s.flowing, false) + const h = () => {} + s.on('data', h) + t.equal(s.flowing, true) + s.off('data', h) + t.equal(s.flowing, false) + s.on('data', h) + t.equal(s.flowing, true) + s.removeAllListeners('data') + t.equal(s.flowing, false) + s.on('data', h) + t.equal(s.flowing, true) + s.removeAllListeners() + t.equal(s.flowing, false) + t.end() +}) + +t.test('discarding works, undiscards on pipe or listener', t => { + const s = new Minipass() + s.resume() + t.equal(s.flowing, true) + s.pause() + t.equal(s.flowing, false) + s.resume() + t.equal(s.flowing, true) + const d = new Minipass() + s.pipe(d) + t.equal(s.flowing, true) + t.equal(s.write('x'), false) + t.equal(s.flowing, false) + s.unpipe(d) + t.equal(s.flowing, false) + s.resume() + t.equal(s.flowing, true) + s.on('data', () => {}) + t.equal(s.flowing, true) + s.resume() + s.removeAllListeners('data') + t.equal(s.flowing, false) + t.end() +}) + +t.test('unpipe triggers a stop to the flow if it was the only dest', t => { + const src = new Minipass({ encoding: 'utf8' }) + const dest = new Minipass({ encoding: 'utf8' }) + dest.resume() + src.write('hello') + t.equal(src.flowing, false) + src.pipe(dest) + t.equal(src.flowing, true) + t.equal(src.read(), null) + src.unpipe(dest) + t.equal(src.flowing, false) + src.write('second write') + t.equal(src.read(), 'second write') + t.end() +}) + +t.test('flowing continues if there is a data listener', t => { + const src = new Minipass({ encoding: 'utf8' }) + const dest = new Minipass({ encoding: 'utf8' }) + const d = [] + src.on('data', c => d.push(c)) + dest.resume() + src.write('hello') + t.equal(src.flowing, true) + src.pipe(dest) + t.equal(src.flowing, true) + t.equal(src.read(), null) + src.unpipe(dest) + t.equal(src.flowing, true) + src.write('second write') + t.equal(src.read(), null) + t.strictSame(d, ['hello', 'second write']) + t.end() +}) diff --git a/test/is-stream.js b/test/is-stream.js index 9d5d2a8..b862df4 100644 --- a/test/is-stream.js +++ b/test/is-stream.js @@ -1,59 +1,176 @@ -const { Minipass: MP } = require('../') +const { Minipass: MP, isStream, isReadable, isWritable } = require('../') const EE = require('events') const t = require('tap') const Stream = require('stream') -t.equal(MP.isStream(new MP()), true, 'a MiniPass is a stream') -t.equal(MP.isStream(new Stream()), true, 'a Stream is a stream') -t.equal(new MP() instanceof Stream, true, 'a MiniPass is a Stream') +t.equal(MP.isStream, isStream, 'old export location is same function') + +t.equal(isStream(new MP()), true, 'a MiniPass is a stream') +t.equal(isReadable(new MP()), true, 'a MiniPass is a readable') +t.equal(isWritable(new MP()), true, 'a MiniPass is a writable') + +t.equal(isStream(new Stream()), true, 'a Stream is a stream') +t.equal(isReadable(new Stream()), true, 'a Stream is a readable') +t.equal(isWritable(new Stream()), false, 'a Stream is not a writable') + const w = new EE() w.write = () => {} w.end = () => {} -t.equal(MP.isStream(w), true, 'EE with write() and end() is a stream') +t.equal(isStream(w), true, 'EE with write() and end() is a stream') +t.equal(isWritable(w), true, 'EE with write() and end() is a writable') +t.equal( + isReadable(w), + false, + 'EE with write() and end() is not a readable' +) + const r = new EE() r.pipe = () => {} -t.equal(MP.isStream(r), true, 'EE with pipe() is a stream') +t.equal(isStream(r), true, 'EE with pipe() is a stream') +t.equal(isWritable(r), false, 'EE with pipe() is not a writable') +t.equal(isReadable(r), true, 'EE with pipe() is a readable') + t.equal( - MP.isStream(new Stream.Readable()), + isStream(new Stream.Readable()), true, 'Stream.Readable() is a stream' ) t.equal( - MP.isStream(new Stream.Writable()), + isReadable(new Stream.Readable()), + true, + 'Stream.Readable() is a readable' +) +t.equal( + isWritable(new Stream.Readable()), + false, + 'Stream.Readable() is not a writable' +) + +t.equal( + isStream(new Stream.Writable()), true, 'Stream.Writable() is a stream' ) -t.equal(MP.isStream(new Stream.Duplex()), true, 'Stream.Duplex() is a stream') t.equal( - MP.isStream(new Stream.Transform()), + isWritable(new Stream.Writable()), + true, + 'Stream.Writable() is a writable' +) +t.equal( + isReadable(new Stream.Writable()), + false, + 'Stream.Writable() is not a readable' +) + +t.equal(isStream(new Stream.Duplex()), true, 'Stream.Duplex() is a stream') +t.equal( + isReadable(new Stream.Duplex()), + true, + 'Stream.Duplex() is a readable' +) +t.equal( + isWritable(new Stream.Duplex()), + true, + 'Stream.Duplex() is a writable' +) + +t.equal( + isStream(new Stream.Transform()), true, 'Stream.Transform() is a stream' ) t.equal( - MP.isStream(new Stream.PassThrough()), + isReadable(new Stream.Transform()), + true, + 'Stream.Transform() is a readable' +) +t.equal( + isWritable(new Stream.Transform()), + true, + 'Stream.Transform() is a writable' +) + +t.equal( + isStream(new Stream.PassThrough()), true, 'Stream.PassThrough() is a stream' ) t.equal( - MP.isStream(new (class extends MP {})()), + isReadable(new Stream.PassThrough()), + true, + 'Stream.PassThrough() is a readable' +) +t.equal( + isWritable(new Stream.PassThrough()), + true, + 'Stream.PassThrough() is a writable' +) + +t.equal( + isStream(new (class extends MP {})()), true, 'extends MP is a stream' ) -t.equal(MP.isStream(new EE()), false, 'EE without streaminess is not a stream') t.equal( - MP.isStream({ - write() {}, - end() {}, - pipe() {}, - }), + isReadable(new (class extends MP {})()), + true, + 'extends MP is a readable' +) +t.equal( + isWritable(new (class extends MP {})()), + true, + 'extends MP is a writable' +) + +t.equal( + isStream(new EE()), false, - 'non-EE is not a stream' + 'EE without streaminess is not a stream' ) -t.equal(MP.isStream('hello'), false, 'string is not a stream') -t.equal(MP.isStream(99), false, 'number is not a stream') t.equal( - MP.isStream(() => {}), + isReadable(new EE()), + false, + 'EE without streaminess is not a readable' +) +t.equal( + isWritable(new EE()), + false, + 'EE without streaminess is not a writable' +) + +const ns = { + write() {}, + end() {}, + pipe() {}, +} +t.equal(isStream(ns), false, 'non-EE is not a stream') +t.equal(isReadable(ns), false, 'non-EE is not a readable') +t.equal(isWritable(ns), false, 'non-EE is not a writable') + +t.equal(isStream('hello'), false, 'string is not a stream') +t.equal(isReadable('hello'), false, 'string is not a readable') +t.equal(isWritable('hello'), false, 'string is not a writable') + +t.equal(isStream(99), false, 'number is not a stream') +t.equal(isReadable(99), false, 'number is not a readable') +t.equal(isReadable(99), false, 'number is not a writable') + +t.equal( + isStream(() => {}), false, 'function is not a stream' ) -t.equal(MP.isStream(null), false, 'null is not a stream') +t.equal( + isReadable(() => {}), + false, + 'function is not a readable' +) +t.equal( + isWritable(() => {}), + false, + 'function is not a writable' +) + +t.equal(isStream(null), false, 'null is not a stream') +t.equal(isReadable(null), false, 'null is not a readable') +t.equal(isWritable(null), false, 'null is not a writable') diff --git a/test/iteration-unsupported.js b/test/iteration-unsupported.js deleted file mode 100644 index 1438d93..0000000 --- a/test/iteration-unsupported.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict' -const t = require('tap') -global._MP_NO_ITERATOR_SYMBOLS_ = '1' -const { Minipass: MP } = require('../index.js') -const mp = new MP() -mp.write('foo') -setTimeout(() => mp.end()) -t.throws(() => { - for (let x of mp) { - t.fail('should not be iterable') - } -}) -t.rejects(async () => { - for await (let x of mp) { - t.fail('should not be async iterable') - } -}) diff --git a/test/iteration.js b/test/iteration.js index 475a28f..97700a7 100644 --- a/test/iteration.js +++ b/test/iteration.js @@ -1,6 +1,6 @@ 'use strict' const t = require('tap') -const { Minipass: MP } = require('../index.js') +const { Minipass: MP } = require('../') t.test('sync iteration', t => { const cases = { @@ -305,6 +305,6 @@ t.test('iterators are compliant Generators', async t => { t.equal(it[Symbol.iterator](), it, 'sync is iterable iterator') const ait = mp[Symbol.asyncIterator]() t.equal(ait[Symbol.asyncIterator](), ait, 'async is iterable iterator') - t.same(await ait.throw('yeet'), { done: true }) - t.same(await ait.next(), { done: true }, 'stopped by throw') + t.same(await ait.throw('yeet'), { value: undefined, done: true }) + t.same(await ait.next(), { value: undefined, done: true }, 'stopped by throw') }) diff --git a/tsconfig-base.json b/tsconfig-base.json new file mode 100644 index 0000000..acd6846 --- /dev/null +++ b/tsconfig-base.json @@ -0,0 +1,16 @@ +{ + "exclude": ["./test", "./tap-snapshots", "./dist"], + "include": ["./src/**/*.ts"], + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "inlineSources": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "isolatedModules": true, + "moduleResolution": "node16", + "sourceMap": true, + "strict": true, + "target": "es2022" + } +} diff --git a/tsconfig-esm.json b/tsconfig-esm.json new file mode 100644 index 0000000..403d973 --- /dev/null +++ b/tsconfig-esm.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig-base.json", + "compilerOptions": { + "module": "esnext", + "outDir": "dist-tmp/mjs" + } +} diff --git a/tsconfig.json b/tsconfig.json index 14524f7..3ee96a0 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,18 +1,7 @@ { - "exclude": ["./tap-snapshots"], - "include": ["./index.d.ts"], + "extends": "./tsconfig-base.json", "compilerOptions": { - "declaration": true, - "sourceMap": true, - "target": "ES6", - "forceConsistentCasingInFileNames": true, - "esModuleInterop": true, - "moduleResolution": "node", - "module": "CommonJS", - "resolveJsonModule": true, - "strict": true, - "skipLibCheck": true, - "noEmit": true, - "allowSyntheticDefaultImports": true + "module": "commonjs", + "outDir": "dist-tmp/cjs" } }