From fe88e825e584a1713b2c5e12b3fd554eb01ee28e Mon Sep 17 00:00:00 2001 From: Brian C Date: Tue, 4 Jun 2024 10:26:11 -0500 Subject: [PATCH] Add pg-native to monorepo (#3225) I didn't do much to "modernize" the pg-native codebase other than running it through the standard eslint --fix that is applied to the rest of the code. There's some easy opportunities there to update it to es6 and so on...it still uses some pretty antiquated coding styles in places. This PR re-introduces the native tests on node v20, and updates test matrix to drop unsupported versions of node & add in node v22. --- .github/workflows/ci.yml | 19 +- package.json | 2 +- packages/pg-native/README.md | 306 +++ packages/pg-native/bench/index.js | 52 + packages/pg-native/bench/leaks.js | 50 + packages/pg-native/index.js | 332 ++++ packages/pg-native/lib/build-result.js | 76 + packages/pg-native/lib/copy-stream.js | 155 ++ packages/pg-native/package.json | 39 + packages/pg-native/test/array-mode.js | 25 + packages/pg-native/test/async-workflow.js | 80 + packages/pg-native/test/cancel.js | 32 + packages/pg-native/test/connection-errors.js | 18 + packages/pg-native/test/connection.js | 23 + packages/pg-native/test/copy-from.js | 47 + packages/pg-native/test/copy-to.js | 35 + packages/pg-native/test/custom-types.js | 27 + packages/pg-native/test/domains.js | 32 + packages/pg-native/test/empty-query.js | 16 + packages/pg-native/test/huge-query.js | 27 + packages/pg-native/test/index.js | 36 + packages/pg-native/test/load.js | 30 + packages/pg-native/test/many-connections.js | 57 + packages/pg-native/test/many-errors.js | 26 + packages/pg-native/test/mocha.opts | 2 + packages/pg-native/test/multiple-queries.js | 41 + .../test/multiple-statement-results.js | 28 + packages/pg-native/test/notify.js | 64 + packages/pg-native/test/prepare.js | 64 + packages/pg-native/test/query-async.js | 115 ++ packages/pg-native/test/query-sync.js | 83 + packages/pg-native/test/version.js | 11 + packages/pg/Makefile | 10 +- packages/pg/package.json | 2 +- packages/pg/test/native/missing-native.js | 7 - packages/pg/test/worker/src/index.test.js | 2 +- yarn.lock | 1708 +++++++++++------ 37 files changed, 3076 insertions(+), 603 deletions(-) create mode 100644 packages/pg-native/README.md create mode 100644 packages/pg-native/bench/index.js create mode 100644 packages/pg-native/bench/leaks.js create mode 100644 packages/pg-native/index.js create mode 100644 packages/pg-native/lib/build-result.js create mode 100644 packages/pg-native/lib/copy-stream.js create mode 100644 packages/pg-native/package.json create mode 100644 packages/pg-native/test/array-mode.js create mode 100644 packages/pg-native/test/async-workflow.js create mode 100644 packages/pg-native/test/cancel.js create mode 100644 packages/pg-native/test/connection-errors.js create mode 100644 packages/pg-native/test/connection.js create mode 100644 packages/pg-native/test/copy-from.js create mode 100644 packages/pg-native/test/copy-to.js create mode 100644 packages/pg-native/test/custom-types.js create mode 100644 packages/pg-native/test/domains.js create mode 100644 packages/pg-native/test/empty-query.js create mode 100644 packages/pg-native/test/huge-query.js create mode 100644 packages/pg-native/test/index.js create mode 100644 packages/pg-native/test/load.js create mode 100644 packages/pg-native/test/many-connections.js create mode 100644 packages/pg-native/test/many-errors.js create mode 100644 packages/pg-native/test/mocha.opts create mode 100644 packages/pg-native/test/multiple-queries.js create mode 100644 packages/pg-native/test/multiple-statement-results.js create mode 100644 packages/pg-native/test/notify.js create mode 100644 packages/pg-native/test/prepare.js create mode 100644 packages/pg-native/test/query-async.js create mode 100644 packages/pg-native/test/query-sync.js create mode 100644 packages/pg-native/test/version.js delete mode 100644 packages/pg/test/native/missing-native.js diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f83705bd3..aab0e5f59 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,25 +38,22 @@ jobs: fail-fast: false matrix: node: - - '10' - - '12' - - '14' - '16' - '18' - '20' + - '22' os: - ubuntu-latest name: Node.js ${{ matrix.node }} (${{ matrix.os }}) runs-on: ${{ matrix.os }} env: - PGUSER: postgres - PGPASSWORD: postgres - PGHOST: localhost - PGDATABASE: ci_db_test - PGTESTNOSSL: 'true' - SCRAM_TEST_PGUSER: scram_test - SCRAM_TEST_PGPASSWORD: test4scram - TEST_SKIP_NATIVE: ${{ matrix.node == 20 }} + PGUSER: postgres + PGPASSWORD: postgres + PGHOST: localhost + PGDATABASE: ci_db_test + PGTESTNOSSL: 'true' + SCRAM_TEST_PGUSER: scram_test + SCRAM_TEST_PGPASSWORD: test4scram steps: - name: Show OS run: | diff --git a/package.json b/package.json index 3e08d83a3..ce4ede68c 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "docs:start": "cd docs && yarn start", "pretest": "yarn build", "prepublish": "yarn build", - "lint": "eslint --cache '*/**/*.{js,ts,tsx}'" + "lint": "eslint --cache 'packages/**/*.{js,ts,tsx}'" }, "devDependencies": { "@typescript-eslint/eslint-plugin": "^7.0.0", diff --git a/packages/pg-native/README.md b/packages/pg-native/README.md new file mode 100644 index 000000000..307237f34 --- /dev/null +++ b/packages/pg-native/README.md @@ -0,0 +1,306 @@ +# node-pg-native + +[![Build Status](https://travis-ci.org/brianc/node-pg-native.svg?branch=master)](https://travis-ci.org/brianc/node-pg-native) + +High performance native bindings between node.js and PostgreSQL via [libpq](https://github.com/brianc/node-libpq) with a simple API. + +## install + +You need PostgreSQL client libraries & tools installed. An easy way to check is to type `pg_config`. If `pg_config` is in your path, you should be good to go. If it's not in your path you'll need to consult operating specific instructions on how to go about getting it there. + +Some ways I've done it in the past: + +- On macOS: `brew install libpq` +- On Ubuntu/Debian: `apt-get install libpq-dev g++ make` +- On RHEL/CentOS: `yum install postgresql-devel` +- On Windows: + 1. Install Visual Studio C++ (successfully built with Express 2010). Express is free. + 2. Install PostgreSQL (`http://www.postgresql.org/download/windows/`) + 3. Add your Postgre Installation's `bin` folder to the system path (i.e. `C:\Program Files\PostgreSQL\9.3\bin`). + 4. Make sure that both `libpq.dll` and `pg_config.exe` are in that folder. + +Afterwards `pg_config` should be in your path. Then... + +```sh +$ npm i pg-native +``` + +## use + +### async + +```js +var Client = require('pg-native') + +var client = new Client(); +client.connect(function(err) { + if(err) throw err + + //text queries + client.query('SELECT NOW() AS the_date', function(err, rows) { + if(err) throw err + + console.log(rows[0].the_date) //Tue Sep 16 2014 23:42:39 GMT-0400 (EDT) + + //parameterized statements + client.query('SELECT $1::text as twitter_handle', ['@briancarlson'], function(err, rows) { + if(err) throw err + + console.log(rows[0].twitter_handle) //@briancarlson + }) + + //prepared statements + client.prepare('get_twitter', 'SELECT $1::text as twitter_handle', 1, function(err) { + if(err) throw err + + //execute the prepared, named statement + client.execute('get_twitter', ['@briancarlson'], function(err, rows) { + if(err) throw err + + console.log(rows[0].twitter_handle) //@briancarlson + + //execute the prepared, named statement again + client.execute('get_twitter', ['@realcarrotfacts'], function(err, rows) { + if(err) throw err + + console.log(rows[0].twitter_handle) //@realcarrotfacts + + client.end(function() { + console.log('ended') + }) + }) + }) + }) + }) +}) + +``` + +### sync + +Because `pg-native` is bound to [libpq](https://github.com/brianc/node-libpq) it is able to provide _sync_ operations for both connecting and queries. This is a bad idea in _non-blocking systems_ like web servers, but is exteremly convienent in scripts and bootstrapping applications - much the same way `fs.readFileSync` comes in handy. + +```js +var Client = require('pg-native') + +var client = new Client() +client.connectSync() + +//text queries +var rows = client.querySync('SELECT NOW() AS the_date') +console.log(rows[0].the_date) //Tue Sep 16 2014 23:42:39 GMT-0400 (EDT) + +//parameterized queries +var rows = client.querySync('SELECT $1::text as twitter_handle', ['@briancarlson']) +console.log(rows[0].twitter_handle) //@briancarlson + +//prepared statements +client.prepareSync('get_twitter', 'SELECT $1::text as twitter_handle', 1) + +var rows = client.executeSync('get_twitter', ['@briancarlson']) +console.log(rows[0].twitter_handle) //@briancarlson + +var rows = client.executeSync('get_twitter', ['@realcarrotfacts']) +console.log(rows[0].twitter_handle) //@realcarrotfacts +``` + +## api + +### constructor + +- __`constructor Client()`__ + +Constructs and returns a new `Client` instance + +### async functions + +- __`client.connect(, callback:function(err:Error))`__ + +Connect to a PostgreSQL backend server. + +__params__ is _optional_ and is in any format accepted by [libpq](http://www.postgresql.org/docs/9.3/static/libpq-connect.html#LIBPQ-CONNSTRING). The connection string is passed _as is_ to libpq, so any format supported by libpq will be supported here. Likewise, any format _unsupported_ by libpq will not work. If no parameters are supplied libpq will use [environment variables](http://www.postgresql.org/docs/9.3/static/libpq-envars.html) to connect. + +Returns an `Error` to the `callback` if the connection was unsuccessful. `callback` is _required_. + +##### example + +```js +var client = new Client() +client.connect(function(err) { + if(err) throw err + + console.log('connected!') +}) + +var client2 = new Client() +client2.connect('postgresql://user:password@host:5432/database?param=value', function(err) { + if(err) throw err + + console.log('connected with connection string!') +}) +``` + +- __`client.query(queryText:string, , callback:Function(err:Error, rows:Object[]))`__ + +Execute a query with the text of `queryText` and _optional_ parameters specified in the `values` array. All values are passed to the PostgreSQL backend server and executed as a parameterized statement. The callback is _required_ and is called with an `Error` object in the event of a query error, otherwise it is passed an array of result objects. Each element in this array is a dictionary of results with keys for column names and their values as the values for those columns. + +##### example + +```js +var client = new Client() +client.connect(function(err) { + if (err) throw err + + client.query('SELECT NOW()', function(err, rows) { + if (err) throw err + + console.log(rows) // [{ "now": "Tue Sep 16 2014 23:42:39 GMT-0400 (EDT)" }] + + client.query('SELECT $1::text as name', ['Brian'], function(err, rows) { + if (err) throw err + + console.log(rows) // [{ "name": "Brian" }] + + client.end() + }) + }) +}) +``` + + +- __`client.prepare(statementName:string, queryText:string, nParams:int, callback:Function(err:Error))`__ + +Prepares a _named statement_ for later execution. You _must_ supply the name of the statement via `statementName`, the command to prepare via `queryText` and the number of parameters in `queryText` via `nParams`. Calls the callback with an `Error` if there was an error. + +##### example + +```js +var client = new Client() +client.connect(function(err) { + if(err) throw err + + client.prepare('prepared_statement', 'SELECT $1::text as name', 1, function(err) { + if(err) throw err + + console.log('statement prepared') + client.end() + }) + +}) +``` + +- __`client.execute(statementName:string, , callback:Function(err:err, rows:Object[]))`__ + +Executes a previously prepared statement on this client with the name of `statementName`, passing it the optional array of query parameters as a `values` array. The `callback` is mandatory and is called with and `Error` if the execution failed, or with the same array of results as would be passed to the callback of a `client.query` result. + +##### example + + +```js +var client = new Client() +client.connect(function(err) { + if(err) throw err + + client.prepare('i_like_beans', 'SELECT $1::text as beans', 1, function(err) { + if(err) throw err + + client.execute('i_like_beans', ['Brak'], function(err, rows) { + if(err) throw err + + console.log(rows) // [{ "i_like_beans": "Brak" }] + client.end() + }) + }) +}) +``` + +- __`client.end(`__ + +Ends the connection. Calls the _optional_ callback when the connection is terminated. + +##### example + +```js +var client = new Client() +client.connect(function(err) { + if(err) throw err + client.end(function() { + console.log('client ended') // client ended + }) +}) +``` + +- __`client.cancel(callback:function(err))`__ + +Cancels the active query on the client. Callback receives an error if there was an error _sending_ the cancel request. + +##### example +```js +var client = new Client() +client.connectSync() +//sleep for 100 seconds +client.query('select pg_sleep(100)', function(err) { + console.log(err) // [Error: ERROR: canceling statement due to user request] +}) +client.cancel(function(err) { + console.log('cancel dispatched') +}) + +``` + +### sync functions + +- __`client.connectSync(params:string)`__ + +Connect to a PostgreSQL backend server. Params is in any format accepted by [libpq](http://www.postgresql.org/docs/9.3/static/libpq-connect.html#LIBPQ-CONNSTRING). Throws an `Error` if the connection was unsuccessful. + +- __`client.querySync(queryText:string, ) -> results:Object[]`__ + +Executes a query with a text of `queryText` and optional parameters as `values`. Uses a parameterized query if `values` are supplied. Throws an `Error` if the query fails, otherwise returns an array of results. + +- __`client.prepareSync(statementName:string, queryText:string, nParams:int)`__ + +Prepares a name statement with name of `statementName` and a query text of `queryText`. You must specify the number of params in the query with the `nParams` argument. Throws an `Error` if the statement is un-preparable, otherwise returns an array of results. + +- __`client.executeSync(statementName:string, ) -> results:Object[]`__ + +Executes a previously prepared statement on this client with the name of `statementName`, passing it the optional array of query paramters as a `values` array. Throws an `Error` if the execution fails, otherwas returns an array of results. + +## testing + +```sh +$ npm test +``` + +To run the tests you need a PostgreSQL backend reachable by typing `psql` with no connection parameters in your terminal. The tests use [environment variables](http://www.postgresql.org/docs/9.3/static/libpq-envars.html) to connect to the backend. + +An example of supplying a specific host the tests: + +```sh +$ PGHOST=blabla.mydatabasehost.com npm test +``` + + +## license + +The MIT License (MIT) + +Copyright (c) 2014 Brian M. Carlson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/packages/pg-native/bench/index.js b/packages/pg-native/bench/index.js new file mode 100644 index 000000000..05dbc949b --- /dev/null +++ b/packages/pg-native/bench/index.js @@ -0,0 +1,52 @@ +var pg = require('pg').native +var Native = require('../') + +var warmup = function (fn, cb) { + var count = 0 + var max = 10 + var run = function (err) { + if (err) return cb(err) + + if (max >= count++) { + return fn(run) + } + + cb() + } + run() +} + +var native = Native() +native.connectSync() + +var queryText = 'SELECT generate_series(0, 1000)' +var client = new pg.Client() +client.connect(function () { + var pure = function (cb) { + client.query(queryText, function (err) { + if (err) throw err + cb(err) + }) + } + var nativeQuery = function (cb) { + native.query(queryText, function (err) { + if (err) throw err + cb(err) + }) + } + + var run = function () { + var start = Date.now() + warmup(pure, function () { + console.log('pure done', Date.now() - start) + start = Date.now() + warmup(nativeQuery, function () { + console.log('native done', Date.now() - start) + }) + }) + } + + setInterval(function () { + run() + }, 500) +}) diff --git a/packages/pg-native/bench/leaks.js b/packages/pg-native/bench/leaks.js new file mode 100644 index 000000000..57fe36da2 --- /dev/null +++ b/packages/pg-native/bench/leaks.js @@ -0,0 +1,50 @@ +var Client = require('../') +var async = require('async') + +var loop = function () { + var client = new Client() + + var connect = function (cb) { + client.connect(cb) + } + + var simpleQuery = function (cb) { + client.query('SELECT NOW()', cb) + } + + var paramsQuery = function (cb) { + client.query('SELECT $1::text as name', ['Brian'], cb) + } + + var prepared = function (cb) { + client.prepare('test', 'SELECT $1::text as name', 1, function (err) { + if (err) return cb(err) + client.execute('test', ['Brian'], cb) + }) + } + + var sync = function (cb) { + client.querySync('SELECT NOW()') + client.querySync('SELECT $1::text as name', ['Brian']) + client.prepareSync('boom', 'SELECT $1::text as name', 1) + client.executeSync('boom', ['Brian']) + setImmediate(cb) + } + + var end = function (cb) { + client.end(cb) + } + + var ops = [connect, simpleQuery, paramsQuery, prepared, sync, end] + + var start = Date.now() + async.series(ops, function (err) { + if (err) throw err + console.log(Date.now() - start) + setImmediate(loop) + }) +} + +// on my machine this will consume memory up to about 50 megs of ram +// and then stabalize at that point +loop() diff --git a/packages/pg-native/index.js b/packages/pg-native/index.js new file mode 100644 index 000000000..87980197c --- /dev/null +++ b/packages/pg-native/index.js @@ -0,0 +1,332 @@ +var Libpq = require('libpq') +var EventEmitter = require('events').EventEmitter +var util = require('util') +var assert = require('assert') +var types = require('pg-types') +var buildResult = require('./lib/build-result') +var CopyStream = require('./lib/copy-stream') + +var Client = (module.exports = function (config) { + if (!(this instanceof Client)) { + return new Client(config) + } + + config = config || {} + + EventEmitter.call(this) + this.pq = new Libpq() + this._reading = false + this._read = this._read.bind(this) + + // allow custom type converstion to be passed in + this._types = config.types || types + + // allow config to specify returning results + // as an array of values instead of a hash + this.arrayMode = config.arrayMode || false + this._resultCount = 0 + this._rows = undefined + this._results = undefined + + // lazy start the reader if notifications are listened for + // this way if you only run sync queries you wont block + // the event loop artificially + this.on('newListener', (event) => { + if (event !== 'notification') return + this._startReading() + }) + + this.on('result', this._onResult.bind(this)) + this.on('readyForQuery', this._onReadyForQuery.bind(this)) +}) + +util.inherits(Client, EventEmitter) + +Client.prototype.connect = function (params, cb) { + this.pq.connect(params, cb) +} + +Client.prototype.connectSync = function (params) { + this.pq.connectSync(params) +} + +Client.prototype.query = function (text, values, cb) { + var queryFn + + if (typeof values === 'function') { + cb = values + } + + if (Array.isArray(values) && values.length > 0) { + queryFn = function () { + return self.pq.sendQueryParams(text, values) + } + } else { + queryFn = function () { + return self.pq.sendQuery(text) + } + } + + var self = this + + self._dispatchQuery(self.pq, queryFn, function (err) { + if (err) return cb(err) + + self._awaitResult(cb) + }) +} + +Client.prototype.prepare = function (statementName, text, nParams, cb) { + var self = this + var fn = function () { + return self.pq.sendPrepare(statementName, text, nParams) + } + + self._dispatchQuery(self.pq, fn, function (err) { + if (err) return cb(err) + self._awaitResult(cb) + }) +} + +Client.prototype.execute = function (statementName, parameters, cb) { + var self = this + + var fn = function () { + return self.pq.sendQueryPrepared(statementName, parameters) + } + + self._dispatchQuery(self.pq, fn, function (err, rows) { + if (err) return cb(err) + self._awaitResult(cb) + }) +} + +Client.prototype.getCopyStream = function () { + this.pq.setNonBlocking(true) + this._stopReading() + return new CopyStream(this.pq) +} + +// cancel a currently executing query +Client.prototype.cancel = function (cb) { + assert(cb, 'Callback is required') + // result is either true or a string containing an error + var result = this.pq.cancel() + return setImmediate(function () { + cb(result === true ? undefined : new Error(result)) + }) +} + +Client.prototype.querySync = function (text, values) { + if (values) { + this.pq.execParams(text, values) + } else { + this.pq.exec(text) + } + + throwIfError(this.pq) + const result = buildResult(this.pq, this._types, this.arrayMode) + return result.rows +} + +Client.prototype.prepareSync = function (statementName, text, nParams) { + this.pq.prepare(statementName, text, nParams) + throwIfError(this.pq) +} + +Client.prototype.executeSync = function (statementName, parameters) { + this.pq.execPrepared(statementName, parameters) + throwIfError(this.pq) + return buildResult(this.pq, this._types, this.arrayMode).rows +} + +Client.prototype.escapeLiteral = function (value) { + return this.pq.escapeLiteral(value) +} + +Client.prototype.escapeIdentifier = function (value) { + return this.pq.escapeIdentifier(value) +} + +// export the version number so we can check it in node-postgres +module.exports.version = require('./package.json').version + +Client.prototype.end = function (cb) { + this._stopReading() + this.pq.finish() + if (cb) setImmediate(cb) +} + +Client.prototype._readError = function (message) { + var err = new Error(message || this.pq.errorMessage()) + this.emit('error', err) +} + +Client.prototype._stopReading = function () { + if (!this._reading) return + this._reading = false + this.pq.stopReader() + this.pq.removeListener('readable', this._read) +} + +Client.prototype._consumeQueryResults = function (pq) { + return buildResult(pq, this._types, this.arrayMode) +} + +Client.prototype._emitResult = function (pq) { + var status = pq.resultStatus() + switch (status) { + case 'PGRES_FATAL_ERROR': + this._queryError = new Error(this.pq.resultErrorMessage()) + break + + case 'PGRES_TUPLES_OK': + case 'PGRES_COMMAND_OK': + case 'PGRES_EMPTY_QUERY': + const result = this._consumeQueryResults(this.pq) + this.emit('result', result) + break + + case 'PGRES_COPY_OUT': + case 'PGRES_COPY_BOTH': { + break + } + + default: + this._readError('unrecognized command status: ' + status) + break + } + return status +} + +// called when libpq is readable +Client.prototype._read = function () { + var pq = this.pq + // read waiting data from the socket + // e.g. clear the pending 'select' + if (!pq.consumeInput()) { + // if consumeInput returns false + // than a read error has been encountered + return this._readError() + } + + // check if there is still outstanding data + // if so, wait for it all to come in + if (pq.isBusy()) { + return + } + + // load our result object + + while (pq.getResult()) { + const resultStatus = this._emitResult(this.pq) + + // if the command initiated copy mode we need to break out of the read loop + // so a substream can begin to read copy data + if (resultStatus === 'PGRES_COPY_BOTH' || resultStatus === 'PGRES_COPY_OUT') { + break + } + + // if reading multiple results, sometimes the following results might cause + // a blocking read. in this scenario yield back off the reader until libpq is readable + if (pq.isBusy()) { + return + } + } + + this.emit('readyForQuery') + + var notice = this.pq.notifies() + while (notice) { + this.emit('notification', notice) + notice = this.pq.notifies() + } +} + +// ensures the client is reading and +// everything is set up for async io +Client.prototype._startReading = function () { + if (this._reading) return + this._reading = true + this.pq.on('readable', this._read) + this.pq.startReader() +} + +var throwIfError = function (pq) { + var err = pq.resultErrorMessage() || pq.errorMessage() + if (err) { + throw new Error(err) + } +} + +Client.prototype._awaitResult = function (cb) { + this._queryCallback = cb + return this._startReading() +} + +// wait for the writable socket to drain +Client.prototype._waitForDrain = function (pq, cb) { + var res = pq.flush() + // res of 0 is success + if (res === 0) return cb() + + // res of -1 is failure + if (res === -1) return cb(pq.errorMessage()) + + // otherwise outgoing message didn't flush to socket + // wait for it to flush and try again + var self = this + // you cannot read & write on a socket at the same time + return pq.writable(function () { + self._waitForDrain(pq, cb) + }) +} + +// send an async query to libpq and wait for it to +// finish writing query text to the socket +Client.prototype._dispatchQuery = function (pq, fn, cb) { + this._stopReading() + var success = pq.setNonBlocking(true) + if (!success) return cb(new Error('Unable to set non-blocking to true')) + var sent = fn() + if (!sent) return cb(new Error(pq.errorMessage() || 'Something went wrong dispatching the query')) + this._waitForDrain(pq, cb) +} + +Client.prototype._onResult = function (result) { + if (this._resultCount === 0) { + this._results = result + this._rows = result.rows + } else if (this._resultCount === 1) { + this._results = [this._results, result] + this._rows = [this._rows, result.rows] + } else { + this._results.push(result) + this._rows.push(result.rows) + } + this._resultCount++ +} + +Client.prototype._onReadyForQuery = function () { + // remove instance callback + const cb = this._queryCallback + this._queryCallback = undefined + + // remove instance query error + const err = this._queryError + this._queryError = undefined + + // remove instance rows + const rows = this._rows + this._rows = undefined + + // remove instance results + const results = this._results + this._results = undefined + + this._resultCount = 0 + + if (cb) { + cb(err, rows || [], results) + } +} diff --git a/packages/pg-native/lib/build-result.js b/packages/pg-native/lib/build-result.js new file mode 100644 index 000000000..38408a608 --- /dev/null +++ b/packages/pg-native/lib/build-result.js @@ -0,0 +1,76 @@ +'use strict' + +class Result { + constructor(types, arrayMode) { + this._types = types + this._arrayMode = arrayMode + + this.command = undefined + this.rowCount = undefined + this.fields = [] + this.rows = [] + } + + consumeCommand(pq) { + this.command = pq.cmdStatus().split(' ')[0] + this.rowCount = parseInt(pq.cmdTuples(), 10) + } + + consumeFields(pq) { + const nfields = pq.nfields() + for (var x = 0; x < nfields; x++) { + this.fields.push({ + name: pq.fname(x), + dataTypeID: pq.ftype(x), + }) + } + } + + consumeRows(pq) { + const tupleCount = pq.ntuples() + for (var i = 0; i < tupleCount; i++) { + const row = this._arrayMode ? this.consumeRowAsArray(pq, i) : this.consumeRowAsObject(pq, i) + this.rows.push(row) + } + } + + consumeRowAsObject(pq, rowIndex) { + const row = {} + for (var j = 0; j < this.fields.length; j++) { + const value = this.readValue(pq, rowIndex, j) + row[this.fields[j].name] = value + } + return row + } + + consumeRowAsArray(pq, rowIndex) { + const row = [] + for (var j = 0; j < this.fields.length; j++) { + const value = this.readValue(pq, rowIndex, j) + row.push(value) + } + return row + } + + readValue(pq, rowIndex, colIndex) { + var rawValue = pq.getvalue(rowIndex, colIndex) + if (rawValue === '') { + if (pq.getisnull(rowIndex, colIndex)) { + return null + } + } + const dataTypeId = this.fields[colIndex].dataTypeID + return this._types.getTypeParser(dataTypeId)(rawValue) + } +} + +function buildResult(pq, types, arrayMode) { + const result = new Result(types, arrayMode) + result.consumeCommand(pq) + result.consumeFields(pq) + result.consumeRows(pq) + + return result +} + +module.exports = buildResult diff --git a/packages/pg-native/lib/copy-stream.js b/packages/pg-native/lib/copy-stream.js new file mode 100644 index 000000000..13b455383 --- /dev/null +++ b/packages/pg-native/lib/copy-stream.js @@ -0,0 +1,155 @@ +var Duplex = require('stream').Duplex +var Writable = require('stream').Writable +var util = require('util') + +var CopyStream = (module.exports = function (pq, options) { + Duplex.call(this, options) + this.pq = pq + this._reading = false +}) + +util.inherits(CopyStream, Duplex) + +// writer methods +CopyStream.prototype._write = function (chunk, encoding, cb) { + var result = this.pq.putCopyData(chunk) + + // sent successfully + if (result === 1) return cb() + + // error + if (result === -1) return cb(new Error(this.pq.errorMessage())) + + // command would block. wait for writable and call again. + var self = this + this.pq.writable(function () { + self._write(chunk, encoding, cb) + }) +} + +CopyStream.prototype.end = function () { + var args = Array.prototype.slice.call(arguments, 0) + var self = this + + var callback = args.pop() + + if (args.length) { + this.write(args[0]) + } + var result = this.pq.putCopyEnd() + + // sent successfully + if (result === 1) { + // consume our results and then call 'end' on the + // "parent" writable class so we can emit 'finish' and + // all that jazz + return consumeResults(this.pq, function (err, res) { + Writable.prototype.end.call(self) + + // handle possible passing of callback to end method + if (callback) { + callback(err) + } + }) + } + + // error + if (result === -1) { + var err = new Error(this.pq.errorMessage()) + return this.emit('error', err) + } + + // command would block. wait for writable and call end again + // don't pass any buffers to end on the second call because + // we already sent them to possible this.write the first time + // we called end + return this.pq.writable(function () { + return self.end.apply(self, callback) + }) +} + +// reader methods +CopyStream.prototype._consumeBuffer = function (cb) { + var result = this.pq.getCopyData(true) + if (result instanceof Buffer) { + return setImmediate(function () { + cb(null, result) + }) + } + if (result === -1) { + // end of stream + return cb(null, null) + } + if (result === 0) { + var self = this + this.pq.once('readable', function () { + self.pq.stopReader() + self.pq.consumeInput() + self._consumeBuffer(cb) + }) + return this.pq.startReader() + } + cb(new Error('Unrecognized read status: ' + result)) +} + +CopyStream.prototype._read = function (size) { + if (this._reading) return + this._reading = true + // console.log('read begin'); + var self = this + this._consumeBuffer(function (err, buffer) { + self._reading = false + if (err) { + return self.emit('error', err) + } + if (buffer === false) { + // nothing to read for now, return + return + } + self.push(buffer) + }) +} + +var consumeResults = function (pq, cb) { + var cleanup = function () { + pq.removeListener('readable', onReadable) + pq.stopReader() + } + + var readError = function (message) { + cleanup() + return cb(new Error(message || pq.errorMessage())) + } + + var onReadable = function () { + // read waiting data from the socket + // e.g. clear the pending 'select' + if (!pq.consumeInput()) { + return readError() + } + + // check if there is still outstanding data + // if so, wait for it all to come in + if (pq.isBusy()) { + return + } + + // load our result object + pq.getResult() + + // "read until results return null" + // or in our case ensure we only have one result + if (pq.getResult() && pq.resultStatus() !== 'PGRES_COPY_OUT') { + return readError('Only one result at a time is accepted') + } + + if (pq.resultStatus() === 'PGRES_FATAL_ERROR') { + return readError() + } + + cleanup() + return cb(null) + } + pq.on('readable', onReadable) + pq.startReader() +} diff --git a/packages/pg-native/package.json b/packages/pg-native/package.json new file mode 100644 index 000000000..1714df50f --- /dev/null +++ b/packages/pg-native/package.json @@ -0,0 +1,39 @@ +{ + "name": "pg-native", + "version": "3.0.1", + "description": "A slightly nicer interface to Postgres over node-libpq", + "main": "index.js", + "scripts": { + "test": "mocha" + }, + "repository": { + "type": "git", + "url": "git://github.com/brianc/node-pg-native.git" + }, + "keywords": [ + "postgres", + "pg", + "libpq" + ], + "author": "Brian M. Carlson", + "license": "MIT", + "bugs": { + "url": "https://github.com/brianc/node-pg-native/issues" + }, + "homepage": "https://github.com/brianc/node-pg-native", + "dependencies": { + "libpq": "1.8.13", + "pg-types": "^1.12.1", + "readable-stream": "1.0.31" + }, + "devDependencies": { + "async": "^0.9.0", + "concat-stream": "^1.4.6", + "generic-pool": "^2.1.1", + "lodash": "^2.4.1", + "mocha": "3.4.2", + "node-gyp": ">=10.x", + "okay": "^0.3.0", + "semver": "^4.1.0" + } +} diff --git a/packages/pg-native/test/array-mode.js b/packages/pg-native/test/array-mode.js new file mode 100644 index 000000000..c79d471d2 --- /dev/null +++ b/packages/pg-native/test/array-mode.js @@ -0,0 +1,25 @@ +var Client = require('../') +var assert = require('assert') + +describe('client with arrayMode', function () { + it('returns result as array', function (done) { + var client = new Client({ arrayMode: true }) + client.connectSync() + client.querySync('CREATE TEMP TABLE blah(name TEXT)') + client.querySync('INSERT INTO blah (name) VALUES ($1)', ['brian']) + client.querySync('INSERT INTO blah (name) VALUES ($1)', ['aaron']) + var rows = client.querySync('SELECT * FROM blah') + assert.equal(rows.length, 2) + var row = rows[0] + assert.equal(row.length, 1) + assert.equal(row[0], 'brian') + assert.equal(rows[1][0], 'aaron') + + client.query("SELECT 'brian', null", function (err, res) { + assert.ifError(err) + assert.strictEqual(res[0][0], 'brian') + assert.strictEqual(res[0][1], null) + client.end(done) + }) + }) +}) diff --git a/packages/pg-native/test/async-workflow.js b/packages/pg-native/test/async-workflow.js new file mode 100644 index 000000000..975c5a97f --- /dev/null +++ b/packages/pg-native/test/async-workflow.js @@ -0,0 +1,80 @@ +var Client = require('../') +var ok = require('okay') +var assert = require('assert') +var concat = require('concat-stream') + +describe('async workflow', function () { + before(function (done) { + this.client = new Client() + this.client.connect(done) + }) + + var echoParams = function (params, cb) { + this.client.query( + 'SELECT $1::text as first, $2::text as second', + params, + ok(cb, function (rows) { + checkParams(params, rows) + cb(null, rows) + }) + ) + } + + var checkParams = function (params, rows) { + assert.equal(rows.length, 1) + assert.equal(rows[0].first, params[0]) + assert.equal(rows[0].second, params[1]) + } + + it('sends async query', function (done) { + var params = ['one', 'two'] + echoParams.call(this, params, done) + }) + + it('sends multiple async queries', function (done) { + var self = this + var params = ['bang', 'boom'] + echoParams.call( + this, + params, + ok(done, function (rows) { + echoParams.call(self, params, done) + }) + ) + }) + + it('sends an async query, copies in, copies out, and sends another query', function (done) { + var self = this + this.client.querySync('CREATE TEMP TABLE test(name text, age int)') + this.client.query( + "INSERT INTO test(name, age) VALUES('brian', 32)", + ok(done, function () { + self.client.querySync('COPY test FROM stdin') + var input = self.client.getCopyStream() + input.write(Buffer.from('Aaron\t30\n', 'utf8')) + input.end(function () { + self.client.query( + 'SELECT COUNT(*) FROM test', + ok(done, function (rows) { + assert.equal(rows.length, 1) + self.client.query( + 'COPY test TO stdout', + ok(done, function () { + var output = self.client.getCopyStream() + + // pump the stream + output.read() + output.pipe( + concat(function (res) { + done() + }) + ) + }) + ) + }) + ) + }) + }) + ) + }) +}) diff --git a/packages/pg-native/test/cancel.js b/packages/pg-native/test/cancel.js new file mode 100644 index 000000000..35c5f5ab3 --- /dev/null +++ b/packages/pg-native/test/cancel.js @@ -0,0 +1,32 @@ +var Client = require('../') +var assert = require('assert') + +describe('cancel query', function () { + it('works', function (done) { + var client = new Client() + client.connectSync() + client.query('SELECT pg_sleep(100);', function (err) { + assert(err instanceof Error) + client.end(done) + }) + client.cancel(function (err) { + assert.ifError(err) + }) + }) + + it('does not raise error if no active query', function (done) { + var client = new Client() + client.connectSync() + client.cancel(function (err) { + assert.ifError(err) + done() + }) + }) + + it('raises error if client is not connected', function (done) { + new Client().cancel(function (err) { + assert(err, 'should raise an error when not connected') + done() + }) + }) +}) diff --git a/packages/pg-native/test/connection-errors.js b/packages/pg-native/test/connection-errors.js new file mode 100644 index 000000000..e02f2025b --- /dev/null +++ b/packages/pg-native/test/connection-errors.js @@ -0,0 +1,18 @@ +'use strict' + +var Client = require('../') +var assert = require('assert') + +describe('connection errors', function () { + it('raise error events', function (done) { + var client = new Client() + client.connectSync() + client.query('SELECT pg_terminate_backend(pg_backend_pid())', assert.fail) + client.on('error', function (err) { + assert(err) + assert.strictEqual(client.pq.resultErrorFields().sqlState, '57P01') + client.end() + done() + }) + }) +}) diff --git a/packages/pg-native/test/connection.js b/packages/pg-native/test/connection.js new file mode 100644 index 000000000..af81ffda9 --- /dev/null +++ b/packages/pg-native/test/connection.js @@ -0,0 +1,23 @@ +var Client = require('../') +var assert = require('assert') + +describe('connection error', function () { + it('doesnt segfault', function (done) { + var client = new Client() + client.connect('asldgsdgasgdasdg', function (err) { + assert(err) + // calling error on a closed client was segfaulting + client.end() + done() + }) + }) +}) + +describe('reading while not connected', function () { + it('does not seg fault but does throw execption', function () { + var client = new Client() + assert.throws(function () { + client.on('notification', function (msg) {}) + }) + }) +}) diff --git a/packages/pg-native/test/copy-from.js b/packages/pg-native/test/copy-from.js new file mode 100644 index 000000000..87501a957 --- /dev/null +++ b/packages/pg-native/test/copy-from.js @@ -0,0 +1,47 @@ +var assert = require('assert') +var Client = require('../') + +describe('COPY FROM', function () { + before(function (done) { + this.client = Client() + this.client.connect(done) + }) + + after(function (done) { + this.client.end(done) + }) + + it('works', function (done) { + var client = this.client + this.client.querySync('CREATE TEMP TABLE blah(name text, age int)') + this.client.querySync('COPY blah FROM stdin') + var stream = this.client.getCopyStream() + stream.write(Buffer.from('Brian\t32\n', 'utf8')) + stream.write(Buffer.from('Aaron\t30\n', 'utf8')) + stream.write(Buffer.from('Shelley\t28\n', 'utf8')) + stream.end() + + stream.once('finish', function () { + var rows = client.querySync('SELECT COUNT(*) FROM blah') + assert.equal(rows.length, 1) + assert.equal(rows[0].count, 3) + done() + }) + }) + + it('works with a callback passed to end', function (done) { + var client = this.client + this.client.querySync('CREATE TEMP TABLE boom(name text, age int)') + this.client.querySync('COPY boom FROM stdin') + var stream = this.client.getCopyStream() + stream.write(Buffer.from('Brian\t32\n', 'utf8')) + stream.write(Buffer.from('Aaron\t30\n', 'utf8'), function () { + stream.end(Buffer.from('Shelley\t28\n', 'utf8'), function () { + var rows = client.querySync('SELECT COUNT(*) FROM boom') + assert.equal(rows.length, 1) + assert.equal(rows[0].count, 3) + done() + }) + }) + }) +}) diff --git a/packages/pg-native/test/copy-to.js b/packages/pg-native/test/copy-to.js new file mode 100644 index 000000000..28e062556 --- /dev/null +++ b/packages/pg-native/test/copy-to.js @@ -0,0 +1,35 @@ +var assert = require('assert') +var Client = require('../') +var concat = require('concat-stream') +var _ = require('lodash') + +describe('COPY TO', function () { + before(function (done) { + this.client = Client() + this.client.connect(done) + }) + + after(function (done) { + this.client.end(done) + }) + + it('works - basic check', function (done) { + var limit = 1000 + var qText = 'COPY (SELECT * FROM generate_series(0, ' + (limit - 1) + ')) TO stdout' + var self = this + this.client.query(qText, function (err) { + if (err) return done(err) + var stream = self.client.getCopyStream() + // pump the stream for node v0.11.x + stream.read() + stream.pipe( + concat(function (buff) { + var res = buff.toString('utf8') + var expected = _.range(0, limit).join('\n') + '\n' + assert.equal(res, expected) + done() + }) + ) + }) + }) +}) diff --git a/packages/pg-native/test/custom-types.js b/packages/pg-native/test/custom-types.js new file mode 100644 index 000000000..4930c85ae --- /dev/null +++ b/packages/pg-native/test/custom-types.js @@ -0,0 +1,27 @@ +var Client = require('../') +var ok = require('okay') +var assert = require('assert') + +describe('Custom type parser', function () { + it('is used by client', function (done) { + var client = new Client({ + types: { + getTypeParser: function () { + return function () { + return 'blah' + } + }, + }, + }) + client.connectSync() + var rows = client.querySync('SELECT NOW() AS when') + assert.equal(rows[0].when, 'blah') + client.query( + 'SELECT NOW() as when', + ok(function (rows) { + assert.equal(rows[0].when, 'blah') + client.end(done) + }) + ) + }) +}) diff --git a/packages/pg-native/test/domains.js b/packages/pg-native/test/domains.js new file mode 100644 index 000000000..67254baea --- /dev/null +++ b/packages/pg-native/test/domains.js @@ -0,0 +1,32 @@ +var Client = require('../') +var assert = require('assert') + +var checkDomain = function (domain, when) { + assert(process.domain, 'Domain was lost after ' + when) + assert.strictEqual(process.domain, domain, 'Domain switched after ' + when) +} + +describe('domains', function (done) { + it('remains bound after a query', function (done) { + var domain = require('domain').create() // eslint-disable-line + domain.run(function () { + var client = new Client() + client.connect(function () { + checkDomain(domain, 'connection') + client.query('SELECT NOW()', function () { + checkDomain(domain, 'query') + client.prepare('testing', 'SELECT NOW()', 0, function () { + checkDomain(domain, 'prepare') + client.execute('testing', [], function () { + checkDomain(domain, 'execute') + client.end(function () { + checkDomain(domain, 'end') + done() + }) + }) + }) + }) + }) + }) + }) +}) diff --git a/packages/pg-native/test/empty-query.js b/packages/pg-native/test/empty-query.js new file mode 100644 index 000000000..d8ec5611f --- /dev/null +++ b/packages/pg-native/test/empty-query.js @@ -0,0 +1,16 @@ +var Client = require('../') +var assert = require('assert') + +describe('empty query', () => { + it('has field metadata in result', (done) => { + const client = new Client() + client.connectSync() + client.query('SELECT NOW() as now LIMIT 0', (err, rows, res) => { + assert(!err) + assert.equal(rows.length, 0) + assert(Array.isArray(res.fields)) + assert.equal(res.fields.length, 1) + client.end(done) + }) + }) +}) diff --git a/packages/pg-native/test/huge-query.js b/packages/pg-native/test/huge-query.js new file mode 100644 index 000000000..d3bf5cda2 --- /dev/null +++ b/packages/pg-native/test/huge-query.js @@ -0,0 +1,27 @@ +var Client = require('../') +var assert = require('assert') + +describe('huge async query', function () { + before(function (done) { + this.client = Client() + this.client.connect(done) + }) + + after(function (done) { + this.client.end(done) + }) + + it('works', function (done) { + var params = [''] + var len = 100000 + for (var i = 0; i < len; i++) { + params[0] += 'A' + } + var qText = "SELECT '" + params[0] + "'::text as my_text" + this.client.query(qText, function (err, rows) { + if (err) return done(err) + assert.equal(rows[0].my_text.length, len) + done() + }) + }) +}) diff --git a/packages/pg-native/test/index.js b/packages/pg-native/test/index.js new file mode 100644 index 000000000..1ef15b09f --- /dev/null +++ b/packages/pg-native/test/index.js @@ -0,0 +1,36 @@ +var Client = require('../') +var assert = require('assert') + +describe('connection', function () { + it('works', function (done) { + Client().connect(done) + }) + + it('connects with args', function (done) { + Client().connect('host=localhost', done) + }) + + it('errors out with bad connection args', function (done) { + Client().connect('host=asldkfjasdf', function (err) { + assert(err, 'should raise an error for bad host') + done() + }) + }) +}) + +describe('connectSync', function () { + it('works without args', function () { + Client().connectSync() + }) + + it('works with args', function () { + var args = 'host=' + (process.env.PGHOST || 'localhost') + Client().connectSync(args) + }) + + it('throws if bad host', function () { + assert.throws(function () { + Client().connectSync('host=laksdjfdsf') + }) + }) +}) diff --git a/packages/pg-native/test/load.js b/packages/pg-native/test/load.js new file mode 100644 index 000000000..039ea7d06 --- /dev/null +++ b/packages/pg-native/test/load.js @@ -0,0 +1,30 @@ +var Client = require('../') +var async = require('async') +var ok = require('okay') + +var execute = function (x, done) { + var client = new Client() + client.connectSync() + var query = function (n, cb) { + client.query('SELECT $1::int as num', [n], function (err) { + cb(err) + }) + } + return async.timesSeries( + 5, + query, + ok(done, function () { + client.end() + done() + }) + ) +} +describe('Load tests', function () { + it('single client and many queries', function (done) { + async.times(1, execute, done) + }) + + it('multiple client and many queries', function (done) { + async.times(20, execute, done) + }) +}) diff --git a/packages/pg-native/test/many-connections.js b/packages/pg-native/test/many-connections.js new file mode 100644 index 000000000..204199666 --- /dev/null +++ b/packages/pg-native/test/many-connections.js @@ -0,0 +1,57 @@ +var Client = require('../') +var async = require('async') +var ok = require('okay') +var bytes = require('crypto').pseudoRandomBytes + +describe('many connections', function () { + describe('async', function () { + var test = function (count, times) { + it('connecting ' + count + ' clients ' + times, function (done) { + this.timeout(200000) + + var connectClient = function (n, cb) { + var client = new Client() + client.connect( + ok(cb, function () { + bytes( + 1000, + ok(cb, function (chunk) { + client.query( + 'SELECT $1::text as txt', + [chunk.toString('base64')], + ok(cb, function (rows) { + client.end(cb) + }) + ) + }) + ) + }) + ) + } + + var run = function (n, cb) { + async.times(count, connectClient, cb) + } + + async.timesSeries(times, run, done) + }) + } + + test(1, 1) + test(1, 1) + test(1, 1) + test(5, 5) + test(5, 5) + test(5, 5) + test(5, 5) + test(10, 10) + test(10, 10) + test(10, 10) + test(20, 20) + test(20, 20) + test(20, 20) + test(30, 10) + test(30, 10) + test(30, 10) + }) +}) diff --git a/packages/pg-native/test/many-errors.js b/packages/pg-native/test/many-errors.js new file mode 100644 index 000000000..f8958f54b --- /dev/null +++ b/packages/pg-native/test/many-errors.js @@ -0,0 +1,26 @@ +var Client = require('../') +var async = require('async') +var assert = require('assert') + +describe('many errors', function () { + it('functions properly without segfault', function (done) { + var throwError = function (n, cb) { + var client = new Client() + client.connectSync() + + var doIt = function (n, cb) { + client.query('select asdfiasdf', function (err) { + assert(err, 'bad query should emit an error') + cb(null) + }) + } + + async.timesSeries(10, doIt, function (err) { + if (err) return cb(err) + client.end(cb) + }) + } + + async.times(10, throwError, done) + }) +}) diff --git a/packages/pg-native/test/mocha.opts b/packages/pg-native/test/mocha.opts new file mode 100644 index 000000000..25fe946ae --- /dev/null +++ b/packages/pg-native/test/mocha.opts @@ -0,0 +1,2 @@ +--bail +--no-exit diff --git a/packages/pg-native/test/multiple-queries.js b/packages/pg-native/test/multiple-queries.js new file mode 100644 index 000000000..ea67defed --- /dev/null +++ b/packages/pg-native/test/multiple-queries.js @@ -0,0 +1,41 @@ +var Client = require('../') +var assert = require('assert') + +describe('multiple commands in a single query', function () { + before(function (done) { + this.client = new Client() + this.client.connect(done) + }) + + after(function (done) { + this.client.end(done) + }) + + it('all execute to completion', function (done) { + this.client.query("SELECT '10'::int as num; SELECT 'brian'::text as name", function (err, rows) { + assert.ifError(err) + assert.equal(rows.length, 2, 'should return two sets rows') + assert.equal(rows[0][0].num, '10') + assert.equal(rows[1][0].name, 'brian') + done() + }) + }) + + it('inserts and reads at once', function (done) { + var txt = 'CREATE TEMP TABLE boom(age int);' + txt += 'INSERT INTO boom(age) VALUES(10);' + txt += 'SELECT * FROM boom;' + this.client.query(txt, function (err, rows, results) { + assert.ifError(err) + assert.equal(rows.length, 3) + assert.equal(rows[0].length, 0) + assert.equal(rows[1].length, 0) + assert.equal(rows[2][0].age, 10) + + assert.equal(results[0].command, 'CREATE') + assert.equal(results[1].command, 'INSERT') + assert.equal(results[2].command, 'SELECT') + done() + }) + }) +}) diff --git a/packages/pg-native/test/multiple-statement-results.js b/packages/pg-native/test/multiple-statement-results.js new file mode 100644 index 000000000..ae0f9bafb --- /dev/null +++ b/packages/pg-native/test/multiple-statement-results.js @@ -0,0 +1,28 @@ +var Client = require('../') +var assert = require('assert') + +describe('multiple statements', () => { + before(() => { + this.client = new Client() + this.client.connectSync() + }) + + after(() => this.client.end()) + + it('works with multiple queries', (done) => { + const text = ` + SELECT generate_series(1, 2) as foo; + SELECT generate_series(10, 11) as bar; + SELECT generate_series(20, 22) as baz; + ` + this.client.query(text, (err, results) => { + if (err) return done(err) + assert(Array.isArray(results)) + assert.equal(results.length, 3) + assert(Array.isArray(results[0])) + assert(Array.isArray(results[1])) + assert(Array.isArray(results[2])) + done() + }) + }) +}) diff --git a/packages/pg-native/test/notify.js b/packages/pg-native/test/notify.js new file mode 100644 index 000000000..769faf39a --- /dev/null +++ b/packages/pg-native/test/notify.js @@ -0,0 +1,64 @@ +var Client = require('../') +var ok = require('okay') + +var notify = function (channel, payload) { + var client = new Client() + client.connectSync() + client.querySync('NOTIFY ' + channel + ", '" + payload + "'") + client.end() +} + +describe('simple LISTEN/NOTIFY', function () { + before(function (done) { + var client = (this.client = new Client()) + client.connect(done) + }) + + it('works', function (done) { + var client = this.client + client.querySync('LISTEN boom') + client.on('notification', function (msg) { + done() + }) + notify('boom', 'sup') + }) + + after(function (done) { + this.client.end(done) + }) +}) + +if (!process.env.TRAVIS_CI) { + describe('async LISTEN/NOTIFY', function () { + before(function (done) { + var client = (this.client = new Client()) + client.connect(done) + }) + + it('works', function (done) { + var client = this.client + var count = 0 + var check = function () { + count++ + if (count >= 2) return done() + } + client.on('notification', check) + client.query( + 'LISTEN test', + ok(done, function () { + notify('test', 'bot') + client.query( + 'SELECT pg_sleep(.05)', + ok(done, function () { + notify('test', 'bot') + }) + ) + }) + ) + }) + + after(function (done) { + this.client.end(done) + }) + }) +} diff --git a/packages/pg-native/test/prepare.js b/packages/pg-native/test/prepare.js new file mode 100644 index 000000000..bae3fb34c --- /dev/null +++ b/packages/pg-native/test/prepare.js @@ -0,0 +1,64 @@ +var Client = require('../') +var ok = require('okay') +var async = require('async') + +describe('async prepare', function () { + var run = function (n, cb) { + var client = new Client() + client.connectSync() + + var exec = function (x, done) { + client.prepare('get_now' + x, 'SELECT NOW()', 0, done) + } + + async.timesSeries( + 10, + exec, + ok(cb, function () { + client.end(cb) + }) + ) + } + + var t = function (n) { + it('works for ' + n + ' clients', function (done) { + async.times(n, run, function (err) { + done(err) + }) + }) + } + + for (var i = 0; i < 10; i++) { + t(i) + } +}) + +describe('async execute', function () { + var run = function (n, cb) { + var client = new Client() + client.connectSync() + client.prepareSync('get_now', 'SELECT NOW()', 0) + var exec = function (x, cb) { + client.execute('get_now', [], cb) + } + async.timesSeries( + 10, + exec, + ok(cb, function () { + client.end(cb) + }) + ) + } + + var t = function (n) { + it('works for ' + n + ' clients', function (done) { + async.times(n, run, function (err) { + done(err) + }) + }) + } + + for (var i = 0; i < 10; i++) { + t(i) + } +}) diff --git a/packages/pg-native/test/query-async.js b/packages/pg-native/test/query-async.js new file mode 100644 index 000000000..9e2d05258 --- /dev/null +++ b/packages/pg-native/test/query-async.js @@ -0,0 +1,115 @@ +var Client = require('../') +var assert = require('assert') +var async = require('async') +var ok = require('okay') + +describe('async query', function () { + before(function (done) { + this.client = Client() + this.client.connect(done) + }) + + after(function (done) { + this.client.end(done) + }) + + it('can execute many prepared statements on a client', function (done) { + async.timesSeries( + 20, + (i, cb) => { + this.client.query('SELECT $1::text as name', ['brianc'], cb) + }, + done + ) + }) + + it('simple query works', function (done) { + var runQuery = function (n, done) { + this.client.query('SELECT NOW() AS the_time', function (err, rows) { + if (err) return done(err) + assert.equal(rows[0].the_time.getFullYear(), new Date().getFullYear()) + return done() + }) + }.bind(this) + async.timesSeries(3, runQuery, done) + }) + + it('parameters work', function (done) { + var runQuery = function (n, done) { + this.client.query('SELECT $1::text AS name', ['Brian'], done) + }.bind(this) + async.timesSeries(3, runQuery, done) + }) + + it('prepared, named statements work', function (done) { + var client = this.client + client.prepare('test', 'SELECT $1::text as name', 1, function (err) { + if (err) return done(err) + client.execute( + 'test', + ['Brian'], + ok(done, function (rows) { + assert.equal(rows.length, 1) + assert.equal(rows[0].name, 'Brian') + client.execute( + 'test', + ['Aaron'], + ok(done, function (rows) { + assert.equal(rows.length, 1) + assert.equal(rows[0].name, 'Aaron') + done() + }) + ) + }) + ) + }) + }) + + it('returns error if prepare fails', function (done) { + this.client.prepare('test', 'SELECT AWWW YEAH', 0, function (err) { + assert(err, 'Should have returned an error') + done() + }) + }) + + it('returns an error if execute fails', function (done) { + this.client.execute('test', [], function (err) { + assert(err, 'Should have returned an error') + done() + }) + }) + + it('returns an error if there was a query error', function (done) { + var runErrorQuery = function (n, done) { + this.client.query('SELECT ALKJSFDSLFKJ', function (err) { + assert(err instanceof Error, 'Should return an error instance') + done() + }) + }.bind(this) + async.timesSeries(3, runErrorQuery, done) + }) + + it('is still usable after an error', function (done) { + const runErrorQuery = (_, cb) => { + this.client.query('SELECT LKJSDJFLSDKFJ', (err) => { + assert(err instanceof Error, 'Should return an error instance') + cb(null, err) + }) + } + async.timesSeries(3, runErrorQuery, (err, res) => { + assert(!err) + assert.equal(res.length, 3) + this.client.query('SELECT NOW()', done) + }) + }) + + it('supports empty query', function (done) { + this.client.query('', function (err, rows) { + assert.ifError(err) + assert(Array.isArray(rows)) + console.log('rows', rows) + assert(rows.length === 0) + done() + }) + }) +}) diff --git a/packages/pg-native/test/query-sync.js b/packages/pg-native/test/query-sync.js new file mode 100644 index 000000000..f7a0ad0ba --- /dev/null +++ b/packages/pg-native/test/query-sync.js @@ -0,0 +1,83 @@ +var Client = require('../') +var assert = require('assert') + +describe('query sync', function (done) { + before(function () { + this.client = Client() + this.client.connectSync() + }) + + after(function (done) { + this.client.end(done) + }) + + it('simple query works', function () { + var rows = this.client.querySync('SELECT NOW() AS the_time') + assert.equal(rows.length, 1) + assert.equal(rows[0].the_time.getFullYear(), new Date().getFullYear()) + }) + + it('parameterized query works', function () { + var rows = this.client.querySync('SELECT $1::text AS name', ['Brian']) + assert.equal(rows.length, 1) + assert.equal(rows[0].name, 'Brian') + }) + + it('throws when second argument is not an array', function () { + assert.throws(() => { + this.client.querySync('SELECT $1::text AS name', 'Brian') + }) + assert.throws(() => { + this.client.prepareSync('test-failure', 'SELECT $1::text as name', 1) + + this.client.executeSync('test-failure', 'Brian') + }) + }) + + it('prepared statement works', function () { + this.client.prepareSync('test', 'SELECT $1::text as name', 1) + + var rows = this.client.executeSync('test', ['Brian']) + assert.equal(rows.length, 1) + assert.equal(rows[0].name, 'Brian') + + var rows2 = this.client.executeSync('test', ['Aaron']) + assert.equal(rows2.length, 1) + assert.equal(rows2[0].name, 'Aaron') + }) + + it('prepare throws exception on error', function () { + assert.throws( + function () { + this.client.prepareSync('blah', 'I LIKE TO PARTY!!!', 0) + }.bind(this) + ) + }) + + it('throws exception on executing improperly', function () { + assert.throws(function () { + // wrong number of parameters + this.client.executeSync('test', []) + }) + }) + + it('throws exception on error', function () { + assert.throws( + function () { + this.client.querySync('SELECT ASLKJASLKJF') + }.bind(this) + ) + }) + + it('is still usable after an error', function () { + var rows = this.client.querySync('SELECT NOW()') + assert(rows, 'should have returned rows') + assert.equal(rows.length, 1) + }) + + it('supports empty query', function () { + var rows = this.client.querySync('') + assert(rows, 'should return rows') + assert.equal(rows.length, 0, 'should return no rows') + }) +}) diff --git a/packages/pg-native/test/version.js b/packages/pg-native/test/version.js new file mode 100644 index 000000000..204d83682 --- /dev/null +++ b/packages/pg-native/test/version.js @@ -0,0 +1,11 @@ +var Client = require('../') +var assert = require('assert') +var semver = require('semver') + +describe('version', function () { + it('is exported', function () { + assert(Client.version) + assert.equal(require('../package.json').version, Client.version) + assert(semver.gt(Client.version, '1.4.0')) + }) +}) diff --git a/packages/pg/Makefile b/packages/pg/Makefile index f8593bcac..ea65b518b 100644 --- a/packages/pg/Makefile +++ b/packages/pg/Makefile @@ -7,7 +7,7 @@ params := $(connectionString) node-command := xargs -n 1 -I file node file $(params) .PHONY : test test-connection test-integration bench test-native \ - publish test-missing-native update-npm + publish update-npm all: npm install @@ -17,7 +17,7 @@ help: test: test-unit -test-all: test-missing-native test-unit test-integration test-native test-worker +test-all: test-unit test-integration test-native test-worker update-npm: @@ -33,19 +33,13 @@ test-connection: @echo "***Testing connection***" @node script/create-test-tables.js $(params) -test-missing-native: - @echo "***Testing optional native install***" - @node test/native/missing-native.js - test-native: test-connection @echo "***Testing native bindings***" ifeq ($(TEST_SKIP_NATIVE), true) @echo "***Skipping tests***" else - @npm i --no-save pg-native @find test/native -name "*-tests.js" | $(node-command) @find test/integration -name "*-tests.js" | $(node-command) native - @npm uninstall pg-native endif test-integration: test-connection diff --git a/packages/pg/package.json b/packages/pg/package.json index b910700d9..8f2daec4e 100644 --- a/packages/pg/package.json +++ b/packages/pg/package.json @@ -34,7 +34,7 @@ "pg-copy-streams": "0.3.0", "typescript": "^4.0.3", "workerd": "^1.20230419.0", - "wrangler": "^2.16.0" + "wrangler": "3.58.0" }, "optionalDependencies": { "pg-cloudflare": "^1.1.1" diff --git a/packages/pg/test/native/missing-native.js b/packages/pg/test/native/missing-native.js deleted file mode 100644 index 35dad3f0b..000000000 --- a/packages/pg/test/native/missing-native.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict' -// this test assumes it has been run from the Makefile -// and that node_modules/pg-native has been deleted - -var assert = require('assert') - -assert.equal(require('../../lib').native, null) diff --git a/packages/pg/test/worker/src/index.test.js b/packages/pg/test/worker/src/index.test.js index 67003074d..08de60a61 100644 --- a/packages/pg/test/worker/src/index.test.js +++ b/packages/pg/test/worker/src/index.test.js @@ -1,4 +1,4 @@ -if (parseInt(process.versions.node.split('.')[0]) < 16) { +if (parseInt(process.versions.node.split('.')[0]) < 20) { process.exit(0) } var helper = require('../../test-helper') diff --git a/yarn.lock b/yarn.lock index a4f86d623..b39e4c543 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,33 +28,58 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@cloudflare/kv-asset-handler@^0.2.0": - version "0.2.0" - resolved "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.2.0.tgz" - integrity sha512-MVbXLbTcAotOPUj0pAMhVtJ+3/kFkwJqc5qNOleOZTv6QkZZABDMS21dSrSlVswEHwrpWC03e4fWytjqKvuE2A== +"@cloudflare/kv-asset-handler@0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.3.2.tgz#06437b75664729823ac9033b89f06a3b078e4f55" + integrity sha512-EeEjMobfuJrwoctj7FA1y1KEbM0+Q1xSjobIEyie9k4haVEBB7vkDvsasw1pM3rO39mL2akxIAzLMUAtrMHZhA== dependencies: mime "^3.0.0" +"@cloudflare/workerd-darwin-64@1.20240524.0": + version "1.20240524.0" + resolved "https://registry.yarnpkg.com/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20240524.0.tgz#506ebc544d4677e2fe3819f182e949e4feadcb6d" + integrity sha512-ATaXjefbTsrv4mpn4Fdua114RRDXcX5Ky+Mv+f4JTUllgalmqC4CYMN4jxRz9IpJU/fNMN8IEfvUyuJBAcl9Iw== + "@cloudflare/workerd-darwin-64@1.20240529.0": version "1.20240529.0" resolved "https://registry.yarnpkg.com/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20240529.0.tgz#a5988da0f1f8ec1be4b227392cb35c1d6749ab15" integrity sha512-ZgfqH79KP26s2LeQqQjBk9mojpfMCZtUDka4QYBP5wWEgIcEx7rnktmkDqQVcNJV22MoCyj3X6KToIo/qZLwLg== +"@cloudflare/workerd-darwin-arm64@1.20240524.0": + version "1.20240524.0" + resolved "https://registry.yarnpkg.com/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20240524.0.tgz#1001c1d77b02b8d714249f0569c95ba5898bdf90" + integrity sha512-wnbsZI4CS0QPCd+wnBHQ40C28A/2Qo4ESi1YhE2735G3UNcc876MWksZhsubd+XH0XPIra6eNFqyw6wRMpQOXA== + "@cloudflare/workerd-darwin-arm64@1.20240529.0": version "1.20240529.0" resolved "https://registry.yarnpkg.com/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20240529.0.tgz#1f03a3b56d34f649812f678032161f41125ddae7" integrity sha512-MNVLmFzsIfg7DM9qBafSH3PALIAw6WwwLZsvThkhkpJkpHW+t6OeybPst3Ddb7nAkSZz7rXDIOpgfEyyxrZepQ== +"@cloudflare/workerd-linux-64@1.20240524.0": + version "1.20240524.0" + resolved "https://registry.yarnpkg.com/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20240524.0.tgz#f7cf44294b61a15eb5e98fd94cf17e61845e3d7f" + integrity sha512-E8mj+HPBryKwaJAiNsYzXtVjKCL0KvUBZbtxJxlWM4mLSQhT+uwGT3nydb/hFY59rZnQgZslw0oqEWht5TEYiQ== + "@cloudflare/workerd-linux-64@1.20240529.0": version "1.20240529.0" resolved "https://registry.yarnpkg.com/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20240529.0.tgz#155df6fe1a01a5bfa22085abc231c9a4e3c52c47" integrity sha512-DxcMw2UBIZXu18adN6QJAq3M7ePFSyptNIszOOwfEOulxV/6MrCUN60mST2tawqgxZ3yBNVN8NQg8Ufx4Szq9w== +"@cloudflare/workerd-linux-arm64@1.20240524.0": + version "1.20240524.0" + resolved "https://registry.yarnpkg.com/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20240524.0.tgz#46678255e98acd8f30d2a63415b7aeb7cd933e77" + integrity sha512-/Fr1W671t2triNCDCBWdStxngnbUfZunZ/2e4kaMLzJDJLYDtYdmvOUCBDzUD4ssqmIMbn9RCQQ0U+CLEoqBqw== + "@cloudflare/workerd-linux-arm64@1.20240529.0": version "1.20240529.0" resolved "https://registry.yarnpkg.com/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20240529.0.tgz#234cf598906353e29a44fdcf2265864e23c36e4d" integrity sha512-sDyeN1J3eYO9otDSI2YE7zXwtK7qYXb2YdAK/coa7PTxMglqFXJjndPXm56hwf35Hjyjrc1hEvT3n378IM/g9g== +"@cloudflare/workerd-windows-64@1.20240524.0": + version "1.20240524.0" + resolved "https://registry.yarnpkg.com/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20240524.0.tgz#aad79b9f6fd53a769355605903481d699a8789ce" + integrity sha512-G+ThDEx57g9mAEKqhWnHaaJgpeGYtyhkmwM/BDpLqPks/rAY5YEfZbY4YL1pNk1kkcZDXGrwIsY8xe9Apf5JdA== + "@cloudflare/workerd-windows-64@1.20240529.0": version "1.20240529.0" resolved "https://registry.yarnpkg.com/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20240529.0.tgz#70a3be94acd5992dab38705650454c33bd3ecbaa" @@ -65,128 +90,135 @@ resolved "https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-4.20230404.0.tgz" integrity sha512-fG3oaJX1icfsGV74nhx1+AC6opvZsGqnpx6FvrcVqQaBmCNkjKNqDRFrpasXWFiOIvysBXHKQAzsAJkBZgnM+A== -"@esbuild-plugins/node-globals-polyfill@^0.1.1": - version "0.1.1" - resolved "https://registry.npmjs.org/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.1.1.tgz" - integrity sha512-MR0oAA+mlnJWrt1RQVQ+4VYuRJW/P2YmRTv1AsplObyvuBMnPHiizUF95HHYiSsMGLhyGtWufaq2XQg6+iurBg== +"@cspotcode/source-map-support@0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" -"@esbuild-plugins/node-modules-polyfill@^0.1.4": - version "0.1.4" - resolved "https://registry.npmjs.org/@esbuild-plugins/node-modules-polyfill/-/node-modules-polyfill-0.1.4.tgz" - integrity sha512-uZbcXi0zbmKC/050p3gJnne5Qdzw8vkXIv+c2BW0Lsc1ji1SkrxbKPUy5Efr0blbTu1SL8w4eyfpnSdPg3G0Qg== +"@esbuild-plugins/node-globals-polyfill@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.2.3.tgz#0e4497a2b53c9e9485e149bc92ddb228438d6bcf" + integrity sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw== + +"@esbuild-plugins/node-modules-polyfill@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@esbuild-plugins/node-modules-polyfill/-/node-modules-polyfill-0.2.2.tgz#cefa3dc0bd1c16277a8338b52833420c94987327" + integrity sha512-LXV7QsWJxRuMYvKbiznh+U1ilIop3g2TeKRzUxOG5X3YITc8JyyTa90BmLwqqv0YnX4v32CSlG+vsziZp9dMvA== dependencies: escape-string-regexp "^4.0.0" rollup-plugin-node-polyfills "^0.2.1" -"@esbuild/android-arm64@0.16.3": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.16.3.tgz#6af6d16be6d534d776a51fc215bfd81a68906d2c" - integrity sha512-RolFVeinkeraDvN/OoRf1F/lP0KUfGNb5jxy/vkIMeRRChkrX/HTYN6TYZosRJs3a1+8wqpxAo5PI5hFmxyPRg== - -"@esbuild/android-arm@0.16.3": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.16.3.tgz#2a091222f3b1928e3246fb3c5202eaca88baab67" - integrity sha512-mueuEoh+s1eRbSJqq9KNBQwI4QhQV6sRXIfTyLXSHGMpyew61rOK4qY21uKbXl1iBoMb0AdL1deWFCQVlN2qHA== - -"@esbuild/android-x64@0.16.3": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.16.3.tgz#a6d749c58b022d371dc40d50ac1bb4aebd1eb953" - integrity sha512-SFpTUcIT1bIJuCCBMCQWq1bL2gPTjWoLZdjmIhjdcQHaUfV41OQfho6Ici5uvvkMmZRXIUGpM3GxysP/EU7ifQ== - -"@esbuild/darwin-arm64@0.16.3": - version "0.16.3" - resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.3.tgz" - integrity sha512-DO8WykMyB+N9mIDfI/Hug70Dk1KipavlGAecxS3jDUwAbTpDXj0Lcwzw9svkhxfpCagDmpaTMgxWK8/C/XcXvw== - -"@esbuild/darwin-x64@0.16.3": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.16.3.tgz#7fc3570c2b16e9ff4fc178593a0a4adb1ae8ea57" - integrity sha512-uEqZQ2omc6BvWqdCiyZ5+XmxuHEi1SPzpVxXCSSV2+Sh7sbXbpeNhHIeFrIpRjAs0lI1FmA1iIOxFozKBhKgRQ== - -"@esbuild/freebsd-arm64@0.16.3": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.3.tgz#16735ce16f8c9a4e7289e9e259aa01a8d9874307" - integrity sha512-nJansp3sSXakNkOD5i5mIz2Is/HjzIhFs49b1tjrPrpCmwgBmH9SSzhC/Z1UqlkivqMYkhfPwMw1dGFUuwmXhw== - -"@esbuild/freebsd-x64@0.16.3": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.3.tgz#f4edd1464cb072799ed6b8ab5178478e71c13459" - integrity sha512-TfoDzLw+QHfc4a8aKtGSQ96Wa+6eimljjkq9HKR0rHlU83vw8aldMOUSJTUDxbcUdcgnJzPaX8/vGWm7vyV7ug== - -"@esbuild/linux-arm64@0.16.3": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.16.3.tgz#4b7ae6fe3618d9a40d6ca39c6edc991ac1447203" - integrity sha512-7I3RlsnxEFCHVZNBLb2w7unamgZ5sVwO0/ikE2GaYvYuUQs9Qte/w7TqWcXHtCwxvZx/2+F97ndiUQAWs47ZfQ== - -"@esbuild/linux-arm@0.16.3": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.16.3.tgz#4b3e9f849822e16a76a70844c4db68075b259a58" - integrity sha512-VwswmSYwVAAq6LysV59Fyqk3UIjbhuc6wb3vEcJ7HEJUtFuLK9uXWuFoH1lulEbE4+5GjtHi3MHX+w1gNHdOWQ== - -"@esbuild/linux-ia32@0.16.3": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.16.3.tgz#2ff3936b91bfff62f9ecf7f6411ef399b29ed22d" - integrity sha512-X8FDDxM9cqda2rJE+iblQhIMYY49LfvW4kaEjoFbTTQ4Go8G96Smj2w3BRTwA8IHGoi9dPOPGAX63dhuv19UqA== - -"@esbuild/linux-loong64@0.16.3": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.16.3.tgz#ff8aa59f49d9ccbc1ff952ba1f5cd01a534562df" - integrity sha512-hIbeejCOyO0X9ujfIIOKjBjNAs9XD/YdJ9JXAy1lHA+8UXuOqbFe4ErMCqMr8dhlMGBuvcQYGF7+kO7waj2KHw== - -"@esbuild/linux-mips64el@0.16.3": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.3.tgz#5dd5e118071c3912df69beedbfd11fb117f0fe5e" - integrity sha512-znFRzICT/V8VZQMt6rjb21MtAVJv/3dmKRMlohlShrbVXdBuOdDrGb+C2cZGQAR8RFyRe7HS6klmHq103WpmVw== - -"@esbuild/linux-ppc64@0.16.3": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.3.tgz#36c62e24eae7fa3f0d921506da8fc1e6098a1364" - integrity sha512-EV7LuEybxhXrVTDpbqWF2yehYRNz5e5p+u3oQUS2+ZFpknyi1NXxr8URk4ykR8Efm7iu04//4sBg249yNOwy5Q== - -"@esbuild/linux-riscv64@0.16.3": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.3.tgz#f0fec8e7affb5bcc817fefc61a21cbb95539e393" - integrity sha512-uDxqFOcLzFIJ+r/pkTTSE9lsCEaV/Y6rMlQjUI9BkzASEChYL/aSQjZjchtEmdnVxDKETnUAmsaZ4pqK1eE5BQ== - -"@esbuild/linux-s390x@0.16.3": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.16.3.tgz#22e10edd6e91f53c2e1f60e46abd453d7794409b" - integrity sha512-NbeREhzSxYwFhnCAQOQZmajsPYtX71Ufej3IQ8W2Gxskfz9DK58ENEju4SbpIj48VenktRASC52N5Fhyf/aliQ== - -"@esbuild/linux-x64@0.16.3": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.16.3.tgz#38388b73fd9eebe45b073d7d8099b9c2e54f7139" - integrity sha512-SDiG0nCixYO9JgpehoKgScwic7vXXndfasjnD5DLbp1xltANzqZ425l7LSdHynt19UWOcDjG9wJJzSElsPvk0w== - -"@esbuild/netbsd-x64@0.16.3": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.3.tgz#e0270569567f1530b8dbe6d11d5b4930b9cc71ae" - integrity sha512-AzbsJqiHEq1I/tUvOfAzCY15h4/7Ivp3ff/o1GpP16n48JMNAtbW0qui2WCgoIZArEHD0SUQ95gvR0oSO7ZbdA== - -"@esbuild/openbsd-x64@0.16.3": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.3.tgz#3b16642d443848bca605f33ee3978a1890911e6d" - integrity sha512-gSABi8qHl8k3Cbi/4toAzHiykuBuWLZs43JomTcXkjMZVkp0gj3gg9mO+9HJW/8GB5H89RX/V0QP4JGL7YEEVg== - -"@esbuild/sunos-x64@0.16.3": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.16.3.tgz#a838f247867380f0ae25ce1936dc5ab6f57b7734" - integrity sha512-SF9Kch5Ete4reovvRO6yNjMxrvlfT0F0Flm+NPoUw5Z4Q3r1d23LFTgaLwm3Cp0iGbrU/MoUI+ZqwCv5XJijCw== - -"@esbuild/win32-arm64@0.16.3": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.16.3.tgz#bedd9bef5fb41f89ce2599f1761973cf6d6a67b6" - integrity sha512-u5aBonZIyGopAZyOnoPAA6fGsDeHByZ9CnEzyML9NqntK6D/xl5jteZUKm/p6nD09+v3pTM6TuUIqSPcChk5gg== - -"@esbuild/win32-ia32@0.16.3": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.16.3.tgz#49800aa812d8cc35ceef61e8d3b01224684cc0b1" - integrity sha512-GlgVq1WpvOEhNioh74TKelwla9KDuAaLZrdxuuUgsP2vayxeLgVc+rbpIv0IYF4+tlIzq2vRhofV+KGLD+37EQ== - -"@esbuild/win32-x64@0.16.3": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.16.3.tgz#94047dae921949cfb308117d993c4b941291ae10" - integrity sha512-5/JuTd8OWW8UzEtyf19fbrtMJENza+C9JoPIkvItgTBQ1FO2ZLvjbPO6Xs54vk0s5JB5QsfieUEshRQfu7ZHow== +"@esbuild/android-arm64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd" + integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== + +"@esbuild/android-arm@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d" + integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== + +"@esbuild/android-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1" + integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== + +"@esbuild/darwin-arm64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276" + integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg== + +"@esbuild/darwin-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb" + integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== + +"@esbuild/freebsd-arm64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2" + integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== + +"@esbuild/freebsd-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4" + integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== + +"@esbuild/linux-arm64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb" + integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== + +"@esbuild/linux-arm@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a" + integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== + +"@esbuild/linux-ia32@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a" + integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== + +"@esbuild/linux-loong64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" + integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== + +"@esbuild/linux-mips64el@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289" + integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== + +"@esbuild/linux-ppc64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7" + integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== + +"@esbuild/linux-riscv64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09" + integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== + +"@esbuild/linux-s390x@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829" + integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== + +"@esbuild/linux-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4" + integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== + +"@esbuild/netbsd-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462" + integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== + +"@esbuild/openbsd-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691" + integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== + +"@esbuild/sunos-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273" + integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== + +"@esbuild/win32-arm64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f" + integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== + +"@esbuild/win32-ia32@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03" + integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== + +"@esbuild/win32-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061" + integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" @@ -294,6 +326,11 @@ unique-filename "^1.1.1" which "^1.3.1" +"@fastify/busboy@^2.0.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.1.tgz#b9da6a878a371829a0502c9b6c1c143ef6663f4d" + integrity sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA== + "@humanwhocodes/config-array@^0.11.14": version "0.11.14" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" @@ -313,10 +350,35 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== -"@iarna/toml@^2.2.5": - version "2.2.5" - resolved "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz" - integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" "@lerna/add@3.21.0": version "3.21.0" @@ -1003,171 +1065,6 @@ npmlog "^4.1.2" write-file-atomic "^2.3.0" -"@miniflare/cache@2.13.0": - version "2.13.0" - resolved "https://registry.npmjs.org/@miniflare/cache/-/cache-2.13.0.tgz" - integrity sha512-y3SdN3SVyPECWmLAEGkkrv0RB+LugEPs/FeXn8QtN9aE1vyj69clOAgmsDzoh1DpFfFsLKRiv05aWs4m79P8Xw== - dependencies: - "@miniflare/core" "2.13.0" - "@miniflare/shared" "2.13.0" - http-cache-semantics "^4.1.0" - undici "5.20.0" - -"@miniflare/cli-parser@2.13.0": - version "2.13.0" - resolved "https://registry.npmjs.org/@miniflare/cli-parser/-/cli-parser-2.13.0.tgz" - integrity sha512-Nx1PIfuMZ3mK9Dg/JojWZAjHR16h1pcdCFSqYln/ME7y5ifx+P1E5UkShWUQ1cBlibNaltjbJ2n/7stSAsIGPQ== - dependencies: - "@miniflare/shared" "2.13.0" - kleur "^4.1.4" - -"@miniflare/core@2.13.0": - version "2.13.0" - resolved "https://registry.npmjs.org/@miniflare/core/-/core-2.13.0.tgz" - integrity sha512-YJ/C0J3k+7xn4gvlMpvePnM3xC8nOnkweW96cc0IA8kJ1JSmScOO2tZ7rrU1RyDgp6StkAtQBw4yC0wYeFycBw== - dependencies: - "@iarna/toml" "^2.2.5" - "@miniflare/queues" "2.13.0" - "@miniflare/shared" "2.13.0" - "@miniflare/watcher" "2.13.0" - busboy "^1.6.0" - dotenv "^10.0.0" - kleur "^4.1.4" - set-cookie-parser "^2.4.8" - undici "5.20.0" - urlpattern-polyfill "^4.0.3" - -"@miniflare/d1@2.13.0": - version "2.13.0" - resolved "https://registry.npmjs.org/@miniflare/d1/-/d1-2.13.0.tgz" - integrity sha512-OslqjO8iTcvzyrC0spByftMboRmHJEyHyTHnlKkjWDGdQQztEOjso2Xj+3I4SZIeUYvbzDRhKLS2QXI9a8LS5A== - dependencies: - "@miniflare/core" "2.13.0" - "@miniflare/shared" "2.13.0" - -"@miniflare/durable-objects@2.13.0": - version "2.13.0" - resolved "https://registry.npmjs.org/@miniflare/durable-objects/-/durable-objects-2.13.0.tgz" - integrity sha512-CRGVBPO9vY4Fc3aV+pdPRVVeYIt64vQqvw+BJbyW+TQtqVP2CGQeziJGnCfcONNNKyooZxGyUkHewUypyH+Qhg== - dependencies: - "@miniflare/core" "2.13.0" - "@miniflare/shared" "2.13.0" - "@miniflare/storage-memory" "2.13.0" - undici "5.20.0" - -"@miniflare/html-rewriter@2.13.0": - version "2.13.0" - resolved "https://registry.npmjs.org/@miniflare/html-rewriter/-/html-rewriter-2.13.0.tgz" - integrity sha512-XhN7Icyzvtvu+o/A0hrnSiSmla78seCaNwQ9M1TDHxt352I/ahPX4wtPXs6GbKqY0/i+V6yoG2KGFRQ/j59cQQ== - dependencies: - "@miniflare/core" "2.13.0" - "@miniflare/shared" "2.13.0" - html-rewriter-wasm "^0.4.1" - undici "5.20.0" - -"@miniflare/http-server@2.13.0": - version "2.13.0" - resolved "https://registry.npmjs.org/@miniflare/http-server/-/http-server-2.13.0.tgz" - integrity sha512-aMS/nUMTKP15hKnyZboeuWCiqmNrrCu+XRBY/TxDDl07iXcLpiHGf3oVv+yXxXkWlJHJVCbK7i/nXSNPllRMSw== - dependencies: - "@miniflare/core" "2.13.0" - "@miniflare/shared" "2.13.0" - "@miniflare/web-sockets" "2.13.0" - kleur "^4.1.4" - selfsigned "^2.0.0" - undici "5.20.0" - ws "^8.2.2" - youch "^2.2.2" - -"@miniflare/kv@2.13.0": - version "2.13.0" - resolved "https://registry.npmjs.org/@miniflare/kv/-/kv-2.13.0.tgz" - integrity sha512-J0AS5x3g/YVOmHMxMAZs07nRXRvSo9jyuC0eikTBf+4AABvBIyvVYmdTjYNjCmr8O5smcfWBX5S27HelD3aAAQ== - dependencies: - "@miniflare/shared" "2.13.0" - -"@miniflare/queues@2.13.0": - version "2.13.0" - resolved "https://registry.npmjs.org/@miniflare/queues/-/queues-2.13.0.tgz" - integrity sha512-Gf/a6M1mJL03iOvNqh3JNahcBfvEMPHnO28n0gkCoyYWGvddIr9lwCdFIa0qwNJsC1fIDRxhPg8PZ5cQLBMwRA== - dependencies: - "@miniflare/shared" "2.13.0" - -"@miniflare/r2@2.13.0": - version "2.13.0" - resolved "https://registry.npmjs.org/@miniflare/r2/-/r2-2.13.0.tgz" - integrity sha512-/5k6GHOYMNV/oBtilV9HDXBkJUrx8oXVigG5vxbnzEGRXyVRmR+Glzu7mFT8JiE94XiEbXHk9Qvu1S5Dej3wBw== - dependencies: - "@miniflare/shared" "2.13.0" - undici "5.20.0" - -"@miniflare/runner-vm@2.13.0": - version "2.13.0" - resolved "https://registry.npmjs.org/@miniflare/runner-vm/-/runner-vm-2.13.0.tgz" - integrity sha512-VmKtF2cA8HmTuLXor1THWY0v+DmaobPct63iLcgWIaUdP3MIvL+9X8HDXFAviCR7bCTe6MKxckHkaOj0IE0aJQ== - dependencies: - "@miniflare/shared" "2.13.0" - -"@miniflare/scheduler@2.13.0": - version "2.13.0" - resolved "https://registry.npmjs.org/@miniflare/scheduler/-/scheduler-2.13.0.tgz" - integrity sha512-AOaQanoR4NjVEzVGWHnrL15A7aMx+d9AKLJhSDF7KaP+4NrT2Wo2BQuXCpn5oStx3itOdlQpMfqQ139e/I8WhQ== - dependencies: - "@miniflare/core" "2.13.0" - "@miniflare/shared" "2.13.0" - cron-schedule "^3.0.4" - -"@miniflare/shared@2.13.0": - version "2.13.0" - resolved "https://registry.npmjs.org/@miniflare/shared/-/shared-2.13.0.tgz" - integrity sha512-m8YFQzKmbjberrV9hPzNcQjNCXxjTjXUpuNrIGjAJO7g+BDztUHaZbdd26H9maBDlkeiWxA3hf0mDyCT/6MCMA== - dependencies: - "@types/better-sqlite3" "^7.6.0" - kleur "^4.1.4" - npx-import "^1.1.4" - picomatch "^2.3.1" - -"@miniflare/sites@2.13.0": - version "2.13.0" - resolved "https://registry.npmjs.org/@miniflare/sites/-/sites-2.13.0.tgz" - integrity sha512-/tuzIu00o6CF2tkSv01q02MgEShXBSKx85h9jwWvc+6u7prGacAOer0FA1YNRFbE+t9QIfutAkoPGMA9zYf8+Q== - dependencies: - "@miniflare/kv" "2.13.0" - "@miniflare/shared" "2.13.0" - "@miniflare/storage-file" "2.13.0" - -"@miniflare/storage-file@2.13.0": - version "2.13.0" - resolved "https://registry.npmjs.org/@miniflare/storage-file/-/storage-file-2.13.0.tgz" - integrity sha512-LuAeAAY5046rq5U1eFLVkz+ppiFEWytWacpkQw92DvVKFFquZcXSj6WPxZF4rSs23WDk+rdcwuLekbb52aDR7A== - dependencies: - "@miniflare/shared" "2.13.0" - "@miniflare/storage-memory" "2.13.0" - -"@miniflare/storage-memory@2.13.0": - version "2.13.0" - resolved "https://registry.npmjs.org/@miniflare/storage-memory/-/storage-memory-2.13.0.tgz" - integrity sha512-FnkYcBNXa/ym1ksNilNZycg9WYYKo6cWKplVBeSthRon3e8QY6t3n7/XRseBUo7O6mhDybVTy4wNCP1R2nBiEw== - dependencies: - "@miniflare/shared" "2.13.0" - -"@miniflare/watcher@2.13.0": - version "2.13.0" - resolved "https://registry.npmjs.org/@miniflare/watcher/-/watcher-2.13.0.tgz" - integrity sha512-teAacWcpMStoBLbLae95IUaL5lPzjPlXa9lhK9CbRaio/KRMibTMRGWrYos3IVGQRZvklvLwcms/nTvgcdb6yw== - dependencies: - "@miniflare/shared" "2.13.0" - -"@miniflare/web-sockets@2.13.0": - version "2.13.0" - resolved "https://registry.npmjs.org/@miniflare/web-sockets/-/web-sockets-2.13.0.tgz" - integrity sha512-+U2/HCf+BetRIgjAnNQjkuN6UeAjQmXifhQC+7CCaX834XJhrKXoR6z2xr2xkg1qj0qQs4D2jWG0KzrO5OUpug== - dependencies: - "@miniflare/core" "2.13.0" - "@miniflare/shared" "2.13.0" - undici "5.20.0" - ws "^8.2.2" - "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz" @@ -1207,6 +1104,24 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@npmcli/agent@^2.0.0": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@npmcli/agent/-/agent-2.2.2.tgz#967604918e62f620a648c7975461c9c9e74fc5d5" + integrity sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og== + dependencies: + agent-base "^7.1.0" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.1" + lru-cache "^10.0.1" + socks-proxy-agent "^8.0.3" + +"@npmcli/fs@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.1.tgz#59cdaa5adca95d135fc00f2bb53f5771575ce726" + integrity sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg== + dependencies: + semver "^7.3.5" + "@octokit/auth-token@^2.4.0": version "2.4.2" resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.2.tgz" @@ -1316,18 +1231,16 @@ dependencies: "@types/node" ">= 8" +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + "@pkgr/core@^0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.0.tgz#7d8dacb7fdef0e4387caf7396cbd77f179867d06" integrity sha512-Zwq5OCzuwJC2jwqmpEQt7Ds1DTi6BWSwoGkbb1n9pO3hzb35BoJELx7c0T23iDkBGkh2e7tvOtjF3tr3OaQHDQ== -"@types/better-sqlite3@^7.6.0": - version "7.6.4" - resolved "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.4.tgz" - integrity sha512-dzrRZCYPXIXfSR1/surNbJ/grU3scTaygS0OMzjlGf71i9sc2fGyHPXXiXmEvNIoE0cGwsanEFMVJxPXmco9Eg== - dependencies: - "@types/node" "*" - "@types/chai@^4.2.13", "@types/chai@^4.2.7": version "4.3.3" resolved "https://registry.npmjs.org/@types/chai/-/chai-4.3.3.tgz" @@ -1404,11 +1317,6 @@ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.6.tgz#c65b2bfce1bec346582c07724e3f8c1017a20339" integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== -"@types/stack-trace@0.0.29": - version "0.0.29" - resolved "https://registry.npmjs.org/@types/stack-trace/-/stack-trace-0.0.29.tgz" - integrity sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g== - "@typescript-eslint/eslint-plugin@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.0.0.tgz#62cda0d35bbf601683c6e58cf5d04f0275caca4e" @@ -1562,12 +1470,22 @@ abbrev@1.0.x: resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU= +abbrev@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" + integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== + acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.9.0: +acorn-walk@^8.2.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" + integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== + +acorn@^8.8.0, acorn@^8.9.0: version "8.11.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== @@ -1579,6 +1497,13 @@ agent-base@4, agent-base@^4.3.0: dependencies: es6-promisify "^5.0.0" +agent-base@^7.0.2, agent-base@^7.1.0, agent-base@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317" + integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== + dependencies: + debug "^4.3.4" + agent-base@~4.2.1: version "4.2.1" resolved "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz" @@ -1593,6 +1518,14 @@ agentkeepalive@^3.4.1: dependencies: humanize-ms "^1.2.1" +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + ajv@^6.12.3, ajv@^6.12.4: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" @@ -1638,6 +1571,11 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" @@ -1645,13 +1583,18 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.1.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + any-promise@^1.0.0: version "1.3.0" resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" @@ -1765,6 +1708,13 @@ arrify@^1.0.1: resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= +as-table@^1.0.36: + version "1.0.55" + resolved "https://registry.yarnpkg.com/as-table/-/as-table-1.0.55.tgz#dc984da3937745de902cea1d45843c01bdbbec4f" + integrity sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ== + dependencies: + printable-characters "^1.0.42" + asap@^2.0.0: version "2.0.6" resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" @@ -1804,6 +1754,11 @@ async@2.6.4: dependencies: lodash "^4.17.14" +async@^0.9.0: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + integrity sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw== + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" @@ -1869,6 +1824,13 @@ binary-extensions@^2.0.0: resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz" integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== +bindings@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + blake3-wasm@^2.1.5: version "2.1.5" resolved "https://registry.npmjs.org/blake3-wasm/-/blake3-wasm-2.1.5.tgz" @@ -1935,6 +1897,11 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" +browser-stdout@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" + integrity sha512-7Rfk377tpSM9TWBEeHs0FlDZGoAIei2V/4MdZJoFMBFAK6BqLpxAIUepGRHGdPFgGsLb02PXovC4qddyHvQqTg== + browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" @@ -1955,20 +1922,6 @@ builtins@^1.0.3: resolved "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz" integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= -builtins@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz" - integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== - dependencies: - semver "^7.0.0" - -busboy@^1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz" - integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== - dependencies: - streamsearch "^1.1.0" - byline@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz" @@ -2000,6 +1953,24 @@ cacache@^12.0.0, cacache@^12.0.3: unique-filename "^1.1.1" y18n "^4.0.0" +cacache@^18.0.0: + version "18.0.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-18.0.3.tgz#864e2c18414e1e141ae8763f31e46c2cb96d1b21" + integrity sha512-qXCd4rh6I07cnDqh8V48/94Tc/WSfj+o3Gn6NZ0aZovS255bUx8O13uKxRFd2eWG0xgsco7+YItQNPaa5E85hg== + dependencies: + "@npmcli/fs" "^3.1.0" + fs-minipass "^3.0.0" + glob "^10.2.2" + lru-cache "^10.0.1" + minipass "^7.0.3" + minipass-collect "^2.0.1" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + p-map "^4.0.0" + ssri "^10.0.0" + tar "^6.1.11" + unique-filename "^3.0.0" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz" @@ -2085,6 +2056,14 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +capnp-ts@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/capnp-ts/-/capnp-ts-0.7.0.tgz#16fd8e76b667d002af8fcf4bf92bf15d1a7b54a9" + integrity sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g== + dependencies: + debug "^4.3.1" + tslib "^2.2.0" + caseless@~0.12.0: version "0.12.0" resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" @@ -2165,6 +2144,11 @@ chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.4: resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + chunky@^0.0.0: version "0.0.0" resolved "https://registry.npmjs.org/chunky/-/chunky-0.0.0.tgz" @@ -2185,6 +2169,11 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz" @@ -2277,6 +2266,13 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" +commander@2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + integrity sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A== + dependencies: + graceful-readlink ">= 1.0.0" + compare-func@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz" @@ -2295,7 +2291,7 @@ concat-map@0.0.1: resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0: +concat-stream@^1.4.6, concat-stream@^1.5.0: version "1.6.2" resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -2418,10 +2414,10 @@ conventional-recommended-bump@^5.0.0: meow "^4.0.0" q "^1.5.1" -cookie@^0.4.1: - version "0.4.2" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== +cookie@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== copy-concurrently@^1.0.0: version "1.0.5" @@ -2466,11 +2462,6 @@ coveralls@^3.0.4: minimist "^1.2.5" request "^2.88.2" -cron-schedule@^3.0.4: - version "3.0.6" - resolved "https://registry.npmjs.org/cron-schedule/-/cron-schedule-3.0.6.tgz" - integrity sha512-izfGgKyzzIyLaeb1EtZ3KbglkS6AKp9cv7LxmiyoOu+fXfol1tQDC0Cof0enVZGNtudTHW+3lfuW9ZkLQss4Wg== - cross-spawn@^6.0.0: version "6.0.5" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" @@ -2482,7 +2473,7 @@ cross-spawn@^6.0.0: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -2517,11 +2508,23 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +data-uri-to-buffer@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-2.0.2.tgz#d296973d5a4897a5dbe31716d118211921f04770" + integrity sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA== + dateformat@^3.0.0: version "3.0.3" resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== +debug@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" + integrity sha512-XMYwiKKX0jdij1QRlpYn0O6gks0hW3iYUsx/h/RLPKouDGVeun2wlMYl29C85KBjnv1vw2vj+yti1ziHsXd7cg== + dependencies: + ms "0.7.2" + debug@3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz" @@ -2536,6 +2539,13 @@ debug@3.2.6, debug@^3.1.0: dependencies: ms "^2.1.1" +debug@4, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" @@ -2543,13 +2553,6 @@ debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - debuglog@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz" @@ -2654,6 +2657,11 @@ dezalgo@^1.0.0: asap "^2.0.0" wrappy "1" +diff@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" + integrity sha512-597ykPFhtJYaXqPq6fF7Vl1fXTKgPdLOntyxpmdzUOKiYGqK7zcnbplj5088+8qJnWdzXhyeau5iVr8HVo9dgg== + diff@3.5.0: version "3.5.0" resolved "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz" @@ -2699,11 +2707,6 @@ dot-prop@^5.1.0: dependencies: is-obj "^2.0.0" -dotenv@^10.0.0: - version "10.0.0" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz" - integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== - duplexer@^0.1.1: version "0.1.2" resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" @@ -2719,6 +2722,11 @@ duplexify@^3.4.2, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" @@ -2732,7 +2740,17 @@ emoji-regex@^7.0.1: resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== -encoding@^0.1.11: +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +encoding@^0.1.11, encoding@^0.1.13: version "0.1.13" resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== @@ -2761,6 +2779,11 @@ err-code@^1.0.0: resolved "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz" integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" @@ -2824,33 +2847,33 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" -esbuild@0.16.3: - version "0.16.3" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.16.3.tgz" - integrity sha512-71f7EjPWTiSguen8X/kxEpkAS7BFHwtQKisCDDV3Y4GLGWBaoSCyD5uXkaUew6JDzA9FEN1W23mdnSwW9kqCeg== +esbuild@0.17.19: + version "0.17.19" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955" + integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw== optionalDependencies: - "@esbuild/android-arm" "0.16.3" - "@esbuild/android-arm64" "0.16.3" - "@esbuild/android-x64" "0.16.3" - "@esbuild/darwin-arm64" "0.16.3" - "@esbuild/darwin-x64" "0.16.3" - "@esbuild/freebsd-arm64" "0.16.3" - "@esbuild/freebsd-x64" "0.16.3" - "@esbuild/linux-arm" "0.16.3" - "@esbuild/linux-arm64" "0.16.3" - "@esbuild/linux-ia32" "0.16.3" - "@esbuild/linux-loong64" "0.16.3" - "@esbuild/linux-mips64el" "0.16.3" - "@esbuild/linux-ppc64" "0.16.3" - "@esbuild/linux-riscv64" "0.16.3" - "@esbuild/linux-s390x" "0.16.3" - "@esbuild/linux-x64" "0.16.3" - "@esbuild/netbsd-x64" "0.16.3" - "@esbuild/openbsd-x64" "0.16.3" - "@esbuild/sunos-x64" "0.16.3" - "@esbuild/win32-arm64" "0.16.3" - "@esbuild/win32-ia32" "0.16.3" - "@esbuild/win32-x64" "0.16.3" + "@esbuild/android-arm" "0.17.19" + "@esbuild/android-arm64" "0.17.19" + "@esbuild/android-x64" "0.17.19" + "@esbuild/darwin-arm64" "0.17.19" + "@esbuild/darwin-x64" "0.17.19" + "@esbuild/freebsd-arm64" "0.17.19" + "@esbuild/freebsd-x64" "0.17.19" + "@esbuild/linux-arm" "0.17.19" + "@esbuild/linux-arm64" "0.17.19" + "@esbuild/linux-ia32" "0.17.19" + "@esbuild/linux-loong64" "0.17.19" + "@esbuild/linux-mips64el" "0.17.19" + "@esbuild/linux-ppc64" "0.17.19" + "@esbuild/linux-riscv64" "0.17.19" + "@esbuild/linux-s390x" "0.17.19" + "@esbuild/linux-x64" "0.17.19" + "@esbuild/netbsd-x64" "0.17.19" + "@esbuild/openbsd-x64" "0.17.19" + "@esbuild/sunos-x64" "0.17.19" + "@esbuild/win32-arm64" "0.17.19" + "@esbuild/win32-ia32" "0.17.19" + "@esbuild/win32-x64" "0.17.19" escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: version "1.0.5" @@ -3052,20 +3075,10 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz" - integrity sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.1" - human-signals "^3.0.1" - is-stream "^3.0.0" - merge-stream "^2.0.0" - npm-run-path "^5.1.0" - onetime "^6.0.0" - signal-exit "^3.0.7" - strip-final-newline "^3.0.0" +exit-hook@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-2.2.1.tgz#007b2d92c6428eda2b76e7016a34351586934593" + integrity sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw== expand-brackets@^2.1.4: version "2.1.4" @@ -3085,6 +3098,11 @@ expect.js@0.3.1: resolved "https://registry.npmjs.org/expect.js/-/expect.js-0.3.1.tgz" integrity sha1-sKWaDS7/VDdUTr8M6qYBWEHQm1s= +exponential-backoff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" + integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" @@ -3207,6 +3225,11 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" @@ -3296,6 +3319,14 @@ for-in@^1.0.2: resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" @@ -3341,6 +3372,20 @@ fs-minipass@^1.2.7: dependencies: minipass "^2.6.0" +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-minipass@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.3.tgz#79a85981c4dc120065e96f62086bf6f9dc26cc54" + integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== + dependencies: + minipass "^7.0.3" + fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz" @@ -3371,6 +3416,11 @@ function-bind@^1.1.1: resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + gauge@~2.7.3: version "2.7.4" resolved "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz" @@ -3385,6 +3435,11 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" +generic-pool@^2.1.1: + version "2.5.4" + resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-2.5.4.tgz#38c6188513e14030948ec6e5cf65523d9779299b" + integrity sha512-K2jozechYi0U3CNYlCWFGccmgjYhyqxOQVehL03l+gJ75LWDocM2qJeAaIneFd30ncD965WXnyM04jDgXzTMPw== + genfun@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz" @@ -3416,6 +3471,14 @@ get-port@^4.2.0: resolved "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz" integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== +get-source@^2.0.12: + version "2.0.12" + resolved "https://registry.yarnpkg.com/get-source/-/get-source-2.0.12.tgz#0b47d57ea1e53ce0d3a69f4f3d277eb8047da944" + integrity sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w== + dependencies: + data-uri-to-buffer "^2.0.0" + source-map "^0.6.1" + get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" @@ -3428,11 +3491,6 @@ get-stream@^4.0.0, get-stream@^4.1.0: dependencies: pump "^3.0.0" -get-stream@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" @@ -3521,6 +3579,23 @@ glob-to-regexp@^0.3.0: resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" + integrity sha512-mRyN/EsN2SyNhKWykF3eEGhDpeNplMWaW18Bmh76tnOqk5TbELAVwFAYOCmKVssOYFrYvvLMguiA+NXO3ZTuVA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@7.1.3: version "7.1.3" resolved "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz" @@ -3533,6 +3608,17 @@ glob@7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^10.2.2, glob@^10.3.10: + version "10.4.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.1.tgz#0cfb01ab6a6b438177bfe6a58e2576f6efe909c2" + integrity sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + path-scurry "^1.11.1" + glob@^5.0.15: version "5.0.15" resolved "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz" @@ -3594,6 +3680,16 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6 resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== +graceful-fs@^4.2.6: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + integrity sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w== + graphemer@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" @@ -3604,6 +3700,11 @@ growl@1.10.5: resolved "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz" integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== +growl@1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" + integrity sha512-RTBwDHhNuOx4F0hqzItc/siXCasGfC4DeWcBamclWd+6jWtBaeB/SGbMkGf0eiQoW7ib8JpvOgnUsmgMHI3Mfw== + handlebars@^4.0.1, handlebars@^4.7.6: version "4.7.7" resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz" @@ -3697,6 +3798,13 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hasown@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + he@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" @@ -3707,17 +3815,12 @@ hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz" integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== -html-rewriter-wasm@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/html-rewriter-wasm/-/html-rewriter-wasm-0.4.1.tgz" - integrity sha512-lNovG8CMCCmcVB1Q7xggMSf7tqPCijZXaH4gL6iE8BFghdQCbaY5Met9i1x2Ex8m/cZHDUtXK9H6/znKamRP8Q== - http-cache-semantics@^3.8.1: version "3.8.1" resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz" integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== -http-cache-semantics@^4.1.0: +http-cache-semantics@^4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz" integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== @@ -3730,6 +3833,14 @@ http-proxy-agent@^2.1.0: agent-base "4" debug "3.1.0" +http-proxy-agent@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== + dependencies: + agent-base "^7.1.0" + debug "^4.3.4" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" @@ -3747,10 +3858,13 @@ https-proxy-agent@^2.2.3: agent-base "^4.3.0" debug "^3.1.0" -human-signals@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz" - integrity sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ== +https-proxy-agent@^7.0.1: + version "7.0.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz#8e97b841a029ad8ddc8731f26595bad868cb4168" + integrity sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg== + dependencies: + agent-base "^7.0.2" + debug "4" humanize-ms@^1.2.1: version "1.2.1" @@ -3854,7 +3968,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -3897,6 +4011,14 @@ inquirer@^6.2.0: strip-ansi "^5.1.0" through "^2.3.6" +ip-address@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" + integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== + dependencies: + jsbn "1.1.0" + sprintf-js "^1.1.3" + ip@1.1.5: version "1.1.5" resolved "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz" @@ -3950,6 +4072,13 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" @@ -4026,6 +4155,11 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz" @@ -4040,6 +4174,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== + is-negative-zero@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz" @@ -4108,11 +4247,6 @@ is-stream@^1.1.0: resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= -is-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz" - integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== - is-symbol@^1.0.2: version "1.0.3" resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz" @@ -4142,6 +4276,11 @@ is-windows@^1.0.0, is-windows@^1.0.2: resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" @@ -4152,6 +4291,11 @@ isexe@^2.0.0: resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= +isexe@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" + integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== + isobject@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" @@ -4189,6 +4333,15 @@ istanbul@^0.4.5: which "^1.1.1" wordwrap "^1.0.0" +jackspeak@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.1.2.tgz#eada67ea949c6b71de50f1b09c92a961897b90ab" + integrity sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" @@ -4217,6 +4370,11 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" +jsbn@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" @@ -4257,6 +4415,11 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= +json3@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + integrity sha512-I5YLeauH3rIaE99EE++UeH2M2gSYo8/2TqDac7oZEH6D/DSQ4Woa628Qrfj1X9/OY5Mk5VvIDQaKCDchXaKrmA== + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" @@ -4310,11 +4473,6 @@ kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -kleur@^4.1.4: - version "4.1.5" - resolved "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz" - integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== - lcov-parse@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz" @@ -4360,6 +4518,14 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +libpq@1.8.13: + version "1.8.13" + resolved "https://registry.yarnpkg.com/libpq/-/libpq-1.8.13.tgz#d48af53c88defa7a20f958ef51bbbc0f58747355" + integrity sha512-t1wpnGVgwRIFSKoe4RFUllAFj953kNMcdXhGvFJwI0r6lJQqgSwTeiIciaCinjOmHk0HnFeWQSMC6Uw2591G4A== + dependencies: + bindings "1.5.0" + nan "2.19.0" + lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz" @@ -4427,6 +4593,34 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash._baseassign@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" + integrity sha512-t3N26QR2IdSN+gqSy9Ds9pBu/J1EAFEshKlUHpJG3rvyJOYgcELIxcIeKKfZk7sjOz11cFfzJRsyFry/JyabJQ== + dependencies: + lodash._basecopy "^3.0.0" + lodash.keys "^3.0.0" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + integrity sha512-rFR6Vpm4HeCK1WPGvjZSJ+7yik8d8PVUdCJx5rT2pogG4Ve/2ZS7kfmO5l5T2o5V2mqlNIfSF5MZlr1+xOoYQQ== + +lodash._basecreate@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" + integrity sha512-EDem6C9iQpn7fxnGdmhXmqYGjCkStmDXT4AeyB2Ph8WKbglg4aJZczNkQglj+zWXcOEEkViK8THuV2JvugW47g== + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + integrity sha512-RrL9VxMEPyDMHOd9uFbvMe8X55X16/cGM5IgOKgRElQZutpX89iS6vwl64duTV1/16w5JY7tuFNXqoekmh1EmA== + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + integrity sha512-De+ZbrMu6eThFti/CSzhRvTKMgQToLxbij58LMfM8JnYDNSOjkjTCIaa8ixglOeGh2nyPlakbt5bJWJ7gvpYlQ== + lodash._reinterpolate@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz" @@ -4437,16 +4631,44 @@ lodash.clonedeep@^4.5.0: resolved "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz" integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= +lodash.create@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" + integrity sha512-IUfOYwDEbI8JbhW6psW+Ig01BOVK67dTSCUAbS58M0HBkPcAv/jHuxD+oJVP2tUCo3H9L6f/8GM6rxwY+oc7/w== + dependencies: + lodash._baseassign "^3.0.0" + lodash._basecreate "^3.0.0" + lodash._isiterateecall "^3.0.0" + lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz" integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + integrity sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg== + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + integrity sha512-JwObCrNJuT0Nnbuecmqr5DgtuBppuCvGD9lxjFpAzwnVtdGoDQ1zig+5W8k5/6Gcn0gZ3936HDAlGd28i7sOGQ== + lodash.ismatch@^4.4.0: version "4.4.0" resolved "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz" integrity sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc= +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + integrity sha512-CuBsapFjcubOGMn3VD+24HOAPxM79tH+V6ivJL3CHYjtrawauDJHUk//Yew9Hvc6e9rbCrURGk8z6PC+8WJBfQ== + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" @@ -4482,6 +4704,11 @@ lodash.uniq@^4.5.0: resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= +lodash@^2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-2.4.2.tgz#fadd834b9683073da179b3eae6d9c0d15053f73e" + integrity sha512-Kak1hi6/hYHGVPmdyiZijoQyz5x2iGVzs6w9GYB/HiXEtylY7tIoYEROMjvM1d9nXJqPOrG2MNPMn01bJ+S0Rw== + lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.2.1: version "4.17.21" resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" @@ -4514,6 +4741,11 @@ loupe@^2.3.1: dependencies: get-func-name "^2.0.0" +lru-cache@^10.0.1, lru-cache@^10.2.0: + version "10.2.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878" + integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" @@ -4565,6 +4797,24 @@ make-error@^1.1.1: resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== +make-fetch-happen@^13.0.0: + version "13.0.1" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz#273ba2f78f45e1f3a6dca91cede87d9fa4821e36" + integrity sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA== + dependencies: + "@npmcli/agent" "^2.0.0" + cacache "^18.0.0" + http-cache-semantics "^4.1.1" + is-lambda "^1.0.1" + minipass "^7.0.2" + minipass-fetch "^3.0.0" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + proc-log "^4.2.0" + promise-retry "^2.0.1" + ssri "^10.0.0" + make-fetch-happen@^5.0.0: version "5.0.2" resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz" @@ -4657,11 +4907,6 @@ meow@^7.0.0: type-fest "^0.13.1" yargs-parser "^18.1.3" -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" @@ -4716,44 +4961,30 @@ mimic-fn@^1.0.0: resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -mimic-fn@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz" - integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== - min-indent@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -miniflare@2.13.0: - version "2.13.0" - resolved "https://registry.npmjs.org/miniflare/-/miniflare-2.13.0.tgz" - integrity sha512-ayNhVa4a6bZiOuHtrPmOt4BCYcmW1fBQ/+qGL85smq1m2OBBm3aUs6f4ISf38xH8tk+qewgmAywetyVtn6KHPw== - dependencies: - "@miniflare/cache" "2.13.0" - "@miniflare/cli-parser" "2.13.0" - "@miniflare/core" "2.13.0" - "@miniflare/d1" "2.13.0" - "@miniflare/durable-objects" "2.13.0" - "@miniflare/html-rewriter" "2.13.0" - "@miniflare/http-server" "2.13.0" - "@miniflare/kv" "2.13.0" - "@miniflare/queues" "2.13.0" - "@miniflare/r2" "2.13.0" - "@miniflare/runner-vm" "2.13.0" - "@miniflare/scheduler" "2.13.0" - "@miniflare/shared" "2.13.0" - "@miniflare/sites" "2.13.0" - "@miniflare/storage-file" "2.13.0" - "@miniflare/storage-memory" "2.13.0" - "@miniflare/web-sockets" "2.13.0" - kleur "^4.1.4" - semiver "^1.1.0" - source-map-support "^0.5.20" - undici "5.20.0" - -"minimatch@2 || 3", minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.2: +miniflare@3.20240524.1: + version "3.20240524.1" + resolved "https://registry.yarnpkg.com/miniflare/-/miniflare-3.20240524.1.tgz#38477cce5123d05ae87ac68e9addf0d0d30534d2" + integrity sha512-5d3pRxvd5pT7lX1SsBH9+AjXuyHJnChSNOnYhubfi7pxMek4ZfULwhnUmNUp1R7b2xKuzqdFDZa0fsZuUoFxlw== + dependencies: + "@cspotcode/source-map-support" "0.8.1" + acorn "^8.8.0" + acorn-walk "^8.2.0" + capnp-ts "^0.7.0" + exit-hook "^2.2.1" + glob-to-regexp "^0.4.1" + stoppable "^1.1.0" + undici "^5.28.2" + workerd "1.20240524.0" + ws "^8.11.0" + youch "^3.2.2" + zod "^3.20.6" + +"minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -4774,6 +5005,13 @@ minimatch@9.0.3: dependencies: brace-expansion "^2.0.1" +minimatch@^9.0.4: + version "9.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" + integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== + dependencies: + brace-expansion "^2.0.1" + minimist-options@4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz" @@ -4791,11 +5029,55 @@ minimist-options@^3.0.1: arrify "^1.0.1" is-plain-obj "^1.1.0" +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q== + minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: version "1.2.6" resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== +minipass-collect@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-2.0.1.tgz#1621bc77e12258a12c60d34e2276ec5c20680863" + integrity sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw== + dependencies: + minipass "^7.0.3" + +minipass-fetch@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.5.tgz#f0f97e40580affc4a35cc4a1349f05ae36cb1e4c" + integrity sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg== + dependencies: + minipass "^7.0.3" + minipass-sized "^1.0.3" + minizlib "^2.1.2" + optionalDependencies: + encoding "^0.1.13" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + minipass@^2.3.5, minipass@^2.6.0, minipass@^2.9.0: version "2.9.0" resolved "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz" @@ -4804,6 +5086,23 @@ minipass@^2.3.5, minipass@^2.6.0, minipass@^2.9.0: safe-buffer "^5.1.2" yallist "^3.0.0" +minipass@^3.0.0: + version "3.3.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.2, minipass@^7.0.3, minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + minizlib@^1.3.3: version "1.3.3" resolved "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz" @@ -4811,6 +5110,14 @@ minizlib@^1.3.3: dependencies: minipass "^2.9.0" +minizlib@^2.1.1, minizlib@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + mississippi@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz" @@ -4842,11 +5149,18 @@ mkdirp-promise@^5.0.1: dependencies: mkdirp "*" -mkdirp@*: +mkdirp@*, mkdirp@^1.0.3: version "1.0.4" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mkdirp@0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA== + dependencies: + minimist "0.0.8" + mkdirp@0.5.5, mkdirp@0.5.x, mkdirp@^0.5.1, mkdirp@^0.5.5: version "0.5.5" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" @@ -4854,6 +5168,23 @@ mkdirp@0.5.5, mkdirp@0.5.x, mkdirp@^0.5.1, mkdirp@^0.5.5: dependencies: minimist "^1.2.5" +mocha@3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.4.2.tgz#d0ef4d332126dbf18d0d640c9b382dd48be97594" + integrity sha512-19d+WPNPG+gCDZvyw8zMcn1MPl72yfZKuTjC/reTOVOFx3VBHXEwxxJyvi9B4G0RV49jjXs0huLKcG58X9S84Q== + dependencies: + browser-stdout "1.3.0" + commander "2.9.0" + debug "2.6.0" + diff "3.2.0" + escape-string-regexp "1.0.5" + glob "7.1.1" + growl "1.9.2" + json3 "3.3.2" + lodash.create "3.1.1" + mkdirp "0.5.1" + supports-color "3.1.2" + mocha@^7.1.2: version "7.2.0" resolved "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz" @@ -4901,6 +5232,11 @@ move-concurrently@^1.0.1: rimraf "^2.5.4" run-queue "^1.0.3" +ms@0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" + integrity sha512-5NnE67nQSQDJHVahPJna1PQ/zCXMnQop3yUCxjKPNzCxuyPSKWTQ/5Gu5CZmjetwGLWRA+PzeF5thlbOdbQldA== + ms@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" @@ -4950,6 +5286,11 @@ mz@^2.5.0: object-assign "^4.0.1" thenify-all "^1.0.0" +nan@2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.19.0.tgz#bb58122ad55a6c5bc973303908d5b16cfdd5a8c0" + integrity sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw== + nanoid@^3.3.3: version "3.3.6" resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" @@ -4977,6 +5318,11 @@ natural-compare@^1.4.0: resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= +negotiator@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + neo-async@^2.6.0: version "2.6.2" resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" @@ -5016,6 +5362,22 @@ node-forge@^1: resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== +node-gyp@>=10.x: + version "10.1.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-10.1.0.tgz#75e6f223f2acb4026866c26a2ead6aab75a8ca7e" + integrity sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA== + dependencies: + env-paths "^2.2.0" + exponential-backoff "^3.1.1" + glob "^10.3.10" + graceful-fs "^4.2.6" + make-fetch-happen "^13.0.0" + nopt "^7.0.0" + proc-log "^3.0.0" + semver "^7.3.5" + tar "^6.1.2" + which "^4.0.0" + node-gyp@^5.0.2: version "5.1.1" resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-5.1.1.tgz" @@ -5048,6 +5410,13 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" +nopt@^7.0.0: + version "7.2.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.2.1.tgz#1cac0eab9b8e97c9093338446eddd40b2c8ca1e7" + integrity sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w== + dependencies: + abbrev "^2.0.0" + normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" @@ -5129,13 +5498,6 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npm-run-path@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz" - integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== - dependencies: - path-key "^4.0.0" - npmlog@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz" @@ -5146,16 +5508,6 @@ npmlog@^4.1.2: gauge "~2.7.3" set-blocking "~2.0.0" -npx-import@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/npx-import/-/npx-import-1.1.4.tgz" - integrity sha512-3ShymTWOgqGyNlh5lMJAejLuIv3W1K3fbI5Ewc6YErZU3Sp0PqsNs8UIU1O8z5+KVl/Du5ag56Gza9vdorGEoA== - dependencies: - execa "^6.1.0" - parse-package-name "^1.0.0" - semver "^7.3.7" - validate-npm-package-name "^4.0.0" - number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" @@ -5237,6 +5589,13 @@ octokit-pagination-methods@^1.1.0: resolved "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz" integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ== +okay@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/okay/-/okay-0.3.0.tgz#de2840310df9805d6c0506d8dbb8d9ba09129d28" + integrity sha512-9Jtrbe/gncY/uRSRYD+VbaTiLuDX+Zm6uRg06itpkU82ZDcuOv+sWgRRvQXU3n7ZSHgltWHUw9EFkLsN4nEOeQ== + dependencies: + sliced "0.0.5" + once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" @@ -5251,13 +5610,6 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -onetime@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz" - integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== - dependencies: - mimic-fn "^4.0.0" - optionator@^0.8.1: version "0.8.3" resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" @@ -5374,6 +5726,13 @@ p-map@^2.1.0: resolved "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + p-pipe@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/p-pipe/-/p-pipe-1.2.0.tgz" @@ -5454,11 +5813,6 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse-package-name@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/parse-package-name/-/parse-package-name-1.0.0.tgz" - integrity sha512-kBeTUtcj+SkyfaW4+KBe0HtsloBJ/mKTPoxpVdA57GZiPerREsUWJOhVj9anXweFiJkm5y8FG1sxFZkZ0SN6wg== - parse-path@^4.0.0: version "4.0.2" resolved "https://registry.npmjs.org/parse-path/-/parse-path-4.0.2.tgz" @@ -5519,16 +5873,19 @@ path-key@^3.1.0: resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-key@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz" - integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== - -path-parse@^1.0.6: +path-parse@^1.0.6, path-parse@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-to-regexp@^6.2.0: version "6.2.1" resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz" @@ -5580,6 +5937,17 @@ pg-int8@1.0.1: resolved "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz" integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== +pg-types@^1.12.1: + version "1.13.0" + resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-1.13.0.tgz#75f490b8a8abf75f1386ef5ec4455ecf6b345c63" + integrity sha512-lfKli0Gkl/+za/+b6lzENajczwZHc7D5kiUCZfgm914jipD2kIOIvEkAhZ8GrW3/TUoP9w8FHjwpPObBye5KQQ== + dependencies: + pg-int8 "1.0.1" + postgres-array "~1.0.0" + postgres-bytea "~1.0.0" + postgres-date "~1.0.0" + postgres-interval "^1.1.0" + pg-types@^2.1.0: version "2.2.0" resolved "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz" @@ -5647,6 +6015,11 @@ posix-character-classes@^0.1.0: resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +postgres-array@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-1.0.3.tgz#c561fc3b266b21451fc6555384f4986d78ec80f5" + integrity sha512-5wClXrAP0+78mcsNX3/ithQ5exKvCyK5lr5NEEEeGwwM6NJdQgzIJBVxLvRW+huFpX92F2QnZ5CcokH0VhK2qQ== + postgres-array@~2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz" @@ -5657,7 +6030,7 @@ postgres-bytea@~1.0.0: resolved "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz" integrity sha1-AntTPAqokOJtFy1Hz5zOzFIazTU= -postgres-date@~1.0.4: +postgres-date@~1.0.0, postgres-date@~1.0.4: version "1.0.7" resolved "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz" integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== @@ -5691,6 +6064,21 @@ prettier@3.0.3: resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.3.tgz#432a51f7ba422d1469096c0fdc28e235db8f9643" integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg== +printable-characters@^1.0.42: + version "1.0.42" + resolved "https://registry.yarnpkg.com/printable-characters/-/printable-characters-1.0.42.tgz#3f18e977a9bd8eb37fcc4ff5659d7be90868b3d8" + integrity sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ== + +proc-log@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-3.0.0.tgz#fb05ef83ccd64fd7b20bbe9c8c1070fc08338dd8" + integrity sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== + +proc-log@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-4.2.0.tgz#b6f461e4026e75fdfe228b265e9f7a00779d7034" + integrity sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA== + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" @@ -5709,6 +6097,14 @@ promise-retry@^1.1.1: err-code "^1.0.0" retry "^0.10.0" +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" + promzard@^0.3.0: version "0.3.0" resolved "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz" @@ -5887,6 +6283,16 @@ read@1, read@~1.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@1.0.31: + version "1.0.31" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.31.tgz#8f2502e0bc9e3b0da1b94520aabb4e2603ecafae" + integrity sha512-tco/Dwv1f/sgIgN6CWdj/restacPKNskK6yps1981ivH2ZmLYcs5o5rVzL3qaO/cSkhN8hYOMWs7+glzOLSgRg== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + "readable-stream@2 || 3", readable-stream@^3.0.2: version "3.6.0" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" @@ -6032,6 +6438,11 @@ resolve-url@^0.2.1: resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= +resolve.exports@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" + integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== + resolve@1.1.x: version "1.1.7" resolved "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz" @@ -6044,6 +6455,15 @@ resolve@^1.10.0, resolve@^1.10.1: dependencies: path-parse "^1.0.6" +resolve@^1.22.8: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz" @@ -6062,6 +6482,11 @@ retry@^0.10.0: resolved "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz" integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + reusify@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" @@ -6150,29 +6575,34 @@ safe-regex@^1.1.0: resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -selfsigned@^2.0.0, selfsigned@^2.0.1: +selfsigned@^2.0.1: version "2.1.1" resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz" integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== dependencies: node-forge "^1" -semiver@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/semiver/-/semiver-1.1.0.tgz" - integrity sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg== - "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +semver@^4.1.0: + version "4.3.6" + resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" + integrity sha512-IrpJ+yoG4EOH8DFWuVg+8H1kW1Oaof0Wxe7cPcXW3x9BjkN/eVo54F15LyqemnDIUYskQWr9qvl/RihmSy6+xQ== + semver@^6.0.0, semver@^6.1.0, semver@^6.2.0: version "6.3.0" resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.0.0, semver@^7.3.7, semver@^7.5.4: +semver@^7.3.5: + version "7.6.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + +semver@^7.5.4: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== @@ -6184,11 +6614,6 @@ set-blocking@^2.0.0, set-blocking@~2.0.0: resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= -set-cookie-parser@^2.4.8: - version "2.6.0" - resolved "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz" - integrity sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ== - set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz" @@ -6235,10 +6660,10 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== -signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== slash@^2.0.0: version "2.0.0" @@ -6250,6 +6675,11 @@ slash@^3.0.0: resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +sliced@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/sliced/-/sliced-0.0.5.tgz#5edc044ca4eb6f7816d50ba2fc63e25d8fe4707f" + integrity sha512-9bYT917D6H3+q8GlQBJmLVz3bc4OeVGfZ2BB12wvLnluTGfG6/8UdOUbKJDW1EEx9SZMDbjnatkau5/XcUeyOw== + slide@^1.1.6: version "1.1.6" resolved "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz" @@ -6260,6 +6690,11 @@ smart-buffer@^4.1.0: resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz" integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz" @@ -6298,6 +6733,23 @@ socks-proxy-agent@^4.0.0: agent-base "~4.2.1" socks "~2.3.2" +socks-proxy-agent@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz#6b2da3d77364fde6292e810b496cb70440b9b89d" + integrity sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A== + dependencies: + agent-base "^7.1.1" + debug "^4.3.4" + socks "^2.7.1" + +socks@^2.7.1: + version "2.8.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5" + integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== + dependencies: + ip-address "^9.0.5" + smart-buffer "^4.2.0" + socks@~2.3.2: version "2.3.3" resolved "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz" @@ -6332,33 +6784,20 @@ source-map-support@^0.5.17: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@^0.5.20: - 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== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= -source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1: +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.4: - version "0.7.4" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= source-map@~0.2.0: version "0.2.0" @@ -6424,6 +6863,11 @@ split@^1.0.0: dependencies: through "2" +sprintf-js@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" @@ -6444,6 +6888,13 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" +ssri@^10.0.0: + version "10.0.6" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.6.tgz#a8aade2de60ba2bce8688e3fa349bad05c7dc1e5" + integrity sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ== + dependencies: + minipass "^7.0.3" + ssri@^6.0.0, ssri@^6.0.1: version "6.0.2" resolved "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz" @@ -6451,10 +6902,13 @@ ssri@^6.0.0, ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" -stack-trace@0.0.10: - version "0.0.10" - resolved "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz" - integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== +stacktracey@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/stacktracey/-/stacktracey-2.1.8.tgz#bf9916020738ce3700d1323b32bd2c91ea71199d" + integrity sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw== + dependencies: + as-table "^1.0.36" + get-source "^2.0.12" static-extend@^0.1.1: version "0.1.2" @@ -6464,6 +6918,11 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" +stoppable@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/stoppable/-/stoppable-1.1.0.tgz#32da568e83ea488b08e4d7ea2c3bcc9d75015d5b" + integrity sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw== + stream-each@^1.1.0: version "1.2.3" resolved "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz" @@ -6484,10 +6943,14 @@ stream-spec@~0.3.5: dependencies: macgyver "~1.10" -streamsearch@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" - integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" string-width@^1.0.1: version "1.0.2" @@ -6515,6 +6978,24 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +string-width@^4.1.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + string.prototype.trimend@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz" @@ -6538,6 +7019,11 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== + string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" @@ -6545,6 +7031,13 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" @@ -6566,13 +7059,20 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-ansi@^6.0.1: +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" @@ -6590,11 +7090,6 @@ strip-eof@^1.0.0: resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= -strip-final-newline@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz" - integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== - strip-indent@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz" @@ -6633,6 +7128,13 @@ strong-log-transformer@^2.0.0: minimist "^1.2.0" through "^2.3.4" +supports-color@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" + integrity sha512-F8dvPrZJtNzvDRX26eNXT4a7AecAvTGljmmnI39xEgSpbHKhQ7N0dO/NTxUExd0wuLHp4zbwYY7lvHq0aKpwrA== + dependencies: + has-flag "^1.0.0" + supports-color@6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz" @@ -6661,6 +7163,11 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + synckit@^0.8.6: version "0.8.8" resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7" @@ -6682,6 +7189,18 @@ tar@^4.4.10, tar@^4.4.12, tar@^4.4.8: safe-buffer "^5.2.1" yallist "^3.1.1" +tar@^6.1.11, tar@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^5.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + temp-dir@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz" @@ -6849,7 +7368,7 @@ tslib@^1.9.0: resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.6.2: +tslib@^2.2.0, tslib@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== @@ -6935,12 +7454,12 @@ umask@^1.1.0: resolved "https://registry.npmjs.org/umask/-/umask-1.1.0.tgz" integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= -undici@5.20.0: - version "5.20.0" - resolved "https://registry.npmjs.org/undici/-/undici-5.20.0.tgz" - integrity sha512-J3j60dYzuo6Eevbawwp1sdg16k5Tf768bxYK4TUJRH7cBM4kFCbf3mOnM/0E3vQYXvpxITbbWmBafaDbxLDz3g== +undici@^5.28.2: + version "5.28.4" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.4.tgz#6b280408edb6a1a604a9b20340f45b422e373068" + integrity sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g== dependencies: - busboy "^1.6.0" + "@fastify/busboy" "^2.0.0" union-value@^1.0.0: version "1.0.1" @@ -6959,6 +7478,13 @@ unique-filename@^1.1.1: dependencies: unique-slug "^2.0.0" +unique-filename@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" + integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== + dependencies: + unique-slug "^4.0.0" + unique-slug@^2.0.0: version "2.0.2" resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz" @@ -6966,6 +7492,13 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" +unique-slug@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" + integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== + dependencies: + imurmurhash "^0.1.4" + universal-user-agent@^4.0.0: version "4.0.1" resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.1.tgz" @@ -7008,11 +7541,6 @@ urix@^0.1.0: resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -urlpattern-polyfill@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-4.0.3.tgz" - integrity sha512-DOE84vZT2fEcl9gqCUTcnAw5ZY5Id55ikUcziSUntuEFL3pRvavg5kwDmTEUJkeCHInTlV/HexFomgYnzO5kdQ== - use@^3.1.0: version "3.1.1" resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz" @@ -7050,13 +7578,6 @@ validate-npm-package-name@^3.0.0: dependencies: builtins "^1.0.3" -validate-npm-package-name@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz" - integrity sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q== - dependencies: - builtins "^5.0.0" - verror@1.10.0: version "1.10.0" resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" @@ -7119,6 +7640,13 @@ which@^2.0.1: dependencies: isexe "^2.0.0" +which@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/which/-/which-4.0.0.tgz#cd60b5e74503a3fbcfbf6cd6b4138a8bae644c1a" + integrity sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg== + dependencies: + isexe "^3.1.1" + wide-align@1.1.3, wide-align@^1.1.0: version "1.1.3" resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz" @@ -7143,6 +7671,17 @@ wordwrap@^1.0.0: resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= +workerd@1.20240524.0: + version "1.20240524.0" + resolved "https://registry.yarnpkg.com/workerd/-/workerd-1.20240524.0.tgz#b5550ceecdd566475db9dcec2787d8deb91d1acb" + integrity sha512-LWLe5D8PVHBcqturmBbwgI71r7YPpIMYZoVEH6S4G35EqIJ55cb0n3FipoSyraoIfpcCxCFxX1K6WsRHbP3pFA== + optionalDependencies: + "@cloudflare/workerd-darwin-64" "1.20240524.0" + "@cloudflare/workerd-darwin-arm64" "1.20240524.0" + "@cloudflare/workerd-linux-64" "1.20240524.0" + "@cloudflare/workerd-linux-arm64" "1.20240524.0" + "@cloudflare/workerd-windows-64" "1.20240524.0" + workerd@^1.20230419.0: version "1.20240529.0" resolved "https://registry.yarnpkg.com/workerd/-/workerd-1.20240529.0.tgz#791310533f8253a0e0e6146108a9cf1553e425e2" @@ -7154,29 +7693,37 @@ workerd@^1.20230419.0: "@cloudflare/workerd-linux-arm64" "1.20240529.0" "@cloudflare/workerd-windows-64" "1.20240529.0" -wrangler@^2.16.0: - version "2.17.0" - resolved "https://registry.npmjs.org/wrangler/-/wrangler-2.17.0.tgz" - integrity sha512-ucmVHP5BAUVyC/18hReEKgxGSgU0EOxGd+ElHRHVBeGH6LPcsOoC1TolTaDYYnbOuZMbYmHAR5OH1agayr3kZg== - dependencies: - "@cloudflare/kv-asset-handler" "^0.2.0" - "@esbuild-plugins/node-globals-polyfill" "^0.1.1" - "@esbuild-plugins/node-modules-polyfill" "^0.1.4" - "@miniflare/core" "2.13.0" - "@miniflare/d1" "2.13.0" - "@miniflare/durable-objects" "2.13.0" +wrangler@3.58.0: + version "3.58.0" + resolved "https://registry.yarnpkg.com/wrangler/-/wrangler-3.58.0.tgz#b2ce3ac2d2b86f31f3b33a496ef9c9656f41f2ea" + integrity sha512-h9gWER7LXLnmHABDNP1p3aqXtchlvSBN8Dp22ZurnkxaLMZ3L3H1Ze1ftiFSs0VRWv0BUnz7AWIUqZmzuBY4Nw== + dependencies: + "@cloudflare/kv-asset-handler" "0.3.2" + "@esbuild-plugins/node-globals-polyfill" "^0.2.3" + "@esbuild-plugins/node-modules-polyfill" "^0.2.2" blake3-wasm "^2.1.5" chokidar "^3.5.3" - esbuild "0.16.3" - miniflare "2.13.0" + esbuild "0.17.19" + miniflare "3.20240524.1" nanoid "^3.3.3" path-to-regexp "^6.2.0" + resolve "^1.22.8" + resolve.exports "^2.0.2" selfsigned "^2.0.1" - source-map "^0.7.4" + source-map "0.6.1" xxhash-wasm "^1.0.1" optionalDependencies: fsevents "~2.3.2" +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz" @@ -7186,6 +7733,15 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + wrappy@1: version "1.0.2" resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" @@ -7232,10 +7788,10 @@ write-pkg@^3.1.0: sort-keys "^2.0.0" write-json-file "^2.2.0" -ws@^8.2.2: - version "8.13.0" - resolved "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz" - integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== +ws@^8.11.0: + version "8.17.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.0.tgz#d145d18eca2ed25aaf791a183903f7be5e295fea" + integrity sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow== xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" @@ -7338,12 +7894,16 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -youch@^2.2.2: - version "2.2.2" - resolved "https://registry.npmjs.org/youch/-/youch-2.2.2.tgz" - integrity sha512-/FaCeG3GkuJwaMR34GHVg0l8jCbafZLHiFowSjqLlqhC6OMyf2tPJBu8UirF7/NI9X/R5ai4QfEKUCOxMAGxZQ== +youch@^3.2.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/youch/-/youch-3.3.3.tgz#50cfdf5bc395ce664a5073e31b712ff4a859d928" + integrity sha512-qSFXUk3UZBLfggAW3dJKg0BMblG5biqSF8M34E06o5CSsZtH92u9Hqmj2RzGiHDi64fhe83+4tENFP2DB6t6ZA== dependencies: - "@types/stack-trace" "0.0.29" - cookie "^0.4.1" + cookie "^0.5.0" mustache "^4.2.0" - stack-trace "0.0.10" + stacktracey "^2.1.8" + +zod@^3.20.6: + version "3.23.8" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.8.tgz#e37b957b5d52079769fb8097099b592f0ef4067d" + integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==