pax_global_header00006660000000000000000000000064143400722700014511gustar00rootroot0000000000000052 comment=52ab642fa447419dca139ce29fad780dd61a27af minipass-3.3.6/000077500000000000000000000000001434007227000133455ustar00rootroot00000000000000minipass-3.3.6/.github/000077500000000000000000000000001434007227000147055ustar00rootroot00000000000000minipass-3.3.6/.github/FUNDING.yml000066400000000000000000000001001434007227000165110ustar00rootroot00000000000000# These are supported funding model platforms github: [isaacs] minipass-3.3.6/.github/workflows/000077500000000000000000000000001434007227000167425ustar00rootroot00000000000000minipass-3.3.6/.github/workflows/ci.yml000066400000000000000000000015071434007227000200630ustar00rootroot00000000000000name: CI on: [push, pull_request] jobs: build: strategy: matrix: node-version: [12.x, 14.x, 16.x, 17.x] platform: - os: ubuntu-latest shell: bash - os: macos-latest shell: bash - os: windows-latest shell: bash - os: windows-latest shell: powershell fail-fast: false runs-on: ${{ matrix.platform.os }} defaults: run: shell: ${{ matrix.platform.shell }} steps: - name: Checkout Repository uses: actions/checkout@v1.1.0 - name: Use Nodejs ${{ matrix.node-version }} uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} - name: Install dependencies run: npm install - name: Run Tests run: npm test -- -c -t0 minipass-3.3.6/.github/workflows/commit-if-modified.sh000066400000000000000000000004321434007227000227370ustar00rootroot00000000000000#!/usr/bin/env bash git config --global user.email "$1" shift git config --global user.name "$1" shift message="$1" shift if [ $(git status --porcelain "$@" | egrep '^ M' | wc -l) -gt 0 ]; then git add "$@" git commit -m "$message" git push || git pull --rebase git push fi minipass-3.3.6/.github/workflows/copyright-year.sh000066400000000000000000000010011434007227000222340ustar00rootroot00000000000000#!/usr/bin/env bash dir=${1:-$PWD} dates=($(git log --date=format:%Y --pretty=format:'%ad' --reverse | sort | uniq)) if [ "${#dates[@]}" -eq 1 ]; then datestr="${dates}" else datestr="${dates}-${dates[${#dates[@]}-1]}" fi stripDate='s/^((.*)Copyright\b(.*?))((?:,\s*)?(([0-9]{4}\s*-\s*[0-9]{4})|(([0-9]{4},\s*)*[0-9]{4})))(?:,)?\s*(.*)\n$/$1$9\n/g' addDate='s/^.*Copyright(?:\s*\(c\))? /Copyright \(c\) '$datestr' /g' for l in $dir/LICENSE*; do perl -pi -e "$stripDate" $l perl -pi -e "$addDate" $l done minipass-3.3.6/.github/workflows/isaacs-makework.yml000066400000000000000000000021461434007227000225510ustar00rootroot00000000000000name: "various tidying up tasks to silence nagging" on: push: branches: - main workflow_dispatch: jobs: makework: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Use Node.js uses: actions/setup-node@v2.1.4 with: node-version: 16.x - name: put repo in package.json run: node .github/workflows/package-json-repo.js - name: check in package.json if modified run: | bash -x .github/workflows/commit-if-modified.sh \ "package-json-repo-bot@example.com" \ "package.json Repo Bot" \ "chore: add repo to package.json" \ package.json package-lock.json - name: put all dates in license copyright line run: bash .github/workflows/copyright-year.sh - name: check in licenses if modified run: | bash .github/workflows/commit-if-modified.sh \ "license-year-bot@example.com" \ "License Year Bot" \ "chore: add copyright year to license" \ LICENSE* minipass-3.3.6/.github/workflows/package-json-repo.js000066400000000000000000000010561434007227000226070ustar00rootroot00000000000000#!/usr/bin/env node const pf = require.resolve(`${process.cwd()}/package.json`) const pj = require(pf) if (!pj.repository && process.env.GITHUB_REPOSITORY) { const fs = require('fs') const server = process.env.GITHUB_SERVER_URL || 'https://github.com' const repo = `${server}/${process.env.GITHUB_REPOSITORY}` pj.repository = repo const json = fs.readFileSync(pf, 'utf8') const match = json.match(/^\s*\{[\r\n]+([ \t]*)"/) const indent = match[1] const output = JSON.stringify(pj, null, indent || 2) + '\n' fs.writeFileSync(pf, output) } minipass-3.3.6/.gitignore000066400000000000000000000000531434007227000153330ustar00rootroot00000000000000.*.swp node_modules .nyc_output/ coverage/ minipass-3.3.6/LICENSE000066400000000000000000000014231434007227000143520ustar00rootroot00000000000000The ISC License Copyright (c) 2017-2022 npm, Inc., Isaac Z. Schlueter, and Contributors Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. minipass-3.3.6/README.md000066400000000000000000000612551434007227000146350ustar00rootroot00000000000000# minipass A _very_ minimal implementation of a [PassThrough stream](https://nodejs.org/api/stream.html#stream_class_stream_passthrough) [It's very fast](https://docs.google.com/spreadsheets/d/1oObKSrVwLX_7Ut4Z6g3fZW-AX1j1-k6w-cDsrkaSbHM/edit#gid=0) for objects, strings, and buffers. Supports `pipe()`ing (including multi-`pipe()` and backpressure transmission), buffering data until either a `data` event handler or `pipe()` is added (so you don't lose the first chunk), and most other cases where PassThrough is a good idea. There is a `read()` method, but it's much more efficient to consume data from this stream via `'data'` events or by calling `pipe()` into some other stream. Calling `read()` requires the buffer to be flattened in some cases, which requires copying memory. If you set `objectMode: true` in the options, then whatever is 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. This is not a `through` or `through2` stream. It doesn't transform the data, it just passes it right through. If you want to transform the data, extend the class, and override the `write()` method. Once you're done transforming the data however you want, call `super.write()` with the transform output. For some examples of streams that extend Minipass in various ways, check out: - [minizlib](http://npm.im/minizlib) - [fs-minipass](http://npm.im/fs-minipass) - [tar](http://npm.im/tar) - [minipass-collect](http://npm.im/minipass-collect) - [minipass-flush](http://npm.im/minipass-flush) - [minipass-pipeline](http://npm.im/minipass-pipeline) - [tap](http://npm.im/tap) - [tap-parser](http://npm.im/tap-parser) - [treport](http://npm.im/treport) - [minipass-fetch](http://npm.im/minipass-fetch) - [pacote](http://npm.im/pacote) - [make-fetch-happen](http://npm.im/make-fetch-happen) - [cacache](http://npm.im/cacache) - [ssri](http://npm.im/ssri) - [npm-registry-fetch](http://npm.im/npm-registry-fetch) - [minipass-json-stream](http://npm.im/minipass-json-stream) - [minipass-sized](http://npm.im/minipass-sized) ## Differences from Node.js Streams There are several things that make Minipass streams different from (and in some ways superior to) Node.js core streams. Please read these caveats if you are familiar with node-core streams and intend to use Minipass streams in your programs. You can avoid most of these differences entirely (for a very small performance penalty) by setting `{async: true}` in the constructor options. ### Timing Minipass streams are designed to support synchronous use-cases. Thus, data is emitted as soon as it is available, always. It is buffered until read, but no longer. Another way to look at it is that Minipass streams are exactly as synchronous as the logic that writes into them. This can be surprising if your code relies on `PassThrough.write()` always providing data on the next tick rather than the current one, or being able to call `resume()` and not have the entire buffer disappear immediately. However, without this synchronicity guarantee, there would be no way for Minipass to achieve the speeds it does, or support the synchronous use cases that it does. Simply put, waiting takes time. This non-deferring approach makes Minipass streams much easier to reason about, especially in the context of Promises and other flow-control mechanisms. Example: ```js const Minipass = require('minipass') const stream = new Minipass({ async: true }) stream.on('data', () => console.log('data event')) console.log('before write') stream.write('hello') console.log('after write') // output: // before write // data event // after write ``` ### Exception: Async Opt-In If you wish to have a Minipass stream with behavior that more closely mimics Node.js core streams, you can set the stream in async mode either by setting `async: true` in the constructor options, or by setting `stream.async = true` later on. ```js const Minipass = require('minipass') const asyncStream = new Minipass({ async: true }) asyncStream.on('data', () => console.log('data event')) console.log('before write') asyncStream.write('hello') console.log('after write') // output: // before write // after write // data event <-- this is deferred until the next tick ``` Switching _out_ of async mode is unsafe, as it could cause data corruption, and so is not enabled. Example: ```js const Minipass = require('minipass') const stream = new Minipass({ encoding: 'utf8' }) stream.on('data', chunk => console.log(chunk)) stream.async = true console.log('before writes') stream.write('hello') setStreamSyncAgainSomehow(stream) // <-- this doesn't actually exist! stream.write('world') console.log('after writes') // hypothetical output would be: // before writes // world // after writes // hello // NOT GOOD! ``` To avoid this problem, once set into async mode, any attempt to make the stream sync again will be ignored. ```js const Minipass = require('minipass') const stream = new Minipass({ encoding: 'utf8' }) stream.on('data', chunk => console.log(chunk)) stream.async = true console.log('before writes') stream.write('hello') stream.async = false // <-- no-op, stream already async stream.write('world') console.log('after writes') // actual output: // before writes // after writes // hello // world ``` ### No High/Low Water Marks Node.js core streams will optimistically fill up a buffer, returning `true` on all writes until the limit is hit, even if the data has nowhere to go. Then, they will not attempt to draw more data in until the buffer size dips below a minimum value. Minipass streams are much simpler. The `write()` method will return `true` if the data has somewhere to go (which is to say, given the timing guarantees, that the data is already there by the time `write()` returns). If the data has nowhere to go, then `write()` returns false, and the data sits in a buffer, to be drained out immediately as soon as anyone consumes it. Since nothing is ever buffered unnecessarily, there is much less copying data, and less bookkeeping about buffer capacity levels. ### Hazards of Buffering (or: Why Minipass Is So Fast) Since data written to a Minipass stream is immediately written all the way through the pipeline, and `write()` always returns true/false based on whether the data was fully flushed, backpressure is communicated immediately to the upstream caller. This minimizes buffering. Consider this case: ```js const {PassThrough} = require('stream') const p1 = new PassThrough({ highWaterMark: 1024 }) const p2 = new PassThrough({ highWaterMark: 1024 }) const p3 = new PassThrough({ highWaterMark: 1024 }) const p4 = new PassThrough({ highWaterMark: 1024 }) p1.pipe(p2).pipe(p3).pipe(p4) p4.on('data', () => console.log('made it through')) // this returns false and buffers, then writes to p2 on next tick (1) // p2 returns false and buffers, pausing p1, then writes to p3 on next tick (2) // p3 returns false and buffers, pausing p2, then writes to p4 on next tick (3) // p4 returns false and buffers, pausing p3, then emits 'data' and 'drain' // on next tick (4) // p3 sees p4's 'drain' event, and calls resume(), emitting 'resume' and // 'drain' on next tick (5) // p2 sees p3's 'drain', calls resume(), emits 'resume' and 'drain' on next tick (6) // p1 sees p2's 'drain', calls resume(), emits 'resume' and 'drain' on next // tick (7) p1.write(Buffer.alloc(2048)) // returns false ``` Along the way, the data was buffered and deferred at each stage, and multiple event deferrals happened, for an unblocked pipeline where it was perfectly safe to write all the way through! Furthermore, setting a `highWaterMark` of `1024` might lead someone reading the code to think an advisory maximum of 1KiB is being set for the pipeline. However, the actual advisory buffering level is the _sum_ of `highWaterMark` values, since each one has its own bucket. Consider the Minipass case: ```js const m1 = new Minipass() const m2 = new Minipass() const m3 = new Minipass() const m4 = new Minipass() m1.pipe(m2).pipe(m3).pipe(m4) m4.on('data', () => console.log('made it through')) // m1 is flowing, so it writes the data to m2 immediately // m2 is flowing, so it writes the data to m3 immediately // m3 is flowing, so it writes the data to m4 immediately // m4 is flowing, so it fires the 'data' event immediately, returns true // m4's write returned true, so m3 is still flowing, returns true // m3's write returned true, so m2 is still flowing, returns true // m2's write returned true, so m1 is still flowing, returns true // No event deferrals or buffering along the way! m1.write(Buffer.alloc(2048)) // returns true ``` It is extremely unlikely that you _don't_ want to buffer any data written, or _ever_ buffer data that can be flushed all the way through. Neither node-core streams nor Minipass ever fail to buffer written data, but node-core streams do a lot of unnecessary buffering and pausing. As always, the faster implementation is the one that does less stuff and waits less time to do it. ### Immediately emit `end` for empty streams (when not paused) If a stream is not paused, and `end()` is called before writing any data into it, then it will emit `end` immediately. If you have logic that occurs on the `end` event which you don't want to potentially happen immediately (for example, closing file descriptors, moving on to the next entry in an archive parse stream, etc.) then be sure to call `stream.pause()` on creation, and then `stream.resume()` once you are ready to respond to the `end` event. However, this is _usually_ not a problem because: ### Emit `end` When Asked One hazard of immediately emitting `'end'` is that you may not yet have had a chance to add a listener. In order to avoid this hazard, Minipass streams safely re-emit the `'end'` event if a new listener is added after `'end'` has been emitted. Ie, if you do `stream.on('end', someFunction)`, and the stream has already emitted `end`, then it will call the handler right away. (You can think of this somewhat like attaching a new `.then(fn)` to a previously-resolved Promise.) To prevent calling handlers multiple times who would not expect multiple ends to occur, all listeners are removed from the `'end'` event whenever it is emitted. ### Emit `error` When Asked The most recent error object passed to the `'error'` event is stored on the stream. If a new `'error'` event handler is added, and an error was previously emitted, then the event handler will be called immediately (or on `process.nextTick` in the case of async streams). This makes it much more difficult to end up trying to interact with a broken stream, if the error handler is added after an error was previously emitted. ### Impact of "immediate flow" on Tee-streams A "tee stream" is a stream piping to multiple destinations: ```js const tee = new Minipass() t.pipe(dest1) t.pipe(dest2) t.write('foo') // goes to both destinations ``` Since Minipass streams _immediately_ process any pending data through the pipeline when a new pipe destination is added, this can have surprising effects, especially when a stream comes in from some other function and may or may not have data in its buffer. ```js // WARNING! WILL LOSE DATA! const src = new Minipass() src.write('foo') src.pipe(dest1) // 'foo' chunk flows to dest1 immediately, and is gone src.pipe(dest2) // gets nothing! ``` One solution is to create a dedicated tee-stream junction that pipes to both locations, and then pipe to _that_ instead. ```js // Safe example: tee to both places const src = new Minipass() src.write('foo') const tee = new Minipass() tee.pipe(dest1) tee.pipe(dest2) src.pipe(tee) // tee gets 'foo', pipes to both locations ``` The same caveat applies to `on('data')` event listeners. The first one added will _immediately_ receive all of the data, leaving nothing for the second: ```js // WARNING! WILL LOSE DATA! const src = new Minipass() src.write('foo') src.on('data', handler1) // receives 'foo' right away src.on('data', handler2) // nothing to see here! ``` Using a dedicated tee-stream can be used in this case as well: ```js // Safe example: tee to both data handlers const src = new Minipass() src.write('foo') const tee = new Minipass() tee.on('data', handler1) tee.on('data', handler2) src.pipe(tee) ``` All of the hazards in this section are avoided by setting `{ async: true }` in the Minipass constructor, or by setting `stream.async = true` afterwards. Note that this does add some overhead, so should only be done in cases where you are willing to lose a bit of performance in order to avoid having to refactor program logic. ## USAGE It's a stream! Use it like a stream and it'll most likely do what you want. ```js const Minipass = require('minipass') const mp = new Minipass(options) // optional: { encoding, objectMode } mp.write('foo') mp.pipe(someOtherStream) mp.end('bar') ``` ### OPTIONS * `encoding` How would you like the data coming _out_ of the stream to be encoded? Accepts any values that can be passed to `Buffer.toString()`. * `objectMode` Emit data exactly as it comes in. This will be flipped on by default if you write() something other than a string or Buffer at any point. Setting `objectMode: true` will prevent setting any encoding value. * `async` Defaults to `false`. Set to `true` to defer data emission until next tick. This reduces performance slightly, but makes Minipass streams use timing behavior closer to Node core streams. See [Timing](#timing) for more details. ### API Implements the user-facing portions of Node.js's `Readable` and `Writable` streams. ### Methods * `write(chunk, [encoding], [callback])` - Put data in. (Note that, in the base Minipass class, the same data will come out.) Returns `false` if the stream will buffer the next write, or true if it's still in "flowing" mode. * `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. * `resume()` - Resume the stream. If there's data in the buffer, it is all discarded. Any buffered events are immediately emitted. * `pipe(dest)` - Send all output to the stream provided. When data is emitted, it is immediately written to any and all pipe destinations. (Or written on next tick in `async` mode.) * `unpipe(dest)` - Stop piping to the destination stream. This is immediate, meaning that any asynchronously queued data will _not_ make it to the destination when running in `async` mode. * `options.end` - Boolean, end the destination stream when the source stream ends. Default `true`. * `options.proxyErrors` - Boolean, proxy `error` events from the source stream to the destination stream. Note that errors are _not_ proxied after the pipeline terminates, either due to the source emitting `'end'` or manually unpiping with `src.unpipe(dest)`. Default `false`. * `on(ev, fn)`, `emit(ev, fn)` - Minipass streams are EventEmitters. Some events are given special treatment, however. (See below under "events".) * `promise()` - Returns a Promise that resolves when the stream emits `end`, or rejects if the stream emits `error`. * `collect()` - Return a Promise that resolves on `end` with an array containing each chunk of data that was emitted, or rejects if the stream emits `error`. Note that this consumes the stream data. * `concat()` - Same as `collect()`, but concatenates the data into a single Buffer object. Will reject the returned promise if the stream is in objectMode, or if it goes into objectMode by the end of the data. * `read(n)` - Consume `n` bytes of data out of the buffer. If `n` is not provided, then consume all of it. If `n` bytes are not available, then it returns null. **Note** consuming streams in this way is less efficient, and can lead to unnecessary Buffer copying. * `destroy([er])` - Destroy the stream. If an error is provided, then an `'error'` event is emitted. If the stream has a `close()` method, and has not emitted a `'close'` event yet, then `stream.close()` will be called. Any Promises returned by `.promise()`, `.collect()` or `.concat()` will be rejected. After being destroyed, writing to the stream will emit an error. No more data will be emitted if the stream is destroyed, even if it was previously buffered. ### Properties * `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.) * `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 events (ie, `end`, `prefinish`, `finish`) have been emitted. Note that listening on any end-ish event will immediateyl re-emit it if it has already been emitted. * `writable` Whether the stream is writable. Default `true`. Set to `false` when `end()` * `readable` Whether the stream is readable. Default `true`. * `buffer` A [yallist](http://npm.im/yallist) linked list of chunks written to the stream that have not yet been emitted. (It's probably a bad idea to mess with this.) * `pipes` A [yallist](http://npm.im/yallist) linked list of streams that this stream is piping into. (It's probably a bad idea to mess with this.) * `destroyed` A getter that indicates whether the stream was destroyed. * `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`. ### Events * `data` Emitted when there's data to read. Argument is the data to read. This is never emitted while not flowing. If a listener is attached, that will resume the stream. * `end` Emitted when there's no more data to read. This will be emitted immediately for empty streams when `end()` is called. If a listener is attached, and `end` was already emitted, then it will be emitted again. All listeners are removed when `end` is emitted. * `prefinish` An end-ish event that follows the same logic as `end` and is emitted in the same conditions where `end` is emitted. Emitted after `'end'`. * `finish` An end-ish event that follows the same logic as `end` and is emitted in the same conditions where `end` is emitted. Emitted after `'prefinish'`. * `close` An indication that an underlying resource has been released. Minipass does not emit this event, but will defer it until after `end` has been emitted, since it throws off some stream libraries otherwise. * `drain` Emitted when the internal buffer empties, and it is again suitable to `write()` into the stream. * `readable` Emitted when data is buffered and ready to be read by a consumer. * `resume` Emitted when stream changes state from buffering to flowing mode. (Ie, when `resume` is called, `pipe` is called, or a `data` event listener is added.) ### Static Methods * `Minipass.isStream(stream)` Returns `true` if the argument is a stream, and false otherwise. To be considered a stream, the object must be either an instance of Minipass, or an EventEmitter that has either a `pipe()` method, or both `write()` and `end()` methods. (Pretty much any stream in node-land will return `true` for this.) ## EXAMPLES Here are some examples of things you can do with Minipass streams. ### simple "are you done yet" promise ```js mp.promise().then(() => { // stream is finished }, er => { // stream emitted an error }) ``` ### collecting ```js mp.collect().then(all => { // all is an array of all the data emitted // encoding is supported in this case, so // so the result will be a collection of strings if // an encoding is specified, or buffers/objects if not. // // In an async function, you may do // const data = await stream.collect() }) ``` ### collecting into a single blob This is a bit slower because it concatenates the data into one chunk for you, but if you're going to do it yourself anyway, it's convenient this way: ```js mp.concat().then(onebigchunk => { // onebigchunk is a string if the stream // had an encoding set, or a buffer otherwise. }) ``` ### iteration You can iterate over streams synchronously or asynchronously in platforms that support it. Synchronous iteration will end when the currently available data is consumed, even if the `end` event has not been reached. In string and buffer mode, the data is concatenated, so unless multiple writes are occurring in the same tick as the `read()`, sync iteration loops will generally only have a single iteration. To consume chunks in this way exactly as they have been written, with no flattening, create the stream with the `{ objectMode: true }` option. ```js const mp = new Minipass({ objectMode: true }) mp.write('a') mp.write('b') for (let letter of mp) { console.log(letter) // a, b } mp.write('c') mp.write('d') for (let letter of mp) { console.log(letter) // c, d } mp.write('e') mp.end() for (let letter of mp) { console.log(letter) // e } for (let letter of mp) { console.log(letter) // nothing } ``` Asynchronous iteration will continue until the end event is reached, consuming all of the data. ```js const mp = new Minipass({ encoding: 'utf8' }) // some source of some data let i = 5 const inter = setInterval(() => { if (i-- > 0) mp.write(Buffer.from('foo\n', 'utf8')) else { mp.end() clearInterval(inter) } }, 100) // consume the data with asynchronous iteration async function consume () { for await (let chunk of mp) { console.log(chunk) } return 'ok' } consume().then(res => console.log(res)) // logs `foo\n` 5 times, and then `ok` ``` ### subclass that `console.log()`s everything written into it ```js class Logger extends Minipass { write (chunk, encoding, callback) { console.log('WRITE', chunk, encoding) return super.write(chunk, encoding, callback) } end (chunk, encoding, callback) { console.log('END', chunk, encoding) return super.end(chunk, encoding, callback) } } someSource.pipe(new Logger()).pipe(someDest) ``` ### same thing, but using an inline anonymous class ```js // js classes are fun someSource .pipe(new (class extends Minipass { emit (ev, ...data) { // let's also log events, because debugging some weird thing console.log('EMIT', ev) return super.emit(ev, ...data) } write (chunk, encoding, callback) { console.log('WRITE', chunk, encoding) return super.write(chunk, encoding, callback) } end (chunk, encoding, callback) { console.log('END', chunk, encoding) return super.end(chunk, encoding, callback) } })) .pipe(someDest) ``` ### subclass that defers 'end' for some reason ```js class SlowEnd extends Minipass { emit (ev, ...args) { if (ev === 'end') { console.log('going to end, hold on a sec') setTimeout(() => { console.log('ok, ready to end now') super.emit('end', ...args) }, 100) } else { return super.emit(ev, ...args) } } } ``` ### transform that creates newline-delimited JSON ```js class NDJSONEncode extends Minipass { write (obj, cb) { try { // JSON.stringify can throw, emit an error on that return super.write(JSON.stringify(obj) + '\n', 'utf8', cb) } catch (er) { this.emit('error', er) } } end (obj, cb) { if (typeof obj === 'function') { cb = obj obj = undefined } if (obj !== undefined) { this.write(obj) } return super.end(cb) } } ``` ### transform that parses newline-delimited JSON ```js class NDJSONDecode extends Minipass { constructor (options) { // always be in object mode, as far as Minipass is concerned super({ objectMode: true }) this._jsonBuffer = '' } write (chunk, encoding, cb) { if (typeof chunk === 'string' && typeof encoding === 'string' && encoding !== 'utf8') { chunk = Buffer.from(chunk, encoding).toString() } else if (Buffer.isBuffer(chunk)) chunk = chunk.toString() } if (typeof encoding === 'function') { cb = encoding } const jsonData = (this._jsonBuffer + chunk).split('\n') this._jsonBuffer = jsonData.pop() for (let i = 0; i < jsonData.length; i++) { try { // JSON.parse can throw, emit an error on that super.write(JSON.parse(jsonData[i])) } catch (er) { this.emit('error', er) continue } } if (cb) cb() } } ``` minipass-3.3.6/bench/000077500000000000000000000000001434007227000144245ustar00rootroot00000000000000minipass-3.3.6/bench/README.md000066400000000000000000000025251434007227000157070ustar00rootroot00000000000000Stream Benchmarks Run `node index.js` to benchmark all the different stream implementations with the following configurations: - `implementation` One of the implementations in `./impls` - `case` How is the data emitted and how is it consumed? - `fast-fast` Source emits data as fast as possible, destination consumes it immediately. - `fast-slow` Source emits data as fast as possible, destination consumes one chunk per Promise cycle. - `slow-fast` Source emits one data per Promise cycle, destination consumes it immediately. - `slow-slow` Source emits one data per Promise cycle, destination consumes one chunk per Promise cycle. - `fast-mixed` Source emits data as fast as possible, data is piped to one fast destination stream and one slow destination stream. - `pipeline` How many instances of the tested implementation are piped together between the source and destination? Tested with `1` and `20` by default. - `type` What kind of data is written? - `defaults` a buffer - `str` a string - `obj` the object `{i: 'object'}` Results are written to the `./results` folder for each test case, and to `results.json` and `results.tab`. See [this google sheet](https://docs.google.com/spreadsheets/d/1K_HR5oh3r80b8WVMWCPPjfuWXUgfkmhlX7FGI6JJ8tY/edit?usp=sharing) for analysis and comparisons. minipass-3.3.6/bench/impls/000077500000000000000000000000001434007227000155505ustar00rootroot00000000000000minipass-3.3.6/bench/impls/README.md000066400000000000000000000012551434007227000170320ustar00rootroot00000000000000To add a new stream type to test, create a file here that exports a function or class that can be called with `s = new Class(options)`, where `options` can include `{encoding: 'utf8'}` or `{objectMode: true}`. The returned object must implement at minimum the following subset of the stream interface: * `on(event, fn)` call `fn` when `event` happens * `write(data)` where `data` will be an object, string, or buffer. Return `true` if more data should be written, `false` otherwise. Emit `drain` when ready for more data if `false` is written. * `end()` no further data will be written, emit `'finish'` when all data processed * `pipe(dest)` pipe all output to `dest` stream minipass-3.3.6/bench/impls/baseline.js000066400000000000000000000005171434007227000176730ustar00rootroot00000000000000// piping to /dev/null module.exports = class BaselineNoOpStream { constructor () { this.pipeDests = [] } write () { return true } end () { this.pipeDests.forEach(d => d.end()) return this } pipe (d) { this.pipeDests.push(d) return d } read () { return null } on () { return this } emit () {} } minipass-3.3.6/bench/impls/core-extend-transform.js000066400000000000000000000003311434007227000223310ustar00rootroot00000000000000const stream = require('stream') module.exports = class ExtendTransform extends stream.Transform { constructor (opts) { super(opts) } _transform (data, enc, done) { this.push(data, enc) done() } } minipass-3.3.6/bench/impls/core-passthrough.js000066400000000000000000000000571434007227000214050ustar00rootroot00000000000000module.exports = require('stream').PassThrough minipass-3.3.6/bench/impls/extend-minipass-current.js000066400000000000000000000003171434007227000226770ustar00rootroot00000000000000const Minipass = require('../..') module.exports = class ExtendMinipass extends Minipass { constructor (opts) { super(opts) } write (data, encoding) { return super.write(data, encoding) } } minipass-3.3.6/bench/impls/extend-minipass.js000066400000000000000000000003221434007227000212130ustar00rootroot00000000000000const Minipass = require('minipass') module.exports = class ExtendMinipass extends Minipass { constructor (opts) { super(opts) } write (data, encoding) { return super.write(data, encoding) } } minipass-3.3.6/bench/impls/extend-through2.js000066400000000000000000000004501434007227000211340ustar00rootroot00000000000000const through2 = require('through2') module.exports = function (opts) { if (opts.objectMode) return through2.obj(func) s = through2(func) if (opts.encoding) { s.setEncoding(opts.encoding) } return s function func (data, enc, done) { this.push(data, enc) done() } } minipass-3.3.6/bench/impls/minipass-current-async.js000066400000000000000000000002351434007227000225240ustar00rootroot00000000000000const Minipass = require('../..') module.exports = class extends Minipass { constructor (options = {}) { options.async = true super(options) } } minipass-3.3.6/bench/impls/minipass-current.js000066400000000000000000000000421434007227000214050ustar00rootroot00000000000000module.exports = require('../..') minipass-3.3.6/bench/impls/minipass-latest.js000066400000000000000000000000451434007227000212220ustar00rootroot00000000000000module.exports = require('minipass') minipass-3.3.6/bench/impls/push-through.js000066400000000000000000000040241434007227000205430ustar00rootroot00000000000000// This is a minimal non-EE stream class inspired by push-stream // It can support multiple outputs, but only one input. class PushThrough { constructor (opt) { this.dests = [] this.paused = false this.buffer = [] this.ended = false this.ondrain = [] this.onfinish = [] } on (ev, fn) { switch (ev) { case 'error': break case 'finish': this.onfinish.push(fn) break case 'drain': this.ondrain.push(fn) break default: throw new Error(`event ${ev} not supported`) } } once (ev, fn) { const f = () => { fn() this[`on${ev}`] = this[`on${ev}`].filter(fn => fn !== f) } this.on(ev, f) } emit (ev) { switch (ev) { case 'finish': this.onfinish.forEach(f => f()) break case 'drain': this.ondrain.forEach(f => f()) break default: throw new Error(`event ${ev} not supported`) } } pipe (dest) { this.dests.push(dest) dest.on('drain', () => this.resume()) this.resume() } resume () { this.paused = false if (this.buffer.length) { const b = this.buffer.slice(0) this.buffer.length = 0 for (const c of b) { for (const dest of this.dests) { const ret = dest.write(c) this.paused = this.paused || ret === false } } } if (this.buffer.length === 0) this.emit('drain') if (this.ended && this.buffer.length === 0) { for (const d of this.dests) { d.end() } this.emit('finish') } } pause () { this.paused = true } write (chunk) { if (this.ended) { throw new Error('write after end') } if (!this.dests.length || this.paused) { this.buffer.push(chunk) return false } for (const dest of this.dests) { const ret = dest.write(chunk) this.paused = this.paused || ret === false } return !this.paused } end () { this.ended = true this.resume() } } module.exports = PushThrough minipass-3.3.6/bench/impls/through2.js000066400000000000000000000003231434007227000176460ustar00rootroot00000000000000const through2 = require('through2') module.exports = function (opts) { if (opts.objectMode) return through2.obj() s = through2() if (opts.encoding) { s.setEncoding(opts.encoding) } return s } minipass-3.3.6/bench/impls/web-std.js.REMOVED-GH-42157000066400000000000000000000005331434007227000215300ustar00rootroot00000000000000const { TransformStream: WebTS } = require('stream/web') const { Transform: NodeTS } = require('stream') module.exports = function PassthroughFromWeb (opt) { if (opt.objectMode) { throw new Error('object mode not supported') } const s = NodeTS.fromWeb(new WebTS()) if (opt.encoding) { s.setEncoding(opt.encoding) } return s } minipass-3.3.6/bench/index.js000066400000000000000000000164541434007227000161030ustar00rootroot00000000000000// if you go much higher the core streams just choke and take forever lol const N = Math.floor(128*1024 / Math.PI) const fs = require('fs') // const { basename } = require('path') // const impls = fs.readdirSync(__dirname + '/impls') // .filter(f => /\.js$/.test(f)).map(f => basename(f, '.js')) const impls = [ 'baseline', 'minipass-latest', 'minipass-current', 'minipass-current-async', 'extend-minipass-current', 'core-extend-transform', 'core-passthrough', ] const promiseSpawn = require('@npmcli/promise-spawn') const main = async () => { const [node, _, impl, cse, len, type] = process.argv const opt = { stdioString: true, stdio: ['ignore', 'pipe', 'inherit'] } const results = {} if (impl === undefined) { // run against all implementations const a = [__filename] for (const i of impls) { const res = await promiseSpawn(process.execPath, [...a, i], opt) .catch(e => e) try { results[i] = JSON.parse(res.stdout) } catch (e) { results[i] = e } } } else if (cse === undefined) { const a = [__filename, impl] for (const c of cases) { const res = await promiseSpawn(process.execPath, [...a, c], opt) .catch(e => e) try { results[c] = JSON.parse(res.stdout) } catch (e) { results[c] = e } } } else if (len === undefined) { const a = [__filename, impl, cse] for (const l of pipeLen) { const res = await promiseSpawn(process.execPath, [...a, l], opt) .catch(e => e) try { results[l] = JSON.parse(res.stdout) } catch (e) { results[l] = e } } } else { const fs = require('fs') const dir = __dirname + '/results' fs.mkdirSync(dir, { recursive: true }) // ok, actually run this one case and return the score const opts = { defaults: {}, str: {encoding:'utf8'}, obj: {objectMode: true}, } const typeOpts = type ? [[type, opts[type]]] : Object.entries(opts) for (const [name, opt] of typeOpts) { await new Promise((res, rej) => { process.stderr.write(`${impl} ${cse} ${len} ${name} ... `) const { src, start, dest, dest2 } = setupPipeline(impl, len, cse, opt) const end = () => { const result = performance.now() - startTime results[name] = result console.error(result) res() } let ended1 = false let ended2 = !dest2 if (dest2) { dest2.on('finish', () => { if (ended2) throw new Error('emitted multiple dest2.finish') ended2 = true if (ended1) { end() } }) } dest.on('finish', () => { if (ended1) throw new Error('emitted multiple dest1.finish') ended1 = true if (ended2) { end() } }) // kick it off! const startTime = performance.now() src.pipe(start).on('error', rej) }).catch(e => results[name] = e) } fs.writeFileSync(`${dir}/${impl}-${cse}-${len}.json`, JSON.stringify(results, 0, 2)) } console.log(JSON.stringify(results, 0, 2)) fs.writeFileSync('results.json', JSON.stringify(results, 0, 2) + '\n') // write out the results.tab from the top level if (impl === undefined) { const header = ['impl', 'case', 'pipeline', 'type', 'time', 'score'] const rows = [] let max = -1 for (const [impl, iRes] of Object.entries(results)) { for (const [cse, cRes] of Object.entries(iRes)) { for (const [len, lRes] of Object.entries(cRes)) { for (const [type, time] of Object.entries(lRes)) { max = Math.max(max, time) rows.push([impl, cse, len, type, time]) } } } } for (const row of rows) { row.push(max / row[row.length - 1]) } const output = [header].concat(rows.sort((a, b) => a[a.length-1] - b[b.length-1])) .map(row => row.join('\t')) .join('\n') + '\n' fs.writeFileSync(__dirname + '/results.tab', output) } } // is the src and dest fast or slow? const cases = [ 'fast-fast', 'fast-slow', 'slow-fast', 'slow-slow', 'fast-mixed', // two dests: 1 fast, 1 slow ] // how many of the stream under test piped together? const pipeLen = [ 1, 20 ] const EE = require('events') const setupPipeline = (impl, len, cse, opt) => { const Cls = require(`./impls/${impl}.js`) let s = new Cls(opt) let start = s while (len > 1) { s = s.pipe(new Cls(opt)) len -- } let src let dest let dest2 switch (cse) { case 'fast-fast': src = new FastSrc(opt) dest = new FastDest(opt) break case 'fast-slow': src = new FastSrc(opt) dest = new SlowDest(opt) break case 'slow-fast': src = new SlowSrc(opt) dest = new FastDest(opt) break case 'slow-slow': src = new SlowSrc(opt) dest = new SlowDest(opt) break case 'fast-mixed': src = new FastSrc(opt) dest = new FastDest(opt) dest2 = new SlowDest(opt) break default: throw new Error('unknown case: ' + cse) } s.pipe(dest) if (dest2) { s.pipe(dest2) } return { src, start, dest, dest2 } } class Src extends EE { constructor (options) { super() this.chunk = options.objectMode ? { i: 'object' } : options.encoding ? 'x'.repeat(N) : Buffer.from('x'.repeat(N)) this.n = N this.flowing = false this.readable = true this.writable = false } pipe (dest) { dest.on('drain', () => this.resume()) this.on('data', c => dest.write(c) === false ? this.pause() : true) this.on('end', () => dest.end()) this.resume() return dest } pause () { this.flowing = false } } class FastSrc extends Src { resume () { if (this.flowing) { return } this.flowing = true while (this.n > 0 && this.flowing) { this.emit('data', this.chunk) this.n -- } if (this.flowing && this.n === 0) { this.emit('end') } } } class SlowSrc extends Src { resume () { if (this.flowing) { return } this.flowing = true const doResume = () => { if (!this.flowing ) { return } if (this.flowing && this.n > 0) { this.emit('data', this.chunk) this.n -- return Promise.resolve().then(doResume) } if (this.flowing && this.n <= 0) { this.emit('end') return } } Promise.resolve().then(doResume) } } class Dest extends EE { constructor () { super() this.writable = true this.readable = false this.ended = false this.buffering = false } } class FastDest extends Dest { write (c) { if (this.ended) { throw new Error('write after end in '+this.constructor.name) } return true } end () { this.ended = true return this.emit('finish') } } class SlowDest extends Dest { write (c) { if (this.ended) { throw new Error('write after end in '+this.constructor.name) } this.buffering = true Promise.resolve().then(() => { this.buffering = false this.emit('drain') }) return false } end () { this.ended = true if (this.buffering) { this.once('drain', () => this.end()) } else { Promise.resolve().then(() => this.emit('finish')) } return this } } main() minipass-3.3.6/bench/package-lock.json000066400000000000000000000161461434007227000176500ustar00rootroot00000000000000{ "name": "bench", "lockfileVersion": 2, "requires": true, "packages": { "": { "dependencies": { "@npmcli/promise-spawn": "^2.0.0", "@web-std/stream": "^1.0.1", "minipass": "latest", "through2": "^4.0.2" } }, "node_modules/@npmcli/promise-spawn": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-2.0.1.tgz", "integrity": "sha512-7b5KiY/LEpUPqslzOA3v8aZrFmn2z7sLRw3aRDEgRipx0b7vZtQlb9FiMg6azzGuLyLTKuyvwgKPfixuV1tqKA==" }, "node_modules/@web-std/stream": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@web-std/stream/-/stream-1.0.1.tgz", "integrity": "sha512-tsz4Y0WNDgFA5jwLSeV7/UV5rfMIlj0cPsSLVfTihjaVW0OJPd5NxJ3le1B3yLyqqzRpeG5OAfJAADLc4VoGTA==", "dependencies": { "web-streams-polyfill": "^3.1.1" } }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/minipass": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", "dependencies": { "yallist": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" }, "engines": { "node": ">= 6" } }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/feross" }, { "type": "patreon", "url": "https://www.patreon.com/feross" }, { "type": "consulting", "url": "https://feross.org/support" } ] }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dependencies": { "safe-buffer": "~5.2.0" } }, "node_modules/through2": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", "dependencies": { "readable-stream": "3" } }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "node_modules/web-streams-polyfill": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", "engines": { "node": ">= 8" } }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } }, "dependencies": { "@npmcli/promise-spawn": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-2.0.1.tgz", "integrity": "sha512-7b5KiY/LEpUPqslzOA3v8aZrFmn2z7sLRw3aRDEgRipx0b7vZtQlb9FiMg6azzGuLyLTKuyvwgKPfixuV1tqKA==" }, "@web-std/stream": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@web-std/stream/-/stream-1.0.1.tgz", "integrity": "sha512-tsz4Y0WNDgFA5jwLSeV7/UV5rfMIlj0cPsSLVfTihjaVW0OJPd5NxJ3le1B3yLyqqzRpeG5OAfJAADLc4VoGTA==", "requires": { "web-streams-polyfill": "^3.1.1" } }, "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "minipass": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", "requires": { "yallist": "^4.0.0" } }, "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "requires": { "safe-buffer": "~5.2.0" } }, "through2": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", "requires": { "readable-stream": "3" } }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "web-streams-polyfill": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==" }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } } minipass-3.3.6/bench/package.json000066400000000000000000000002271434007227000167130ustar00rootroot00000000000000{ "dependencies": { "@npmcli/promise-spawn": "^2.0.0", "@web-std/stream": "^1.0.1", "minipass": "latest", "through2": "^4.0.2" } } minipass-3.3.6/bench/results.json000066400000000000000000000237051434007227000170270ustar00rootroot00000000000000{ "baseline": { "fast-fast": { "1": { "defaults": 3.329833984375, "str": 2.8888330459594727, "obj": 1.9252495765686035 }, "20": { "defaults": 3.4190421104431152, "str": 2.601707935333252, "obj": 1.685542106628418 } }, "fast-slow": { "1": { "defaults": 3.585207939147949, "str": 2.7080001831054688, "obj": 1.7782092094421387 }, "20": { "defaults": 3.566500186920166, "str": 2.587916851043701, "obj": 1.745542049407959 } }, "slow-fast": { "1": { "defaults": 7.4960408210754395, "str": 7.6979169845581055, "obj": 5.522083282470703 }, "20": { "defaults": 7.44379186630249, "str": 7.8836669921875, "obj": 5.76891565322876 } }, "slow-slow": { "1": { "defaults": 7.4205002784729, "str": 7.702875137329102, "obj": 5.622167110443115 }, "20": { "defaults": 7.6765828132629395, "str": 7.841750144958496, "obj": 5.872457981109619 } }, "fast-mixed": { "1": { "defaults": 3.577208995819092, "str": 2.7121658325195312, "obj": 1.7675423622131348 }, "20": { "defaults": 3.5723328590393066, "str": 2.6376662254333496, "obj": 1.8755831718444824 } } }, "minipass-latest": { "fast-fast": { "1": { "defaults": 10.694499969482422, "str": 10.034541130065918, "obj": 7.591958045959473 }, "20": { "defaults": 101.94470834732056, "str": 106.39775037765503, "obj": 83.3781247138977 } }, "fast-slow": { "1": { "defaults": 20.002583980560303, "str": 19.90779161453247, "obj": 16.551458835601807 }, "20": { "defaults": 250.42383289337158, "str": 261.65675020217896, "obj": 235.33891677856445 } }, "slow-fast": { "1": { "defaults": 15.32420825958252, "str": 14.633959293365479, "obj": 11.675666332244873 }, "20": { "defaults": 103.60004091262817, "str": 107.82666730880737, "obj": 89.49645805358887 } }, "slow-slow": { "1": { "defaults": 26.139249801635742, "str": 25.96370792388916, "obj": 25.568833827972412 }, "20": { "defaults": 246.73425006866455, "str": 258.8834590911865, "obj": 237.89187479019165 } }, "fast-mixed": { "1": { "defaults": 20.174625396728516, "str": 20.026957988739014, "obj": 16.881999969482422 }, "20": { "defaults": 249.19720792770386, "str": 262.65816736221313, "obj": 236.38895797729492 } } }, "minipass-current": { "fast-fast": { "1": { "defaults": 10.026582717895508, "str": 9.438958168029785, "obj": 6.078125 }, "20": { "defaults": 89.02404165267944, "str": 93.60058307647705, "obj": 61.51558256149292 } }, "fast-slow": { "1": { "defaults": 16.08120822906494, "str": 16.00995922088623, "obj": 11.185208320617676 }, "20": { "defaults": 186.31754112243652, "str": 197.53145837783813, "obj": 164.88866710662842 } }, "slow-fast": { "1": { "defaults": 14.138416290283203, "str": 14.746541976928711, "obj": 8.604499816894531 }, "20": { "defaults": 90.66391706466675, "str": 94.54366731643677, "obj": 68.79845905303955 } }, "slow-slow": { "1": { "defaults": 23.115708351135254, "str": 23.19800043106079, "obj": 19.721415996551514 }, "20": { "defaults": 189.99808311462402, "str": 199.26554107666016, "obj": 170.10429191589355 } }, "fast-mixed": { "1": { "defaults": 16.844333171844482, "str": 16.537292003631592, "obj": 11.395583152770996 }, "20": { "defaults": 186.95450019836426, "str": 197.8732500076294, "obj": 165.9179162979126 } } }, "minipass-current-async": { "fast-fast": { "1": { "defaults": 16.188167095184326, "str": 14.847332954406738, "obj": 9.77025032043457 }, "20": { "defaults": 158.68620824813843, "str": 166.0300407409668, "obj": 132.29212522506714 } }, "fast-slow": { "1": { "defaults": 28.027541160583496, "str": 18.382500171661377, "obj": 12.458750247955322 }, "20": { "defaults": 166.70508289337158, "str": 171.29291582107544, "obj": 138.14916706085205 } }, "slow-fast": { "1": { "defaults": 15.835124969482422, "str": 14.931042194366455, "obj": 15.144291877746582 }, "20": { "defaults": 107.30662488937378, "str": 110.42562532424927, "obj": 81.3732500076294 } }, "slow-slow": { "1": { "defaults": 25.29937505722046, "str": 23.007457733154297, "obj": 18.679749965667725 }, "20": { "defaults": 273.60687494277954, "str": 267.45716667175293, "obj": 224.5688328742981 } }, "fast-mixed": { "1": { "defaults": 28.457082748413086, "str": 18.49833393096924, "obj": 12.807291984558105 }, "20": { "defaults": 165.82100009918213, "str": 169.9223747253418, "obj": 137.14441680908203 } } }, "extend-minipass-current": { "fast-fast": { "1": { "defaults": 10.963582992553711, "str": 10.400875091552734, "obj": 6.979042053222656 }, "20": { "defaults": 108.85300016403198, "str": 112.98379182815552, "obj": 80.6841254234314 } }, "fast-slow": { "1": { "defaults": 17.35587501525879, "str": 17.23883295059204, "obj": 12.244625091552734 }, "20": { "defaults": 212.35604190826416, "str": 223.48966693878174, "obj": 187.6898341178894 } }, "slow-fast": { "1": { "defaults": 15.251583099365234, "str": 15.613249778747559, "obj": 9.619916915893555 }, "20": { "defaults": 112.902916431427, "str": 116.77554225921631, "obj": 90.9947919845581 } }, "slow-slow": { "1": { "defaults": 23.67870807647705, "str": 23.867958068847656, "obj": 21.026416778564453 }, "20": { "defaults": 212.40991687774658, "str": 223.33199977874756, "obj": 193.59470796585083 } }, "fast-mixed": { "1": { "defaults": 17.667749881744385, "str": 18.020249843597412, "obj": 12.56712532043457 }, "20": { "defaults": 211.5590844154358, "str": 224.7543749809265, "obj": 187.83008289337158 } } }, "core-extend-transform": { "fast-fast": { "1": { "defaults": 23.541666984558105, "str": 1410.315041065216, "obj": 6.503125190734863 }, "20": { "defaults": 228.57879209518433, "str": 29180.4340839386, "obj": 73.42491722106934 } }, "fast-slow": { "1": { "defaults": 32.58241605758667, "str": 1451.8822078704834, "obj": 24.079749584197998 }, "20": { "defaults": 274.3609576225281, "str": 30182.570083141327, "obj": 124.58154201507568 } }, "slow-fast": { "1": { "defaults": 31.042624950408936, "str": 1425.865791797638, "obj": 11.923707962036133 }, "20": { "defaults": 250.88299989700317, "str": 31964.667541980743, "obj": 81.42899990081787 } }, "slow-slow": { "1": { "defaults": 37.82354164123535, "str": 1457.156666278839, "obj": 14.744708061218262 }, "20": { "defaults": 258.49733304977417, "str": 29576.854750156403, "obj": 92.44012546539307 } }, "fast-mixed": { "1": { "defaults": 36.43495798110962, "str": 1543.0077500343323, "obj": 27.787333011627197 }, "20": { "defaults": 287.8984160423279, "str": 30980.08158302307, "obj": 128.26529216766357 } } }, "core-passthrough": { "fast-fast": { "1": { "defaults": 24.717000007629395, "str": 1445.3550839424133, "obj": 6.450333118438721 }, "20": { "defaults": 219.69770908355713, "str": 29583.401374816895, "obj": 75.41662502288818 } }, "fast-slow": { "1": { "defaults": 33.23187494277954, "str": 1524.7200002670288, "obj": 23.51645803451538 }, "20": { "defaults": 283.2999997138977, "str": 30345.344042301178, "obj": 123.50012493133545 } }, "slow-fast": { "1": { "defaults": 30.58524990081787, "str": 1437.685417175293, "obj": 12.23199987411499 }, "20": { "defaults": 256.95475006103516, "str": 29740.22958278656, "obj": 80.6258339881897 } }, "slow-slow": { "1": { "defaults": 36.816792011260986, "str": 1471.3464999198914, "obj": 14.990999698638916 }, "20": { "defaults": 270.89395809173584, "str": 30246.11995792389, "obj": 96.37879180908203 } }, "fast-mixed": { "1": { "defaults": 35.9570837020874, "str": 1490.9656672477722, "obj": 25.987332820892334 }, "20": { "defaults": 276.7832088470459, "str": 31351.60183286667, "obj": 201.0685420036316 } } } } minipass-3.3.6/bench/results.tab000066400000000000000000000362361434007227000166270ustar00rootroot00000000000000impl case pipeline type time score core-extend-transform fast-mixed 20 str 30747.63024997711 1 core-passthrough fast-mixed 20 str 30447.11287498474 1.0098701435576598 core-extend-transform fast-slow 20 str 30113.022541046143 1.021074194995403 core-passthrough fast-slow 20 str 29451.729625225067 1.0440008325909023 core-extend-transform slow-slow 20 str 29411.705083847046 1.0454215477246764 core-passthrough slow-slow 20 str 29246.384957790375 1.0513309694293294 core-passthrough fast-fast 20 str 29222.67541694641 1.052183956851068 core-extend-transform fast-fast 20 str 29134.15249967575 1.0553809742816207 core-extend-transform slow-fast 20 str 29110.925499916077 1.0562230407296997 core-passthrough slow-fast 20 str 29077.25270795822 1.0574461954434133 core-extend-transform fast-mixed 1 str 1461.4726247787476 21.0387999943769 core-passthrough fast-mixed 1 str 1454.6930408477783 21.136851133939395 core-passthrough fast-slow 1 str 1448.1420831680298 21.232467868561642 core-passthrough slow-slow 1 str 1446.2176671028137 21.260720947748744 core-extend-transform slow-slow 1 str 1443.0942077636719 21.306738038693933 core-extend-transform fast-slow 1 str 1441.7533750534058 21.326553335682778 core-passthrough slow-fast 1 str 1430.5638751983643 21.493364108410468 core-extend-transform slow-fast 1 str 1429.897292137146 21.50338378781125 core-passthrough fast-fast 1 str 1419.7792496681213 21.656627434979406 core-extend-transform fast-fast 1 str 1417.3917908668518 21.69310592039792 core-extend-transform fast-mixed 20 defaults 274.6799998283386 111.93982186250494 core-passthrough fast-mixed 20 defaults 274.4687910079956 112.02596162957339 core-passthrough fast-slow 20 defaults 272.5765838623047 112.80363784113474 minipass-current-async slow-slow 20 defaults 270.37124967575073 113.72374202823693 core-extend-transform slow-slow 20 defaults 267.4429588317871 114.9689278950745 core-extend-transform fast-slow 20 defaults 266.26683282852173 115.47675661797076 minipass-latest fast-mixed 20 str 266.0526661872864 115.56971290914439 minipass-latest fast-slow 20 str 265.93070793151855 115.62271423687979 core-passthrough slow-slow 20 defaults 263.0804166793823 116.87540501142445 minipass-current-async slow-slow 20 str 260.62041664123535 117.97859371970716 minipass-latest slow-slow 20 str 256.8340826034546 119.71787364938899 core-passthrough slow-fast 20 defaults 256.4482922554016 119.89797233414593 core-extend-transform slow-fast 20 defaults 249.86824989318848 123.05537123312322 minipass-latest fast-mixed 20 defaults 246.4864583015442 124.74368962030918 minipass-latest slow-slow 20 defaults 246.13241577148438 124.92312381366295 minipass-latest fast-slow 20 defaults 245.7106671333313 125.13754737922045 minipass-latest fast-slow 20 obj 240.51108312606812 127.84288295712427 minipass-latest fast-mixed 20 obj 240.15312480926514 128.03343814242498 minipass-latest slow-slow 20 obj 236.080500125885 130.24214297064594 extend-minipass-current slow-slow 20 str 229.88083410263062 133.7546488814713 core-extend-transform fast-fast 20 defaults 226.87533378601074 135.52654551234 minipass-current-async slow-slow 20 obj 224.95733261108398 136.68205385034037 extend-minipass-current fast-mixed 20 str 224.0742907524109 137.22069652315204 extend-minipass-current fast-slow 20 str 222.7903332710266 138.01150973894508 core-passthrough fast-fast 20 defaults 219.50999975204468 140.07393870306223 extend-minipass-current slow-slow 20 defaults 216.60487508773804 141.9526233540333 extend-minipass-current fast-mixed 20 defaults 214.0547080039978 143.64379338670213 extend-minipass-current fast-slow 20 defaults 213.12683391571045 144.26916444570043 core-extend-transform fast-mixed 20 obj 199.47045803070068 154.1462858888343 minipass-current slow-slow 20 str 199.00683307647705 154.5053995113876 minipass-current fast-mixed 20 str 198.75245904922485 154.70314378531475 minipass-current fast-slow 20 str 197.72462511062622 155.5073387180475 extend-minipass-current slow-slow 20 obj 197.5637083053589 155.634000362318 minipass-current slow-slow 20 defaults 189.56308364868164 162.20262752721342 extend-minipass-current fast-mixed 20 obj 188.06141567230225 163.49781341407626 minipass-current fast-mixed 20 defaults 187.45829105377197 164.02384806312583 extend-minipass-current fast-slow 20 obj 186.86549997329712 164.54417885790002 minipass-current fast-slow 20 defaults 184.97087478637695 166.2295768752112 minipass-current-async fast-mixed 20 str 171.08720779418945 179.71904881962413 minipass-current slow-slow 20 obj 170.29383325576782 180.5563340851962 minipass-current-async fast-slow 20 str 170.0132918357849 180.85427273342904 minipass-current-async fast-mixed 20 defaults 167.80179071426392 183.23779572969374 minipass-current fast-mixed 20 obj 166.30270767211914 184.88953475489316 minipass-current-async fast-slow 20 defaults 165.56383275985718 185.7146560177497 minipass-current fast-slow 20 obj 165.23862504959106 186.08016279940117 minipass-current-async fast-fast 20 str 163.9047498703003 187.59450396836007 minipass-current-async fast-fast 20 defaults 159.47150039672852 192.80956267097292 minipass-current-async fast-mixed 20 obj 138.03287506103516 222.75584882500763 minipass-current-async fast-slow 20 obj 137.74329233169556 223.22415654139186 minipass-current-async fast-fast 20 obj 131.72820806503296 233.41720578782412 core-passthrough fast-mixed 20 obj 129.18008375167847 238.0214453884622 core-passthrough fast-slow 20 obj 126.37016582489014 243.31399780375213 core-extend-transform fast-slow 20 obj 122.05166673660278 251.92306727226386 extend-minipass-current fast-fast 20 str 114.95495796203613 267.47545991127686 extend-minipass-current slow-fast 20 str 113.89054203033447 269.97527364289436 extend-minipass-current slow-fast 20 defaults 110.9661660194397 277.09013794881014 minipass-current-async slow-fast 20 str 110.63445901870728 277.9209165272636 extend-minipass-current fast-fast 20 defaults 108.50787496566772 283.36773031179325 minipass-latest slow-fast 20 str 107.90645933151245 284.9470776861801 minipass-current-async slow-fast 20 defaults 106.81470775604248 287.85951762563076 minipass-latest fast-fast 20 str 106.13970756530762 289.6901730302784 minipass-latest slow-fast 20 defaults 103.7354998588562 296.40412676289907 minipass-latest fast-fast 20 defaults 101.7110424041748 302.30375702761506 core-extend-transform slow-slow 20 obj 98.4611668586731 312.2817983064423 minipass-current slow-fast 20 str 95.58812522888184 321.66788684633343 minipass-current slow-fast 20 defaults 94.26279211044312 326.19053140237577 core-passthrough slow-slow 20 obj 93.67749977111816 328.2285535491731 minipass-current fast-fast 20 str 93.47599983215332 328.93609381218647 minipass-latest slow-fast 20 obj 90.60833311080933 339.34660526614414 minipass-current fast-fast 20 defaults 88.68699979782104 346.6982795682818 extend-minipass-current slow-fast 20 obj 87.91937494277954 349.72530537197923 extend-minipass-current fast-fast 20 obj 83.29762506484985 369.12973480383266 minipass-latest fast-fast 20 obj 82.52587509155273 372.5816929037861 minipass-current-async slow-fast 20 obj 81.92266702651978 375.32506406344874 core-extend-transform slow-fast 20 obj 78.86537504196167 389.87490053293106 core-passthrough slow-fast 20 obj 78.67212533950806 390.83258672987796 core-extend-transform fast-fast 20 obj 73.56233310699463 417.9806288261063 core-passthrough fast-fast 20 obj 73.49420881271362 418.3680693581143 minipass-current slow-fast 20 obj 68.56379222869873 448.4528823524887 minipass-current fast-fast 20 obj 67.34345817565918 456.57931865890765 core-passthrough slow-slow 1 defaults 37.59954214096069 817.7660816906822 core-extend-transform slow-slow 1 defaults 37.39179086685181 822.3096443672932 core-extend-transform fast-mixed 1 defaults 36.60337495803833 840.0217271010071 core-passthrough fast-mixed 1 defaults 36.25349998474121 848.1286017327576 core-passthrough fast-slow 1 defaults 32.09275007247925 958.0864893328157 core-extend-transform fast-slow 1 defaults 31.869500160217285 964.7980073549882 core-passthrough slow-fast 1 defaults 30.979166984558105 992.5260503390422 core-extend-transform slow-fast 1 defaults 30.577166080474854 1005.5748845087089 minipass-current-async fast-mixed 1 defaults 28.696916103363037 1071.4611332878987 minipass-current-async fast-slow 1 defaults 28.066959381103516 1095.5098424618948 core-passthrough fast-mixed 1 obj 26.775332927703857 1148.3565987022034 core-extend-transform fast-mixed 1 obj 26.36491584777832 1166.2328234803795 minipass-latest slow-slow 1 defaults 26.117584228515625 1177.2769633267353 minipass-current-async slow-slow 1 defaults 25.94129180908203 1185.2775288242347 minipass-latest slow-slow 1 str 25.474292278289795 1207.0062600397132 minipass-latest slow-slow 1 obj 24.977290630340576 1231.0234406540135 core-passthrough fast-fast 1 defaults 24.267333984375 1267.0378324118578 extend-minipass-current slow-slow 1 str 23.8774995803833 1287.7240410565437 core-extend-transform fast-fast 1 defaults 23.673917293548584 1298.7977388244149 extend-minipass-current slow-slow 1 defaults 23.53883409500122 1306.2511985887513 minipass-current-async slow-slow 1 str 23.38579225540161 1314.7995977290475 core-passthrough fast-slow 1 obj 23.09958267211914 1331.0902922540265 minipass-current slow-slow 1 str 23.042624950408936 1334.3805367726318 core-extend-transform fast-slow 1 obj 23.005332946777344 1336.5435884414935 minipass-current slow-slow 1 defaults 22.831292152404785 1346.7319346066233 extend-minipass-current slow-slow 1 obj 21.23620891571045 1447.8869732360824 minipass-latest fast-mixed 1 defaults 20.828207969665527 1476.249435129434 minipass-current slow-slow 1 obj 19.78458309173584 1554.1207063807483 minipass-latest fast-slow 1 str 19.734874725341797 1558.0352385259228 minipass-latest fast-mixed 1 str 19.701833248138428 1560.6481824670996 minipass-latest fast-slow 1 defaults 19.414709091186523 1583.7286103831073 minipass-current-async slow-slow 1 obj 18.815707683563232 1634.1468929620544 minipass-current-async fast-mixed 1 str 18.774374961853027 1637.7445487507364 extend-minipass-current fast-mixed 1 defaults 18.58133363723755 1654.7590635990703 minipass-current-async fast-slow 1 str 18.07433271408081 1701.176510158141 extend-minipass-current fast-mixed 1 str 17.90204095840454 1717.5488717414594 extend-minipass-current fast-slow 1 str 17.827374935150146 1724.7424459196268 extend-minipass-current fast-slow 1 defaults 17.689249992370605 1738.2099446408752 minipass-current fast-mixed 1 defaults 16.839958667755127 1825.8732611293258 minipass-current fast-mixed 1 str 16.83329200744629 1826.5963803381862 minipass-latest fast-mixed 1 obj 16.61987543106079 1850.0517875430667 minipass-current fast-slow 1 defaults 16.580334186553955 1854.4638427681582 minipass-latest fast-slow 1 obj 16.394832611083984 1875.4464275036082 minipass-current-async fast-fast 1 defaults 16.294415950775146 1887.0041333708807 minipass-current fast-slow 1 str 16.225249767303467 1895.0481928443787 minipass-current-async slow-fast 1 defaults 15.839667320251465 1941.1790429881942 extend-minipass-current slow-fast 1 str 15.76479196548462 1950.3987313816679 minipass-latest slow-fast 1 defaults 15.393832683563232 1997.3992755428542 extend-minipass-current slow-fast 1 defaults 15.024083614349365 2046.5561187778756 minipass-current-async slow-fast 1 str 15.014665603637695 2047.8398295149307 minipass-current-async fast-fast 1 str 14.916707992553711 2061.2879373469036 minipass-current-async slow-fast 1 obj 14.817874908447266 2075.0364299842163 core-extend-transform slow-slow 1 obj 14.769332885742188 2081.856403931408 core-passthrough slow-slow 1 obj 14.75304126739502 2084.1553746569502 minipass-current slow-fast 1 str 14.631457805633545 2101.4741427978806 minipass-current slow-fast 1 defaults 14.294374942779541 2151.0300641378194 minipass-latest slow-fast 1 str 14.280582904815674 2153.1075065296145 extend-minipass-current fast-slow 1 obj 12.602625370025635 2439.7797559790965 minipass-current-async fast-mixed 1 obj 12.601791858673096 2439.9411285955553 minipass-current-async fast-slow 1 obj 12.47458267211914 2464.8223558370796 extend-minipass-current fast-mixed 1 obj 12.456417083740234 2468.416884507905 core-extend-transform slow-fast 1 obj 12.065583229064941 2548.3749659037403 core-passthrough slow-fast 1 obj 11.86299991607666 2591.8933210399946 minipass-latest slow-fast 1 obj 11.7600417137146 2614.5851348570577 minipass-current fast-mixed 1 obj 11.486834049224854 2676.7715210486567 minipass-current fast-slow 1 obj 11.322457790374756 2715.632137407104 extend-minipass-current fast-fast 1 defaults 10.998665809631348 2795.5781894065667 minipass-latest fast-fast 1 defaults 10.866167068481445 2829.6666208238335 extend-minipass-current fast-fast 1 str 10.592041969299316 2902.8992085849077 minipass-latest fast-fast 1 str 9.983208656311035 3079.9346491210054 minipass-current fast-fast 1 defaults 9.972874641418457 3083.126115140241 minipass-current-async fast-fast 1 obj 9.839959144592285 3124.7721457131242 minipass-current fast-fast 1 str 9.307541847229004 3303.5178089616807 extend-minipass-current slow-fast 1 obj 9.241541862487793 3327.110422426843 minipass-current slow-fast 1 obj 8.58270788192749 3582.5092351939466 baseline slow-fast 1 str 8.003375053405762 3841.8329823107247 baseline slow-slow 20 str 7.897832870483398 3893.1730709180174 baseline slow-slow 1 str 7.8102922439575195 3936.8091858233865 baseline slow-fast 20 str 7.786833763122559 3948.669149146849 minipass-latest fast-fast 1 obj 7.564582824707031 4064.6828731322585 baseline slow-slow 20 defaults 7.510125160217285 4094.1568341435623 baseline slow-slow 1 defaults 7.441458225250244 4131.93615004714 extend-minipass-current fast-fast 1 obj 7.383708953857422 4164.25274101762 baseline slow-fast 20 defaults 7.3038330078125 4209.7937092877255 baseline slow-fast 1 defaults 7.280125141143799 4223.502982964696 core-extend-transform fast-fast 1 obj 6.536875247955322 4703.719909538538 core-passthrough fast-fast 1 obj 6.521208763122559 4715.020077850442 minipass-current fast-fast 1 obj 6.048374652862549 5083.618660332988 baseline slow-fast 1 obj 5.887584209442139 5222.452733782727 baseline slow-slow 20 obj 5.646541118621826 5445.392073489727 baseline slow-fast 20 obj 5.621959209442139 5469.20194624254 baseline slow-slow 1 obj 5.609624862670898 5481.227533517688 baseline fast-mixed 1 defaults 3.6585421562194824 8404.339471039433 baseline fast-slow 20 defaults 3.5812501907348633 8585.725266982192 baseline fast-mixed 20 defaults 3.5488338470458984 8664.150415374304 baseline fast-slow 1 defaults 3.507875442504883 8765.314149245 baseline fast-fast 1 defaults 3.4846248626708984 8823.799250060347 baseline fast-fast 20 defaults 3.3921661376953125 9064.30552097531 baseline fast-fast 20 str 2.8175411224365234 10912.930428993172 baseline fast-slow 1 str 2.7819581031799316 11052.513772522625 baseline fast-slow 20 str 2.7803330421447754 11058.973793390629 baseline fast-mixed 1 str 2.732333183288574 11253.25067895635 baseline fast-mixed 20 str 2.683958053588867 11456.077045936978 baseline fast-fast 1 str 2.6225829124450684 11724.178520369713 baseline fast-fast 20 obj 1.8565001487731934 16562.148012913258 baseline fast-slow 1 obj 1.794041633605957 17138.749555201524 baseline fast-mixed 1 obj 1.7576251029968262 17493.850194533 baseline fast-mixed 20 obj 1.748208999633789 17588.07457027052 baseline fast-fast 1 obj 1.7300000190734863 17773.196480335428 baseline fast-slow 20 obj 1.7018342018127441 18067.347698868452 minipass-3.3.6/bench/results/000077500000000000000000000000001434007227000161255ustar00rootroot00000000000000minipass-3.3.6/bench/results/baseline-fast-fast-1.json000066400000000000000000000001361434007227000226260ustar00rootroot00000000000000{ "defaults": 3.4846248626708984, "str": 2.6225829124450684, "obj": 1.7300000190734863 }minipass-3.3.6/bench/results/baseline-fast-fast-20.json000066400000000000000000000001361434007227000227070ustar00rootroot00000000000000{ "defaults": 3.3921661376953125, "str": 2.8175411224365234, "obj": 1.8565001487731934 }minipass-3.3.6/bench/results/baseline-fast-mixed-1.json000066400000000000000000000001351434007227000227760ustar00rootroot00000000000000{ "defaults": 3.6585421562194824, "str": 2.732333183288574, "obj": 1.7576251029968262 }minipass-3.3.6/bench/results/baseline-fast-mixed-20.json000066400000000000000000000001341434007227000230560ustar00rootroot00000000000000{ "defaults": 3.5488338470458984, "str": 2.683958053588867, "obj": 1.748208999633789 }minipass-3.3.6/bench/results/baseline-fast-slow-1.json000066400000000000000000000001341434007227000226530ustar00rootroot00000000000000{ "defaults": 3.507875442504883, "str": 2.7819581031799316, "obj": 1.794041633605957 }minipass-3.3.6/bench/results/baseline-fast-slow-20.json000066400000000000000000000001361434007227000227360ustar00rootroot00000000000000{ "defaults": 3.5812501907348633, "str": 2.7803330421447754, "obj": 1.7018342018127441 }minipass-3.3.6/bench/results/baseline-slow-fast-1.json000066400000000000000000000001331434007227000226520ustar00rootroot00000000000000{ "defaults": 7.280125141143799, "str": 8.003375053405762, "obj": 5.887584209442139 }minipass-3.3.6/bench/results/baseline-slow-fast-20.json000066400000000000000000000001311434007227000227310ustar00rootroot00000000000000{ "defaults": 7.3038330078125, "str": 7.786833763122559, "obj": 5.621959209442139 }minipass-3.3.6/bench/results/baseline-slow-slow-1.json000066400000000000000000000001341434007227000227020ustar00rootroot00000000000000{ "defaults": 7.441458225250244, "str": 7.8102922439575195, "obj": 5.609624862670898 }minipass-3.3.6/bench/results/baseline-slow-slow-20.json000066400000000000000000000001331434007227000227620ustar00rootroot00000000000000{ "defaults": 7.510125160217285, "str": 7.897832870483398, "obj": 5.646541118621826 }minipass-3.3.6/bench/results/core-extend-transform-fast-fast-1.json000066400000000000000000000001351434007227000252710ustar00rootroot00000000000000{ "defaults": 23.673917293548584, "str": 1417.3917908668518, "obj": 6.536875247955322 }minipass-3.3.6/bench/results/core-extend-transform-fast-fast-20.json000066400000000000000000000001341434007227000253510ustar00rootroot00000000000000{ "defaults": 226.87533378601074, "str": 29134.15249967575, "obj": 73.56233310699463 }minipass-3.3.6/bench/results/core-extend-transform-fast-mixed-1.json000066400000000000000000000001341434007227000254410ustar00rootroot00000000000000{ "defaults": 36.60337495803833, "str": 1461.4726247787476, "obj": 26.36491584777832 }minipass-3.3.6/bench/results/core-extend-transform-fast-mixed-20.json000066400000000000000000000001341434007227000255220ustar00rootroot00000000000000{ "defaults": 274.6799998283386, "str": 30747.63024997711, "obj": 199.47045803070068 }minipass-3.3.6/bench/results/core-extend-transform-fast-slow-1.json000066400000000000000000000001361434007227000253210ustar00rootroot00000000000000{ "defaults": 31.869500160217285, "str": 1441.7533750534058, "obj": 23.005332946777344 }minipass-3.3.6/bench/results/core-extend-transform-fast-slow-20.json000066400000000000000000000001361434007227000254020ustar00rootroot00000000000000{ "defaults": 266.26683282852173, "str": 30113.022541046143, "obj": 122.05166673660278 }minipass-3.3.6/bench/results/core-extend-transform-slow-fast-1.json000066400000000000000000000001351434007227000253200ustar00rootroot00000000000000{ "defaults": 30.577166080474854, "str": 1429.897292137146, "obj": 12.065583229064941 }minipass-3.3.6/bench/results/core-extend-transform-slow-fast-20.json000066400000000000000000000001351434007227000254010ustar00rootroot00000000000000{ "defaults": 249.86824989318848, "str": 29110.925499916077, "obj": 78.86537504196167 }minipass-3.3.6/bench/results/core-extend-transform-slow-slow-1.json000066400000000000000000000001351434007227000253470ustar00rootroot00000000000000{ "defaults": 37.39179086685181, "str": 1443.0942077636719, "obj": 14.769332885742188 }minipass-3.3.6/bench/results/core-extend-transform-slow-slow-20.json000066400000000000000000000001331434007227000254260ustar00rootroot00000000000000{ "defaults": 267.4429588317871, "str": 29411.705083847046, "obj": 98.4611668586731 }minipass-3.3.6/bench/results/core-passthrough-fast-fast-1.json000066400000000000000000000001321434007227000243350ustar00rootroot00000000000000{ "defaults": 24.267333984375, "str": 1419.7792496681213, "obj": 6.521208763122559 }minipass-3.3.6/bench/results/core-passthrough-fast-fast-100.json000066400000000000000000000000351434007227000244770ustar00rootroot00000000000000{ "obj": 407.321750164032 }minipass-3.3.6/bench/results/core-passthrough-fast-fast-20.json000066400000000000000000000001341434007227000244200ustar00rootroot00000000000000{ "defaults": 219.50999975204468, "str": 29222.67541694641, "obj": 73.49420881271362 }minipass-3.3.6/bench/results/core-passthrough-fast-mixed-1.json000066400000000000000000000001351434007227000245110ustar00rootroot00000000000000{ "defaults": 36.25349998474121, "str": 1454.6930408477783, "obj": 26.775332927703857 }minipass-3.3.6/bench/results/core-passthrough-fast-mixed-100.json000066400000000000000000000000361434007227000246510ustar00rootroot00000000000000{ "obj": 722.3131666183472 }minipass-3.3.6/bench/results/core-passthrough-fast-mixed-20.json000066400000000000000000000001341434007227000245710ustar00rootroot00000000000000{ "defaults": 274.4687910079956, "str": 30447.11287498474, "obj": 129.18008375167847 }minipass-3.3.6/bench/results/core-passthrough-fast-slow-1.json000066400000000000000000000001341434007227000243660ustar00rootroot00000000000000{ "defaults": 32.09275007247925, "str": 1448.1420831680298, "obj": 23.09958267211914 }minipass-3.3.6/bench/results/core-passthrough-fast-slow-100.json000066400000000000000000000000361434007227000245270ustar00rootroot00000000000000{ "obj": 713.4662504196167 }minipass-3.3.6/bench/results/core-passthrough-fast-slow-20.json000066400000000000000000000001351434007227000244500ustar00rootroot00000000000000{ "defaults": 272.5765838623047, "str": 29451.729625225067, "obj": 126.37016582489014 }minipass-3.3.6/bench/results/core-passthrough-mixed-1.json000066400000000000000000000000171434007227000235550ustar00rootroot00000000000000{ "obj": {} }minipass-3.3.6/bench/results/core-passthrough-slow-fast-1.json000066400000000000000000000001351434007227000243670ustar00rootroot00000000000000{ "defaults": 30.979166984558105, "str": 1430.5638751983643, "obj": 11.86299991607666 }minipass-3.3.6/bench/results/core-passthrough-slow-fast-20.json000066400000000000000000000001331434007227000244460ustar00rootroot00000000000000{ "defaults": 256.4482922554016, "str": 29077.25270795822, "obj": 78.67212533950806 }minipass-3.3.6/bench/results/core-passthrough-slow-slow-1.json000066400000000000000000000001341434007227000244150ustar00rootroot00000000000000{ "defaults": 37.59954214096069, "str": 1446.2176671028137, "obj": 14.75304126739502 }minipass-3.3.6/bench/results/core-passthrough-slow-slow-100.json000066400000000000000000000000371434007227000245570ustar00rootroot00000000000000{ "obj": 423.62200021743774 }minipass-3.3.6/bench/results/core-passthrough-slow-slow-20.json000066400000000000000000000001341434007227000244760ustar00rootroot00000000000000{ "defaults": 263.0804166793823, "str": 29246.384957790375, "obj": 93.67749977111816 }minipass-3.3.6/bench/results/core-transform-fast-fast-20.json000066400000000000000000000002071434007227000240650ustar00rootroot00000000000000{ "obj": { "code": "MODULE_NOT_FOUND", "requireStack": [ "/Users/isaacs/dev/isaacs/minipass/bench/index.js" ] } }minipass-3.3.6/bench/results/extend-core-passthroughfast-fast-20-obj.json000066400000000000000000000006261434007227000264060ustar00rootroot00000000000000{ "defaults": { "code": "MODULE_NOT_FOUND", "requireStack": [ "/Users/isaacs/dev/isaacs/minipass/bench/index.js" ] }, "str": { "code": "MODULE_NOT_FOUND", "requireStack": [ "/Users/isaacs/dev/isaacs/minipass/bench/index.js" ] }, "obj": { "code": "MODULE_NOT_FOUND", "requireStack": [ "/Users/isaacs/dev/isaacs/minipass/bench/index.js" ] } }minipass-3.3.6/bench/results/extend-core-transform-fast-fast-20.json000066400000000000000000000002071434007227000253520ustar00rootroot00000000000000{ "obj": { "code": "MODULE_NOT_FOUND", "requireStack": [ "/Users/isaacs/dev/isaacs/minipass/bench/index.js" ] } }minipass-3.3.6/bench/results/extend-minipass-current-fast-fast-1.json000066400000000000000000000001351434007227000256330ustar00rootroot00000000000000{ "defaults": 10.998665809631348, "str": 10.592041969299316, "obj": 7.383708953857422 }minipass-3.3.6/bench/results/extend-minipass-current-fast-fast-20.json000066400000000000000000000001351434007227000257140ustar00rootroot00000000000000{ "defaults": 108.50787496566772, "str": 114.95495796203613, "obj": 83.29762506484985 }minipass-3.3.6/bench/results/extend-minipass-current-fast-mixed-1.json000066400000000000000000000001341434007227000260030ustar00rootroot00000000000000{ "defaults": 18.58133363723755, "str": 17.90204095840454, "obj": 12.456417083740234 }minipass-3.3.6/bench/results/extend-minipass-current-fast-mixed-20.json000066400000000000000000000001341434007227000260640ustar00rootroot00000000000000{ "defaults": 214.0547080039978, "str": 224.0742907524109, "obj": 188.06141567230225 }minipass-3.3.6/bench/results/extend-minipass-current-fast-slow-1.json000066400000000000000000000001361434007227000256630ustar00rootroot00000000000000{ "defaults": 17.689249992370605, "str": 17.827374935150146, "obj": 12.602625370025635 }minipass-3.3.6/bench/results/extend-minipass-current-fast-slow-20.json000066400000000000000000000001351434007227000257430ustar00rootroot00000000000000{ "defaults": 213.12683391571045, "str": 222.7903332710266, "obj": 186.86549997329712 }minipass-3.3.6/bench/results/extend-minipass-current-slow-fast-1.json000066400000000000000000000001341434007227000256610ustar00rootroot00000000000000{ "defaults": 15.024083614349365, "str": 15.76479196548462, "obj": 9.241541862487793 }minipass-3.3.6/bench/results/extend-minipass-current-slow-fast-20.json000066400000000000000000000001341434007227000257420ustar00rootroot00000000000000{ "defaults": 110.9661660194397, "str": 113.89054203033447, "obj": 87.91937494277954 }minipass-3.3.6/bench/results/extend-minipass-current-slow-slow-1.json000066400000000000000000000001321434007227000257060ustar00rootroot00000000000000{ "defaults": 23.53883409500122, "str": 23.8774995803833, "obj": 21.23620891571045 }minipass-3.3.6/bench/results/extend-minipass-current-slow-slow-20.json000066400000000000000000000001351434007227000257720ustar00rootroot00000000000000{ "defaults": 216.60487508773804, "str": 229.88083410263062, "obj": 197.5637083053589 }minipass-3.3.6/bench/results/extend-minipass-fast-fast-1.json000066400000000000000000000001341434007227000241520ustar00rootroot00000000000000{ "defaults": 12.583540916442871, "str": 12.105957984924316, "obj": 9.06024980545044 }minipass-3.3.6/bench/results/extend-minipass-fast-fast-20.json000066400000000000000000000001361434007227000242350ustar00rootroot00000000000000{ "defaults": 126.18258285522461, "str": 128.73254108428955, "obj": 105.26249980926514 }minipass-3.3.6/bench/results/extend-minipass-fast-mixed-1.json000066400000000000000000000001341434007227000243230ustar00rootroot00000000000000{ "defaults": 21.804834365844727, "str": 20.67766571044922, "obj": 18.17937469482422 }minipass-3.3.6/bench/results/extend-minipass-fast-mixed-20.json000066400000000000000000000001341434007227000244040ustar00rootroot00000000000000{ "defaults": 284.1690001487732, "str": 296.5096673965454, "obj": 267.44170808792114 }minipass-3.3.6/bench/results/extend-minipass-fast-slow-1.json000066400000000000000000000001341434007227000242010ustar00rootroot00000000000000{ "defaults": 20.50854206085205, "str": 20.54229211807251, "obj": 17.428500175476074 }minipass-3.3.6/bench/results/extend-minipass-fast-slow-20.json000066400000000000000000000001341434007227000242620ustar00rootroot00000000000000{ "defaults": 276.1806254386902, "str": 293.58387517929077, "obj": 276.8616247177124 }minipass-3.3.6/bench/results/extend-minipass-slow-fast-1.json000066400000000000000000000001351434007227000242020ustar00rootroot00000000000000{ "defaults": 16.363709449768066, "str": 15.237417221069336, "obj": 12.49150037765503 }minipass-3.3.6/bench/results/extend-minipass-slow-fast-20.json000066400000000000000000000001361434007227000242640ustar00rootroot00000000000000{ "defaults": 125.16524982452393, "str": 128.87895822525024, "obj": 110.46454191207886 }minipass-3.3.6/bench/results/extend-minipass-slow-slow-1.json000066400000000000000000000001351434007227000242310ustar00rootroot00000000000000{ "defaults": 27.080874919891357, "str": 26.84391689300537, "obj": 26.955999851226807 }minipass-3.3.6/bench/results/extend-minipass-slow-slow-20.json000066400000000000000000000001331434007227000243100ustar00rootroot00000000000000{ "defaults": 274.1978340148926, "str": 294.1859998703003, "obj": 277.8759160041809 }minipass-3.3.6/bench/results/extend-through2-fast-fast-1.json000066400000000000000000000001351434007227000240720ustar00rootroot00000000000000{ "defaults": 24.68295907974243, "str": 1409.8773746490479, "obj": 21.667250156402588 }minipass-3.3.6/bench/results/extend-through2-fast-fast-20.json000066400000000000000000000001341434007227000241520ustar00rootroot00000000000000{ "defaults": 289.5474581718445, "str": 1649.342541694641, "obj": 235.78379201889038 }minipass-3.3.6/bench/results/extend-through2-fast-mixed-1.json000066400000000000000000000001361434007227000242440ustar00rootroot00000000000000{ "defaults": 26.036499977111816, "str": 1378.7794170379639, "obj": 16.916458129882812 }minipass-3.3.6/bench/results/extend-through2-fast-mixed-20.json000066400000000000000000000001331434007227000243220ustar00rootroot00000000000000{ "defaults": 242.00229215621948, "str": 1575.54691696167, "obj": 149.2092089653015 }minipass-3.3.6/bench/results/extend-through2-fast-slow-1.json000066400000000000000000000001361434007227000241220ustar00rootroot00000000000000{ "defaults": 24.177124977111816, "str": 1384.6977500915527, "obj": 16.081832885742188 }minipass-3.3.6/bench/results/extend-through2-fast-slow-20.json000066400000000000000000000001361434007227000242030ustar00rootroot00000000000000{ "defaults": 239.68829202651978, "str": 1595.5013337135315, "obj": 154.00483322143555 }minipass-3.3.6/bench/results/extend-through2-slow-fast-1.json000066400000000000000000000001351434007227000241210ustar00rootroot00000000000000{ "defaults": 30.115875244140625, "str": 1383.3513751029968, "obj": 32.43433332443237 }minipass-3.3.6/bench/results/extend-through2-slow-fast-20.json000066400000000000000000000001331434007227000242000ustar00rootroot00000000000000{ "defaults": 312.4208331108093, "str": 1739.513334274292, "obj": 239.5954999923706 }minipass-3.3.6/bench/results/extend-through2-slow-slow-1.json000066400000000000000000000001341434007227000241470ustar00rootroot00000000000000{ "defaults": 35.7008752822876, "str": 1406.1673340797424, "obj": 37.660542011260986 }minipass-3.3.6/bench/results/extend-through2-slow-slow-20.json000066400000000000000000000001361434007227000242320ustar00rootroot00000000000000{ "defaults": 298.22725009918213, "str": 1673.6373329162598, "obj": 248.40116691589355 }minipass-3.3.6/bench/results/minipass-current-async-fast-fast-1.json000066400000000000000000000001351434007227000254610ustar00rootroot00000000000000{ "defaults": 16.294415950775146, "str": 14.916707992553711, "obj": 9.839959144592285 }minipass-3.3.6/bench/results/minipass-current-async-fast-fast-20.json000066400000000000000000000001351434007227000255420ustar00rootroot00000000000000{ "defaults": 159.47150039672852, "str": 163.9047498703003, "obj": 131.72820806503296 }minipass-3.3.6/bench/results/minipass-current-async-fast-mixed-1.json000066400000000000000000000001361434007227000256330ustar00rootroot00000000000000{ "defaults": 28.696916103363037, "str": 18.774374961853027, "obj": 12.601791858673096 }minipass-3.3.6/bench/results/minipass-current-async-fast-mixed-20.json000066400000000000000000000001361434007227000257140ustar00rootroot00000000000000{ "defaults": 167.80179071426392, "str": 171.08720779418945, "obj": 138.03287506103516 }minipass-3.3.6/bench/results/minipass-current-async-fast-slow-1.json000066400000000000000000000001341434007227000255070ustar00rootroot00000000000000{ "defaults": 28.066959381103516, "str": 18.07433271408081, "obj": 12.47458267211914 }minipass-3.3.6/bench/results/minipass-current-async-fast-slow-20.json000066400000000000000000000001351434007227000255710ustar00rootroot00000000000000{ "defaults": 165.56383275985718, "str": 170.0132918357849, "obj": 137.74329233169556 }minipass-3.3.6/bench/results/minipass-current-async-slow-fast-1.json000066400000000000000000000001361434007227000255110ustar00rootroot00000000000000{ "defaults": 15.839667320251465, "str": 15.014665603637695, "obj": 14.817874908447266 }minipass-3.3.6/bench/results/minipass-current-async-slow-fast-20.json000066400000000000000000000001351434007227000255710ustar00rootroot00000000000000{ "defaults": 106.81470775604248, "str": 110.63445901870728, "obj": 81.92266702651978 }minipass-3.3.6/bench/results/minipass-current-async-slow-slow-1.json000066400000000000000000000001341434007227000255360ustar00rootroot00000000000000{ "defaults": 25.94129180908203, "str": 23.38579225540161, "obj": 18.815707683563232 }minipass-3.3.6/bench/results/minipass-current-async-slow-slow-20.json000066400000000000000000000001361434007227000256210ustar00rootroot00000000000000{ "defaults": 270.37124967575073, "str": 260.62041664123535, "obj": 224.95733261108398 }minipass-3.3.6/bench/results/minipass-current-fast-fast-1.json000066400000000000000000000001331434007227000243440ustar00rootroot00000000000000{ "defaults": 9.972874641418457, "str": 9.307541847229004, "obj": 6.048374652862549 }minipass-3.3.6/bench/results/minipass-current-fast-fast-20.json000066400000000000000000000001331434007227000244250ustar00rootroot00000000000000{ "defaults": 88.68699979782104, "str": 93.47599983215332, "obj": 67.34345817565918 }minipass-3.3.6/bench/results/minipass-current-fast-mixed-1.json000066400000000000000000000001351434007227000245170ustar00rootroot00000000000000{ "defaults": 16.839958667755127, "str": 16.83329200744629, "obj": 11.486834049224854 }minipass-3.3.6/bench/results/minipass-current-fast-mixed-100.json000066400000000000000000000000361434007227000246570ustar00rootroot00000000000000{ "obj": 676.8444590568542 }minipass-3.3.6/bench/results/minipass-current-fast-mixed-20.json000066400000000000000000000001361434007227000246010ustar00rootroot00000000000000{ "defaults": 187.45829105377197, "str": 198.75245904922485, "obj": 166.30270767211914 }minipass-3.3.6/bench/results/minipass-current-fast-slow-1.json000066400000000000000000000001361434007227000243760ustar00rootroot00000000000000{ "defaults": 16.580334186553955, "str": 16.225249767303467, "obj": 11.322457790374756 }minipass-3.3.6/bench/results/minipass-current-fast-slow-20.json000066400000000000000000000001361434007227000244570ustar00rootroot00000000000000{ "defaults": 184.97087478637695, "str": 197.72462511062622, "obj": 165.23862504959106 }minipass-3.3.6/bench/results/minipass-current-slow-fast-1.json000066400000000000000000000001341434007227000243740ustar00rootroot00000000000000{ "defaults": 14.294374942779541, "str": 14.631457805633545, "obj": 8.58270788192749 }minipass-3.3.6/bench/results/minipass-current-slow-fast-20.json000066400000000000000000000001331434007227000244540ustar00rootroot00000000000000{ "defaults": 94.26279211044312, "str": 95.58812522888184, "obj": 68.56379222869873 }minipass-3.3.6/bench/results/minipass-current-slow-slow-1.json000066400000000000000000000001351434007227000244240ustar00rootroot00000000000000{ "defaults": 22.831292152404785, "str": 23.042624950408936, "obj": 19.78458309173584 }minipass-3.3.6/bench/results/minipass-current-slow-slow-20.json000066400000000000000000000001361434007227000245060ustar00rootroot00000000000000{ "defaults": 189.56308364868164, "str": 199.00683307647705, "obj": 170.29383325576782 }minipass-3.3.6/bench/results/minipass-latest-fast-fast-1.json000066400000000000000000000001341434007227000241570ustar00rootroot00000000000000{ "defaults": 10.866167068481445, "str": 9.983208656311035, "obj": 7.564582824707031 }minipass-3.3.6/bench/results/minipass-latest-fast-fast-20.json000066400000000000000000000001341434007227000242400ustar00rootroot00000000000000{ "defaults": 101.7110424041748, "str": 106.13970756530762, "obj": 82.52587509155273 }minipass-3.3.6/bench/results/minipass-latest-fast-mixed-1.json000066400000000000000000000001351434007227000243310ustar00rootroot00000000000000{ "defaults": 20.828207969665527, "str": 19.701833248138428, "obj": 16.61987543106079 }minipass-3.3.6/bench/results/minipass-latest-fast-mixed-20.json000066400000000000000000000001341434007227000244110ustar00rootroot00000000000000{ "defaults": 246.4864583015442, "str": 266.0526661872864, "obj": 240.15312480926514 }minipass-3.3.6/bench/results/minipass-latest-fast-slow-1.json000066400000000000000000000001361434007227000242100ustar00rootroot00000000000000{ "defaults": 19.414709091186523, "str": 19.734874725341797, "obj": 16.394832611083984 }minipass-3.3.6/bench/results/minipass-latest-fast-slow-20.json000066400000000000000000000001351434007227000242700ustar00rootroot00000000000000{ "defaults": 245.7106671333313, "str": 265.93070793151855, "obj": 240.51108312606812 }minipass-3.3.6/bench/results/minipass-latest-slow-fast-1.json000066400000000000000000000001341434007227000242060ustar00rootroot00000000000000{ "defaults": 15.393832683563232, "str": 14.280582904815674, "obj": 11.7600417137146 }minipass-3.3.6/bench/results/minipass-latest-slow-fast-20.json000066400000000000000000000001341434007227000242670ustar00rootroot00000000000000{ "defaults": 103.7354998588562, "str": 107.90645933151245, "obj": 90.60833311080933 }minipass-3.3.6/bench/results/minipass-latest-slow-slow-1.json000066400000000000000000000001361434007227000242370ustar00rootroot00000000000000{ "defaults": 26.117584228515625, "str": 25.474292278289795, "obj": 24.977290630340576 }minipass-3.3.6/bench/results/minipass-latest-slow-slow-20.json000066400000000000000000000001331434007227000243150ustar00rootroot00000000000000{ "defaults": 246.13241577148438, "str": 256.8340826034546, "obj": 236.080500125885 }minipass-3.3.6/bench/results/push-through-fast-fast-1.json000066400000000000000000000001341434007227000234770ustar00rootroot00000000000000{ "defaults": 4.571958065032959, "str": 4.329500198364258, "obj": 0.9436254501342773 }minipass-3.3.6/bench/results/push-through-fast-fast-20.json000066400000000000000000000000561434007227000235630ustar00rootroot00000000000000{ "defaults": {}, "str": {}, "obj": {} }minipass-3.3.6/bench/results/push-through-fast-mixed-1.json000066400000000000000000000001321434007227000236460ustar00rootroot00000000000000{ "defaults": 8.806500434875488, "str": 7.162916660308838, "obj": 3.48104190826416 }minipass-3.3.6/bench/results/push-through-fast-mixed-20.json000066400000000000000000000000561434007227000237340ustar00rootroot00000000000000{ "defaults": {}, "str": {}, "obj": {} }minipass-3.3.6/bench/results/push-through-fast-slow-1.json000066400000000000000000000001341434007227000235260ustar00rootroot00000000000000{ "defaults": 8.510458946228027, "str": 6.624207973480225, "obj": 3.3635826110839844 }minipass-3.3.6/bench/results/push-through-fast-slow-20.json000066400000000000000000000000561434007227000236120ustar00rootroot00000000000000{ "defaults": {}, "str": {}, "obj": {} }minipass-3.3.6/bench/results/push-through-slow-fast-1.json000066400000000000000000000001331434007227000235250ustar00rootroot00000000000000{ "defaults": 8.911791801452637, "str": 9.212250232696533, "obj": 6.082250118255615 }minipass-3.3.6/bench/results/push-through-slow-fast-20.json000066400000000000000000000000561434007227000236120ustar00rootroot00000000000000{ "defaults": {}, "str": {}, "obj": {} }minipass-3.3.6/bench/results/push-through-slow-slow-1.json000066400000000000000000000001341434007227000235550ustar00rootroot00000000000000{ "defaults": 16.439791202545166, "str": 14.342957973480225, "obj": 11.8979172706604 }minipass-3.3.6/bench/results/push-through-slow-slow-20.json000066400000000000000000000000561434007227000236410ustar00rootroot00000000000000{ "defaults": {}, "str": {}, "obj": {} }minipass-3.3.6/bench/results/through2-fast-fast-1.json000066400000000000000000000001361434007227000226060ustar00rootroot00000000000000{ "defaults": 23.358792304992676, "str": 1519.4609580039978, "obj": 18.863791942596436 }minipass-3.3.6/bench/results/through2-fast-fast-20.json000066400000000000000000000001341434007227000226650ustar00rootroot00000000000000{ "defaults": 269.9025411605835, "str": 30722.50658416748, "obj": 237.11420822143555 }minipass-3.3.6/bench/results/through2-fast-mixed-1.json000066400000000000000000000001361434007227000227570ustar00rootroot00000000000000{ "defaults": 25.791290760040283, "str": 1463.4079580307007, "obj": 16.932791233062744 }minipass-3.3.6/bench/results/through2-fast-mixed-20.json000066400000000000000000000001361434007227000230400ustar00rootroot00000000000000{ "defaults": 237.30966711044312, "str": 36814.678584098816, "obj": 142.29699993133545 }minipass-3.3.6/bench/results/through2-fast-slow-1.json000066400000000000000000000001351434007227000226340ustar00rootroot00000000000000{ "defaults": 23.46716594696045, "str": 1448.8229160308838, "obj": 14.695291996002197 }minipass-3.3.6/bench/results/through2-fast-slow-20.json000066400000000000000000000001351434007227000227150ustar00rootroot00000000000000{ "defaults": 235.12229204177856, "str": 36618.73558282852, "obj": 148.23050022125244 }minipass-3.3.6/bench/results/through2-slow-fast-1.json000066400000000000000000000001341434007227000226330ustar00rootroot00000000000000{ "defaults": 30.843832969665527, "str": 1474.772541999817, "obj": 30.43804121017456 }minipass-3.3.6/bench/results/through2-slow-fast-20.json000066400000000000000000000001351434007227000227150ustar00rootroot00000000000000{ "defaults": 284.6131248474121, "str": 29469.896290779114, "obj": 238.76466703414917 }minipass-3.3.6/bench/results/through2-slow-slow-1.json000066400000000000000000000001341434007227000226620ustar00rootroot00000000000000{ "defaults": 34.66804075241089, "str": 1452.2015419006348, "obj": 37.72975015640259 }minipass-3.3.6/bench/results/through2-slow-slow-20.json000066400000000000000000000001361434007227000227450ustar00rootroot00000000000000{ "defaults": 294.61695766448975, "str": 29603.270833015442, "obj": 264.94858407974243 }minipass-3.3.6/bench/test.js000066400000000000000000000103021434007227000157350ustar00rootroot00000000000000'use strict' const iterations = +process.env.BENCH_TEST_ITERATION || 100 const testCount = +process.env.BENCH_TEST_COUNT || 20 const tests = [ 'baseline', 'minipass', 'extend-minipass', 'through2', 'extend-through2', 'passthrough', 'extend-transform' ] const manyOpts = [ 'many', 'single' ] const typeOpts = [ 'buffer', 'string', 'object' ] const main = () => { const spawn = require('child_process').spawn const node = process.execPath const results = {} const testSet = [] tests.forEach(t => manyOpts.forEach(many => typeOpts.forEach(type => new Array(testCount).join(',').split(',').forEach(() => t !== 'baseline' || (many === 'single' && type === 'object') ? testSet.push([t, many, type]) : null)))) let didFirst = false const mainRunTest = t => { if (!t) return afterMain(results) const k = t.join('\t') if (!results[k]) { results[k] = [] if (!didFirst) didFirst = true else process.stderr.write('\n') process.stderr.write(k + ' #') } else { process.stderr.write('#') } const c = spawn(node, [__filename].concat(t), { stdio: [ 'ignore', 'pipe', 2 ] }) let out = '' c.stdout.on('data', c => out += c) c.on('close', (code, signal) => { if (code || signal) throw new Error('failed: ' + code + ' ' + signal) results[k].push(+out) mainRunTest(testSet.shift()) }) } mainRunTest(testSet.shift()) } const afterMain = results => { console.log('test\tmany\ttype\tops/s\tmean\tmedian\tmax\tmin' + '\tstdev\trange\traw') // get the mean, median, stddev, and range of each test Object.keys(results).forEach(test => { const k = results[test].sort((a, b) => a - b) const min = k[0] const max = k[ k.length - 1 ] const range = max - min const sum = k.reduce((a,b) => a + b, 0) const mean = sum / k.length const ops = iterations / mean * 1000 const devs = k.map(n => n - mean).map(n => n * n) const avgdev = devs.reduce((a,b) => a + b, 0) / k.length const stdev = Math.pow(avgdev, 0.5) const median = k.length % 2 ? k[Math.floor(k.length / 2)] : (k[k.length/2] + k[k.length/2+1])/2 console.log( '%s\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%s', test, round(ops), round(mean), round(median), max, min, round(stdev), round(range), k.join('\t')) }) } const round = num => Math.round(num * 1000)/1000 const test = (testname, many, type) => { const timer = require('./lib/timer.js') const Class = getClass(testname) const done = timer() runTest(Class, many, type, iterations, done) } // don't blow up the stack! loop unless deferred const runTest = (Class, many, type, iterations, done) => { const Nullsink = require('./lib/nullsink.js') const Numbers = require('./lib/numbers.js') const opt = {} if (type === 'string') opt.encoding = 'utf8' else if (type === 'object') opt.objectMode = true while (iterations--) { let finished = false let inloop = true const after = iterations === 0 ? done : () => { if (iterations === 0) done() else if (inloop) finished = true else runTest(Class, many, type, iterations, done) } const out = new Nullsink().on('finish', after) let sink = Class ? new Class(opt) : out if (many && Class) sink = sink .pipe(new Class(opt)) .pipe(new Class(opt)) .pipe(new Class(opt)) .pipe(new Class(opt)) if (sink !== out) sink.pipe(out) new Numbers(opt).pipe(sink) // keep tight-looping if the stream is done already if (!finished) { inloop = false break } } } const getClass = testname => testname === 'through2' ? require('through2').obj : testname === 'extend-through2' ? require('./lib/extend-through2.js') : testname === 'minipass' ? require('../') : testname === 'extend-minipass' ? require('./lib/extend-minipass.js') : testname === 'passthrough' ? require('stream').PassThrough : testname === 'extend-transform' ? require('./lib/extend-transform.js') : null if (!process.argv[2]) main() else test(process.argv[2], process.argv[3] === 'many', process.argv[4]) minipass-3.3.6/index.d.ts000066400000000000000000000102001434007227000152370ustar00rootroot00000000000000/// import { EventEmitter } from 'events' import { Stream } from 'stream' declare namespace Minipass { type Encoding = BufferEncoding | 'buffer' | null interface Writable extends EventEmitter { end(): any write(chunk: any, ...args: any[]): any } interface Readable extends EventEmitter { pause(): any resume(): any pipe(): any } interface Pipe { src: Minipass dest: Writable opts: PipeOptions } type DualIterable = Iterable & AsyncIterable type ContiguousData = Buffer | ArrayBufferLike | ArrayBufferView | string type BufferOrString = Buffer | string interface StringOptions { encoding: BufferEncoding objectMode?: boolean async?: boolean } interface BufferOptions { encoding?: null | 'buffer' objectMode?: boolean async?: boolean } interface ObjectModeOptions { objectMode: true async?: boolean } interface PipeOptions { end?: boolean proxyErrors?: boolean } type Options = T extends string ? StringOptions : T extends Buffer ? BufferOptions : ObjectModeOptions } declare class Minipass< RType extends any = Buffer, WType extends any = RType extends Minipass.BufferOrString ? Minipass.ContiguousData : RType > 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 paused: boolean readonly emittedEnd: boolean readonly destroyed: boolean /** * Not technically private or readonly, but not safe to mutate. */ private readonly buffer: RType[] private readonly pipes: Minipass.Pipe[] /** * 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] ) 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 /** * alias for on() */ addEventHandler(event: string, listener: (...args: any[]) => any): this on(event: string, listener: (...args: any[]) => any): this on(event: 'data', listener: (chunk: RType) => any): this on(event: 'error', listener: (error: any) => any): this on( event: | 'readable' | 'drain' | 'resume' | 'end' | 'prefinish' | 'finish' | 'close', listener: () => any ): this [Symbol.iterator](): Iterator [Symbol.asyncIterator](): AsyncIterator } export = Minipass minipass-3.3.6/index.js000066400000000000000000000403671434007227000150240ustar00rootroot00000000000000'use strict' const proc = typeof process === 'object' && process ? process : { stdout: null, stderr: null, } const EE = require('events') const Stream = require('stream') const SD = require('string_decoder').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 BUFFERLENGTH = Symbol('bufferLength') const BUFFERPUSH = Symbol('bufferPush') const BUFFERSHIFT = Symbol('bufferShift') const OBJECTMODE = Symbol('objectMode') const DESTROYED = Symbol('destroyed') const EMITDATA = Symbol('emitData') const EMITEND = Symbol('emitEnd') const EMITEND2 = Symbol('emitEnd2') const ASYNC = Symbol('async') 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) } } module.exports = 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 } 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 } write (chunk, encoding, cb) { 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.buffer.length) { 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]())) if (!noDrain && !this.buffer.length && !this[EOF]) this.emit('drain') } [FLUSHCHUNK] (chunk) { return chunk ? (this.emit('data', chunk), this.flowing) : false } 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 !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 const ret = super.emit('error', data) 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] () { const next = () => { const res = this.read() if (res !== null) return Promise.resolve({ done: false, value: res }) if (this[EOF]) return Promise.resolve({ done: true }) let resolve = null let reject = null const onerr = er => { this.removeListener('data', ondata) this.removeListener('end', onend) reject(er) } const ondata = value => { this.removeListener('error', onerr) this.removeListener('end', onend) this.pause() resolve({ value: value, done: !!this[EOF] }) } const onend = () => { this.removeListener('error', onerr) this.removeListener('data', ondata) 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 } } // for (let chunk of stream) [ITERATOR] () { const next = () => { const value = this.read() const done = value === null return { value, done } } return { next } } 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) else // if no error to emit, still reject pending promises this.emit(DESTROYED) return this } static isStream (s) { return !!s && (s instanceof Minipass || s instanceof Stream || s instanceof EE && ( typeof s.pipe === 'function' || // readable (typeof s.write === 'function' && typeof s.end === 'function') // writable )) } } minipass-3.3.6/package-lock.json000066400000000000000000007512601434007227000165740ustar00rootroot00000000000000{ "name": "minipass", "version": "3.3.6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "minipass", "version": "3.3.6", "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, "devDependencies": { "@types/node": "^17.0.41", "end-of-stream": "^1.4.0", "prettier": "^2.6.2", "tap": "^16.2.0", "through2": "^2.0.3", "ts-node": "^10.8.1", "typescript": "^4.7.3" }, "engines": { "node": ">=8" } }, "node_modules/@ampproject/remapping": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.1.0", "@jridgewell/trace-mapping": "^0.3.9" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/code-frame": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "dev": true, "dependencies": { "@babel/highlight": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { "version": "7.17.10", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { "version": "7.18.2", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.16.7", "@babel/generator": "^7.18.2", "@babel/helper-compilation-targets": "^7.18.2", "@babel/helper-module-transforms": "^7.18.0", "@babel/helpers": "^7.18.2", "@babel/parser": "^7.18.0", "@babel/template": "^7.16.7", "@babel/traverse": "^7.18.2", "@babel/types": "^7.18.2", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.1", "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/babel" } }, "node_modules/@babel/generator": { "version": "7.18.2", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", "dev": true, "dependencies": { "@babel/types": "^7.18.2", "@jridgewell/gen-mapping": "^0.3.0", "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.0", "@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.18.2", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", "dev": true, "dependencies": { "@babel/compat-data": "^7.17.10", "@babel/helper-validator-option": "^7.16.7", "browserslist": "^4.20.2", "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-environment-visitor": { "version": "7.18.2", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz", "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { "version": "7.17.9", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", "dev": true, "dependencies": { "@babel/template": "^7.16.7", "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", "dev": true, "dependencies": { "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", "dev": true, "dependencies": { "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { "version": "7.18.0", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", "dev": true, "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.18.0", "@babel/types": "^7.18.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { "version": "7.18.2", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", "dev": true, "dependencies": { "@babel/types": "^7.18.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", "dev": true, "dependencies": { "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { "version": "7.18.2", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", "dev": true, "dependencies": { "@babel/template": "^7.16.7", "@babel/traverse": "^7.18.2", "@babel/types": "^7.18.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { "version": "7.17.12", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { "version": "7.18.4", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.4.tgz", "integrity": "sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==", "dev": true, "bin": { "parser": "bin/babel-parser.js" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/template": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "dev": true, "dependencies": { "@babel/code-frame": "^7.16.7", "@babel/parser": "^7.16.7", "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { "version": "7.18.2", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.2.tgz", "integrity": "sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==", "dev": true, "dependencies": { "@babel/code-frame": "^7.16.7", "@babel/generator": "^7.18.2", "@babel/helper-environment-visitor": "^7.18.2", "@babel/helper-function-name": "^7.17.9", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", "@babel/parser": "^7.18.0", "@babel/types": "^7.18.2", "debug": "^4.1.0", "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { "version": "7.18.4", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.4.tgz", "integrity": "sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==", "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" }, "engines": { "node": ">=6.9.0" } }, "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", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "0.3.9" }, "engines": { "node": ">=12" } }, "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "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", "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", "get-package-type": "^0.1.0", "js-yaml": "^3.13.1", "resolve-from": "^5.0.0" }, "engines": { "node": ">=8" } }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, "engines": { "node": ">=8" } }, "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==", "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.0", "@jridgewell/sourcemap-codec": "^1.4.10" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.13", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", "dev": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "node_modules/@tsconfig/node10": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", "dev": true }, "node_modules/@tsconfig/node12": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", "dev": true }, "node_modules/@tsconfig/node14": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", "dev": true }, "node_modules/@tsconfig/node16": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", "dev": true }, "node_modules/@types/node": { "version": "17.0.41", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.41.tgz", "integrity": "sha512-xA6drNNeqb5YyV5fO3OAEsnXLfO7uF0whiOfPTz5AeDo8KeZFmODKnvwPymMNO8qE/an8pVY/O50tig2SQCrGw==", "dev": true }, "node_modules/acorn": { "version": "8.7.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", "dev": true, "bin": { "acorn": "bin/acorn" }, "engines": { "node": ">=0.4.0" } }, "node_modules/acorn-walk": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", "dev": true, "engines": { "node": ">=0.4.0" } }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "dependencies": { "color-convert": "^1.9.0" }, "engines": { "node": ">=4" } }, "node_modules/anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" }, "engines": { "node": ">= 8" } }, "node_modules/append-transform": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", "dev": true, "dependencies": { "default-require-extensions": "^3.0.0" }, "engines": { "node": ">=8" } }, "node_modules/archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", "dev": true }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/async-hook-domain": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/async-hook-domain/-/async-hook-domain-2.0.4.tgz", "integrity": "sha512-14LjCmlK1PK8eDtTezR6WX8TMaYNIzBIsd2D1sGoGjgx0BuNMMoSdk7i/drlbtamy0AWv9yv2tkB+ASdmeqFIw==", "dev": true, "engines": { "node": ">=10" } }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/bind-obj-methods": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bind-obj-methods/-/bind-obj-methods-3.0.0.tgz", "integrity": "sha512-nLEaaz3/sEzNSyPWRsN9HNsqwk1AUyECtGj+XwGdIi3xABnEqecvXtIJ0wehQXuuER5uZ/5fTs2usONgYjG+iw==", "dev": true, "engines": { "node": ">=10" } }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "node_modules/braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "dependencies": { "fill-range": "^7.0.1" }, "engines": { "node": ">=8" } }, "node_modules/browserslist": { "version": "4.20.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.4.tgz", "integrity": "sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw==", "dev": true, "funding": [ { "type": "opencollective", "url": "https://opencollective.com/browserslist" }, { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" } ], "dependencies": { "caniuse-lite": "^1.0.30001349", "electron-to-chromium": "^1.4.147", "escalade": "^3.1.1", "node-releases": "^2.0.5", "picocolors": "^1.0.0" }, "bin": { "browserslist": "cli.js" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, "node_modules/caching-transform": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", "dev": true, "dependencies": { "hasha": "^5.0.0", "make-dir": "^3.0.0", "package-hash": "^4.0.0", "write-file-atomic": "^3.0.0" }, "engines": { "node": ">=8" } }, "node_modules/camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { "version": "1.0.30001350", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001350.tgz", "integrity": "sha512-NZBql38Pzd+rAu5SPXv+qmTWGQuFsRiemHCJCAPvkoDxWV19/xqL2YHF32fDJ9SDLdLqfax8+S0CO3ncDCp9Iw==", "dev": true, "funding": [ { "type": "opencollective", "url": "https://opencollective.com/browserslist" }, { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" } ] }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" }, "engines": { "node": ">=4" } }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "funding": [ { "type": "individual", "url": "https://paulmillr.com/funding/" } ], "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "engines": { "node": ">= 8.10.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, "engines": { "node": ">=6" } }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" } }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "dependencies": { "color-name": "1.1.3" } }, "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, "node_modules/color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true, "bin": { "color-support": "bin.js" } }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "node_modules/convert-source-map": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", "dev": true, "dependencies": { "safe-buffer": "~5.1.1" } }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" }, "engines": { "node": ">= 8" } }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { "ms": "2.1.2" }, "engines": { "node": ">=6.0" }, "peerDependenciesMeta": { "supports-color": { "optional": true } } }, "node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/default-require-extensions": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", "dev": true, "dependencies": { "strip-bom": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, "engines": { "node": ">=0.3.1" } }, "node_modules/electron-to-chromium": { "version": "1.4.148", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.148.tgz", "integrity": "sha512-8MJk1bcQUAYkuvCyWZxaldiwoDG0E0AMzBGA6cv3WfuvJySiPgfidEPBFCRRH3cZm6SVZwo/oRlK1ehi1QNEIQ==", "dev": true }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, "dependencies": { "once": "^1.4.0" } }, "node_modules/es6-error": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, "engines": { "node": ">=6" } }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "engines": { "node": ">=0.8.0" } }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" }, "engines": { "node": ">=4" } }, "node_modules/events-to-array": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/events-to-array/-/events-to-array-1.1.2.tgz", "integrity": "sha512-inRWzRY7nG+aXZxBzEqYKB3HPgwflZRopAjDCHv0whhRx+MTUr1ei0ICZUypdyE0HRm4L2d5VEcIqLD6yl+BFA==", "dev": true }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, "engines": { "node": ">=8" } }, "node_modules/find-cache-dir": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", "pkg-dir": "^4.1.0" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, "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/findit": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/findit/-/findit-2.0.0.tgz", "integrity": "sha512-ENZS237/Hr8bjczn5eKuBohLgaD0JyUd0arxretR1f9RO46vZHA1b2y0VorgGV3WaOT3c+78P8h7v4JGJ1i/rg==", "dev": true }, "node_modules/foreground-child": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", "dev": true, "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^3.0.2" }, "engines": { "node": ">=8.0.0" } }, "node_modules/fromentries": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", "dev": true, "funding": [ { "type": "github", "url": "https://github.com/sponsors/feross" }, { "type": "patreon", "url": "https://www.patreon.com/feross" }, { "type": "consulting", "url": "https://feross.org/support" } ] }, "node_modules/fs-exists-cached": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz", "integrity": "sha512-kSxoARUDn4F2RPXX48UXnaFKwVU7Ivd/6qpzZL29MCDmr9sTvybv4gFCp+qaI4fM9m0z9fgz/yJvi56GAz+BZg==", "dev": true }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "hasInstallScript": true, "optional": true, "os": [ "darwin" ], "engines": { "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, "node_modules/function-loop": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/function-loop/-/function-loop-2.0.1.tgz", "integrity": "sha512-ktIR+O6i/4h+j/ZhZJNdzeI4i9lEPeEK6UPR2EVyTVBqOwcU3Za9xYKLH64ZR9HmcROyRrOkizNyjjtWJzDDkQ==", "dev": true }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, "engines": { "node": ">=8.0.0" } }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, "engines": { "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { "is-glob": "^4.0.1" }, "engines": { "node": ">= 6" } }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, "engines": { "node": ">=4" } }, "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==", "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==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/hasha": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", "dev": true, "dependencies": { "is-stream": "^2.0.0", "type-fest": "^0.8.0" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "dependencies": { "binary-extensions": "^2.0.0" }, "engines": { "node": ">=8" } }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, "engines": { "node": ">=0.10.0" } }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "engines": { "node": ">=0.12.0" } }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, "node_modules/is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-hook": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", "dev": true, "dependencies": { "append-transform": "^2.0.0" }, "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-instrument": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "dev": true, "dependencies": { "@babel/core": "^7.7.5", "@istanbuljs/schema": "^0.1.2", "istanbul-lib-coverage": "^3.0.0", "semver": "^6.3.0" }, "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-processinfo": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", "dev": true, "dependencies": { "archy": "^1.0.0", "cross-spawn": "^7.0.3", "istanbul-lib-coverage": "^3.2.0", "p-map": "^3.0.0", "rimraf": "^3.0.0", "uuid": "^8.3.2" }, "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-report": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "dev": true, "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^3.0.0", "supports-color": "^7.1.0" }, "engines": { "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", "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", "source-map": "^0.6.1" }, "engines": { "node": ">=10" } }, "node_modules/istanbul-reports": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" }, "engines": { "node": ">=8" } }, "node_modules/jackspeak": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-1.4.1.tgz", "integrity": "sha512-npN8f+M4+IQ8xD3CcWi3U62VQwKlT3Tj4GxbdT/fYTmeogD9eBF9OFdpoFG/VPNoshRjPUijdkp/p2XrzUHaVg==", "dev": true, "dependencies": { "cliui": "^7.0.4" }, "engines": { "node": ">=8" } }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, "node_modules/js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, "bin": { "jsesc": "bin/jsesc" }, "engines": { "node": ">=4" } }, "node_modules/json5": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "dev": true, "bin": { "json5": "lib/cli.js" }, "engines": { "node": ">=6" } }, "node_modules/libtap": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/libtap/-/libtap-1.4.0.tgz", "integrity": "sha512-STLFynswQ2A6W14JkabgGetBNk6INL1REgJ9UeNKw5llXroC2cGLgKTqavv0sl8OLVztLLipVKMcQ7yeUcqpmg==", "dev": true, "dependencies": { "async-hook-domain": "^2.0.4", "bind-obj-methods": "^3.0.0", "diff": "^4.0.2", "function-loop": "^2.0.1", "minipass": "^3.1.5", "own-or": "^1.0.0", "own-or-env": "^1.0.2", "signal-exit": "^3.0.4", "stack-utils": "^2.0.4", "tap-parser": "^11.0.0", "tap-yaml": "^1.0.0", "tcompare": "^5.0.6", "trivial-deferred": "^1.0.1" }, "engines": { "node": ">=10" }, "funding": { "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, "dependencies": { "p-locate": "^4.1.0" }, "engines": { "node": ">=8" } }, "node_modules/lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", "dev": true }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "dependencies": { "semver": "^6.0.0" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, "engines": { "node": "*" } }, "node_modules/minipass": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", "dev": true, "dependencies": { "yallist": "^4.0.0" }, "engines": { "node": ">=8" } }, "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/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "node_modules/node-preload": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", "dev": true, "dependencies": { "process-on-spawn": "^1.0.0" }, "engines": { "node": ">=8" } }, "node_modules/node-releases": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", "dev": true }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/nyc": { "version": "15.1.0", "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", "dev": true, "dependencies": { "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.2", "caching-transform": "^4.0.0", "convert-source-map": "^1.7.0", "decamelize": "^1.2.0", "find-cache-dir": "^3.2.0", "find-up": "^4.1.0", "foreground-child": "^2.0.0", "get-package-type": "^0.1.0", "glob": "^7.1.6", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-hook": "^3.0.0", "istanbul-lib-instrument": "^4.0.0", "istanbul-lib-processinfo": "^2.0.2", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.0.2", "make-dir": "^3.0.0", "node-preload": "^0.2.1", "p-map": "^3.0.0", "process-on-spawn": "^1.0.0", "resolve-from": "^5.0.0", "rimraf": "^3.0.0", "signal-exit": "^3.0.2", "spawn-wrap": "^2.0.0", "test-exclude": "^6.0.0", "yargs": "^15.0.2" }, "bin": { "nyc": "bin/nyc.js" }, "engines": { "node": ">=8.9" } }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "dependencies": { "wrappy": "1" } }, "node_modules/opener": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", "dev": true, "bin": { "opener": "bin/opener-bin.js" } }, "node_modules/own-or": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/own-or/-/own-or-1.0.0.tgz", "integrity": "sha512-NfZr5+Tdf6MB8UI9GLvKRs4cXY8/yB0w3xtt84xFdWy8hkGjn+JFc60VhzS/hFRfbyxFcGYMTjnF4Me+RbbqrA==", "dev": true }, "node_modules/own-or-env": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/own-or-env/-/own-or-env-1.0.2.tgz", "integrity": "sha512-NQ7v0fliWtK7Lkb+WdFqe6ky9XAzYmlkXthQrBbzlYbmFKoAYbDDcwmOm6q8kOuwSRXW8bdL5ORksploUJmWgw==", "dev": true, "dependencies": { "own-or": "^1.0.0" } }, "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/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/p-map": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", "dev": true, "dependencies": { "aggregate-error": "^3.0.0" }, "engines": { "node": ">=8" } }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, "engines": { "node": ">=6" } }, "node_modules/package-hash": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", "dev": true, "dependencies": { "graceful-fs": "^4.1.15", "hasha": "^5.0.0", "lodash.flattendeep": "^4.4.0", "release-zalgo": "^1.0.0" }, "engines": { "node": ">=8" } }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "engines": { "node": ">=8.6" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "dependencies": { "find-up": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/prettier": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", "dev": true, "bin": { "prettier": "bin-prettier.js" }, "engines": { "node": ">=10.13.0" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "node_modules/process-on-spawn": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", "dev": true, "dependencies": { "fromentries": "^1.2.0" }, "engines": { "node": ">=8" } }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true, "engines": { "node": ">=6" } }, "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==", "dev": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "dependencies": { "picomatch": "^2.2.1" }, "engines": { "node": ">=8.10.0" } }, "node_modules/release-zalgo": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", "dev": true, "dependencies": { "es6-error": "^4.0.1" }, "engines": { "node": ">=4" } }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, "node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "bin.js" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, "node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, "engines": { "node": ">=8" } }, "node_modules/shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "node_modules/spawn-wrap": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", "dev": true, "dependencies": { "foreground-child": "^2.0.0", "is-windows": "^1.0.2", "make-dir": "^3.0.0", "rimraf": "^3.0.0", "signal-exit": "^3.0.2", "which": "^2.0.1" }, "engines": { "node": ">=8" } }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, "node_modules/stack-utils": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", "dev": true, "dependencies": { "escape-string-regexp": "^2.0.0" }, "engines": { "node": ">=10" } }, "node_modules/stack-utils/node_modules/escape-string-regexp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/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", "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", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, "engines": { "node": ">=8" } }, "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/tap": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/tap/-/tap-16.2.0.tgz", "integrity": "sha512-ikfNLy701p2+sH3R0pAXQ/Aen6ZByaguUY7UsoTLL4AXa2c9gYQL+pI21p13lq54R7/CEoLaViC1sexcWG32ig==", "bundleDependencies": [ "ink", "treport", "@types/react", "@isaacs/import-jsx", "react" ], "dev": true, "dependencies": { "@isaacs/import-jsx": "^4.0.1", "@types/react": "^17", "chokidar": "^3.3.0", "findit": "^2.0.0", "foreground-child": "^2.0.0", "fs-exists-cached": "^1.0.0", "glob": "^7.1.6", "ink": "^3.2.0", "isexe": "^2.0.0", "istanbul-lib-processinfo": "^2.0.2", "jackspeak": "^1.4.1", "libtap": "^1.4.0", "minipass": "^3.1.1", "mkdirp": "^1.0.4", "nyc": "^15.1.0", "opener": "^1.5.1", "react": "^17.0.2", "rimraf": "^3.0.0", "signal-exit": "^3.0.6", "source-map-support": "^0.5.16", "tap-mocha-reporter": "^5.0.3", "tap-parser": "^11.0.1", "tap-yaml": "^1.0.0", "tcompare": "^5.0.7", "treport": "^3.0.3", "which": "^2.0.2" }, "bin": { "tap": "bin/run.js" }, "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { "coveralls": "^3.1.1", "flow-remove-types": ">=2.112.0", "ts-node": ">=8.5.2", "typescript": ">=3.7.2" }, "peerDependenciesMeta": { "coveralls": { "optional": true }, "flow-remove-types": { "optional": true }, "ts-node": { "optional": true }, "typescript": { "optional": true } } }, "node_modules/tap-mocha-reporter": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/tap-mocha-reporter/-/tap-mocha-reporter-5.0.3.tgz", "integrity": "sha512-6zlGkaV4J+XMRFkN0X+yuw6xHbE9jyCZ3WUKfw4KxMyRGOpYSRuuQTRJyWX88WWuLdVTuFbxzwXhXuS2XE6o0g==", "dev": true, "dependencies": { "color-support": "^1.1.0", "debug": "^4.1.1", "diff": "^4.0.1", "escape-string-regexp": "^2.0.0", "glob": "^7.0.5", "tap-parser": "^11.0.0", "tap-yaml": "^1.0.0", "unicode-length": "^2.0.2" }, "bin": { "tap-mocha-reporter": "index.js" }, "engines": { "node": ">= 8" } }, "node_modules/tap-mocha-reporter/node_modules/escape-string-regexp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/tap-parser": { "version": "11.0.1", "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-11.0.1.tgz", "integrity": "sha512-5ow0oyFOnXVSALYdidMX94u0GEjIlgc/BPFYLx0yRh9hb8+cFGNJqJzDJlUqbLOwx8+NBrIbxCWkIQi7555c0w==", "dev": true, "dependencies": { "events-to-array": "^1.0.1", "minipass": "^3.1.6", "tap-yaml": "^1.0.0" }, "bin": { "tap-parser": "bin/cmd.js" }, "engines": { "node": ">= 8" } }, "node_modules/tap-yaml": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/tap-yaml/-/tap-yaml-1.0.0.tgz", "integrity": "sha512-Rxbx4EnrWkYk0/ztcm5u3/VznbyFJpyXO12dDBHKWiDVxy7O2Qw6MRrwO5H6Ww0U5YhRY/4C/VzWmFPhBQc4qQ==", "dev": true, "dependencies": { "yaml": "^1.5.0" } }, "node_modules/tap/node_modules/@ampproject/remapping": { "version": "2.1.2", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { "@jridgewell/trace-mapping": "^0.3.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/tap/node_modules/@babel/code-frame": { "version": "7.16.7", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/highlight": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/compat-data": { "version": "7.17.7", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/core": { "version": "7.17.8", "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", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/babel" } }, "node_modules/tap/node_modules/@babel/generator": { "version": "7.17.7", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/types": "^7.17.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-annotate-as-pure": { "version": "7.16.7", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-compilation-targets": { "version": "7.17.7", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.17.7", "@babel/helper-validator-option": "^7.16.7", "browserslist": "^4.17.5", "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/tap/node_modules/@babel/helper-environment-visitor": { "version": "7.16.7", "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", "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" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-hoist-variables": { "version": "7.16.7", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-module-imports": { "version": "7.16.7", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-module-transforms": { "version": "7.17.7", "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" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-plugin-utils": { "version": "7.16.7", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-simple-access": { "version": "7.17.7", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-split-export-declaration": { "version": "7.16.7", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-validator-identifier": { "version": "7.16.7", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-validator-option": { "version": "7.16.7", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helpers": { "version": "7.17.8", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/template": "^7.16.7", "@babel/traverse": "^7.17.3", "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/highlight": { "version": "7.16.10", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/parser": { "version": "7.17.8", "dev": true, "inBundle": true, "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, "engines": { "node": ">=6.0.0" } }, "node_modules/tap/node_modules/@babel/plugin-proposal-object-rest-spread": { "version": "7.17.3", "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/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-transform-parameters": "^7.16.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/tap/node_modules/@babel/plugin-syntax-jsx": { "version": "7.16.7", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/tap/node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/tap/node_modules/@babel/plugin-transform-destructuring": { "version": "7.17.7", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/tap/node_modules/@babel/plugin-transform-parameters": { "version": "7.16.7", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/tap/node_modules/@babel/plugin-transform-react-jsx": { "version": "7.17.3", "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" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/tap/node_modules/@babel/template": { "version": "7.16.7", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.16.7", "@babel/parser": "^7.16.7", "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/traverse": { "version": "7.17.3", "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", "debug": "^4.1.0", "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/types": { "version": "7.17.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@isaacs/import-jsx": { "version": "4.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/core": "^7.5.5", "@babel/plugin-proposal-object-rest-spread": "^7.5.5", "@babel/plugin-transform-destructuring": "^7.5.0", "@babel/plugin-transform-react-jsx": "^7.3.0", "caller-path": "^3.0.1", "find-cache-dir": "^3.2.0", "make-dir": "^3.0.2", "resolve-from": "^3.0.0", "rimraf": "^3.0.0" }, "engines": { "node": ">=10" } }, "node_modules/tap/node_modules/@jridgewell/resolve-uri": { "version": "3.0.5", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/tap/node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.11", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/@jridgewell/trace-mapping": { "version": "0.3.4", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "node_modules/tap/node_modules/@types/prop-types": { "version": "15.7.4", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/@types/react": { "version": "17.0.41", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", "csstype": "^3.0.2" } }, "node_modules/tap/node_modules/@types/scheduler": { "version": "0.16.2", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/@types/yoga-layout": { "version": "1.9.2", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/ansi-escapes": { "version": "4.3.2", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/tap/node_modules/ansi-escapes/node_modules/type-fest": { "version": "0.21.3", "dev": true, "inBundle": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/tap/node_modules/ansi-regex": { "version": "5.0.1", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/ansi-styles": { "version": "3.2.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, "engines": { "node": ">=4" } }, "node_modules/tap/node_modules/ansicolors": { "version": "0.3.2", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/astral-regex": { "version": "2.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/auto-bind": { "version": "4.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/tap/node_modules/balanced-match": { "version": "1.0.2", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/brace-expansion": { "version": "1.1.11", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "node_modules/tap/node_modules/browserslist": { "version": "4.20.2", "dev": true, "funding": [ { "type": "opencollective", "url": "https://opencollective.com/browserslist" }, { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" } ], "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" }, "bin": { "browserslist": "cli.js" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, "node_modules/tap/node_modules/caller-callsite": { "version": "4.1.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "callsites": "^3.1.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/caller-path": { "version": "3.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "caller-callsite": "^4.1.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/callsites": { "version": "3.1.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/tap/node_modules/caniuse-lite": { "version": "1.0.30001319", "dev": true, "funding": [ { "type": "opencollective", "url": "https://opencollective.com/browserslist" }, { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" } ], "inBundle": true, "license": "CC-BY-4.0" }, "node_modules/tap/node_modules/cardinal": { "version": "2.1.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "ansicolors": "~0.3.2", "redeyed": "~2.1.0" }, "bin": { "cdl": "bin/cdl.js" } }, "node_modules/tap/node_modules/chalk": { "version": "2.4.2", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" }, "engines": { "node": ">=4" } }, "node_modules/tap/node_modules/ci-info": { "version": "2.0.0", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/cli-boxes": { "version": "2.2.1", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/tap/node_modules/cli-cursor": { "version": "3.1.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/cli-truncate": { "version": "2.1.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/tap/node_modules/code-excerpt": { "version": "3.0.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "convert-to-spaces": "^1.0.1" }, "engines": { "node": ">=10" } }, "node_modules/tap/node_modules/color-convert": { "version": "1.9.3", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/tap/node_modules/color-name": { "version": "1.1.3", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/commondir": { "version": "1.0.1", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/concat-map": { "version": "0.0.1", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/convert-source-map": { "version": "1.8.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "safe-buffer": "~5.1.1" } }, "node_modules/tap/node_modules/convert-to-spaces": { "version": "1.0.2", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/tap/node_modules/csstype": { "version": "3.0.11", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/debug": { "version": "4.3.4", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "ms": "2.1.2" }, "engines": { "node": ">=6.0" }, "peerDependenciesMeta": { "supports-color": { "optional": true } } }, "node_modules/tap/node_modules/electron-to-chromium": { "version": "1.4.89", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/tap/node_modules/emoji-regex": { "version": "8.0.0", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/escalade": { "version": "3.1.1", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/tap/node_modules/escape-string-regexp": { "version": "1.0.5", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/tap/node_modules/esprima": { "version": "4.0.1", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" }, "engines": { "node": ">=4" } }, "node_modules/tap/node_modules/events-to-array": { "version": "1.1.2", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/tap/node_modules/find-cache-dir": { "version": "3.3.2", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", "pkg-dir": "^4.1.0" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, "node_modules/tap/node_modules/find-up": { "version": "4.1.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/fs.realpath": { "version": "1.0.0", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/tap/node_modules/gensync": { "version": "1.0.0-beta.2", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/glob": { "version": "7.2.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, "engines": { "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/tap/node_modules/globals": { "version": "11.12.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/tap/node_modules/has-flag": { "version": "3.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/tap/node_modules/indent-string": { "version": "4.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/inflight": { "version": "1.0.6", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, "node_modules/tap/node_modules/inherits": { "version": "2.0.4", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/tap/node_modules/ink": { "version": "3.2.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "ansi-escapes": "^4.2.1", "auto-bind": "4.0.0", "chalk": "^4.1.0", "cli-boxes": "^2.2.0", "cli-cursor": "^3.1.0", "cli-truncate": "^2.1.0", "code-excerpt": "^3.0.0", "indent-string": "^4.0.0", "is-ci": "^2.0.0", "lodash": "^4.17.20", "patch-console": "^1.0.0", "react-devtools-core": "^4.19.1", "react-reconciler": "^0.26.2", "scheduler": "^0.20.2", "signal-exit": "^3.0.2", "slice-ansi": "^3.0.0", "stack-utils": "^2.0.2", "string-width": "^4.2.2", "type-fest": "^0.12.0", "widest-line": "^3.1.0", "wrap-ansi": "^6.2.0", "ws": "^7.5.5", "yoga-layout-prebuilt": "^1.9.6" }, "engines": { "node": ">=10" }, "peerDependencies": { "@types/react": ">=16.8.0", "react": ">=16.8.0" }, "peerDependenciesMeta": { "@types/react": { "optional": true } } }, "node_modules/tap/node_modules/ink/node_modules/ansi-styles": { "version": "4.3.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/tap/node_modules/ink/node_modules/chalk": { "version": "4.1.2", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/tap/node_modules/ink/node_modules/color-convert": { "version": "2.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, "engines": { "node": ">=7.0.0" } }, "node_modules/tap/node_modules/ink/node_modules/color-name": { "version": "1.1.4", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/ink/node_modules/has-flag": { "version": "4.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/ink/node_modules/supports-color": { "version": "7.2.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/is-ci": { "version": "2.0.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "ci-info": "^2.0.0" }, "bin": { "is-ci": "bin.js" } }, "node_modules/tap/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/js-tokens": { "version": "4.0.0", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/jsesc": { "version": "2.5.2", "dev": true, "inBundle": true, "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { "node": ">=4" } }, "node_modules/tap/node_modules/json5": { "version": "2.2.1", "dev": true, "inBundle": true, "license": "MIT", "bin": { "json5": "lib/cli.js" }, "engines": { "node": ">=6" } }, "node_modules/tap/node_modules/locate-path": { "version": "5.0.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/lodash": { "version": "4.17.21", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/loose-envify": { "version": "1.4.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "node_modules/tap/node_modules/make-dir": { "version": "3.1.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "semver": "^6.0.0" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/tap/node_modules/mimic-fn": { "version": "2.1.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/tap/node_modules/minimatch": { "version": "3.1.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, "engines": { "node": "*" } }, "node_modules/tap/node_modules/minipass": { "version": "3.1.6", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/ms": { "version": "2.1.2", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/node-releases": { "version": "2.0.2", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/object-assign": { "version": "4.1.1", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/tap/node_modules/once": { "version": "1.4.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/tap/node_modules/onetime": { "version": "5.1.2", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, "engines": { "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/tap/node_modules/p-limit": { "version": "2.3.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, "engines": { "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/tap/node_modules/p-locate": { "version": "4.1.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/p-try": { "version": "2.2.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/tap/node_modules/patch-console": { "version": "1.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/tap/node_modules/path-exists": { "version": "4.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/path-is-absolute": { "version": "1.0.1", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/tap/node_modules/picocolors": { "version": "1.0.0", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/tap/node_modules/pkg-dir": { "version": "4.2.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/punycode": { "version": "2.1.1", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/tap/node_modules/react": { "version": "17.0.2", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" }, "engines": { "node": ">=0.10.0" } }, "node_modules/tap/node_modules/react-devtools-core": { "version": "4.24.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "shell-quote": "^1.6.1", "ws": "^7" } }, "node_modules/tap/node_modules/react-reconciler": { "version": "0.26.2", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "scheduler": "^0.20.2" }, "engines": { "node": ">=0.10.0" }, "peerDependencies": { "react": "^17.0.2" } }, "node_modules/tap/node_modules/redeyed": { "version": "2.1.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "esprima": "~4.0.0" } }, "node_modules/tap/node_modules/resolve-from": { "version": "3.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/tap/node_modules/restore-cursor": { "version": "3.1.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/rimraf": { "version": "3.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "bin.js" }, "funding": { "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, "inBundle": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" } }, "node_modules/tap/node_modules/semver": { "version": "6.3.0", "dev": true, "inBundle": true, "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/tap/node_modules/shell-quote": { "version": "1.7.3", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/signal-exit": { "version": "3.0.7", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/tap/node_modules/slice-ansi": { "version": "3.0.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", "is-fullwidth-code-point": "^3.0.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/slice-ansi/node_modules/ansi-styles": { "version": "4.3.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/tap/node_modules/slice-ansi/node_modules/color-convert": { "version": "2.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, "engines": { "node": ">=7.0.0" } }, "node_modules/tap/node_modules/slice-ansi/node_modules/color-name": { "version": "1.1.4", "dev": true, "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", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "escape-string-regexp": "^2.0.0" }, "engines": { "node": ">=10" } }, "node_modules/tap/node_modules/stack-utils/node_modules/escape-string-regexp": { "version": "2.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/string-width": { "version": "4.2.3", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/strip-ansi": { "version": "6.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/supports-color": { "version": "5.5.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, "engines": { "node": ">=4" } }, "node_modules/tap/node_modules/tap-parser": { "version": "11.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "events-to-array": "^1.0.1", "minipass": "^3.1.6", "tap-yaml": "^1.0.0" }, "bin": { "tap-parser": "bin/cmd.js" }, "engines": { "node": ">= 8" } }, "node_modules/tap/node_modules/tap-yaml": { "version": "1.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "yaml": "^1.5.0" } }, "node_modules/tap/node_modules/to-fast-properties": { "version": "2.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/tap/node_modules/treport": { "version": "3.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@isaacs/import-jsx": "^4.0.1", "cardinal": "^2.1.1", "chalk": "^3.0.0", "ink": "^3.2.0", "ms": "^2.1.2", "tap-parser": "^11.0.0", "unicode-length": "^2.0.2" }, "peerDependencies": { "react": "^17.0.2" } }, "node_modules/tap/node_modules/treport/node_modules/ansi-styles": { "version": "4.3.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/tap/node_modules/treport/node_modules/chalk": { "version": "3.0.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/treport/node_modules/color-convert": { "version": "2.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, "engines": { "node": ">=7.0.0" } }, "node_modules/tap/node_modules/treport/node_modules/color-name": { "version": "1.1.4", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/treport/node_modules/has-flag": { "version": "4.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/treport/node_modules/supports-color": { "version": "7.2.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/type-fest": { "version": "0.12.0", "dev": true, "inBundle": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/tap/node_modules/unicode-length": { "version": "2.0.2", "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" } }, "node_modules/tap/node_modules/unicode-length/node_modules/strip-ansi": { "version": "3.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "ansi-regex": "^2.0.0" }, "engines": { "node": ">=0.10.0" } }, "node_modules/tap/node_modules/widest-line": { "version": "3.1.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "string-width": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/wrap-ansi": { "version": "6.2.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/tap/node_modules/wrap-ansi/node_modules/color-convert": { "version": "2.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, "engines": { "node": ">=7.0.0" } }, "node_modules/tap/node_modules/wrap-ansi/node_modules/color-name": { "version": "1.1.4", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/wrappy": { "version": "1.0.2", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/tap/node_modules/ws": { "version": "7.5.7", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=8.3.0" }, "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": "^5.0.2" }, "peerDependenciesMeta": { "bufferutil": { "optional": true }, "utf-8-validate": { "optional": true } } }, "node_modules/tap/node_modules/yallist": { "version": "4.0.0", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/tap/node_modules/yaml": { "version": "1.10.2", "dev": true, "inBundle": true, "license": "ISC", "engines": { "node": ">= 6" } }, "node_modules/tap/node_modules/yoga-layout-prebuilt": { "version": "1.10.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@types/yoga-layout": "1.9.2" }, "engines": { "node": ">=8" } }, "node_modules/tcompare": { "version": "5.0.7", "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-5.0.7.tgz", "integrity": "sha512-d9iddt6YYGgyxJw5bjsN7UJUO1kGOtjSlNy/4PoGYAjQS5pAT/hzIoLf1bZCw+uUxRmZJh7Yy1aA7xKVRT9B4w==", "dev": true, "dependencies": { "diff": "^4.0.2" }, "engines": { "node": ">=10" } }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", "minimatch": "^3.0.4" }, "engines": { "node": ">=8" } }, "node_modules/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "dependencies": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" } }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true, "engines": { "node": ">=4" } }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "dependencies": { "is-number": "^7.0.0" }, "engines": { "node": ">=8.0" } }, "node_modules/trivial-deferred": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trivial-deferred/-/trivial-deferred-1.0.1.tgz", "integrity": "sha1-N21NKdlR1jaKb3oK6FwvTV4GWPM=", "dev": true }, "node_modules/ts-node": { "version": "10.8.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.8.1.tgz", "integrity": "sha512-Wwsnao4DQoJsN034wePSg5nZiw4YKXf56mPIAeD6wVmiv+RytNSWqc2f3fKvcUoV+Yn2+yocD71VOfQHbmVX4g==", "dev": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", "@tsconfig/node12": "^1.0.7", "@tsconfig/node14": "^1.0.0", "@tsconfig/node16": "^1.0.2", "acorn": "^8.4.1", "acorn-walk": "^8.1.1", "arg": "^4.1.0", "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" }, "bin": { "ts-node": "dist/bin.js", "ts-node-cwd": "dist/bin-cwd.js", "ts-node-esm": "dist/bin-esm.js", "ts-node-script": "dist/bin-script.js", "ts-node-transpile-only": "dist/bin-transpile.js", "ts-script": "dist/bin-script-deprecated.js" }, "peerDependencies": { "@swc/core": ">=1.2.50", "@swc/wasm": ">=1.2.50", "@types/node": "*", "typescript": ">=2.7" }, "peerDependenciesMeta": { "@swc/core": { "optional": true }, "@swc/wasm": { "optional": true } } }, "node_modules/type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, "dependencies": { "is-typedarray": "^1.0.0" } }, "node_modules/typescript": { "version": "4.7.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.3.tgz", "integrity": "sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { "node": ">=4.2.0" } }, "node_modules/unicode-length": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/unicode-length/-/unicode-length-2.0.2.tgz", "integrity": "sha512-Ph/j1VbS3/r77nhoY2WU0GWGjVYOHL3xpKp0y/Eq2e5r0mT/6b649vm7KFO6RdAdrZkYLdxphYVgvODxPB+Ebg==", "dev": true, "dependencies": { "punycode": "^2.0.0", "strip-ansi": "^3.0.1" } }, "node_modules/unicode-length/node_modules/ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/unicode-length/node_modules/strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "dependencies": { "ansi-regex": "^2.0.0" }, "engines": { "node": ">=0.10.0" } }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, "node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "bin/node-which" }, "engines": { "node": ">= 8" } }, "node_modules/which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "node_modules/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/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/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/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/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "node_modules/write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", "signal-exit": "^3.0.2", "typedarray-to-buffer": "^3.1.5" } }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true, "engines": { "node": ">=0.4" } }, "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/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, "engines": { "node": ">= 6" } }, "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/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==", "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_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true, "engines": { "node": ">=6" } } }, "dependencies": { "@ampproject/remapping": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.1.0", "@jridgewell/trace-mapping": "^0.3.9" } }, "@babel/code-frame": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "dev": true, "requires": { "@babel/highlight": "^7.16.7" } }, "@babel/compat-data": { "version": "7.17.10", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", "dev": true }, "@babel/core": { "version": "7.18.2", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.16.7", "@babel/generator": "^7.18.2", "@babel/helper-compilation-targets": "^7.18.2", "@babel/helper-module-transforms": "^7.18.0", "@babel/helpers": "^7.18.2", "@babel/parser": "^7.18.0", "@babel/template": "^7.16.7", "@babel/traverse": "^7.18.2", "@babel/types": "^7.18.2", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.1", "semver": "^6.3.0" } }, "@babel/generator": { "version": "7.18.2", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", "dev": true, "requires": { "@babel/types": "^7.18.2", "@jridgewell/gen-mapping": "^0.3.0", "jsesc": "^2.5.1" }, "dependencies": { "@jridgewell/gen-mapping": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", "dev": true, "requires": { "@jridgewell/set-array": "^1.0.0", "@jridgewell/sourcemap-codec": "^1.4.10", "@jridgewell/trace-mapping": "^0.3.9" } } } }, "@babel/helper-compilation-targets": { "version": "7.18.2", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", "dev": true, "requires": { "@babel/compat-data": "^7.17.10", "@babel/helper-validator-option": "^7.16.7", "browserslist": "^4.20.2", "semver": "^6.3.0" } }, "@babel/helper-environment-visitor": { "version": "7.18.2", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz", "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==", "dev": true }, "@babel/helper-function-name": { "version": "7.17.9", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", "dev": true, "requires": { "@babel/template": "^7.16.7", "@babel/types": "^7.17.0" } }, "@babel/helper-hoist-variables": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", "dev": true, "requires": { "@babel/types": "^7.16.7" } }, "@babel/helper-module-imports": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", "dev": true, "requires": { "@babel/types": "^7.16.7" } }, "@babel/helper-module-transforms": { "version": "7.18.0", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", "dev": true, "requires": { "@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.18.0", "@babel/types": "^7.18.0" } }, "@babel/helper-simple-access": { "version": "7.18.2", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", "dev": true, "requires": { "@babel/types": "^7.18.2" } }, "@babel/helper-split-export-declaration": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", "dev": true, "requires": { "@babel/types": "^7.16.7" } }, "@babel/helper-validator-identifier": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", "dev": true }, "@babel/helper-validator-option": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", "dev": true }, "@babel/helpers": { "version": "7.18.2", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", "dev": true, "requires": { "@babel/template": "^7.16.7", "@babel/traverse": "^7.18.2", "@babel/types": "^7.18.2" } }, "@babel/highlight": { "version": "7.17.12", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { "version": "7.18.4", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.4.tgz", "integrity": "sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==", "dev": true }, "@babel/template": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "dev": true, "requires": { "@babel/code-frame": "^7.16.7", "@babel/parser": "^7.16.7", "@babel/types": "^7.16.7" } }, "@babel/traverse": { "version": "7.18.2", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.2.tgz", "integrity": "sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==", "dev": true, "requires": { "@babel/code-frame": "^7.16.7", "@babel/generator": "^7.18.2", "@babel/helper-environment-visitor": "^7.18.2", "@babel/helper-function-name": "^7.17.9", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", "@babel/parser": "^7.18.0", "@babel/types": "^7.18.2", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { "version": "7.18.4", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.4.tgz", "integrity": "sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } }, "@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "requires": { "@jridgewell/trace-mapping": "0.3.9" }, "dependencies": { "@jridgewell/trace-mapping": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } } } }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, "requires": { "camelcase": "^5.3.1", "find-up": "^4.1.0", "get-package-type": "^0.1.0", "js-yaml": "^3.13.1", "resolve-from": "^5.0.0" } }, "@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true }, "@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==", "dev": true, "requires": { "@jridgewell/set-array": "^1.0.0", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "@jridgewell/resolve-uri": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", "dev": true }, "@jridgewell/set-array": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", "dev": true }, "@jridgewell/sourcemap-codec": { "version": "1.4.13", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", "dev": true }, "@jridgewell/trace-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "@tsconfig/node10": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", "dev": true }, "@tsconfig/node12": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", "dev": true }, "@tsconfig/node14": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", "dev": true }, "@tsconfig/node16": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", "dev": true }, "@types/node": { "version": "17.0.41", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.41.tgz", "integrity": "sha512-xA6drNNeqb5YyV5fO3OAEsnXLfO7uF0whiOfPTz5AeDo8KeZFmODKnvwPymMNO8qE/an8pVY/O50tig2SQCrGw==", "dev": true }, "acorn": { "version": "8.7.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", "dev": true }, "acorn-walk": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", "dev": true }, "aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "requires": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" } }, "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "append-transform": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", "dev": true, "requires": { "default-require-extensions": "^3.0.0" } }, "archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", "dev": true }, "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { "sprintf-js": "~1.0.2" } }, "async-hook-domain": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/async-hook-domain/-/async-hook-domain-2.0.4.tgz", "integrity": "sha512-14LjCmlK1PK8eDtTezR6WX8TMaYNIzBIsd2D1sGoGjgx0BuNMMoSdk7i/drlbtamy0AWv9yv2tkB+ASdmeqFIw==", "dev": true }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, "bind-obj-methods": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bind-obj-methods/-/bind-obj-methods-3.0.0.tgz", "integrity": "sha512-nLEaaz3/sEzNSyPWRsN9HNsqwk1AUyECtGj+XwGdIi3xABnEqecvXtIJ0wehQXuuER5uZ/5fTs2usONgYjG+iw==", "dev": true }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { "fill-range": "^7.0.1" } }, "browserslist": { "version": "4.20.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.4.tgz", "integrity": "sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw==", "dev": true, "requires": { "caniuse-lite": "^1.0.30001349", "electron-to-chromium": "^1.4.147", "escalade": "^3.1.1", "node-releases": "^2.0.5", "picocolors": "^1.0.0" } }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, "caching-transform": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", "dev": true, "requires": { "hasha": "^5.0.0", "make-dir": "^3.0.0", "package-hash": "^4.0.0", "write-file-atomic": "^3.0.0" } }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, "caniuse-lite": { "version": "1.0.30001350", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001350.tgz", "integrity": "sha512-NZBql38Pzd+rAu5SPXv+qmTWGQuFsRiemHCJCAPvkoDxWV19/xqL2YHF32fDJ9SDLdLqfax8+S0CO3ncDCp9Iw==", "dev": true }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "requires": { "anymatch": "~3.1.2", "braces": "~3.0.2", "fsevents": "~2.3.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" } }, "clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" } }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { "color-name": "1.1.3" } }, "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, "color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "convert-source-map": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", "dev": true, "requires": { "safe-buffer": "~5.1.1" } }, "core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" } }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true }, "default-require-extensions": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", "dev": true, "requires": { "strip-bom": "^4.0.0" } }, "diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, "electron-to-chromium": { "version": "1.4.148", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.148.tgz", "integrity": "sha512-8MJk1bcQUAYkuvCyWZxaldiwoDG0E0AMzBGA6cv3WfuvJySiPgfidEPBFCRRH3cZm6SVZwo/oRlK1ehi1QNEIQ==", "dev": true }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, "requires": { "once": "^1.4.0" } }, "es6-error": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, "events-to-array": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/events-to-array/-/events-to-array-1.1.2.tgz", "integrity": "sha512-inRWzRY7nG+aXZxBzEqYKB3HPgwflZRopAjDCHv0whhRx+MTUr1ei0ICZUypdyE0HRm4L2d5VEcIqLD6yl+BFA==", "dev": true }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { "to-regex-range": "^5.0.1" } }, "find-cache-dir": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, "requires": { "commondir": "^1.0.1", "make-dir": "^3.0.2", "pkg-dir": "^4.1.0" } }, "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, "requires": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, "findit": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/findit/-/findit-2.0.0.tgz", "integrity": "sha512-ENZS237/Hr8bjczn5eKuBohLgaD0JyUd0arxretR1f9RO46vZHA1b2y0VorgGV3WaOT3c+78P8h7v4JGJ1i/rg==", "dev": true }, "foreground-child": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", "dev": true, "requires": { "cross-spawn": "^7.0.0", "signal-exit": "^3.0.2" } }, "fromentries": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", "dev": true }, "fs-exists-cached": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz", "integrity": "sha512-kSxoARUDn4F2RPXX48UXnaFKwVU7Ivd/6qpzZL29MCDmr9sTvybv4gFCp+qaI4fM9m0z9fgz/yJvi56GAz+BZg==", "dev": true }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "optional": true }, "function-loop": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/function-loop/-/function-loop-2.0.1.tgz", "integrity": "sha512-ktIR+O6i/4h+j/ZhZJNdzeI4i9lEPeEK6UPR2EVyTVBqOwcU3Za9xYKLH64ZR9HmcROyRrOkizNyjjtWJzDDkQ==", "dev": true }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, "get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true }, "glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { "is-glob": "^4.0.1" } }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, "graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "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 }, "hasha": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", "dev": true, "requires": { "is-stream": "^2.0.0", "type-fest": "^0.8.0" } }, "html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true }, "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" } }, "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "requires": { "binary-extensions": "^2.0.0" } }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { "is-extglob": "^2.1.1" } }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true }, "istanbul-lib-hook": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", "dev": true, "requires": { "append-transform": "^2.0.0" } }, "istanbul-lib-instrument": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "dev": true, "requires": { "@babel/core": "^7.7.5", "@istanbuljs/schema": "^0.1.2", "istanbul-lib-coverage": "^3.0.0", "semver": "^6.3.0" } }, "istanbul-lib-processinfo": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", "dev": true, "requires": { "archy": "^1.0.0", "cross-spawn": "^7.0.3", "istanbul-lib-coverage": "^3.2.0", "p-map": "^3.0.0", "rimraf": "^3.0.0", "uuid": "^8.3.2" } }, "istanbul-lib-report": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "dev": true, "requires": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^3.0.0", "supports-color": "^7.1.0" }, "dependencies": { "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 }, "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, "requires": { "has-flag": "^4.0.0" } } } }, "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", "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "requires": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", "source-map": "^0.6.1" } }, "istanbul-reports": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", "dev": true, "requires": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" } }, "jackspeak": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-1.4.1.tgz", "integrity": "sha512-npN8f+M4+IQ8xD3CcWi3U62VQwKlT3Tj4GxbdT/fYTmeogD9eBF9OFdpoFG/VPNoshRjPUijdkp/p2XrzUHaVg==", "dev": true, "requires": { "cliui": "^7.0.4" } }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, "js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" } }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, "json5": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "dev": true }, "libtap": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/libtap/-/libtap-1.4.0.tgz", "integrity": "sha512-STLFynswQ2A6W14JkabgGetBNk6INL1REgJ9UeNKw5llXroC2cGLgKTqavv0sl8OLVztLLipVKMcQ7yeUcqpmg==", "dev": true, "requires": { "async-hook-domain": "^2.0.4", "bind-obj-methods": "^3.0.0", "diff": "^4.0.2", "function-loop": "^2.0.1", "minipass": "^3.1.5", "own-or": "^1.0.0", "own-or-env": "^1.0.2", "signal-exit": "^3.0.4", "stack-utils": "^2.0.4", "tap-parser": "^11.0.0", "tap-yaml": "^1.0.0", "tcompare": "^5.0.6", "trivial-deferred": "^1.0.1" } }, "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, "requires": { "p-locate": "^4.1.0" } }, "lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", "dev": true }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { "semver": "^6.0.0" } }, "make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, "minipass": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", "dev": true, "requires": { "yallist": "^4.0.0" } }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "node-preload": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", "dev": true, "requires": { "process-on-spawn": "^1.0.0" } }, "node-releases": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", "dev": true }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, "nyc": { "version": "15.1.0", "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", "dev": true, "requires": { "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.2", "caching-transform": "^4.0.0", "convert-source-map": "^1.7.0", "decamelize": "^1.2.0", "find-cache-dir": "^3.2.0", "find-up": "^4.1.0", "foreground-child": "^2.0.0", "get-package-type": "^0.1.0", "glob": "^7.1.6", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-hook": "^3.0.0", "istanbul-lib-instrument": "^4.0.0", "istanbul-lib-processinfo": "^2.0.2", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.0.2", "make-dir": "^3.0.0", "node-preload": "^0.2.1", "p-map": "^3.0.0", "process-on-spawn": "^1.0.0", "resolve-from": "^5.0.0", "rimraf": "^3.0.0", "signal-exit": "^3.0.2", "spawn-wrap": "^2.0.0", "test-exclude": "^6.0.0", "yargs": "^15.0.2" } }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "requires": { "wrappy": "1" } }, "opener": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", "dev": true }, "own-or": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/own-or/-/own-or-1.0.0.tgz", "integrity": "sha512-NfZr5+Tdf6MB8UI9GLvKRs4cXY8/yB0w3xtt84xFdWy8hkGjn+JFc60VhzS/hFRfbyxFcGYMTjnF4Me+RbbqrA==", "dev": true }, "own-or-env": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/own-or-env/-/own-or-env-1.0.2.tgz", "integrity": "sha512-NQ7v0fliWtK7Lkb+WdFqe6ky9XAzYmlkXthQrBbzlYbmFKoAYbDDcwmOm6q8kOuwSRXW8bdL5ORksploUJmWgw==", "dev": true, "requires": { "own-or": "^1.0.0" } }, "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, "requires": { "p-try": "^2.0.0" } }, "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, "requires": { "p-limit": "^2.2.0" } }, "p-map": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", "dev": true, "requires": { "aggregate-error": "^3.0.0" } }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "package-hash": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", "dev": true, "requires": { "graceful-fs": "^4.1.15", "hasha": "^5.0.0", "lodash.flattendeep": "^4.4.0", "release-zalgo": "^1.0.0" } }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true }, "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { "find-up": "^4.0.0" } }, "prettier": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", "dev": true }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "process-on-spawn": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", "dev": true, "requires": { "fromentries": "^1.2.0" } }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, "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==", "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "requires": { "picomatch": "^2.2.1" } }, "release-zalgo": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", "dev": true, "requires": { "es6-error": "^4.0.1" } }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, "resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" } }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { "shebang-regex": "^3.0.0" } }, "shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, "signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "spawn-wrap": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", "dev": true, "requires": { "foreground-child": "^2.0.0", "is-windows": "^1.0.2", "make-dir": "^3.0.0", "rimraf": "^3.0.0", "signal-exit": "^3.0.2", "which": "^2.0.1" } }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, "stack-utils": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", "dev": true, "requires": { "escape-string-regexp": "^2.0.0" }, "dependencies": { "escape-string-regexp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true } } }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "~5.1.0" } }, "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, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "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, "requires": { "ansi-regex": "^5.0.1" } }, "strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true }, "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, "requires": { "has-flag": "^3.0.0" } }, "tap": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/tap/-/tap-16.2.0.tgz", "integrity": "sha512-ikfNLy701p2+sH3R0pAXQ/Aen6ZByaguUY7UsoTLL4AXa2c9gYQL+pI21p13lq54R7/CEoLaViC1sexcWG32ig==", "dev": true, "requires": { "@isaacs/import-jsx": "^4.0.1", "@types/react": "^17", "chokidar": "^3.3.0", "findit": "^2.0.0", "foreground-child": "^2.0.0", "fs-exists-cached": "^1.0.0", "glob": "^7.1.6", "ink": "^3.2.0", "isexe": "^2.0.0", "istanbul-lib-processinfo": "^2.0.2", "jackspeak": "^1.4.1", "libtap": "^1.4.0", "minipass": "^3.1.1", "mkdirp": "^1.0.4", "nyc": "^15.1.0", "opener": "^1.5.1", "react": "^17.0.2", "rimraf": "^3.0.0", "signal-exit": "^3.0.6", "source-map-support": "^0.5.16", "tap-mocha-reporter": "^5.0.3", "tap-parser": "^11.0.1", "tap-yaml": "^1.0.0", "tcompare": "^5.0.7", "treport": "^3.0.3", "which": "^2.0.2" }, "dependencies": { "@ampproject/remapping": { "version": "2.1.2", "bundled": true, "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.0" } }, "@babel/code-frame": { "version": "7.16.7", "bundled": true, "dev": true, "requires": { "@babel/highlight": "^7.16.7" } }, "@babel/compat-data": { "version": "7.17.7", "bundled": true, "dev": true }, "@babel/core": { "version": "7.17.8", "bundled": true, "dev": true, "requires": { "@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", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", "semver": "^6.3.0" } }, "@babel/generator": { "version": "7.17.7", "bundled": true, "dev": true, "requires": { "@babel/types": "^7.17.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { "version": "7.16.7", "bundled": true, "dev": true, "requires": { "@babel/types": "^7.16.7" } }, "@babel/helper-compilation-targets": { "version": "7.17.7", "bundled": true, "dev": true, "requires": { "@babel/compat-data": "^7.17.7", "@babel/helper-validator-option": "^7.16.7", "browserslist": "^4.17.5", "semver": "^6.3.0" } }, "@babel/helper-environment-visitor": { "version": "7.16.7", "bundled": true, "dev": true, "requires": { "@babel/types": "^7.16.7" } }, "@babel/helper-function-name": { "version": "7.16.7", "bundled": true, "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.16.7", "@babel/template": "^7.16.7", "@babel/types": "^7.16.7" } }, "@babel/helper-get-function-arity": { "version": "7.16.7", "bundled": true, "dev": true, "requires": { "@babel/types": "^7.16.7" } }, "@babel/helper-hoist-variables": { "version": "7.16.7", "bundled": true, "dev": true, "requires": { "@babel/types": "^7.16.7" } }, "@babel/helper-module-imports": { "version": "7.16.7", "bundled": true, "dev": true, "requires": { "@babel/types": "^7.16.7" } }, "@babel/helper-module-transforms": { "version": "7.17.7", "bundled": true, "dev": true, "requires": { "@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-plugin-utils": { "version": "7.16.7", "bundled": true, "dev": true }, "@babel/helper-simple-access": { "version": "7.17.7", "bundled": true, "dev": true, "requires": { "@babel/types": "^7.17.0" } }, "@babel/helper-split-export-declaration": { "version": "7.16.7", "bundled": true, "dev": true, "requires": { "@babel/types": "^7.16.7" } }, "@babel/helper-validator-identifier": { "version": "7.16.7", "bundled": true, "dev": true }, "@babel/helper-validator-option": { "version": "7.16.7", "bundled": true, "dev": true }, "@babel/helpers": { "version": "7.17.8", "bundled": true, "dev": true, "requires": { "@babel/template": "^7.16.7", "@babel/traverse": "^7.17.3", "@babel/types": "^7.17.0" } }, "@babel/highlight": { "version": "7.16.10", "bundled": true, "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { "version": "7.17.8", "bundled": true, "dev": true }, "@babel/plugin-proposal-object-rest-spread": { "version": "7.17.3", "bundled": true, "dev": true, "requires": { "@babel/compat-data": "^7.17.0", "@babel/helper-compilation-targets": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-transform-parameters": "^7.16.7" } }, "@babel/plugin-syntax-jsx": { "version": "7.16.7", "bundled": true, "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", "bundled": true, "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-transform-destructuring": { "version": "7.17.7", "bundled": true, "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-parameters": { "version": "7.16.7", "bundled": true, "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-react-jsx": { "version": "7.17.3", "bundled": true, "dev": true, "requires": { "@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/template": { "version": "7.16.7", "bundled": true, "dev": true, "requires": { "@babel/code-frame": "^7.16.7", "@babel/parser": "^7.16.7", "@babel/types": "^7.16.7" } }, "@babel/traverse": { "version": "7.17.3", "bundled": true, "dev": true, "requires": { "@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", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { "version": "7.17.0", "bundled": true, "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } }, "@isaacs/import-jsx": { "version": "4.0.1", "bundled": true, "dev": true, "requires": { "@babel/core": "^7.5.5", "@babel/plugin-proposal-object-rest-spread": "^7.5.5", "@babel/plugin-transform-destructuring": "^7.5.0", "@babel/plugin-transform-react-jsx": "^7.3.0", "caller-path": "^3.0.1", "find-cache-dir": "^3.2.0", "make-dir": "^3.0.2", "resolve-from": "^3.0.0", "rimraf": "^3.0.0" } }, "@jridgewell/resolve-uri": { "version": "3.0.5", "bundled": true, "dev": true }, "@jridgewell/sourcemap-codec": { "version": "1.4.11", "bundled": true, "dev": true }, "@jridgewell/trace-mapping": { "version": "0.3.4", "bundled": true, "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "@types/prop-types": { "version": "15.7.4", "bundled": true, "dev": true }, "@types/react": { "version": "17.0.41", "bundled": true, "dev": true, "requires": { "@types/prop-types": "*", "@types/scheduler": "*", "csstype": "^3.0.2" } }, "@types/scheduler": { "version": "0.16.2", "bundled": true, "dev": true }, "@types/yoga-layout": { "version": "1.9.2", "bundled": true, "dev": true }, "ansi-escapes": { "version": "4.3.2", "bundled": true, "dev": true, "requires": { "type-fest": "^0.21.3" }, "dependencies": { "type-fest": { "version": "0.21.3", "bundled": true, "dev": true } } }, "ansi-regex": { "version": "5.0.1", "bundled": true, "dev": true }, "ansi-styles": { "version": "3.2.1", "bundled": true, "dev": true, "requires": { "color-convert": "^1.9.0" } }, "ansicolors": { "version": "0.3.2", "bundled": true, "dev": true }, "astral-regex": { "version": "2.0.0", "bundled": true, "dev": true }, "auto-bind": { "version": "4.0.0", "bundled": true, "dev": true }, "balanced-match": { "version": "1.0.2", "bundled": true, "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "browserslist": { "version": "4.20.2", "bundled": true, "dev": true, "requires": { "caniuse-lite": "^1.0.30001317", "electron-to-chromium": "^1.4.84", "escalade": "^3.1.1", "node-releases": "^2.0.2", "picocolors": "^1.0.0" } }, "caller-callsite": { "version": "4.1.0", "bundled": true, "dev": true, "requires": { "callsites": "^3.1.0" } }, "caller-path": { "version": "3.0.1", "bundled": true, "dev": true, "requires": { "caller-callsite": "^4.1.0" } }, "callsites": { "version": "3.1.0", "bundled": true, "dev": true }, "caniuse-lite": { "version": "1.0.30001319", "bundled": true, "dev": true }, "cardinal": { "version": "2.1.1", "bundled": true, "dev": true, "requires": { "ansicolors": "~0.3.2", "redeyed": "~2.1.0" } }, "chalk": { "version": "2.4.2", "bundled": true, "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "ci-info": { "version": "2.0.0", "bundled": true, "dev": true }, "cli-boxes": { "version": "2.2.1", "bundled": true, "dev": true }, "cli-cursor": { "version": "3.1.0", "bundled": true, "dev": true, "requires": { "restore-cursor": "^3.1.0" } }, "cli-truncate": { "version": "2.1.0", "bundled": true, "dev": true, "requires": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" } }, "code-excerpt": { "version": "3.0.0", "bundled": true, "dev": true, "requires": { "convert-to-spaces": "^1.0.1" } }, "color-convert": { "version": "1.9.3", "bundled": true, "dev": true, "requires": { "color-name": "1.1.3" } }, "color-name": { "version": "1.1.3", "bundled": true, "dev": true }, "commondir": { "version": "1.0.1", "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, "dev": true }, "convert-source-map": { "version": "1.8.0", "bundled": true, "dev": true, "requires": { "safe-buffer": "~5.1.1" } }, "convert-to-spaces": { "version": "1.0.2", "bundled": true, "dev": true }, "csstype": { "version": "3.0.11", "bundled": true, "dev": true }, "debug": { "version": "4.3.4", "bundled": true, "dev": true, "requires": { "ms": "2.1.2" } }, "electron-to-chromium": { "version": "1.4.89", "bundled": true, "dev": true }, "emoji-regex": { "version": "8.0.0", "bundled": true, "dev": true }, "escalade": { "version": "3.1.1", "bundled": true, "dev": true }, "escape-string-regexp": { "version": "1.0.5", "bundled": true, "dev": true }, "esprima": { "version": "4.0.1", "bundled": true, "dev": true }, "events-to-array": { "version": "1.1.2", "bundled": true, "dev": true }, "find-cache-dir": { "version": "3.3.2", "bundled": true, "dev": true, "requires": { "commondir": "^1.0.1", "make-dir": "^3.0.2", "pkg-dir": "^4.1.0" } }, "find-up": { "version": "4.1.0", "bundled": true, "dev": true, "requires": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, "fs.realpath": { "version": "1.0.0", "bundled": true, "dev": true }, "gensync": { "version": "1.0.0-beta.2", "bundled": true, "dev": true }, "glob": { "version": "7.2.0", "bundled": true, "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "globals": { "version": "11.12.0", "bundled": true, "dev": true }, "has-flag": { "version": "3.0.0", "bundled": true, "dev": true }, "indent-string": { "version": "4.0.0", "bundled": true, "dev": true }, "inflight": { "version": "1.0.6", "bundled": true, "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" } }, "inherits": { "version": "2.0.4", "bundled": true, "dev": true }, "ink": { "version": "3.2.0", "bundled": true, "dev": true, "requires": { "ansi-escapes": "^4.2.1", "auto-bind": "4.0.0", "chalk": "^4.1.0", "cli-boxes": "^2.2.0", "cli-cursor": "^3.1.0", "cli-truncate": "^2.1.0", "code-excerpt": "^3.0.0", "indent-string": "^4.0.0", "is-ci": "^2.0.0", "lodash": "^4.17.20", "patch-console": "^1.0.0", "react-devtools-core": "^4.19.1", "react-reconciler": "^0.26.2", "scheduler": "^0.20.2", "signal-exit": "^3.0.2", "slice-ansi": "^3.0.0", "stack-utils": "^2.0.2", "string-width": "^4.2.2", "type-fest": "^0.12.0", "widest-line": "^3.1.0", "wrap-ansi": "^6.2.0", "ws": "^7.5.5", "yoga-layout-prebuilt": "^1.9.6" }, "dependencies": { "ansi-styles": { "version": "4.3.0", "bundled": true, "dev": true, "requires": { "color-convert": "^2.0.1" } }, "chalk": { "version": "4.1.2", "bundled": true, "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "color-convert": { "version": "2.0.1", "bundled": true, "dev": true, "requires": { "color-name": "~1.1.4" } }, "color-name": { "version": "1.1.4", "bundled": true, "dev": true }, "has-flag": { "version": "4.0.0", "bundled": true, "dev": true }, "supports-color": { "version": "7.2.0", "bundled": true, "dev": true, "requires": { "has-flag": "^4.0.0" } } } }, "is-ci": { "version": "2.0.0", "bundled": true, "dev": true, "requires": { "ci-info": "^2.0.0" } }, "is-fullwidth-code-point": { "version": "3.0.0", "bundled": true, "dev": true }, "js-tokens": { "version": "4.0.0", "bundled": true, "dev": true }, "jsesc": { "version": "2.5.2", "bundled": true, "dev": true }, "json5": { "version": "2.2.1", "bundled": true, "dev": true }, "locate-path": { "version": "5.0.0", "bundled": true, "dev": true, "requires": { "p-locate": "^4.1.0" } }, "lodash": { "version": "4.17.21", "bundled": true, "dev": true }, "loose-envify": { "version": "1.4.0", "bundled": true, "dev": true, "requires": { "js-tokens": "^3.0.0 || ^4.0.0" } }, "make-dir": { "version": "3.1.0", "bundled": true, "dev": true, "requires": { "semver": "^6.0.0" } }, "mimic-fn": { "version": "2.1.0", "bundled": true, "dev": true }, "minimatch": { "version": "3.1.2", "bundled": true, "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, "minipass": { "version": "3.1.6", "bundled": true, "dev": true, "requires": { "yallist": "^4.0.0" } }, "ms": { "version": "2.1.2", "bundled": true, "dev": true }, "node-releases": { "version": "2.0.2", "bundled": true, "dev": true }, "object-assign": { "version": "4.1.1", "bundled": true, "dev": true }, "once": { "version": "1.4.0", "bundled": true, "dev": true, "requires": { "wrappy": "1" } }, "onetime": { "version": "5.1.2", "bundled": true, "dev": true, "requires": { "mimic-fn": "^2.1.0" } }, "p-limit": { "version": "2.3.0", "bundled": true, "dev": true, "requires": { "p-try": "^2.0.0" } }, "p-locate": { "version": "4.1.0", "bundled": true, "dev": true, "requires": { "p-limit": "^2.2.0" } }, "p-try": { "version": "2.2.0", "bundled": true, "dev": true }, "patch-console": { "version": "1.0.0", "bundled": true, "dev": true }, "path-exists": { "version": "4.0.0", "bundled": true, "dev": true }, "path-is-absolute": { "version": "1.0.1", "bundled": true, "dev": true }, "picocolors": { "version": "1.0.0", "bundled": true, "dev": true }, "pkg-dir": { "version": "4.2.0", "bundled": true, "dev": true, "requires": { "find-up": "^4.0.0" } }, "punycode": { "version": "2.1.1", "bundled": true, "dev": true }, "react": { "version": "17.0.2", "bundled": true, "dev": true, "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" } }, "react-devtools-core": { "version": "4.24.1", "bundled": true, "dev": true, "requires": { "shell-quote": "^1.6.1", "ws": "^7" } }, "react-reconciler": { "version": "0.26.2", "bundled": true, "dev": true, "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "scheduler": "^0.20.2" } }, "redeyed": { "version": "2.1.1", "bundled": true, "dev": true, "requires": { "esprima": "~4.0.0" } }, "resolve-from": { "version": "3.0.0", "bundled": true, "dev": true }, "restore-cursor": { "version": "3.1.0", "bundled": true, "dev": true, "requires": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, "rimraf": { "version": "3.0.2", "bundled": true, "dev": true, "requires": { "glob": "^7.1.3" } }, "safe-buffer": { "version": "5.1.2", "bundled": true, "dev": true }, "scheduler": { "version": "0.20.2", "bundled": true, "dev": true, "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" } }, "semver": { "version": "6.3.0", "bundled": true, "dev": true }, "shell-quote": { "version": "1.7.3", "bundled": true, "dev": true }, "signal-exit": { "version": "3.0.7", "bundled": true, "dev": true }, "slice-ansi": { "version": "3.0.0", "bundled": true, "dev": true, "requires": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", "is-fullwidth-code-point": "^3.0.0" }, "dependencies": { "ansi-styles": { "version": "4.3.0", "bundled": true, "dev": true, "requires": { "color-convert": "^2.0.1" } }, "color-convert": { "version": "2.0.1", "bundled": true, "dev": true, "requires": { "color-name": "~1.1.4" } }, "color-name": { "version": "1.1.4", "bundled": true, "dev": true } } }, "source-map": { "version": "0.5.7", "bundled": true, "dev": true }, "stack-utils": { "version": "2.0.5", "bundled": true, "dev": true, "requires": { "escape-string-regexp": "^2.0.0" }, "dependencies": { "escape-string-regexp": { "version": "2.0.0", "bundled": true, "dev": true } } }, "string-width": { "version": "4.2.3", "bundled": true, "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "strip-ansi": { "version": "6.0.1", "bundled": true, "dev": true, "requires": { "ansi-regex": "^5.0.1" } }, "supports-color": { "version": "5.5.0", "bundled": true, "dev": true, "requires": { "has-flag": "^3.0.0" } }, "tap-parser": { "version": "11.0.1", "bundled": true, "dev": true, "requires": { "events-to-array": "^1.0.1", "minipass": "^3.1.6", "tap-yaml": "^1.0.0" } }, "tap-yaml": { "version": "1.0.0", "bundled": true, "dev": true, "requires": { "yaml": "^1.5.0" } }, "to-fast-properties": { "version": "2.0.0", "bundled": true, "dev": true }, "treport": { "version": "3.0.3", "bundled": true, "dev": true, "requires": { "@isaacs/import-jsx": "^4.0.1", "cardinal": "^2.1.1", "chalk": "^3.0.0", "ink": "^3.2.0", "ms": "^2.1.2", "tap-parser": "^11.0.0", "unicode-length": "^2.0.2" }, "dependencies": { "ansi-styles": { "version": "4.3.0", "bundled": true, "dev": true, "requires": { "color-convert": "^2.0.1" } }, "chalk": { "version": "3.0.0", "bundled": true, "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "color-convert": { "version": "2.0.1", "bundled": true, "dev": true, "requires": { "color-name": "~1.1.4" } }, "color-name": { "version": "1.1.4", "bundled": true, "dev": true }, "has-flag": { "version": "4.0.0", "bundled": true, "dev": true }, "supports-color": { "version": "7.2.0", "bundled": true, "dev": true, "requires": { "has-flag": "^4.0.0" } } } }, "type-fest": { "version": "0.12.0", "bundled": true, "dev": true }, "unicode-length": { "version": "2.0.2", "bundled": true, "dev": true, "requires": { "punycode": "^2.0.0", "strip-ansi": "^3.0.1" }, "dependencies": { "ansi-regex": { "version": "2.1.1", "bundled": true, "dev": true }, "strip-ansi": { "version": "3.0.1", "bundled": true, "dev": true, "requires": { "ansi-regex": "^2.0.0" } } } }, "widest-line": { "version": "3.1.0", "bundled": true, "dev": true, "requires": { "string-width": "^4.0.0" } }, "wrap-ansi": { "version": "6.2.0", "bundled": true, "dev": true, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" }, "dependencies": { "ansi-styles": { "version": "4.3.0", "bundled": true, "dev": true, "requires": { "color-convert": "^2.0.1" } }, "color-convert": { "version": "2.0.1", "bundled": true, "dev": true, "requires": { "color-name": "~1.1.4" } }, "color-name": { "version": "1.1.4", "bundled": true, "dev": true } } }, "wrappy": { "version": "1.0.2", "bundled": true, "dev": true }, "ws": { "version": "7.5.7", "bundled": true, "dev": true, "requires": {} }, "yallist": { "version": "4.0.0", "bundled": true, "dev": true }, "yaml": { "version": "1.10.2", "bundled": true, "dev": true }, "yoga-layout-prebuilt": { "version": "1.10.0", "bundled": true, "dev": true, "requires": { "@types/yoga-layout": "1.9.2" } } } }, "tap-mocha-reporter": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/tap-mocha-reporter/-/tap-mocha-reporter-5.0.3.tgz", "integrity": "sha512-6zlGkaV4J+XMRFkN0X+yuw6xHbE9jyCZ3WUKfw4KxMyRGOpYSRuuQTRJyWX88WWuLdVTuFbxzwXhXuS2XE6o0g==", "dev": true, "requires": { "color-support": "^1.1.0", "debug": "^4.1.1", "diff": "^4.0.1", "escape-string-regexp": "^2.0.0", "glob": "^7.0.5", "tap-parser": "^11.0.0", "tap-yaml": "^1.0.0", "unicode-length": "^2.0.2" }, "dependencies": { "escape-string-regexp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true } } }, "tap-parser": { "version": "11.0.1", "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-11.0.1.tgz", "integrity": "sha512-5ow0oyFOnXVSALYdidMX94u0GEjIlgc/BPFYLx0yRh9hb8+cFGNJqJzDJlUqbLOwx8+NBrIbxCWkIQi7555c0w==", "dev": true, "requires": { "events-to-array": "^1.0.1", "minipass": "^3.1.6", "tap-yaml": "^1.0.0" } }, "tap-yaml": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/tap-yaml/-/tap-yaml-1.0.0.tgz", "integrity": "sha512-Rxbx4EnrWkYk0/ztcm5u3/VznbyFJpyXO12dDBHKWiDVxy7O2Qw6MRrwO5H6Ww0U5YhRY/4C/VzWmFPhBQc4qQ==", "dev": true, "requires": { "yaml": "^1.5.0" } }, "tcompare": { "version": "5.0.7", "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-5.0.7.tgz", "integrity": "sha512-d9iddt6YYGgyxJw5bjsN7UJUO1kGOtjSlNy/4PoGYAjQS5pAT/hzIoLf1bZCw+uUxRmZJh7Yy1aA7xKVRT9B4w==", "dev": true, "requires": { "diff": "^4.0.2" } }, "test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "requires": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", "minimatch": "^3.0.4" } }, "through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "requires": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" } }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { "is-number": "^7.0.0" } }, "trivial-deferred": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trivial-deferred/-/trivial-deferred-1.0.1.tgz", "integrity": "sha1-N21NKdlR1jaKb3oK6FwvTV4GWPM=", "dev": true }, "ts-node": { "version": "10.8.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.8.1.tgz", "integrity": "sha512-Wwsnao4DQoJsN034wePSg5nZiw4YKXf56mPIAeD6wVmiv+RytNSWqc2f3fKvcUoV+Yn2+yocD71VOfQHbmVX4g==", "dev": true, "requires": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", "@tsconfig/node12": "^1.0.7", "@tsconfig/node14": "^1.0.0", "@tsconfig/node16": "^1.0.2", "acorn": "^8.4.1", "acorn-walk": "^8.1.1", "arg": "^4.1.0", "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" } }, "type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true }, "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, "requires": { "is-typedarray": "^1.0.0" } }, "typescript": { "version": "4.7.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.3.tgz", "integrity": "sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==", "dev": true }, "unicode-length": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/unicode-length/-/unicode-length-2.0.2.tgz", "integrity": "sha512-Ph/j1VbS3/r77nhoY2WU0GWGjVYOHL3xpKp0y/Eq2e5r0mT/6b649vm7KFO6RdAdrZkYLdxphYVgvODxPB+Ebg==", "dev": true, "requires": { "punycode": "^2.0.0", "strip-ansi": "^3.0.1" }, "dependencies": { "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "^2.0.0" } } } }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true }, "v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" } }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "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, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" }, "dependencies": { "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, "requires": { "color-convert": "^2.0.1" } }, "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, "requires": { "color-name": "~1.1.4" } }, "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 } } }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "requires": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", "signal-exit": "^3.0.2", "typedarray-to-buffer": "^3.1.5" } }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, "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 }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true }, "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, "requires": { "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" }, "dependencies": { "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, "requires": { "color-convert": "^2.0.1" } }, "cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^6.2.0" } }, "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, "requires": { "color-name": "~1.1.4" } }, "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 }, "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, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } } } }, "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, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" } }, "yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true } } } minipass-3.3.6/package.json000066400000000000000000000022431434007227000156340ustar00rootroot00000000000000{ "name": "minipass", "version": "3.3.6", "description": "minimal implementation of a PassThrough stream", "main": "index.js", "types": "index.d.ts", "dependencies": { "yallist": "^4.0.0" }, "devDependencies": { "@types/node": "^17.0.41", "end-of-stream": "^1.4.0", "prettier": "^2.6.2", "tap": "^16.2.0", "through2": "^2.0.3", "ts-node": "^10.8.1", "typescript": "^4.7.3" }, "scripts": { "test": "tap", "preversion": "npm test", "postversion": "npm publish", "postpublish": "git push origin --follow-tags" }, "repository": { "type": "git", "url": "git+https://github.com/isaacs/minipass.git" }, "keywords": [ "passthrough", "stream" ], "author": "Isaac Z. Schlueter (http://blog.izs.me/)", "license": "ISC", "files": [ "index.d.ts", "index.js" ], "tap": { "check-coverage": true }, "engines": { "node": ">=8" }, "prettier": { "semi": false, "printWidth": 80, "tabWidth": 2, "useTabs": false, "singleQuote": true, "jsxSingleQuote": false, "bracketSameLine": true, "arrowParens": "avoid", "endOfLine": "lf" } } minipass-3.3.6/test/000077500000000000000000000000001434007227000143245ustar00rootroot00000000000000minipass-3.3.6/test/array-buffers.js000066400000000000000000000033211434007227000174310ustar00rootroot00000000000000const t = require('tap') const stringToArrayBuffer = s => { const buf = Buffer.from(s) const ab = new ArrayBuffer(buf.length) const ui = new Uint8Array(ab) for (let i = 0; i < buf.length; i++) { ui[i] = buf[i] } return ab } const MP = require('../') const e = { encoding: 'utf8' } t.test('write array buffer', t => { const ab = stringToArrayBuffer('hello world') const mp = new MP(e).end(ab) t.equal(mp.objectMode, false, 'array buffer does not trigger objectMode') return mp.concat().then(s => t.equal(s, 'hello world')) }) t.test('write uint8 typed array', t => { const ab = stringToArrayBuffer('hello world') const ui = new Uint8Array(ab, 0, 5) const mp = new MP(e).end(ui) t.equal(mp.objectMode, false, 'typed array does not trigger objectMode') return mp.concat().then(s => t.equal(s, 'hello')) }) const { ArrayBuffer: VMArrayBuffer, Uint8Array: VMUint8Array, } = require('vm').runInNewContext('({ArrayBuffer,Uint8Array})') const stringToVMArrayBuffer = s => { const buf = Buffer.from(s) const ab = new VMArrayBuffer(buf.length) const ui = new VMUint8Array(ab) for (let i = 0; i < buf.length; i++) { ui[i] = buf[i] } return ab } t.test('write vm array buffer', t => { const ab = stringToVMArrayBuffer('hello world') const mp = new MP(e).end(ab) t.equal(mp.objectMode, false, 'array buffer does not trigger objectMode') return mp.concat().then(s => t.equal(s, 'hello world')) }) t.test('write uint8 typed array', t => { const ab = stringToVMArrayBuffer('hello world') const ui = new VMUint8Array(ab, 0, 5) const mp = new MP(e).end(ui) t.equal(mp.objectMode, false, 'typed array does not trigger objectMode') return mp.concat().then(s => t.equal(s, 'hello')) }) minipass-3.3.6/test/async-duplicate-end.js000066400000000000000000000005631434007227000205170ustar00rootroot00000000000000const Minipass = require('../') const t = require('tap') t.test('async pipes should only end one time', t => { const m = new Minipass({ async: true }) let ended = 0 const d = new Minipass() d.end = () => { ended++ Minipass.prototype.end.call(d) } m.pipe(d) m.end() m.end() m.end() setTimeout(() => { t.equal(ended, 1) t.end() }) }) minipass-3.3.6/test/async-stream.js000066400000000000000000000043351434007227000172750ustar00rootroot00000000000000const t = require('tap') const MP = require('../') t.test('pipe', t => { const m = new MP({ encoding: 'utf8', async: true }) const d1 = new MP({ encoding: 'utf8' }) const d2 = new MP({ encoding: 'utf8' }) m.pipe(d1) m.write('hello, ') m.pipe(d2) m.write('world') m.end() return Promise.all([d1.concat(), d2.concat()]) .then(result => t.strictSame(result, ['hello, world', 'hello, world'])) }) t.test('pipe split', t => { const m = new MP({ encoding: 'utf8' }) t.equal(m.async, false) m.async = true t.equal(m.async, true) m.async = 'banana' t.equal(m.async, true) m.async = false t.equal(m.async, true, 'cannot make an async stream sync') const d1 = new MP({ encoding: 'utf8' }) const d2 = new MP({ encoding: 'utf8' }) m.pipe(d1) m.write('hello, ') m.pipe(d2) setTimeout(() => { m.write('world') m.end() }) return Promise.all([d1.concat(), d2.concat()]) .then(result => t.strictSame(result, ['hello, world', 'hello, world'])) }) t.test('data event', t => { const m = new MP({ encoding: 'utf8', async: true }) const d1 = new MP({ encoding: 'utf8' }) const out1 = [] m.on('data', c => out1.push(c)) m.write('hello, ') const out2 = [] m.on('data', c => out2.push(c)) m.pipe(d1) m.end('world!') return d1.concat().then(res => { t.equal(res, 'hello, world!') t.equal(out1.join(''), 'hello, world!') t.equal(out2.join(''), 'hello, world!') }) }) t.test('data event split', t => { const m = new MP({ encoding: 'utf8', async: true }) const d1 = new MP({ encoding: 'utf8' }) const out1 = [] m.on('data', c => out1.push(c)) m.write('hello, ') const out2 = [] m.on('data', c => out2.push(c)) m.pipe(d1) setTimeout(() => m.end('world!')) return d1.concat().then(res => { t.equal(res, 'hello, world!') t.equal(out1.join(''), 'hello, world!') t.equal(out2.join(''), 'hello, world!') }) }) t.test('defer error event', t => { const m = new MP() try { m.emit('error', new Error('poop')) } catch (_) {} m.async = true let calledErrorHandler = false m.on('error', er => { t.equal(calledErrorHandler, false) t.match(er, { message: 'poop' }) calledErrorHandler = true t.end() }) t.equal(calledErrorHandler, false) }) minipass-3.3.6/test/auto-end-deferred-when-paused.js000066400000000000000000000005061434007227000223730ustar00rootroot00000000000000const t = require('tap') const MP = require('../') t.test('do not auto-end empty stream if explicitly paused', t => { const mp = new MP() let waitedForEnd = false mp.pause() setTimeout(() => { waitedForEnd = true mp.resume() }) return mp.end().promise().then(() => t.ok(waitedForEnd, 'waited for end')) }) minipass-3.3.6/test/basic.js000066400000000000000000000301351434007227000157450ustar00rootroot00000000000000const MiniPass = require('../') const t = require('tap') const EE = require('events').EventEmitter t.test('some basic piping and writing', async t => { let mp = new MiniPass({ encoding: 'base64' }) t.notOk(mp.flowing) mp.flowing = true t.notOk(mp.flowing) t.equal(mp.encoding, 'base64') mp.encoding = null t.equal(mp.encoding, null) t.equal(mp.readable, true) t.equal(mp.writable, true) t.equal(mp.write('hello'), false) let dest = new MiniPass() let sawDestData = false dest.once('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.write('bye'), true, 'write() returns true when flowing') dest.pause() t.equal(mp.write('after pause'), false, 'false when dest is paused') t.equal(mp.write('after false'), false, 'false when not flowing') t.equal(dest.buffer.length, 1, '1 item is buffered in dest') t.equal(mp.buffer.length, 1, '1 item buffered in src') dest.resume() t.equal(dest.buffer.length, 0, 'nothing is buffered in dest') t.equal(mp.buffer.length, 0, 'nothing buffered in src') }) t.test('unicode splitting', async t => { const butterfly = '🦋' const mp = new MiniPass({ encoding: 'utf8' }) t.plan(2) 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.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.end() }) t.test('base64 -> utf8 piping', t => { t.plan(1) const butterfly = '🦋' const mp = new MiniPass({ encoding: 'base64' }) const dest = new MiniPass({ encoding: 'utf8' }) mp.pipe(dest) let out = '' dest.on('data', c => out += c) dest.on('end', _ => t.equal(Buffer.from(out, 'base64').toString('utf8'), butterfly)) mp.write(butterfly) mp.end() }) t.test('utf8 -> base64 piping', t => { t.plan(1) const butterfly = '🦋' const mp = new MiniPass({ encoding: 'utf8' }) const dest = new MiniPass({ encoding: 'base64' }) mp.pipe(dest) let out = '' dest.on('data', c => out += c) dest.on('end', _ => t.equal(Buffer.from(out, 'base64').toString('utf8'), butterfly)) mp.write(butterfly) mp.end() }) t.test('read method', async t => { const butterfly = '🦋' const mp = new MiniPass({ encoding: 'utf8' }) mp.on('data', c => t.equal(c, butterfly)) mp.pause() t.equal(mp.paused, true, 'paused=true') mp.write(Buffer.from(butterfly)) t.equal(mp.read(5), null) t.equal(mp.read(0), null) t.same(mp.read(2), butterfly) }) t.test('read with no args', async t => { t.test('buffer -> string', async t => { const butterfly = '🦋' const mp = new MiniPass({ encoding: 'utf8' }) 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)) t.same(mp.read(), butterfly) t.equal(mp.read(), null) }) t.test('buffer -> buffer', async t => { const butterfly = Buffer.from('🦋') 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)) t.same(mp.read(), butterfly) t.equal(mp.read(), null) }) t.test('string -> buffer', async t => { const butterfly = '🦋' const butterbuf = Buffer.from(butterfly) const mp = new MiniPass() mp.on('data', c => t.same(c, butterbuf)) mp.pause() mp.write(butterfly) t.same(mp.read(), butterbuf) t.equal(mp.read(), null) }) t.test('string -> string', async t => { const butterfly = '🦋' const mp = new MiniPass({ encoding: 'utf8' }) mp.on('data', c => t.equal(c, butterfly)) mp.pause() mp.write(butterfly[0]) mp.write(butterfly[1]) t.same(mp.read(), butterfly) t.equal(mp.read(), null) }) }) 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)) 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.test('write after end', async t => { const mp = new MiniPass() let sawEnd = false mp.on('end', _ => sawEnd = true) mp.end('not empty') t.throws(_ => mp.write('nope')) t.notOk(sawEnd, 'should not get end event yet (not flowing)') mp.resume() t.equal(mp.paused, false, 'paused=false after resume') t.ok(sawEnd, 'should get end event after resume()') }) t.test('write after end', async t => { const mp = new MiniPass() let sawEnd = 0 mp.on('end', _ => sawEnd++) mp.end() // empty t.ok(mp.emittedEnd, 'emitted end event') t.throws(_ => mp.write('nope')) t.equal(sawEnd, 1, 'should get end event (empty stream)') mp.resume() t.ok(sawEnd, 2, 'should get end event again, I guess?') }) t.test('write cb', async t => { const mp = new MiniPass() let calledCb = false mp.write('ok', () => calledCb = true) t.ok(calledCb) }) t.test('end with chunk', async t => { let out = '' const mp = new MiniPass({ encoding: 'utf8' }) let sawEnd = false mp.prependListener('end', _ => sawEnd = true) mp.addListener('data', c => out += c) let endCb = false mp.end('ok', _ => endCb = true) t.equal(out, 'ok') t.ok(sawEnd, 'should see end event') t.ok(endCb, 'end cb should get called') }) t.test('no drain if could not entirely drain on resume', async t => { const mp = new MiniPass() const dest = new MiniPass({ encoding: 'buffer' }) t.equal(mp.write('foo'), false) t.equal(mp.write('bar'), false) t.equal(mp.write('baz'), false) t.equal(mp.write('qux'), false) mp.on('drain', _ => t.fail('should not drain')) mp.pipe(dest) }) t.test('end with chunk pending', async t => { const mp = new MiniPass() t.equal(mp.write('foo'), false) t.equal(mp.write('626172', 'hex'), false) t.equal(mp.write('baz'), false) t.equal(mp.write('qux'), false) let sawEnd = false mp.on('end', _ => sawEnd = true) let endCb = false mp.end(_ => endCb = true) t.notOk(endCb, 'endcb should not happen yet') t.notOk(sawEnd, 'should not see end yet') let out = '' mp.on('data', c => out += c) t.ok(sawEnd, 'see end after flush') t.ok(endCb, 'end cb after flush') t.equal(out, 'foobarbazqux') }) t.test('pipe to stderr does not throw', t => { const spawn = require('child_process').spawn const module = JSON.stringify(require.resolve('../')) const fs = require('fs') const file = __dirname + '/prog.js' fs.writeFileSync(file, ` const MP = require(${module}) const mp = new MP() mp.pipe(process.stderr) mp.end("hello") `) let err = '' return new Promise(res => { const child = spawn(process.execPath, [file]) child.stderr.on('data', c => err += c) child.on('close', (code, signal) => { t.equal(code, 0) t.equal(signal, null) t.equal(err, 'hello') fs.unlinkSync(file) res() }) }) }) t.test('emit works with many args', t => { const mp = new MiniPass() t.plan(2) mp.on('foo', function (a, b, c, d, e, f, g) { t.same([a,b,c,d,e,f,g], [1,2,3,4,5,6,7]) t.equal(arguments.length, 7) }) mp.emit('foo', 1, 2, 3, 4, 5, 6, 7) }) t.test('emit drain on resume, even if no flush', t => { const mp = new MiniPass() mp.encoding = 'utf8' const chunks = [] class SlowStream extends EE { write (chunk) { chunks.push(chunk) setTimeout(_ => this.emit('drain')) return false } end () { return this.write() } } const ss = new SlowStream() mp.pipe(ss) t.ok(mp.flowing, 'flowing, because piped') t.equal(mp.write('foo'), false, 'write() returns false, backpressure') t.equal(mp.buffer.length, 0, 'buffer len is 0') t.equal(mp.flowing, false, 'flowing false, awaiting drain') t.same(chunks, ['foo'], 'chunk made it through') mp.once('drain', _ => { t.pass('received mp drain event') t.end() }) }) t.test('save close for end', t => { const mp = new MiniPass() let ended = false mp.on('close', _ => { t.equal(ended, true, 'end before close') t.end() }) mp.on('end', _ => { t.equal(ended, false, 'only end once') ended = true }) mp.emit('close') mp.end('foo') t.equal(ended, false, 'no end until flushed') mp.resume() }) t.test('eos works', t => { const eos = require('end-of-stream') const mp = new MiniPass() eos(mp, er => { if (er) throw er t.end() }) mp.emit('close') mp.end('foo') mp.resume() }) t.test('bufferLength property', t => { const eos = require('end-of-stream') const mp = new MiniPass() mp.write('a') mp.write('a') mp.write('a') mp.write('a') mp.write('a') mp.write('a') t.equal(mp.bufferLength, 6) t.equal(mp.read(7), null) t.equal(mp.read(3).toString(), 'aaa') t.equal(mp.bufferLength, 3) t.equal(mp.read().toString(), 'aaa') t.equal(mp.bufferLength, 0) t.end() }) t.test('emit resume event on resume', t => { const mp = new MiniPass() t.plan(3) mp.on('resume', _ => t.pass('got resume event')) mp.end('asdf') t.equal(mp.flowing, false, 'not flowing yet') mp.resume() t.equal(mp.flowing, true, 'flowing after resume') }) 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') const a = { a: 1 } const b = { b: 1 } const out = [] mp.on('data', c => out.push(c)) mp.on('end', _ => { t.equal(out.length, 2) t.equal(out[0], a) t.equal(out[1], b) t.same(out, [ { a: 1 }, { b: 1 } ], 'objs not munged') t.end() }) t.ok(mp.write(a)) let cbcalled = false t.ok(mp.write(b, () => cbcalled = true)) t.equal(cbcalled, true) mp.end() }) t.test('objectMode no encoding', t => { const mp = new MiniPass({ objectMode: true, encoding: 'utf8' }) t.equal(mp.encoding, null) const a = { a: 1 } const b = { b: 1 } const out = [] mp.on('data', c => out.push(c)) mp.on('end', _ => { t.equal(out.length, 2) t.equal(out[0], a) t.equal(out[1], b) t.same(out, [ { a: 1 }, { b: 1 } ], 'objs not munged') t.end() }) t.ok(mp.write(a)) t.ok(mp.write(b)) mp.end() }) t.test('objectMode read() and buffering', t => { const mp = new MiniPass({ objectMode: true }) const a = { a: 1 } const b = { b: 1 } t.notOk(mp.write(a)) t.notOk(mp.write(b)) t.equal(mp.read(2), a) t.equal(mp.read(), b) t.end() }) 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'))) 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' }) const d = new MiniPass({ encoding: 'utf8' }) d.end = () => t.threw(new Error('no end no exit no way out')) d.on('data', c => t.equal(c, 'this is fine')) mp.pipe(d, { end: false }) mp.end('this is fine') }) minipass-3.3.6/test/buffer-chunk-when-flowing-stops.js000066400000000000000000000020441434007227000230110ustar00rootroot00000000000000// Reproduces an issue where write is called while the stream is flowing but a // destination cannot accept all of the buffered chunks. minipass should add // the chunk to the end of the buffer instead of emitting it before the buffer // is cleared. // // This caused issues when piping make-fetch-happen stream to tar.extract // https://github.com/npm/cli/issues/3884 const Minipass = require('../') const t = require('tap') class Pauser extends Minipass { write (chunk, encoding, callback) { super.write(chunk, encoding, callback) return false } } const src = new Minipass({encoding: 'utf8'}) const pauser = new Pauser({encoding: 'utf8'}) // queue up two chunks while the src is buffering src.write('1') src.write('2') // when the src starts flowing write a third chunk src.once('resume', () => src.write('3')) // pipe the src to the pauser which will request the src stops after the first // chunk. src.pipe(pauser) src.end() // we should expect the chunks in the original order. t.resolveMatch(pauser.collect(), ['1', '2', '3'], '123') minipass-3.3.6/test/collect-with-error-end.js000066400000000000000000000003641434007227000211560ustar00rootroot00000000000000const MP = require('../') const mp = new MP() const poop = new Error('poop') mp.on('end', () => mp.emit('error', poop)) mp.end('foo') const t = require('tap') t.test('promise catches error emitted on end', t => t.rejects(mp.collect(), poop)) minipass-3.3.6/test/collect.js000066400000000000000000000027021434007227000163100ustar00rootroot00000000000000'use strict' const t = require('tap') const MP = require('../index.js') t.test('basic', async t => { const mp = new MP() let i = 5 const interval = setInterval(() => { if (i --> 0) mp.write('foo\n') else { clearInterval(interval) mp.end() } }) mp.setEncoding('utf8') const all = await mp.collect() t.same(all, ['foo\n','foo\n','foo\n','foo\n','foo\n']) }) t.test('error', async t => { const mp = new MP() const poop = new Error('poop') setTimeout(() => mp.emit('error', poop)) await t.rejects(mp.collect(), poop) }) t.test('concat strings', async t => { const mp = new MP({ encoding: 'utf8' }) mp.write('foo') mp.write('bar') mp.write('baz') mp.end() await t.resolveMatch(mp.concat(), 'foobarbaz') }) t.test('concat buffers', async t => { const mp = new MP() mp.write('foo') mp.write('bar') mp.write('baz') mp.end() await t.resolveMatch(mp.concat(), Buffer.from('foobarbaz')) }) 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 => new MP({objectMode: true}).end({a:1}).collect().then(data => { t.equal(typeof data.dataLength, 'undefined') t.same(data, [{a:1}]) })) minipass-3.3.6/test/dest-write-returns-nonboolean.js000066400000000000000000000012051434007227000225770ustar00rootroot00000000000000const t = require('tap') const MP = require('../') t.test('writing to a non-bool returning write() does not pause', t => { const booleyStream = new (class extends MP { write (chunk, encoding, cb) { // no return! super.write(chunk, encoding, cb) } }) const booleyStream2 = new (class extends MP { write (chunk, encoding, cb) { // no return! super.write(chunk, encoding, cb) } }) const src = new MP try { return src.pipe(booleyStream).pipe(booleyStream2).concat().then(d => t.equal(d.toString(), 'hello', 'got data all the way through')) } finally { src.end('hello') } }) minipass-3.3.6/test/destroy.js000066400000000000000000000046701434007227000163620ustar00rootroot00000000000000const MP = require('../') const t = require('tap') t.match(new MP(), { destroy: Function }, 'destroy is implemented') { const mp = new MP() t.equal(mp.destroy(), mp, 'destroy() returns this') } t.equal(new MP().destroy().destroyed, true, 'destroy() sets .destroyed getter') t.test('destroy(er) emits error', t => { const mp = new MP() const er = new Error('skoarchhh') const ret = t.rejects(() => mp.promise(), er) mp.destroy(er) return ret }) t.test('calls close if present', t => { const mp = new MP() let closeCalled = false mp.close = () => { closeCalled = true setTimeout(() => mp.emit('close')) } mp.on('close', () => { t.equal(closeCalled, true, 'called close') t.end() }) mp.destroy() }) t.test('destroy a second time just emits the error', t => { const mp = new MP() mp.destroy() const er = new Error('skoarchhh') const ret = t.rejects(() => mp.promise(), er) mp.destroy(er) return ret }) t.test('destroy with no error rejects a promise', t => { const mp = new MP() const ret = t.rejects(() => mp.promise(), { message: 'stream destroyed' }) mp.destroy() return ret }) t.test('destroy with no error second time rejects a promise', t => { const mp = new MP() mp.destroy() const ret = t.rejects(() => mp.promise(), { message: 'stream destroyed' }) mp.destroy() return ret }) t.test('emits after destruction are ignored', t => { const mp = new MP().destroy() mp.on('foo', () => t.fail('should not emit foo after destroy')) mp.emit('foo') t.end() }) t.test('pipe after destroy is a no-op', t => { const p = new MP() p.write('foo') p.destroy() const q = new MP() q.on('data', c => t.fail('should not get data, upstream is destroyed')) p.pipe(q) t.end() }) t.test('resume after destroy is a no-op', t => { const p = new MP() p.pause() p.on('resume', () => t.fail('should not see resume event after destroy')) p.destroy() p.resume() t.end() }) t.test('read after destroy always returns null', t => { const p = new MP({ encoding: 'utf8' }) p.write('hello, ') p.write('world') t.equal(p.read(), 'hello, world') p.write('destroyed!') p.destroy() t.equal(p.read(), null) t.end() }) t.test('write after destroy emits error', t => { const p = new MP() p.destroy() p.on('error', er => { t.match(er, { message: 'Cannot call write after a stream was destroyed', code: 'ERR_STREAM_DESTROYED', }) t.end() }) p.write('nope') }) minipass-3.3.6/test/emit-during-end-event.js000066400000000000000000000005551434007227000207760ustar00rootroot00000000000000const Minipass = require('../') const t = require('tap') class FancyEnder extends Minipass { emit (ev, ...data) { if (ev === 'end') this.emit('foo') return super.emit(ev, ...data) } } const mp = new FancyEnder() let fooEmits = 0 mp.on('foo', () => fooEmits++) mp.end('asdf') mp.resume() t.equal(fooEmits, 1, 'should only see one event emitted') minipass-3.3.6/test/empty-buffer-end-with-encoding.js000066400000000000000000000017121434007227000225710ustar00rootroot00000000000000const t = require('tap') const MP = require('../') const enc = { encoding: 'utf8' } t.test('encoding and immediate end', t => new MP(enc).end().concat().then(s => t.equal(s, ''))) t.test('encoding and end with empty string', t => new MP(enc).end('').concat().then(s => t.equal(s, ''))) t.test('encoding and end with empty buffer', t => new MP(enc).end(Buffer.alloc(0)).concat().then(s => t.equal(s, ''))) t.test('encoding and end with stringly empty buffer', t => new MP(enc).end(Buffer.from('')).concat().then(s => t.equal(s, ''))) t.test('encoding and write then end with empty buffer', t => { const mp = new MP(enc) mp.write('ok') return mp.end(Buffer.alloc(0)).concat().then(s => t.equal(s, 'ok')) }) t.test('encoding and write then end with empty string', t => { const mp = new MP(enc) mp.write('ok') return mp.end('').concat().then(s => t.equal(s, 'ok')) }) t.test('empty write with cb', t => new MP(enc).write(Buffer.from(''), t.end)) minipass-3.3.6/test/empty-stream-emits-end-without-read.js000066400000000000000000000002021434007227000236000ustar00rootroot00000000000000const MP = require('../') const t = require('tap') t.test('empty end emits end without reading', t => new MP().end().promise()) minipass-3.3.6/test/end-missed.js000066400000000000000000000013721434007227000167150ustar00rootroot00000000000000'use strict' const t = require('tap') const MP = require('../') t.test('end is not missed if listened to after end', t => { t.plan(1) const mp = new MP() mp.end('foo') let str = '' mp.on('data', d => str += d) mp.on('end', () => t.equal(str, 'foo')) }) t.test('listening for any endish event after end re-emits', t => { t.plan(1) const mp = new MP() mp.end('foo') let str = '' mp.on('data', d => str += d) mp.on('finish', () => t.equal(str, 'foo')) }) t.test('all endish listeners get called', t => { t.plan(3) const mp = new MP() let str = '' mp.on('finish', () => t.equal(str, 'foo')) mp.on('prefinish', () => t.equal(str, 'foo')) mp.end('foo') mp.on('data', d => str += d) mp.on('end', () => t.equal(str, 'foo')) }) minipass-3.3.6/test/end-returns-this.js000066400000000000000000000001611434007227000200730ustar00rootroot00000000000000const t = require('tap') const MP = require('../') const mp = new MP() t.equal(mp.end(), mp, 'end returns this') minipass-3.3.6/test/end-twice.js000066400000000000000000000016761434007227000165530ustar00rootroot00000000000000'use strict' const t = require('tap') const MP = require('../') t.test('organic', t => { const butterfly = Buffer.from([0x61, 0xf0, 0x9f, 0xa6, 0x8b, 0xf0]) const mp = new MP({ encoding: 'utf8' }) let sawEnd = 0 mp.on('end', () => t.equal(sawEnd++, 0, 'should not have seen the end yet')) mp.once('data', () => { mp.once('data', () => { mp.once('data', () => mp.end()) mp.end() }) mp.end(butterfly.slice(3)) }) mp.end(butterfly.slice(0, 3)) t.equal(sawEnd, 1, 'should see end exactly once') t.end() }) t.test('manufactured', t => { // *should* already be impossible, but just to be even more // deliberate, in case that wasn't the only way it could happen const mp = new MP() let sawEnd = 0 mp.on('end', () => { t.equal(sawEnd++, 0, 'should not have seen the end yet') mp.emit('end') }) mp.emit('end') mp.emit('end') t.equal(sawEnd, 1, 'should see end exactly once') t.end() }) minipass-3.3.6/test/error-before-promise.js000066400000000000000000000030761434007227000207350ustar00rootroot00000000000000const MP = require('../') const t = require('tap') t.test('emit an error before calling stream.promise()', t => { const mp = new MP() const poop = new Error('poop') mp.once('error', er => t.equal(er, poop)) mp.emit('error', poop) mp.end() return t.rejects(mp.promise(), poop) }) t.test('end properly when emitting error event', t => { // this simulates a case where the 'emit' method is overridden // in a child class to do special behavior on the 'end' event, // which can cause an error to be emitted, in which case we // still need to try to re-emit end if the error is handled. // See http://npm.im/minipass-flush const mp = new MP() const poop = new Error('poop') mp.on('error', er => t.equal(er, poop, 'catch all')) let mpEnded = false mp.on('end', () => { mpEnded = true t.pass('emitted mp end event') if (pipelineEnded) t.end() }) const { emit } = mp let flushed = false let flushing = false mp.emit = (ev, ...data) => { if (ev !== 'end' || flushed) return emit.call(mp, ev, ...data) if (flushing) return if (ev === 'end') { flushing = true Promise.resolve().then(() => { flushed = true mp.emit('error', poop) }) } else { return emit.call(mp, ev, ...data) } } const src = new MP() const dest = new MP() let pipelineEnded = false mp.pipe(dest) .on('data', c => { t.equal(c.toString(), 'ok') }) .on('end', () => { pipelineEnded = true t.pass('pipeline ended') if (mpEnded) t.end() }) mp.end() }) minipass-3.3.6/test/flush-buffer-before-flowing.js000066400000000000000000000030411434007227000221530ustar00rootroot00000000000000// this is a minimal reproduction of a pretty complex interaction between // minipass-pipeline and a slow-draining proxy stream, which occurred in // make-fetch-happen. https://github.com/npm/npm-registry-fetch/issues/23 // The pipeline in question was a wrapper that tee'd data into the cache, // which is a slow-draining sink stream. When multiple chunks come through, // the Pipeline's buffer is holding a chunk, but the Pipeline itself is in // flowing mode. The solution is to always drain the buffer before emitting // 'data', if there is other data waiting to be emitted. const Minipass = require('../') const t = require('tap') const src = new Minipass({ encoding: 'utf8' }) const mid = new Minipass({ encoding: 'utf8' }) const proxy = new Minipass({ encoding: 'utf8' }) mid.write = function (chunk, encoding, cb) { Minipass.prototype.write.call(this, chunk, encoding, cb) return proxy.write(chunk, encoding, cb) } proxy.on('drain', chunk => mid.emit('drain')) proxy.on('readable', () => setTimeout(() => proxy.read())) const dest = new Minipass({ encoding: 'utf8' }) src.write('a') src.write('b') const pipeline = new (class Pipeline extends Minipass { constructor (opt) { super(opt) dest.on('data', c => super.write(c)) dest.on('end', () => super.end()) } emit (ev, ...args) { if (ev === 'resume') dest.resume() return super.emit(ev, ...args) } })({ encoding: 'utf8'}) mid.pipe(dest) src.pipe(mid) t.test('get all data', t => pipeline.concat().then(d => t.equal(d, 'abcd'))) src.write('c') src.write('d') src.end() minipass-3.3.6/test/is-stream.js000066400000000000000000000026461434007227000165760ustar00rootroot00000000000000const MP = 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') const w = new EE() w.write = () => {} w.end = () => {} t.equal(MP.isStream(w), true, 'EE with write() and end() is a stream') const r = new EE() r.pipe = () => {} t.equal(MP.isStream(r), true, 'EE with pipe() is a stream') t.equal(MP.isStream(new Stream.Readable()), true, 'Stream.Readable() is a stream') t.equal(MP.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()), true, 'Stream.Transform() is a stream') t.equal(MP.isStream(new Stream.PassThrough()), true, 'Stream.PassThrough() is a stream') t.equal(MP.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(){}, }), false, 'non-EE 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(() => {}), false, 'function is not a stream') t.equal(MP.isStream(null), false, 'null is not a stream') minipass-3.3.6/test/iteration-unsupported.js000066400000000000000000000005441434007227000212510ustar00rootroot00000000000000'use strict' const t = require('tap') global._MP_NO_ITERATOR_SYMBOLS_ = '1' const 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') } }) minipass-3.3.6/test/iteration.js000066400000000000000000000150611434007227000166630ustar00rootroot00000000000000'use strict' const t = require('tap') const MP = require('../index.js') t.test('sync iteration', t => { const cases = { 'buffer': [ null, [ Buffer.from('ab'), Buffer.from('cd'), Buffer.from('e') ]], 'string': [ { encoding: 'utf8' }, ['ab', 'cd', 'e']], 'object': [ { objectMode: true }, ['a', 'b', 'c', 'd', 'e']] } const runTest = (c, opt, expect) => { t.test(c, t => { const result = [] const mp = new MP(opt) mp.write('a') mp.write('b') for (let letter of mp) { result.push(letter) } mp.write('c') mp.write('d') result.push.call(result, ...mp) mp.write('e') mp.end() for (let letter of mp) { result.push(letter) // e } for (let letter of mp) { result.push(letter) // nothing } t.match(result, expect) t.end() }) } for (let c in cases) { runTest(c, cases[c][0], cases[c][1]) } t.test('destroy while iterating', t => { const mp = new MP({ objectMode: true }) mp.write('a') mp.write('b') mp.write('c') mp.write('d') const result = [] for (let letter of mp) { result.push(letter) mp.destroy() } t.same(result, ['a']) t.end() }) t.end() }) t.test('async iteration', t => { const expect = [ 'start\n', 'foo\n', 'foo\n', 'foo\n', 'foo\n', 'foo\n', 'bar\n' ] t.test('end immediate', async t => { const mp = new MP({ encoding: 'utf8' }) let i = 5 mp.write('start\n') const inter = setInterval(() => { if (i --> 0) mp.write(Buffer.from('foo\n', 'utf8')) else { mp.end('bar\n') clearInterval(inter) } }) const result = [] for await (let x of mp) result.push(x) t.same(result, expect) }) t.test('end later', async t => { const mp = new MP({ encoding: 'utf8' }) let i = 5 mp.write('start\n') const inter = setInterval(() => { if (i --> 0) mp.write(Buffer.from('foo\n', 'utf8')) else { mp.write('bar\n') setTimeout(() => mp.end()) clearInterval(inter) } }) const result = [] for await (let x of mp) result.push(x) t.same(result, expect) }) t.test('multiple chunks at once, asyncly', async t => { const mp = new MP() let i = 6 const write = () => { if (i === 6) mp.write(Buffer.from('start\n', 'utf8')) else if (i > 0) mp.write('foo\n') else if (i === 0) { mp.end('bar\n') clearInterval(inter) } i-- } const inter = setInterval(() => { write() write() write() }) const result = [] for await (let x of mp) result.push(x) t.same(result.map(x => x.toString()).join(''), expect.join('')) }) t.test('multiple object chunks at once, asyncly', async t => { const mp = new MP({ objectMode: true }) let i = 6 const write = () => { if (i === 6) mp.write(['start\n']) else if (i > 0) mp.write(['foo\n']) else if (i === 0) { mp.end(['bar\n']) clearInterval(inter) } i-- } const inter = setInterval(() => { write() write() write() }) const result = [] for await (let x of mp) result.push(x) t.same(result.map(x => x.join('')).join(''), expect.join('')) }) t.test('all chunks at once, asyncly', async t => { const mp = new MP() setTimeout(() => { mp.write(Buffer.from('start\n', 'utf8')) for (let i = 0; i < 5; i++) { mp.write('foo\n') } mp.end('bar\n') }) const result = [] for await (let x of mp) result.push(x) t.same(result.map(x => x.toString()).join(''), expect.join('')) }) t.test('all object chunks at once, asyncly', async t => { const mp = new MP({ objectMode: true }) setTimeout(() => { mp.write(['start\n']) for (let i = 0; i < 5; i++) { mp.write(['foo\n']) } mp.end(['bar\n']) }) const result = [] for await (let x of mp) result.push(x) t.same(result.map(x => x.join('')).join(''), expect.join('')) }) t.test('all object chunks at once, syncly', async t => { const mp = new MP({ objectMode: true }) mp.write(['start\n']) for (let i = 0; i < 5; i++) { mp.write(['foo\n']) } mp.end(['bar\n']) const result = [] for await (let x of mp) result.push(x) t.same(result.map(x => x.join('')).join(''), expect.join('')) }) t.test('pipe in all at once', async t => { const inp = new MP({ encoding: 'utf8' }) const mp = new MP({ encoding: 'utf8' }) inp.pipe(mp) let i = 5 inp.write('start\n') const inter = setInterval(() => { if (i --> 0) inp.write(Buffer.from('foo\n', 'utf8')) else { inp.end('bar\n') clearInterval(inter) } }) const result = [] for await (let x of mp) result.push(x) t.same(result, expect) }) t.test('pipe in multiple object chunks at once, asyncly', async t => { const mp = new MP({ objectMode: true }) const inp = new MP({ objectMode: true }) inp.pipe(mp) let i = 5 inp.write(['start\n']) const write = () => { if (i > 0) inp.write(['foo\n']) else if (i === 0) { inp.end(['bar\n']) clearInterval(inter) } i-- } const inter = setInterval(() => { write() write() write() }) const result = [] for await (let x of mp) result.push(x) t.same(result.map(x => x.join('')).join(''), expect.join('')) }) t.test('throw error', async t => { const mp = new MP() const poop = new Error('poop') setTimeout(() => { mp.read = () => { throw poop } mp.end('this is fine') }) const result = [] const run = async () => { for await (let x of mp) { result.push(x) } } await t.rejects(run, poop) }) t.test('emit error', async t => { const mp = new MP() const poop = new Error('poop') setTimeout(() => mp.emit('error', poop)) const result = [] const run = async () => { for await (let x of mp) { result.push(x) } } await t.rejects(run, poop) }) t.test('destroy', async t => { const mp = new MP() const poop = new Error('poop') setTimeout(() => mp.destroy()) const result = [] const run = async () => { for await (let x of mp) { result.push(x) } } await t.rejects(run, { message: 'stream destroyed' }) }) t.end() }) minipass-3.3.6/test/no-process-ok.js000066400000000000000000000004431434007227000173620ustar00rootroot00000000000000const tap = require('tap') const proc = global.process global.process = null const MP = require('../') const src = new MP() const dest = new MP({ encoding: 'utf8' }) src.pipe(dest) src.end('ok') const result = dest.read() global.process = proc const t = require('tap') t.equal(result, 'ok') minipass-3.3.6/test/pipe-ended-stream.js000066400000000000000000000013021434007227000201610ustar00rootroot00000000000000const t = require('tap') const MP = require('../') t.test('pipe from ended stream', t => { const from = new MP() from.end().on('end', () => { t.equal(from.emittedEnd, true, 'from already emitted end') from.pipe(new MP()).on('end', () => t.end()) }) }) t.test('pipe from ended stream with a promise', t => { const from = new MP() return from.end().promise().then(() => from.pipe(new MP()).promise()) }) t.test('pipe from ended stream is no-op if {end:false}', async t => { const from = new MP() await from.end().promise() const to = new MP({ encoding: 'utf8' }) from.pipe(to, {end:false}) to.write('this is fine') to.end() t.equal(await to.concat(), 'this is fine') }) minipass-3.3.6/test/proxy-errors.js000066400000000000000000000032021434007227000173520ustar00rootroot00000000000000const t = require('tap') const Minipass = require('../') t.test('not proxied', t => { const src = new Minipass() const dest = new Minipass() let srcEr = null let destEr = null src.on('error', er => srcEr = er) dest.on('error', er => destEr = er) src.pipe(dest) src.emit('error', new Error('not proxied')) t.match(srcEr, { message: 'not proxied' }) t.equal(destEr, null) t.end() }) t.test('proxied', t => { const src = new Minipass() const dest = new Minipass() let srcEr = null let destEr = null src.on('error', er => srcEr = er) dest.on('error', er => destEr = er) src.pipe(dest, { proxyErrors: true }) // let the flow go dest.resume() src.emit('error', new Error('proxied')) t.match(srcEr, { message: 'proxied' }) t.match(destEr, { message: 'proxied' }) t.end() }) t.test('not proxied after stream end', t => { const src = new Minipass() const dest = new Minipass() let srcEr = null let destEr = null src.on('error', er => srcEr = er) dest.on('error', er => destEr = er) src.pipe(dest, { proxyErrors: true }) // let the flow go dest.resume() src.end('hello') src.emit('error', new Error('post end')) t.match(srcEr, { message: 'post end' }) t.equal(destEr, null) t.end() }) t.test('not proxied after unpipe', t => { const src = new Minipass() const dest = new Minipass() let srcEr = null let destEr = null src.on('error', er => srcEr = er) dest.on('error', er => destEr = er) src.pipe(dest, { proxyErrors: true }) src.unpipe(dest) src.emit('error', new Error('unpiped')) t.match(srcEr, { message: 'unpiped' }) t.equal(destEr, null) t.end() }) minipass-3.3.6/test/readable-emits-immediately.js000066400000000000000000000005641434007227000220460ustar00rootroot00000000000000// https://github.com/isaacs/minipass/issues/36 const Minipass = require('../') const t = require('tap') const m = new Minipass({ encoding: 'utf8' }) m.write('hello') t.equal(m.flowing, false) let readableEmitted = false m.on('readable', () => { readableEmitted = true m.on('data', c => t.equal(c, 'hello')) }) t.equal(m.flowing, true) t.equal(readableEmitted, true) minipass-3.3.6/test/readable-only-when-buffering.js000066400000000000000000000004411434007227000223030ustar00rootroot00000000000000const MP = require('../') const t = require('tap') const mp = new MP() let readables = 0 mp.on('readable', () => readables++) const ondata = d => {} mp.on('data', ondata) t.equal(mp.write('foo'), true) t.equal(readables, 0) mp.pause() t.equal(mp.write('foo'), false) t.equal(readables, 1) minipass-3.3.6/test/unpipe.js000066400000000000000000000016741434007227000161720ustar00rootroot00000000000000const t = require('tap') const Minipass = require('../') const src = new Minipass({ encoding: 'utf8' }) const dest = new Minipass({ encoding: 'utf8' }) const dest2 = new Minipass({ encoding: 'utf8' }) const destOut = [] const dest2Out = [] const srcOut = [] src.pipe(dest) src.pipe(dest2) dest.on('data', c => destOut.push(c)) dest2.on('data', c => dest2Out.push(c)) src.on('data', c => srcOut.push(c)) src.write('hello') t.strictSame(destOut, ['hello']) t.strictSame(dest2Out, ['hello']) t.strictSame(srcOut, ['hello']) t.match(src.pipes, [ { dest }, { dest: dest2 }, ]) src.unpipe(dest) t.match(src.pipes, [ { dest: dest2 }, ]) src.unpipe(dest) // no-op t.match(src.pipes, [ { dest: dest2 }, ]) src.write('world') t.strictSame(destOut, ['hello']) t.strictSame(dest2Out, ['hello', 'world']) t.strictSame(srcOut, ['hello', 'world']) src.end() t.equal(dest.emittedEnd, false) t.equal(src.emittedEnd, true) t.equal(dest2.emittedEnd, true) minipass-3.3.6/test/write-returns-true-when-readable-triggers-flow.js000066400000000000000000000030541434007227000257600ustar00rootroot00000000000000// if you do s.on('readable', s => s.pipe(d)), then s.write() should return // true, because even though s is not flowing at the START of the write(), // it IS flowing by the END of the write call. const Minipass = require('../') const t = require('tap') t.test('empty write', async t => { const s = new Minipass({ encoding: 'utf8' }) const dest = new Minipass({ encoding: 'utf8' }) const p = dest.concat().then(d => t.equal(d, 'a', 'got data')) t.equal(s.write('a'), false, 'first write returns false') t.equal(s.write(''), false, 'empty write returns false') // since readable emits immediately, the NEXT one needs to trigger let firstReadable = false s.on('readable', () => { if (!firstReadable) firstReadable = true else s.pipe(dest) }) t.equal(s.flowing, false, 'src is not flowing yet') t.equal(s.write(''), true, 'return true, now flowing') s.end() await p }) t.test('non-empty write', async t => { const s = new Minipass({ encoding: 'utf8' }) const dest = new Minipass({ encoding: 'utf8' }) const p = dest.concat().then(d => t.equal(d, 'ab', 'got data')) t.equal(s.write('a'), false, 'first write returns false') t.equal(s.write(''), false, 'empty write returns false') // since readable emits immediately, the NEXT one needs to trigger let firstReadable = false s.on('readable', () => { if (!firstReadable) firstReadable = true else s.pipe(dest) }) t.equal(s.flowing, false, 'src is not flowing yet') t.equal(s.write('b'), true, 'return true, now flowing') s.end() await p })