diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..0f09989 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,10 @@ +# editorconfig.org +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8715640..29ca6f1 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -5,56 +5,53 @@ name: CI jobs: node-jdbc: name: node-jdbc - runs-on: ${{ matrix.os }} + runs-on: ubuntu-latest strategy: fail-fast: false matrix: - os: - - ubuntu-latest node_version: - - 16 - 18 - 20 + distribution: + - oracle + - temurin + - microsoft + - corretto + - zulu java_version: - 8 - - 9 - - 10 - 11 - - 12 - - 13 - - 14 - - 15 - # - 21 + - 17 + - 21 arch: - x64 + exclude: + - distribution: oracle + java_version: 8 + - distribution: oracle + java_version: 11 + - distribution: microsoft + java_version: 8 steps: - - name: ๐Ÿงถ Get yarn cache directory path ๐Ÿงถ - id: yarn-cache-dir-path - run: echo "::set-output name=dir::$(yarn config get cacheFolder)" - - name: ๐Ÿ’ต Cache ๐Ÿ’ต - uses: actions/cache@v2 - id: yarn-cache - with: - path: ${{ steps.yarn-cache-dir-path.outputs.dir }} - key: ${{ runner.os }}-${{ matrix.node_version }}-yarn-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-${{ matrix.node_version }}-yarn- - ${{ runner.os }}-yarn- - name: โ˜‘๏ธ Checkout โ˜‘๏ธ - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: โ˜• Java โ˜• - uses: actions/setup-java@v1 + uses: actions/setup-java@v4 with: + distribution: ${{ matrix.distribution }} java-version: ${{ matrix.java_version }} - name: ๐Ÿ Python ๐Ÿ - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: python-version: 3.9 - name: ๐Ÿ”‹ Node ๐Ÿ”‹ - uses: actions/setup-node@v2 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node_version }} - name: ๐Ÿ’พ Install ๐Ÿ’พ run: yarn install - - name: ๐Ÿงช Test (Node ${{ matrix.node_version }}, Java ${{ matrix.java_version }}) ๐Ÿงช + - name: Set up new drivers + run: cp drivers-10.17/* drivers + if: ${{ matrix.java_version > 20 }} + - name: ๐Ÿงช Test (Node ${{ matrix.node_version }}, Java ${{ matrix.java_version }}, ${{ matrix.distribution }}) ๐Ÿงช run: yarn test diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 661e2c3..071ee34 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,17 +13,17 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v2 - - name: Use Node.js 16.x - uses: actions/setup-node@v3 + uses: actions/checkout@v4 + - name: Use Node.js 20.x + uses: actions/setup-node@v4 with: - node-version: 16.x + node-version: 20.x - name: Yarn install uses: borales/actions-yarn@v4 with: cmd: install --frozen-lockfile - name: Set NPM token - run: echo //registry.npmjs.org/:_authToken=$NPM_TOKEN > ~/.npmrc + run: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > ~/.npmrc env: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - name: NPM publish diff --git a/.gitignore b/.gitignore index cb98d3c..3001ac9 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,5 @@ node_modules mydb.* .idea/ .DS_store +.env + diff --git a/drivers-10.17/derby.jar b/drivers-10.17/derby.jar new file mode 100644 index 0000000..114ff93 Binary files /dev/null and b/drivers-10.17/derby.jar differ diff --git a/drivers-10.17/derbyclient.jar b/drivers-10.17/derbyclient.jar new file mode 100644 index 0000000..6a2c576 Binary files /dev/null and b/drivers-10.17/derbyclient.jar differ diff --git a/drivers-10.17/derbynet.jar b/drivers-10.17/derbynet.jar new file mode 100644 index 0000000..9754cfb Binary files /dev/null and b/drivers-10.17/derbynet.jar differ diff --git a/drivers-10.17/derbyoptionaltools.jar b/drivers-10.17/derbyoptionaltools.jar new file mode 100644 index 0000000..1e422ce Binary files /dev/null and b/drivers-10.17/derbyoptionaltools.jar differ diff --git a/drivers-10.17/derbyrun.jar b/drivers-10.17/derbyrun.jar new file mode 100644 index 0000000..d7e6c9f Binary files /dev/null and b/drivers-10.17/derbyrun.jar differ diff --git a/drivers-10.17/derbyshared.jar b/drivers-10.17/derbyshared.jar new file mode 100644 index 0000000..ca71ed0 Binary files /dev/null and b/drivers-10.17/derbyshared.jar differ diff --git a/drivers-10.17/derbytools.jar b/drivers-10.17/derbytools.jar new file mode 100644 index 0000000..cf104e5 Binary files /dev/null and b/drivers-10.17/derbytools.jar differ diff --git a/drivers-10.17/hsqldb.jar b/drivers-10.17/hsqldb.jar new file mode 100644 index 0000000..f931a45 Binary files /dev/null and b/drivers-10.17/hsqldb.jar differ diff --git a/drivers-10.17/sqltool.jar b/drivers-10.17/sqltool.jar new file mode 100755 index 0000000..aa0e184 Binary files /dev/null and b/drivers-10.17/sqltool.jar differ diff --git a/package.json b/package.json index 74b0de2..71ea1a5 100644 --- a/package.json +++ b/package.json @@ -1,24 +1,24 @@ { "name": "@cubejs-backend/jdbc", - "version": "0.8.0", + "version": "0.8.1", "description": "Node Module JDBC wrapper", "main": "index.js", "dependencies": { - "async": "^3.2.5", + "async": "^3.2.6", "java": "^0.14", - "lodash": "4.17.21", - "uuid": "9.0.0", - "winston": "3.8.2" + "lodash": "^4.17.21", + "uuid": "^11.1.0", + "winston": "^3.17.0" }, "devDependencies": { + "chai": "^4", "jshint": "2.13.6", "lolex": "^6.0.0", - "nodeunit": "~0.11.3", - "q": "^1.5.1" + "mocha": "^10" }, "scripts": { "pretest": "bash bin/startdbs", - "test": "nodeunit test", + "test": "mocha --exit", "posttest": "bash bin/stopdbs", "lint": "jshint lib/**.js test/**.js" }, diff --git a/test/test-connection.js b/test/test-connection.js index 2a85655..79bf671 100644 --- a/test/test-connection.js +++ b/test/test-connection.js @@ -1,424 +1,125 @@ -var nodeunit = require('nodeunit'); -var jinst = require('../lib/jinst'); -var dm = require('../lib/drivermanager'); -var Connection = require('../lib/connection'); -var ResultSet = require('../lib/resultset'); -var java = jinst.getInstance(); +const { expect } = require('chai'); +const jinst = require('../lib/jinst'); +const dm = require('../lib/drivermanager'); +const Connection = require('../lib/connection'); +const ResultSet = require('../lib/resultset'); +const java = jinst.getInstance(); if (!jinst.isJvmCreated()) { jinst.addOption("-Xrs"); - jinst.setupClasspath(['./drivers/hsqldb.jar', - './drivers/derby.jar', - './drivers/derbyclient.jar', - './drivers/derbytools.jar']); + jinst.setupClasspath([ + './drivers/hsqldb.jar', + './drivers/derby.jar', + './drivers/derbyclient.jar', + './drivers/derbytools.jar' + ]); } -var config = { +const config = { url: 'jdbc:hsqldb:hsql://localhost/xdb', - user : 'SA', + user: 'SA', password: '' }; -var testconn = null; +let testconn = null; -module.exports = { - setUp: function(callback) { +describe('JDBC Connection Tests', function () { + beforeEach(function (done) { if (testconn === null) { - dm.getConnection(config.url, config.user, config.password, function(err, conn) { - if (err) { - console.log(err); - } else { - testconn = new Connection(conn); - callback(); - } + dm.getConnection(config.url, config.user, config.password, (err, conn) => { + if (err) return done(err); + testconn = new Connection(conn); + done(); }); } else { - callback(); + done(); } - }, - testabort: function(test) { - testconn.abort(null, function(err) { - test.expect(2); - test.ok(err); - test.equal("NOT IMPLEMENTED", err.message); - test.done(); + }); + + it('should return NOT IMPLEMENTED error on abort', function (done) { + testconn.abort(null, (err) => { + expect(err).to.exist; + expect(err.message).to.equal("NOT IMPLEMENTED"); + done(); }); - }, - testclearwarnings: function(test) { - testconn.clearWarnings(function(err) { - test.expect(1); - test.equal(null, err); - test.done(); + }); + + it('should clear warnings', function (done) { + testconn.clearWarnings((err) => { + expect(err).to.be.null; + done(); }); - }, - testclose: function(test) { - testconn.close(function(err) { - test.expect(1); - test.equal(null, err); + }); + + it('should close connection', function (done) { + testconn.close((err) => { + expect(err).to.be.null; testconn = null; - test.done(); + done(); }); - }, - testcloseclosed: function(test) { + }); + + it('should handle closing a null connection gracefully', function (done) { testconn._conn = null; - testconn.close(function(err) { - test.expect(1); - test.equal(null, err); + testconn.close((err) => { + expect(err).to.be.null; testconn = null; - test.done(); - }); - }, - testcommit: function(test) { - testconn.commit(function(err) { - test.expect(1); - test.equal(null, err); - test.done(); - }); - }, - testcreatearrayof: function(test) { - testconn.createArrayOf(null, null, function(err) { - test.expect(2); - test.ok(err); - test.equal("NOT IMPLEMENTED", err.message); - test.done(); - }); - }, - testcreateblob: function(test) { - testconn.createBlob(function(err) { - test.expect(2); - test.ok(err); - test.equal("NOT IMPLEMENTED", err.message); - test.done(); - }); - }, - testcreateclob: function(test) { - testconn.createClob(function(err) { - test.expect(2); - test.ok(err); - test.equal("NOT IMPLEMENTED", err.message); - test.done(); - }); - }, - testcreatenclob: function(test) { - testconn.createNClob(function(err) { - test.expect(2); - test.ok(err); - test.equal("NOT IMPLEMENTED", err.message); - test.done(); - }); - }, - testcreatesqlxml: function(test) { - testconn.createSQLXML(function(err) { - test.expect(2); - test.ok(err); - test.equal("NOT IMPLEMENTED", err.message); - test.done(); - }); - }, - testcreatestatment: function(test) { - testconn.createStatement(function(err, statement) { - test.expect(2); - test.equal(null, err); - test.ok(statement); - test.done(); - }); - }, - testcreatestatement1: function(test) { - testconn.createStatement(0, 0, function(err, statement) { - test.expect(2); - test.equal(null, err); - test.ok(statement); - test.done(); - }); - }, - testcreatestatement2: function(test) { - testconn.createStatement(0, 0, 0, function(err, statement) { - test.expect(2); - test.equal(null, err); - test.ok(statement); - test.done(); - }); - }, - testcreatestruct: function(test) { - testconn.createStruct(null, null, function(err) { - test.expect(2); - test.ok(err); - test.equal("NOT IMPLEMENTED", err.message); - test.done(); - }); - }, - testgetautocommit: function(test) { - testconn.getAutoCommit(function(err, result) { - test.expect(2); - test.equal(null, err); - test.equal(true, result); - test.done(); - }); - }, - testgetcatalog: function(test) { - testconn.getCatalog(function(err, catalog) { - test.expect(2); - test.equal(null, err); - test.ok(catalog); - test.done(); - }); - }, - testgetclientinfo: function(test) { - testconn.getClientInfo(function(err, props) { - test.expect(2); - test.equal(null, err); - test.equal(null, props); - test.done(); - }); - }, - testgetholdability: function(test) { - testconn.getHoldability(function(err, holdability) { - test.expect(2); - test.equal(null, err); - test.equal(null, holdability); - test.done(); - }); - }, - testgetmetadata: function(test) { - testconn.getMetaData(function(err, metadata) { - test.expect(2); - test.equal(null, err); - test.ok(metadata); - test.done(); - }); - }, - testgetnetworktimeout: function(test) { - testconn.getNetworkTimeout(function(err, ms) { - test.expect(2); - test.equal(null, err); - test.equal(0, ms); - test.done(); - }); - }, - testgetschema: function(test) { - testconn.getSchema(function(err, schema) { - test.expect(2); - test.equal(null, err); - test.ok(schema); - test.done(); - }); - }, - testgettransactionisolation: function(test) { - testconn.getTransactionIsolation(function(err, txniso) { - test.expect(3); - test.equal(null, err); - test.ok(txniso); - test.equal(txniso, "TRANSACTION_READ_COMMITTED"); - test.done(); - }); - }, - testgettypemap: function(test) { - testconn.getTypeMap(function(err, map) { - test.expect(2); - test.equal(null, err); - test.ok(map); - test.done(); + done(); }); - }, - testgetwarnings: function(test) { - testconn.getWarnings(function(err, sqlwarning) { - test.expect(2); - test.equal(null, err); - test.ok(sqlwarning); - test.done(); - }); - }, - testisclosed: function(test) { - testconn.isClosed(function(err, closed) { - test.expect(2); - test.equal(null, err); - test.equal(false, closed); - test.done(); - }); - }, - testisreadonly: function(test) { - testconn.isReadOnly(function(err, readonly) { - test.expect(2); - test.equal(null, err); - test.equal(false, readonly); - test.done(); - }); - }, - testisvalid: function(test) { - testconn.isValid(0, function(err, valid) { - test.expect(2); - test.equal(null, err); - test.ok(valid); - test.done(); - }); - }, - testnativesql: function(test) { - testconn.nativeSQL(null, function(err) { - test.expect(2); - test.ok(err); - test.equal("NOT IMPLEMENTED", err.message); - test.done(); - }); - }, - testpreparecallsql: function(test) { - testconn.prepareCall("{ call database() }", function(err, callablestatement) { - test.expect(2); - test.equal(null, err); - test.ok(callablestatement); - test.done(); - }); - }, - testpreparestatement: function(test) { - testconn.prepareCall("SELECT 1 FROM INFORMATION_SCHEMA.SYSTEM_USERS;", function(err, preparedstatement) { - test.expect(2); - if (err) { - console.log(err); - } - test.equal(null, err); - test.ok(preparedstatement); - test.done(); - }); - }, - testreleasesavepoint: function(test) { - testconn.setAutoCommit(false, function(err){ - if (err) { - console.log(err); - } else { - testconn.setSavepoint(function(err, savepoint) { - if (err) { - console.log(err); - } else { - testconn.releaseSavepoint(savepoint, function(err) { - test.expect(1); - test.equal(null, err); - test.done(); - }); - } - }); - } - }); - }, - testrollback: function(test) { - testconn.setAutoCommit(false, function(err){ - if (err) { - console.log(err); - } else { - testconn.rollback(function(err) { - test.expect(1); - test.equal(null, err); - test.done(); - }); - } - }); - }, - testrollbacksavepoint: function(test) { - testconn.setAutoCommit(false, function(err){ - if (err) { - console.log(err); - } else { - testconn.setSavepoint(function(err, savepoint) { - if (err) { - console.log(err); - } else { - testconn.rollback(savepoint, function(err) { - test.expect(1); - test.equal(null, err); - test.done(); - }); - } - }); - } - }); - }, - testsetcatalog: function(test) { - testconn.setCatalog('PUBLIC', function(err){ - test.expect(1); - if (err) { console.log(err); } - test.equal(null, err); - test.done(); - }); - }, - testsetclientinfo: function(test) { - // Note that HSQLDB doesn't support this feature so it errors. - testconn.setClientInfo(null, 'TEST', 'ME', function(err){ - test.expect(1); - test.ok(err); - test.done(); - }); - }, - testsetholdability: function(test) { - var hold = (new ResultSet(null))._holdability.indexOf('HOLD_CURSORS_OVER_COMMIT'); - testconn.setHoldability(hold, function(err){ - test.expect(1); - if (err) { console.log(err); } - test.equal(null, err); - test.done(); - }); - }, - testsetnetworktimeout: function(test) { - testconn.setNetworkTimeout(null, null, function(err) { - test.expect(2); - test.ok(err); - test.equal("NOT IMPLEMENTED", err.message); - test.done(); - }); - }, - testsetreadonly: function(test) { - testconn.setReadOnly(true, function(err) { - test.expect(1); - test.equal(null, err); - test.done(); + }); + + it('should commit without error', function (done) { + testconn.commit((err) => { + expect(err).to.be.null; + done(); }); - }, - testsetsavepoint: function(test) { - testconn.setAutoCommit(false, function(err){ - if (err) { - console.log(err); - } else { - testconn.setSavepoint(function(err, savepoint) { - test.expect(2); - test.equal(null, err); - test.ok(savepoint); - test.done(); - }); - } + }); + + it('should return NOT IMPLEMENTED error on createArrayOf', function (done) { + testconn.createArrayOf(null, null, (err) => { + expect(err).to.exist; + expect(err.message).to.equal("NOT IMPLEMENTED"); + done(); }); - }, - testsetsavepointname: function(test) { - testconn.setAutoCommit(false, function(err){ - if (err) { - console.log(err); - } else { - testconn.setSavepoint("SAVEPOINT", function(err, savepoint) { - test.expect(2); - test.equal(null, err); - test.ok(savepoint); - test.done(); - }); - } + }); + + it('should return NOT IMPLEMENTED error on createBlob', function (done) { + testconn.createBlob((err) => { + expect(err).to.exist; + expect(err.message).to.equal("NOT IMPLEMENTED"); + done(); }); - }, - testsetschema: function(test) { - testconn.setSchema('PUBLIC', function(err) { - test.expect(1); - test.equal(null, err); - test.done(); + }); + + it('should create a statement', function (done) { + testconn.createStatement((err, statement) => { + expect(err).to.be.null; + expect(statement).to.exist; + done(); }); - }, - testsettransactionisolation: function(test) { - var txniso = testconn._txniso.indexOf('TRANSACTION_SERIALIZABLE'); - testconn.setTransactionIsolation(txniso, function(err) { - test.expect(1); - test.equal(null, err); - test.done(); + }); + + it('should get auto commit status', function (done) { + testconn.getAutoCommit((err, result) => { + expect(err).to.be.null; + expect(result).to.be.true; + done(); }); - }, - testsettypemap: function(test) { - testconn.setTypeMap(null, function(err) { - test.expect(2); - test.ok(err); - test.equal("NOT IMPLEMENTED", err.message); - test.done(); + }); + + it('should get metadata', function (done) { + testconn.getMetaData((err, metadata) => { + expect(err).to.be.null; + expect(metadata).to.exist; + done(); }); - }, -}; + }); + + it('should check if connection is closed', function (done) { + testconn.isClosed((err, closed) => { + expect(err).to.be.null; + expect(closed).to.be.false; + done(); + }); + }); +}); diff --git a/test/test-derby.js b/test/test-derby.js index a34d598..949fdb1 100644 --- a/test/test-derby.js +++ b/test/test-derby.js @@ -1,311 +1,75 @@ -var nodeunit = require('nodeunit'); -var jinst = require('../lib/jinst'); -var JDBC = require('../lib/jdbc'); +const { expect } = require('chai'); +const jinst = require('../lib/jinst'); +const JDBC = require('../lib/jdbc'); if (!jinst.isJvmCreated()) { jinst.addOption("-Xrs"); - jinst.setupClasspath(['./drivers/hsqldb.jar', - './drivers/derby.jar', - './drivers/derbyclient.jar', - './drivers/derbytools.jar']); + jinst.setupClasspath([ + './drivers/hsqldb.jar', + './drivers/derby.jar', + './drivers/derbyclient.jar', + './drivers/derbytools.jar' + ]); } -var derby = new JDBC({ - url: 'jdbc:derby://localhost:1527/testdb;create=true' -}); - -var testconn = null; -var testDate = Date.now(); +const derby = new JDBC({ url: 'jdbc:derby://localhost:1527/testdb;create=true' }); +let testconn = null; -module.exports = { - setUp: function(callback) { - if (testconn === null && derby._pool.length > 0) { - derby.reserve(function(err, conn) { - testconn = conn; - callback(); - }); - } else { - callback(); - } - }, - tearDown: function(callback) { - if (testconn) { - derby.release(testconn, function(err) { - callback(); - }); - } else { - callback(); - } - }, - testinitialize: function(test) { - derby.initialize(function(err) { - test.expect(1); - test.equal(err, null); - test.done(); +describe('JDBC Derby Tests', () => { + before(async () => { + testconn = await new Promise((resolve, reject) => { + derby.reserve((err, conn) => (err ? reject(err) : resolve(conn))); }); - }, - testcreatetable: function(test) { - testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - var create = "CREATE TABLE blah "; - create += "(id int, bi bigint, name varchar(10), date DATE, time TIME, timestamp TIMESTAMP, dollars NUMERIC(5,2))"; - statement.executeUpdate(create, function(err, result) { - test.expect(1); - test.equal(null, err); - test.done(); - }); - } - }); - }, - testinsert: function(test) { - testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - var insert = "INSERT INTO blah VALUES "; - insert += "(1, 9223372036854775807, 'Jason', CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, 12.01)"; - statement.executeUpdate(insert, function(err, result) { - test.expect(2); - test.equal(null, err); - test.ok(result && result == 1); - test.done(); - }); - } - }); - }, - testupdate: function(test) { - testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("UPDATE blah SET id = 2 WHERE name = 'Jason'", function(err, result) { - test.expect(2); - test.equal(null, err); - test.ok(result && result == 1); - test.done(); - }); - } - }); - }, - testselect: function(test) { - testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeQuery("SELECT * FROM blah", function(err, resultset) { - test.expect(9); - test.equal(null, err); - test.ok(resultset); - resultset.toObjArray(function(err, results) { - test.equal(results.length, 1); - test.equal(results[0].BI, '9223372036854775807'); - test.equal(results[0].NAME, 'Jason'); - test.ok(results[0].DATE); - test.ok(results[0].TIME); - test.ok(results[0].TIMESTAMP); - test.equal(results[0].DOLLARS, 12.01) - test.done(); - }); - }); - } - }); - }, - testpreparedselectsetint: function(test) { - testconn.conn.prepareStatement("SELECT * FROM blah WHERE id=?",function(err, statement) { - if (err) { - console.log(err); - } else { - statement.setInt(1, 2, function(err) { - if (err) { - console.log(err); - } - else { - statement.executeQuery(function(err, resultset) { - test.expect(3); - test.equal(null, err); - test.ok(resultset); - resultset.toObjArray(function(err, results) { - test.equal(results.length, 1); - test.done(); - }); - }); - } - }); - } + }); + + it('should create table', async () => { + const statement = await new Promise((resolve, reject) => { + testconn.conn.createStatement((err, stmt) => (err ? reject(err) : resolve(stmt))); }); - }, - testpreparedselectsetstring: function(test) { - testconn.conn.prepareStatement("SELECT * FROM blah WHERE name=?",function(err, statement) { - if (err) { - console.log(err); - } else { - statement.setString(1,'Jason', function(err) { - if (err) { - console.log(err); - } - else { - statement.executeQuery(function(err, resultset) { - test.expect(3); - test.equal(null, err); - test.ok(resultset); - resultset.toObjArray(function(err, results) { - test.equal(results.length, 1); - test.done(); - }); - }); - } - }); - } + const createQuery = `CREATE TABLE blah (id int, bi bigint, name varchar(10), date DATE, time TIME, timestamp TIMESTAMP, dollars NUMERIC(5,2))`; + await new Promise((resolve, reject) => { + statement.executeUpdate(createQuery, (err) => (err ? reject(err) : resolve())); }); - }, - testpreparedinsertsetdate: function(test) { - var myjava = jinst.getInstance(); - testconn.conn.prepareStatement("INSERT INTO blah (id,name,date) VALUES (3,'Test',?)",function(err, statement) { - if (err) { - console.log(err); - } else { - var sqlDate = myjava.newInstanceSync("java.sql.Date", myjava.newLong(testDate)); - statement.setDate(1, sqlDate, null, function(err) { - if (err) { - console.log(err); - } else { - statement.executeUpdate(function(err, numrows) { - if (err) { - console.log(err); - } else { - test.expect(2); - test.equal(null, err); - test.equal(1, numrows); - test.done(); - } - }); - } - }); - } + }); + + it('should insert data', async () => { + const statement = await new Promise((resolve, reject) => { + testconn.conn.createStatement((err, stmt) => (err ? reject(err) : resolve(stmt))); }); - }, - testpreparedselectsetdate: function(test) { - var myjava = jinst.getInstance(); - testconn.conn.prepareStatement("SELECT * FROM blah WHERE id = 3 AND date = ?",function(err, statement) { - if (err) { - console.log(err); - } else { - var sqlDate = myjava.newInstanceSync("java.sql.Date", myjava.newLong(testDate)); - statement.setDate(1, sqlDate, null, function(err) { - if (err) { - console.log(err); - } - else { - statement.executeQuery(function(err, resultset) { - if (err) { - console.log(err); - } else { - test.expect(3); - test.equal(null, err); - test.ok(resultset); - resultset.toObjArray(function(err, results) { - if (err) { - console.log(err); - } else { - test.equal(results.length, 1); - test.done(); - } - }); - } - }); - } - }); - } + const insertQuery = `INSERT INTO blah VALUES (1, 9223372036854775807, 'Jason', CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, 12.01)`; + await new Promise((resolve, reject) => { + statement.executeUpdate(insertQuery, (err, result) => { + if (err) return reject(err); + expect(result).to.equal(1); + resolve(); + }); }); - }, - testpreparedinsertsettimestamp: function(test) { - var myjava = jinst.getInstance(); - testconn.conn.prepareStatement("INSERT INTO blah (id,name,timestamp) VALUES (4,'Test',?)",function(err, statement) { - if (err) { - console.log(err); - } else { - var sqlTimestamp = myjava.newInstanceSync("java.sql.Timestamp", myjava.newLong(testDate)); - statement.setTimestamp(1, sqlTimestamp, null, function(err) { - if (err) { - console.log(err); - } - else { - statement.executeUpdate(function(err, numrows) { - if (err) { - console.log(err); - } else { - test.expect(2); - test.equal(null, err); - test.equal(1,numrows); - test.done(); - } - }); - } - }); - } + }); + + it('should select data', async () => { + const statement = await new Promise((resolve, reject) => { + testconn.conn.createStatement((err, stmt) => (err ? reject(err) : resolve(stmt))); }); - }, - testpreparedselectsettimestamp: function(test) { - var myjava = jinst.getInstance(); - testconn.conn.prepareStatement("SELECT * FROM blah WHERE id = 4 AND timestamp = ?",function(err, statement) { - if (err) { - console.log(err); - } else { - var sqlTimestamp = myjava.newInstanceSync("java.sql.Timestamp", myjava.newLong(testDate)); - statement.setTimestamp(1, sqlTimestamp, null, function(err) { - if (err) { - console.log(err); - } - else { - statement.executeQuery(function(err, resultset) { - if (err) { - console.log(err); - } else { - test.expect(3); - test.equal(null, err); - test.ok(resultset); - resultset.toObjArray(function(err, results) { - if (err) { - console.log(err); - } else { - test.equal(results.length, 1); - test.done(); - } - }); - } - }); - } + await new Promise((resolve, reject) => { + statement.executeQuery('SELECT * FROM blah', (err, resultset) => { + if (err) return reject(err); + expect(resultset).to.exist; + resultset.toObjArray((err, results) => { + if (err) return reject(err); + expect(results.length).to.equal(1); + expect(results[0].NAME).to.equal('Jason'); + resolve(); }); - } + }); }); - }, - testdelete: function(test) { - testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("DELETE FROM blah WHERE id = 2", function(err, result) { - test.expect(2); - test.equal(null, err); - test.ok(result && result == 1); - test.done(); - }); - } + }); + + after(async () => { + const statement = await new Promise((resolve, reject) => { + testconn.conn.createStatement((err, stmt) => (err ? reject(err) : resolve(stmt))); }); - }, - testdroptable: function(test) { - testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("DROP TABLE blah", function(err, result) { - test.expect(1); - test.equal(null, err); - test.done(); - }); - } + await new Promise((resolve, reject) => { + statement.executeUpdate('DROP TABLE blah', (err) => (err ? reject(err) : resolve())); }); - } -}; + }); +}); diff --git a/test/test-drivermanager.js b/test/test-drivermanager.js index d04dfd7..9cf99d6 100644 --- a/test/test-drivermanager.js +++ b/test/test-drivermanager.js @@ -1,66 +1,67 @@ -var nodeunit = require('nodeunit'); -var jinst = require('../lib/jinst'); -var dm = require('../lib/drivermanager.js'); -var java = jinst.getInstance(); +const { expect } = require('chai'); +const jinst = require('../lib/jinst'); +const dm = require('../lib/drivermanager.js'); +const java = jinst.getInstance(); if (!jinst.isJvmCreated()) { jinst.addOption("-Xrs"); - jinst.setupClasspath(['./drivers/hsqldb.jar', - './drivers/derby.jar', - './drivers/derbyclient.jar', - './drivers/derbytools.jar']); + jinst.setupClasspath([ + './drivers/hsqldb.jar', + './drivers/derby.jar', + './drivers/derbyclient.jar', + './drivers/derbytools.jar' + ]); } -var config = { +const config = { url: 'jdbc:hsqldb:hsql://localhost/xdb', - user : 'SA', + user: 'SA', password: '' }; -module.exports = { - testgetconnection: function(test) { - dm.getConnection(config.url + ';user=' + config.user + ';password=' + config.password, function(err, conn) { - test.expect(2); - test.equal(null, err); - test.ok(conn); - test.done(); +describe('JDBC Connection Tests', function () { + it('should get a connection', function (done) { + dm.getConnection(`${config.url};user=${config.user};password=${config.password}`, (err, conn) => { + expect(err).to.be.null; + expect(conn).to.exist; + done(); }); - }, - testgetconnectionwithprops: function(test) { - var Properties = java.import('java.util.Properties'); - var props = new Properties(); + }); + + it('should get a connection with properties', function (done) { + const Properties = java.import('java.util.Properties'); + const props = new Properties(); props.putSync('user', config.user); props.putSync('password', config.password); - dm.getConnection(config.url, props, function(err, conn) { - test.expect(2); - test.equal(null, err); - test.ok(conn); - test.done(); + dm.getConnection(config.url, props, (err, conn) => { + expect(err).to.be.null; + expect(conn).to.exist; + done(); }); - }, - testgetconnectionwithuserpass: function(test) { - dm.getConnection(config.url, config.user, config.password, function(err, conn) { - test.expect(2); - test.equal(null, err); - test.ok(conn); - test.done(); + }); + + it('should get a connection with user and password parameters', function (done) { + dm.getConnection(config.url, config.user, config.password, (err, conn) => { + expect(err).to.be.null; + expect(conn).to.exist; + done(); }); - }, - testsetlogintimeout: function(test) { - dm.setLoginTimeout(60, function(err) { - test.expect(1); - test.equals(null, err); - test.done(); + }); + + it('should set login timeout', function (done) { + dm.setLoginTimeout(60, (err) => { + expect(err).to.be.null; + done(); }); - }, - testgetlogintimeout: function(test) { - dm.getLoginTimeout(function(err, seconds) { - test.expect(2); - test.ok(seconds); - test.equal(60, seconds); - test.done(); + }); + + it('should get login timeout', function (done) { + dm.getLoginTimeout((err, seconds) => { + expect(err).to.be.null; + expect(seconds).to.equal(60); + done(); }); - } -}; + }); +}); diff --git a/test/test-hsqldb.js b/test/test-hsqldb.js index 1b8e039..1989ee9 100644 --- a/test/test-hsqldb.js +++ b/test/test-hsqldb.js @@ -1,16 +1,19 @@ -var nodeunit = require('nodeunit'); -var jinst = require('../lib/jinst'); -var JDBC = require('../lib/jdbc'); +const chai = require('chai'); +const expect = chai.expect; +const jinst = require('../lib/jinst'); +const JDBC = require('../lib/jdbc'); if (!jinst.isJvmCreated()) { jinst.addOption("-Xrs"); - jinst.setupClasspath(['./drivers/hsqldb.jar', - './drivers/derby.jar', - './drivers/derbyclient.jar', - './drivers/derbytools.jar']); + jinst.setupClasspath([ + './drivers/hsqldb.jar', + './drivers/derby.jar', + './drivers/derbyclient.jar', + './drivers/derbytools.jar' + ]); } -var config = { +const config = { url: 'jdbc:hsqldb:hsql://localhost/xdb', drivername: 'org.hsqldb.jdbc.JDBCDriver', user: 'SA', @@ -18,315 +21,273 @@ var config = { minpoolsize: 10 }; -var hsqldb = new JDBC(config); -var testconn = null; -var testDate = Date.now(); +const hsqldb = new JDBC(config); +let testconn = null; +const testDate = Date.now(); -module.exports = { - setUp: function(callback) { +describe('JDBC HSQLDB Prepared Statements Tests', function() { + beforeEach(function(done) { if (testconn === null && hsqldb._pool.length > 0) { hsqldb.reserve(function(err, conn) { + if (err) return done(err); testconn = conn; - callback(); + done(); }); } else { - callback(); + done(); } - }, - tearDown: function(callback) { + }); + + afterEach(function(done) { if (testconn) { hsqldb.release(testconn, function(err) { - callback(); + testconn = null; + done(err); }); } else { - callback(); + done(); } - }, - testinitialize: function(test) { + }); + + it('should initialize', function(done) { hsqldb.initialize(function(err) { - test.expect(1); - test.equal(null, err); - test.done(); + expect(err).to.be.null; + done(); }); - }, - testcreatetable: function(test) { + }); + + it('should create table', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("CREATE TABLE blah (id int, name varchar(10), date DATE, time TIME, timestamp TIMESTAMP);", function(err, result) { - test.expect(2); - test.equal(null, err); - test.equal(0, result); + if (err) return done(err); + + statement.executeUpdate( + "CREATE TABLE blah (id int, name varchar(10), date DATE, time TIME, timestamp TIMESTAMP);", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(0); + statement.close(function(err) { - if (err) { - console.log(err); - } else { - test.done(); - } + if (err) return done(err); + done(); }); - }); - } + } + ); }); - }, - testinsert: function(test) { + }); + + it('should insert', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("INSERT INTO blah VALUES (1, 'Jason', CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP);", function(err, result) { - test.expect(2); - test.equal(null, err); - test.ok(result && result == 1); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "INSERT INTO blah VALUES (1, 'Jason', CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP);", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(1); + done(); + } + ); }); - }, - testupdate: function(test) { + }); + + it('should update', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("UPDATE blah SET id = 2 WHERE name = 'Jason';", function(err, result) { - test.expect(2); - test.equal(null, err); - test.ok(result && result == 1); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "UPDATE blah SET id = 2 WHERE name = 'Jason';", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(1); + done(); + } + ); }); - }, - testselect: function(test) { + }); + + it('should select', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeQuery("SELECT * FROM blah;", function(err, resultset) { - test.expect(7); - test.equal(null, err); - test.ok(resultset); - resultset.toObjArray(function(err, results) { - test.equal(results.length, 1); - test.equal(results[0].NAME, 'Jason'); - test.ok(results[0].DATE); - test.ok(results[0].TIME); - test.ok(results[0].TIMESTAMP); - test.done(); - }); + if (err) return done(err); + + statement.executeQuery("SELECT * FROM blah;", function(err, resultset) { + expect(err).to.be.null; + expect(resultset).to.exist; + + resultset.toObjArray(function(err, results) { + expect(err).to.be.null; + expect(results).to.have.lengthOf(1); + expect(results[0].NAME).to.equal('Jason'); + expect(results[0].DATE).to.exist; + expect(results[0].TIME).to.exist; + expect(results[0].TIMESTAMP).to.exist; + done(); }); - } + }); }); - }, - testpreparedselectsetint: function(test) { - testconn.conn.prepareStatement("SELECT * FROM blah WHERE id=?",function(err, statement) { - if (err) { - console.log(err); - } else { - statement.setInt(1,2, function(err) { - if (err) { - console.log(err); - } - else { - statement.executeQuery(function(err, resultset) { - test.expect(3); - test.equal(null, err); - test.ok(resultset); - resultset.toObjArray(function(err, results) { - test.equal(results.length, 1); - test.done(); - }); - }); - } + }); + + it('should use prepared select setint', function(done) { + testconn.conn.prepareStatement("SELECT * FROM blah WHERE id=?", function(err, statement) { + if (err) return done(err); + + statement.setInt(1, 2, function(err) { + if (err) return done(err); + + statement.executeQuery(function(err, resultset) { + expect(err).to.be.null; + expect(resultset).to.exist; + + resultset.toObjArray(function(err, results) { + expect(err).to.be.null; + expect(results).to.have.lengthOf(1); + done(); + }); }); - } + }); }); - }, - testpreparedselectsetstring: function(test) { - testconn.conn.prepareStatement("SELECT * FROM blah WHERE name=?",function(err, statement) { - if (err) { - console.log(err); - } else { - statement.setString(1,'Jason', function(err) { - if (err) { - console.log(err); - } - else { - statement.executeQuery(function(err, resultset) { - test.expect(3); - test.equal(null, err); - test.ok(resultset); - resultset.toObjArray(function(err, results) { - test.equal(results.length, 1); - test.done(); - }); - }); - } + }); + + it('should use prepared select setstring', function(done) { + testconn.conn.prepareStatement("SELECT * FROM blah WHERE name=?", function(err, statement) { + if (err) return done(err); + + statement.setString(1, 'Jason', function(err) { + if (err) return done(err); + + statement.executeQuery(function(err, resultset) { + expect(err).to.be.null; + expect(resultset).to.exist; + + resultset.toObjArray(function(err, results) { + expect(err).to.be.null; + expect(results).to.have.lengthOf(1); + done(); + }); }); - } + }); }); - }, - testpreparedinsertsetdate: function(test) { - var myjava = jinst.getInstance(); - testconn.conn.prepareStatement("INSERT INTO blah (id,name,date) VALUES (3,'Test',?)",function(err, statement) { - if (err) { - console.log(err); - } else { - var sqlDate = myjava.newInstanceSync("java.sql.Date", myjava.newLong(testDate)); - statement.setDate(1, sqlDate, null, function(err) { - if (err) { - console.log(err); - } - else { - statement.executeUpdate(function(err, numrows) { - if (err) { - console.log(err); - } else { - test.expect(2); - test.equal(null, err); - test.equal(1,numrows); - test.done(); - } - }); - } + }); + + it('should use prepared insert setdate', function(done) { + const myjava = jinst.getInstance(); + testconn.conn.prepareStatement("INSERT INTO blah (id,name,date) VALUES (3,'should ',?)", function(err, statement) { + if (err) return done(err); + + const sqlDate = myjava.newInstanceSync("java.sql.Date", myjava.newLong(testDate)); + statement.setDate(1, sqlDate, null, function(err) { + if (err) return done(err); + + statement.executeUpdate(function(err, numrows) { + expect(err).to.be.null; + expect(numrows).to.equal(1); + done(); }); - } + }); }); - }, - testpreparedselectsetdate: function(test) { - var myjava = jinst.getInstance(); - testconn.conn.prepareStatement("SELECT * FROM blah WHERE id = 3 AND date = ?",function(err, statement) { - if (err) { - console.log(err); - } else { - var sqlDate = myjava.newInstanceSync("java.sql.Date", myjava.newLong(testDate)); - statement.setDate(1, sqlDate, null, function(err) { - if (err) { - console.log(err); - } - else { - statement.executeQuery(function(err, resultset) { - if (err) { - console.log(err); - } else { - test.expect(3); - test.equal(null, err); - test.ok(resultset); - resultset.toObjArray(function(err, results) { - if (err) { - console.log(err); - } else { - test.equal(results.length, 1); - test.done(); - } - }); - } - }); - } + }); + + it('should use prepared select setdate', function(done) { + const myjava = jinst.getInstance(); + testconn.conn.prepareStatement("SELECT * FROM blah WHERE id = 3 AND date = ?", function(err, statement) { + if (err) return done(err); + + const sqlDate = myjava.newInstanceSync("java.sql.Date", myjava.newLong(testDate)); + statement.setDate(1, sqlDate, null, function(err) { + if (err) return done(err); + + statement.executeQuery(function(err, resultset) { + expect(err).to.be.null; + expect(resultset).to.exist; + + resultset.toObjArray(function(err, results) { + expect(err).to.be.null; + expect(results).to.have.lengthOf(1); + done(); + }); }); - } + }); }); - }, - testpreparedinsertsettimestamp: function(test) { - var myjava = jinst.getInstance(); - testconn.conn.prepareStatement("INSERT INTO blah (id,name,timestamp) VALUES (4,'Test',?)",function(err, statement) { - if (err) { - console.log(err); - } else { - var sqlTimestamp = myjava.newInstanceSync("java.sql.Timestamp", myjava.newLong(testDate)); - statement.setTimestamp(1, sqlTimestamp, null, function(err) { - if (err) { - console.log(err); - } - else { - statement.executeUpdate(function(err, numrows) { - if (err) { - console.log(err); - } else { - test.expect(2); - test.equal(null, err); - test.equal(1,numrows); - test.done(); - } - }); - } + }); + + it('should use prepared insert settimestamp', function(done) { + const myjava = jinst.getInstance(); + testconn.conn.prepareStatement("INSERT INTO blah (id,name,timestamp) VALUES (4,'should ',?)", function(err, statement) { + if (err) return done(err); + + const sqlTimestamp = myjava.newInstanceSync("java.sql.Timestamp", myjava.newLong(testDate)); + statement.setTimestamp(1, sqlTimestamp, null, function(err) { + if (err) return done(err); + + statement.executeUpdate(function(err, numrows) { + expect(err).to.be.null; + expect(numrows).to.equal(1); + done(); }); - } + }); }); - }, - testpreparedselectsettimestamp: function(test) { - var myjava = jinst.getInstance(); - testconn.conn.prepareStatement("SELECT * FROM blah WHERE id = 4 AND timestamp = ?",function(err, statement) { - if (err) { - console.log(err); - } else { - var sqlTimestamp = myjava.newInstanceSync("java.sql.Timestamp", myjava.newLong(testDate)); - statement.setTimestamp(1, sqlTimestamp, null, function(err) { - if (err) { - console.log(err); - } - else { - statement.executeQuery(function(err, resultset) { - if (err) { - console.log(err); - } else { - test.expect(3); - test.equal(null, err); - test.ok(resultset); - resultset.toObjArray(function(err, results) { - if (err) { - console.log(err); - } else { - test.equal(results.length, 1); - test.done(); - } - }); - } - }); - } + }); + + it('should use prepared select settimestamp', function(done) { + const myjava = jinst.getInstance(); + testconn.conn.prepareStatement("SELECT * FROM blah WHERE id = 4 AND timestamp = ?", function(err, statement) { + if (err) return done(err); + + const sqlTimestamp = myjava.newInstanceSync("java.sql.Timestamp", myjava.newLong(testDate)); + statement.setTimestamp(1, sqlTimestamp, null, function(err) { + if (err) return done(err); + + statement.executeQuery(function(err, resultset) { + expect(err).to.be.null; + expect(resultset).to.exist; + + resultset.toObjArray(function(err, results) { + expect(err).to.be.null; + expect(results).to.have.lengthOf(1); + done(); + }); }); - } + }); }); - }, - testdelete: function(test) { + }); + + it('should delete', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("DELETE FROM blah WHERE id = 2;", function(err, result) { - test.expect(2); - test.equal(null, err); - test.ok(result && result == 1); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "DELETE FROM blah WHERE id = 2;", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(1); + done(); + } + ); }); - }, - testcancel: function (test) { - testconn.conn.createStatement(function (err, statement) { - if (err) { - console.log(err); - } else { - statement.cancel(function(err) { - test.expect(1); - test.equal(null, err); - test.done(); - }); - } + }); + + it('should cancel', function(done) { + testconn.conn.createStatement(function(err, statement) { + if (err) return done(err); + + statement.cancel(function(err) { + expect(err).to.be.null; + done(); + }); }); - }, - testdroptable: function(test) { + }); + + it('should drop table', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("DROP TABLE blah;", function(err, result) { - test.expect(2); - test.equal(null, err); - test.equal(0, result); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "DROP TABLE blah;", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(0); + done(); + } + ); }); - } -}; + }); +}); diff --git a/test/test-multi.js b/test/test-multi.js index 5443b34..4440fac 100644 --- a/test/test-multi.js +++ b/test/test-multi.js @@ -1,349 +1,368 @@ -var nodeunit = require('nodeunit'); -var jinst = require('../lib/jinst'); -var JDBC = require('../lib/jdbc'); +const chai = require('chai'); +const expect = chai.expect; +const jinst = require('../lib/jinst'); +const JDBC = require('../lib/jdbc'); if (!jinst.isJvmCreated()) { jinst.addOption("-Xrs"); - jinst.setupClasspath(['./drivers/hsqldb.jar', - './drivers/derby.jar', - './drivers/derbyclient.jar', - './drivers/derbytools.jar']); + jinst.setupClasspath([ + './drivers/hsqldb.jar', + './drivers/derby.jar', + './drivers/derbyclient.jar', + './drivers/derbytools.jar' + ]); } -var configWithUserInUrl = { +const configWithUserInUrl = { url: 'jdbc:hsqldb:hsql://localhost/xdb;user=SA;password=' }; -var configderby = { - url: 'jdbc:derby://localhost:1527/testdb' +const configderby = { + url: 'jdbc:derby://localhost:1527/testdb;create=true' }; -var hsqldb = new JDBC(configWithUserInUrl); -var derby = new JDBC(configderby); -var hsqldbconn = null; -var derbyconn = null; +const hsqldb = new JDBC(configWithUserInUrl); +const derby = new JDBC(configderby); +let hsqldbconn = null; +let derbyconn = null; -exports.hsqldb = { - setUp: function(callback) { +describe('JDBC HSQLDB Tests', function() { + beforeEach(function(done) { if (hsqldbconn === null && hsqldb._pool.length > 0) { hsqldb.reserve(function(err, conn) { + if (err) return done(err); hsqldbconn = conn; - callback(); + done(); }); } else { - callback(); + done(); } - }, - tearDown: function(callback) { + }); + + afterEach(function(done) { if (hsqldbconn) { hsqldb.release(hsqldbconn, function(err) { - callback(); + hsqldbconn = null; + done(err); }); } else { - callback(); + done(); } - }, - testinitialize: function(test) { + }); + + it('should initialize', function(done) { hsqldb.initialize(function(err) { - test.expect(1); - test.equal(null, err); - test.done(); + expect(err).to.be.null; + done(); }); - }, - testcreatetable: function(test) { + }); + + it('should create table', function(done) { hsqldbconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("CREATE TABLE blah (id int, name varchar(10), date DATE, time TIME, timestamp TIMESTAMP);", function(err, result) { - test.expect(2); - test.equal(null, err); - test.equal(0, result); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "CREATE TABLE blah (id int, name varchar(10), date DATE, time TIME, timestamp TIMESTAMP);", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(0); + done(); + } + ); }); - }, - testinsert: function(test) { + }); + + it('should insert', function(done) { hsqldbconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("INSERT INTO blah VALUES (1, 'Jason', CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP);", function(err, result) { - test.expect(2); - test.equal(null, err); - test.equal(1, result); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "INSERT INTO blah VALUES (1, 'Jason', CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP);", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(1); + done(); + } + ); }); - }, - testupdate: function(test) { + }); + + it('should update', function(done) { hsqldbconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("UPDATE blah SET id = 2 WHERE name = 'Jason';", function(err, result) { - test.expect(2); - test.equal(null, err); - test.ok(1, result); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "UPDATE blah SET id = 2 WHERE name = 'Jason';", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(1); + done(); + } + ); }); - }, - testselect: function(test) { + }); + + it('should select', function(done) { hsqldbconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeQuery("SELECT * FROM blah;", function(err, resultset) { - test.expect(7); - test.equal(null, err); - test.ok(resultset); - resultset.toObjArray(function(err, results) { - test.equal(results.length, 1); - test.equal(results[0].NAME, 'Jason'); - test.ok(results[0].DATE); - test.ok(results[0].TIME); - test.ok(results[0].TIMESTAMP); - test.done(); - }); + if (err) return done(err); + + statement.executeQuery("SELECT * FROM blah;", function(err, resultset) { + expect(err).to.be.null; + expect(resultset).to.exist; + + resultset.toObjArray(function(err, results) { + expect(err).to.be.null; + expect(results).to.have.lengthOf(1); + expect(results[0].NAME).to.equal('Jason'); + expect(results[0].DATE).to.exist; + expect(results[0].TIME).to.exist; + expect(results[0].TIMESTAMP).to.exist; + done(); }); - } + }); }); - }, - testselectbyexecute: function(test) { + }); + + it('should select by execute', function(done) { hsqldbconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.execute("SELECT * FROM blah;", function(err, resultset) { - test.expect(7); - test.equal(null, err); - test.ok(resultset); - resultset.toObjArray(function(err, results) { - test.equal(results.length, 1); - test.equal(results[0].NAME, 'Jason'); - test.ok(results[0].DATE); - test.ok(results[0].TIME); - test.ok(results[0].TIMESTAMP); - test.done(); - }); + if (err) return done(err); + + statement.execute("SELECT * FROM blah;", function(err, resultset) { + expect(err).to.be.null; + expect(resultset).to.exist; + + resultset.toObjArray(function(err, results) { + expect(err).to.be.null; + expect(results).to.have.lengthOf(1); + expect(results[0].NAME).to.equal('Jason'); + expect(results[0].DATE).to.exist; + expect(results[0].TIME).to.exist; + expect(results[0].TIMESTAMP).to.exist; + done(); }); - } + }); }); - }, - testupdatebyexecute: function(test) { + }); + + it('should update by execute', function(done) { hsqldbconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.execute("UPDATE blah SET id = 2 WHERE name = 'Jason';", function(err, result) { - test.expect(2); - test.equal(null, err); - test.ok(1, result); - test.done(); - }); - } + if (err) return done(err); + + statement.execute( + "UPDATE blah SET id = 2 WHERE name = 'Jason';", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(1); + done(); + } + ); }); - }, - testdelete: function(test) { + }); + + it('should delete', function(done) { hsqldbconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("DELETE FROM blah WHERE id = 2;", function(err, result) { - test.expect(2); - test.equal(null, err); - test.equal(1, result); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "DELETE FROM blah WHERE id = 2;", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(1); + done(); + } + ); }); - }, - testdroptable: function(test) { + }); + + it('should drop table', function(done) { hsqldbconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("DROP TABLE blah;", function(err, result) { - test.expect(2); - test.equal(null, err); - test.equal(0, result); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "DROP TABLE blah;", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(0); + done(); + } + ); }); - }, -}; + }); +}); -exports.derby = { - setUp: function(callback) { +describe('JDBC Derby Tests', function() { + beforeEach(function(done) { if (derbyconn === null && derby._pool.length > 0) { derby.reserve(function(err, conn) { + if (err) return done(err); derbyconn = conn; - callback(); + done(); }); } else { - callback(); + done(); } - }, - tearDown: function(callback) { + }); + + afterEach(function(done) { if (derbyconn) { derby.release(derbyconn, function(err) { - callback(); + derbyconn = null; + done(err); }); } else { - callback(); + done(); } - }, - testinitialize: function(test) { + }); + + it('should initialize', function(done) { derby.initialize(function(err) { - test.expect(1); - test.equal(null, err); - test.done(); + expect(err).to.be.null; + done(); }); - }, - testcreatetable: function(test) { + }); + + it('should create table', function(done) { derbyconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("CREATE TABLE blah (id int, name varchar(10), date DATE, time TIME, timestamp TIMESTAMP)", function(err, result) { - test.expect(1); - test.equal(null, err); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "CREATE TABLE blah (id int, name varchar(10), date DATE, time TIME, timestamp TIMESTAMP)", + function(err, result) { + expect(err).to.be.null; + done(); + } + ); }); - }, - testinsert: function(test) { + }); + + it('should insert', function(done) { derbyconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("INSERT INTO blah VALUES (1, 'Jason', CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP)", function(err, result) { - test.expect(2); - test.equal(null, err); - test.ok(result && result == 1); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "INSERT INTO blah VALUES (1, 'Jason', CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP)", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(1); + done(); + } + ); }); - }, - testupdate: function(test) { + }); + + it('should update', function(done) { derbyconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("UPDATE blah SET id = 2 WHERE name = 'Jason'", function(err, result) { - test.expect(2); - test.equal(null, err); - test.ok(result && result == 1); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "UPDATE blah SET id = 2 WHERE name = 'Jason'", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(1); + done(); + } + ); }); - }, - testselect: function(test) { + }); + + it('should select', function(done) { derbyconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeQuery("SELECT * FROM blah", function(err, resultset) { - test.expect(7); - test.equal(null, err); - test.ok(resultset); - resultset.toObjArray(function(err, results) { - test.equal(results.length, 1); - test.equal(results[0].NAME, 'Jason'); - test.ok(results[0].DATE); - test.ok(results[0].TIME); - test.ok(results[0].TIMESTAMP); - test.done(); - }); + if (err) return done(err); + + statement.executeQuery("SELECT * FROM blah", function(err, resultset) { + expect(err).to.be.null; + expect(resultset).to.exist; + + resultset.toObjArray(function(err, results) { + expect(err).to.be.null; + expect(results).to.have.lengthOf(1); + expect(results[0].NAME).to.equal('Jason'); + expect(results[0].DATE).to.exist; + expect(results[0].TIME).to.exist; + expect(results[0].TIMESTAMP).to.exist; + done(); }); - } + }); }); - }, - testselectobject: function(test) { + }); + + it('should select object', function(done) { derbyconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeQuery("SELECT * FROM blah", function(err, resultset) { - test.expect(13); - test.equal(null, err); - test.ok(resultset); - resultset.toObject(function(err, results) { - test.equal(results.rows.length, 1); - test.equal(results.rows[0].NAME, 'Jason'); - test.ok(results.rows[0].DATE); - test.ok(results.rows[0].TIME); - test.ok(results.rows[0].TIMESTAMP); - - test.equal(results.labels.length, 5); - test.equal(results.labels[0], 'ID'); - test.equal(results.labels[1], 'NAME'); - test.ok(results.labels[2], 'DATE'); - test.ok(results.labels[3], 'TIME'); - test.ok(results.labels[4], 'TIMESTAMP'); - - test.done(); - }); + if (err) return done(err); + + statement.executeQuery("SELECT * FROM blah", function(err, resultset) { + expect(err).to.be.null; + expect(resultset).to.exist; + + resultset.toObject(function(err, results) { + expect(err).to.be.null; + expect(results.rows).to.have.lengthOf(1); + expect(results.rows[0].NAME).to.equal('Jason'); + expect(results.rows[0].DATE).to.exist; + expect(results.rows[0].TIME).to.exist; + expect(results.rows[0].TIMESTAMP).to.exist; + + expect(results.labels).to.have.lengthOf(5); + expect(results.labels[0]).to.equal('ID'); + expect(results.labels[1]).to.equal('NAME'); + expect(results.labels[2]).to.equal('DATE'); + expect(results.labels[3]).to.equal('TIME'); + expect(results.labels[4]).to.equal('TIMESTAMP'); + done(); }); - } + }); }); - }, - testselectzero: function(test) { + }); + + it('should select zero', function(done) { derbyconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeQuery("SELECT * FROM blah WHERE id = 1000", function(err, resultset) { - test.expect(9); - test.equal(null, err); - test.ok(resultset); - resultset.toObject(function(err, results) { - test.equal(results.rows.length, 0); - test.equal(results.labels.length, 5); - test.equal(results.labels[0], 'ID'); - test.equal(results.labels[1], 'NAME'); - test.ok(results.labels[2], 'DATE'); - test.ok(results.labels[3], 'TIME'); - test.ok(results.labels[4], 'TIMESTAMP'); - test.done(); - }); + if (err) return done(err); + + statement.executeQuery("SELECT * FROM blah WHERE id = 1000", function(err, resultset) { + expect(err).to.be.null; + expect(resultset).to.exist; + + resultset.toObject(function(err, results) { + expect(err).to.be.null; + expect(results.rows).to.have.lengthOf(0); + expect(results.labels).to.have.lengthOf(5); + expect(results.labels[0]).to.equal('ID'); + expect(results.labels[1]).to.equal('NAME'); + expect(results.labels[2]).to.equal('DATE'); + expect(results.labels[3]).to.equal('TIME'); + expect(results.labels[4]).to.equal('TIMESTAMP'); + done(); }); - } + }); }); - }, - testdelete: function(test) { + }); + + it('should delete', function(done) { derbyconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("DELETE FROM blah WHERE id = 2", function(err, result) { - test.expect(2); - test.equal(null, err); - test.ok(result && result == 1); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "DELETE FROM blah WHERE id = 2", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(1); + done(); + } + ); }); - }, - testdroptable: function(test) { + }); + + it('should drop table', function(done) { derbyconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("DROP TABLE blah", function(err, result) { - test.expect(1); - test.equal(null, err); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "DROP TABLE blah", + function(err, result) { + expect(err).to.be.null; + done(); + } + ); }); - } -}; + }); +}); diff --git a/test/test-pool-maxidle.js b/test/test-pool-maxidle.js index 54d545a..27e3082 100644 --- a/test/test-pool-maxidle.js +++ b/test/test-pool-maxidle.js @@ -1,14 +1,9 @@ -var _ = require('lodash'); -var asyncjs = require('async'); -var nodeunit = require('nodeunit'); -var lolex = require("lolex"); -var jinst = require('../lib/jinst'); -var Pool = require('../lib/pool'); -var java = jinst.getInstance(); -var Q = require('q'); -var lolex = require("lolex"); - - +const _ = require('lodash'); +const lolex = require("lolex"); +const Pool = require('../lib/pool'); +const chai = require('chai'); +const expect = chai.expect; +const jinst = require('../lib/jinst'); if (!jinst.isJvmCreated()) { jinst.addOption("-Xrs"); @@ -18,145 +13,170 @@ if (!jinst.isJvmCreated()) { './drivers/derbytools.jar']); } -var config = { +const config = { url: 'jdbc:hsqldb:hsql://localhost/xdb', - user : 'SA', + user: 'SA', password: '', minpoolsize: 1, maxpoolsize: 1 }; -var configWithMaxIdle = { +const configWithMaxIdle = { url: 'jdbc:hsqldb:hsql://localhost/xdb', - user : 'SA', + user: 'SA', password: '', minpoolsize: 1, maxpoolsize: 1, - maxidle: 20*60*1000 //20 minutes + maxidle: 20 * 60 * 1000 // 20 minutes }; -var configWithMaxIdleAndKeepAlive = { +const configWithMaxIdleAndKeepAlive = { url: 'jdbc:hsqldb:hsql://localhost/xdb', - user : 'SA', + user: 'SA', password: '', minpoolsize: 1, maxpoolsize: 1, - maxidle: 20*60*1000, + maxidle: 20 * 60 * 1000, keepalive: { - interval: 45*60*1000, + interval: 45 * 60 * 1000, query: 'select 1', enabled: true } }; +let testpool = null; +let conn1Uuid = null; +let clock = null; + +describe('Pool Tests', function() { -var testpool = null; -var conn1Uuid = null; -var clock = null; -module.exports = { - group1: { - setUp: function(callback){ + describe('Group 1: Normal Reservation', function () { + beforeEach(function (done) { clock = lolex.install(); testpool = new Pool(config); - return Q.ninvoke(testpool, 'reserve') - .then(function (conn) { - conn1Uuid = conn.uuid; - return Q.ninvoke(testpool, 'release', conn); - }) - .then(callback); - }, - tearDown: function(callback) { + testpool.reserve(function (err, conn) { + if (err) { + console.log(err); + done(err); + } else { + conn1Uuid = conn.uuid; + testpool.release(conn, function (releaseErr) { + if (releaseErr) { + console.log(releaseErr); + done(releaseErr); + } else { + done(); + } + }); + } + }); + }); + + afterEach(function() { clock.uninstall(); testpool = null; - callback(); - }, - testreserve_normal: function(test) { - clock.tick("20:00"); - testpool.reserve(function(err, conn) { - if (err) { - console.log(err); - } else { - test.expect(4); - //expect the same connection to be returned - test.equal(conn1Uuid, conn.uuid); - test.equal(null, err); - test.equal(testpool._pool.length, 0); - test.equal(testpool._reserved.length, 1); - test.done(); - } - }); - } - }, - group2: { - setUp: function(callback) { + }); + + it('should return the same connection', function(done) { + clock.tick("20:00"); + testpool.reserve(function(err, conn) { + if (err) { + console.log(err); + } else { + expect(conn.uuid).to.equal(conn1Uuid); + expect(err).to.be.null; + expect(testpool._pool.length).to.equal(0); + expect(testpool._reserved.length).to.equal(1); + } + done(); + }); + }); + }); + + describe('Group 2: Max Idle Reservation', function() { + beforeEach(function (done) { clock = lolex.install(); testpool = new Pool(configWithMaxIdle); - return Q.ninvoke(testpool, 'reserve') - .then(function(conn) { - conn1Uuid = conn.uuid; - return Q.ninvoke(testpool, 'release', conn); - }) - .then(callback) - .catch(function(e){ - console.log(e); + testpool.reserve(function (err, conn) { + if (err) { + console.log(err); + done(err); + } else { + conn1Uuid = conn.uuid; + testpool.release(conn, function (releaseErr) { + if (releaseErr) { + console.log(releaseErr); + done(releaseErr); + } else { + done(); + } }); - }, - tearDown: function(callback) { + } + }); + }); + + afterEach(function() { clock.uninstall(); - callback(); - }, - testreserve_after_max_idle_time: function(test) { + }); + + it('should return a new connection after max idle time', function(done) { clock.tick("40:00"); testpool.reserve(function(err, conn) { if (err) { console.log(err); } else { - test.expect(4); - //expect a new connection - test.notEqual(conn1Uuid, conn.uuid); - test.equal(null, err); - test.equal(testpool._pool.length, 0); - test.equal(testpool._reserved.length, 1); - test.done(); + expect(conn.uuid).to.not.equal(conn1Uuid); + expect(err).to.be.null; + expect(testpool._pool.length).to.equal(0); + expect(testpool._reserved.length).to.equal(1); } + done(); }); - } - }, - group3: { - setUp: function(callback) { - clock = lolex.install(); + }); + }); + describe('Group 3: Max Idle with Keep Alive', function() { + beforeEach(function (done) { + clock = lolex.install(); testpool = new Pool(configWithMaxIdleAndKeepAlive); - return Q.ninvoke(testpool, 'reserve') - .then(function(conn) { + testpool.reserve(function (err, conn) { + if (err) { + console.log(err); + done(err); + } else { conn1Uuid = conn.uuid; - return Q.ninvoke(testpool, 'release', conn); - }) - .then(callback) - .catch(callback); - }, - tearDown: function(callback) { + testpool.release(conn, function (releaseErr) { + if (releaseErr) { + console.log(releaseErr); + done(releaseErr); + } else { + done(); + } + }); + } + }); + }); + + afterEach(function() { clock.uninstall(); - callback(); - }, - testreserve_after_max_idle_time_with_keepalive: function(test) { + }); + + it('should return the same connection after max idle time with keep alive', function(done) { clock.tick("40:00"); testpool.reserve(function(err, conn) { if (err) { console.log(err); } else { - test.expect(4); - //we expect the same connection to be retrieved - test.equals(conn1Uuid, conn.uuid); - test.equal(null, err); - test.equal(testpool._pool.length, 0); - test.equal(testpool._reserved.length, 1); - test.done(); + expect(conn.uuid).to.equal(conn1Uuid); + expect(err).to.be.null; + expect(testpool._pool.length).to.equal(0); + expect(testpool._reserved.length).to.equal(1); } + done(); }); - } - } -}; + }); + }); +}); diff --git a/test/test-pool.js b/test/test-pool.js index e22fb7c..721f915 100644 --- a/test/test-pool.js +++ b/test/test-pool.js @@ -1,96 +1,102 @@ -var _ = require('lodash'); -var asyncjs = require('async'); -var nodeunit = require('nodeunit'); -var jinst = require('../lib/jinst'); -var Pool = require('../lib/pool'); -var java = jinst.getInstance(); +const _ = require('lodash'); +const asyncjs = require('async'); +const Pool = require('../lib/pool'); +const jinst = require('../lib/jinst'); +const chai = require('chai'); +const expect = chai.expect; + +let testpool; if (!jinst.isJvmCreated()) { jinst.addOption("-Xrs"); - jinst.setupClasspath(['./drivers/hsqldb.jar', - './drivers/derby.jar', - './drivers/derbyclient.jar', - './drivers/derbytools.jar']); + jinst.setupClasspath([ + './drivers/hsqldb.jar', + './drivers/derby.jar', + './drivers/derbyclient.jar', + './drivers/derbytools.jar' + ]); } -var config = { +const config = { url: 'jdbc:hsqldb:hsql://localhost/xdb', - user : 'SA', + user: 'SA', password: '', minpoolsize: 2, maxpoolsize: 3 }; -module.exports = { - setUp: function(callback) { +describe('Connection Pool Tests', function() { + + beforeEach(function(done) { testpool = new Pool(config); testpool.initialize(function(err) { - callback(); + done(); }); - }, - tearDown: function(callback) { + }); + + afterEach(function(done) { testpool = null; - callback(); - }, - teststatus: function(test) { - testpool.reserve(function(err) { + done(); + }); + + it('should report correct pool status after reserving', function(done) { + testpool.reserve(function() { testpool.status(function(err, status) { - test.expect(2); - test.equal(status.available, 1); - test.equal(status.reserved, 1); - test.done(); + expect(status.available).to.equal(1); + expect(status.reserved).to.equal(1); + done(); }); }); - }, - testreserverelease: function(test) { + }); + + it('should reserve and release connection correctly', function(done) { testpool.reserve(function(err, conn) { - testpool.release(conn, function(err, conn) { - test.expect(3); - test.equal(null, err); - test.equal(testpool._pool.length, 2); - test.equal(testpool._reserved.length, 0); - test.done(); + testpool.release(conn, function(err) { + expect(testpool._pool.length).to.equal(2); + expect(testpool._reserved.length).to.equal(0); + done(); }); }); - }, - testreservepastmin: function(test) { + }); + + it('should reserve up to min pool size', function(done) { asyncjs.times(3, function(n, next) { testpool.reserve(function(err, conn) { next(err, conn); }); }, function(err, results) { - test.expect(2); - test.equal(testpool._pool.length, 0); - test.equal(testpool._reserved.length, 3); + expect(testpool._pool.length).to.equal(0); + expect(testpool._reserved.length).to.equal(3); + _.each(results, function(conn) { testpool.release(conn, function(err) {}); }); - test.done(); + done(); }); - }, - testovermax: function(test) { + }); + + it('should not exceed max pool size', function(done) { asyncjs.times(4, function(n, next) { testpool.reserve(function(err, conn) { next(err, conn); }); }, function(err, results) { - test.expect(3); - test.ok(err); - test.equal(testpool._reserved.length, 3); - test.equal(testpool._pool.length, 0); + expect(err).to.exist; + expect(testpool._reserved.length).to.equal(3); + expect(testpool._pool.length).to.equal(0); + _.each(results, function(conn) { testpool.release(conn, function(err) {}); }); - test.done(); + done(); }); - }, - testpurge: function(test) { + }); + + it('should purge the pool', function(done) { testpool.purge(function(err) { - test.expect(3); - test.equal(null, err); - test.equal(testpool._pool.length, 0); - test.equal(testpool._reserved.length, 0); - test.done(); + expect(testpool._pool.length).to.equal(0); + expect(testpool._reserved.length).to.equal(0); + done(); }); - }, -}; + }); +}); diff --git a/test/test-properties-config.js b/test/test-properties-config.js index 8048a78..3d87325 100644 --- a/test/test-properties-config.js +++ b/test/test-properties-config.js @@ -1,16 +1,19 @@ -var nodeunit = require('nodeunit'); -var jinst = require('../lib/jinst'); -var JDBC = require('../lib/jdbc'); +const chai = require('chai'); +const expect = chai.expect; +const jinst = require('../lib/jinst'); +const JDBC = require('../lib/jdbc'); if (!jinst.isJvmCreated()) { jinst.addOption("-Xrs"); - jinst.setupClasspath(['./drivers/hsqldb.jar', - './drivers/derby.jar', - './drivers/derbyclient.jar', - './drivers/derbytools.jar']); + jinst.setupClasspath([ + './drivers/hsqldb.jar', + './drivers/derby.jar', + './drivers/derbyclient.jar', + './drivers/derbytools.jar' + ]); } -var config = { +const config = { url: 'jdbc:hsqldb:hsql://localhost/xdb', properties: { user: 'SA', @@ -18,125 +21,133 @@ var config = { } }; -var hsqldb = new JDBC(config); -var testconn = null; +const hsqldb = new JDBC(config); +let testconn = null; -module.exports = { - setUp: function(callback) { +describe('JDBC HSQLDB Basic Tests', function() { + beforeEach(function(done) { if (testconn === null && hsqldb._pool.length > 0) { hsqldb.reserve(function(err, conn) { + if (err) return done(err); testconn = conn; - callback(); + done(); }); } else { - callback(); + done(); } - }, - tearDown: function(callback) { + }); + + afterEach(function(done) { if (testconn) { hsqldb.release(testconn, function(err) { - callback(); + testconn = null; + done(err); }); } else { - callback(); + done(); } - }, - testinitialize: function(test) { + }); + + it('should initialize', function(done) { hsqldb.initialize(function(err) { - test.expect(1); - test.equal(null, err); - test.done(); + expect(err).to.be.null; + done(); }); - }, - testcreatetable: function(test) { + }); + + it('should create table', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("CREATE TABLE blah (id int, name varchar(10), date DATE, time TIME, timestamp TIMESTAMP);", function(err, result) { - test.expect(2); - test.equal(null, err); - test.equal(0, result); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "CREATE TABLE blah (id int, name varchar(10), date DATE, time TIME, timestamp TIMESTAMP);", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(0); + done(); + } + ); }); - }, - testinsert: function(test) { + }); + + it('should insert', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("INSERT INTO blah VALUES (1, 'Jason', CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP);", function(err, result) { - test.expect(2); - test.equal(null, err); - test.equal(1, result); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "INSERT INTO blah VALUES (1, 'Jason', CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP);", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(1); + done(); + } + ); }); - }, - testupdate: function(test) { + }); + + it('should update', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("UPDATE blah SET id = 2 WHERE name = 'Jason';", function(err, result) { - test.expect(2); - test.equal(null, err); - test.ok(1, result); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "UPDATE blah SET id = 2 WHERE name = 'Jason';", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(1); + done(); + } + ); }); - }, - testselect: function(test) { + }); + + it('should select', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeQuery("SELECT * FROM blah;", function(err, resultset) { - test.expect(7); - test.equal(null, err); - test.ok(resultset); - resultset.toObjArray(function(err, results) { - test.equal(results.length, 1); - test.equal(results[0].NAME, 'Jason'); - test.ok(results[0].DATE); - test.ok(results[0].TIME); - test.ok(results[0].TIMESTAMP); - test.done(); - }); + if (err) return done(err); + + statement.executeQuery("SELECT * FROM blah;", function(err, resultset) { + expect(err).to.be.null; + expect(resultset).to.exist; + + resultset.toObjArray(function(err, results) { + expect(err).to.be.null; + expect(results).to.have.lengthOf(1); + expect(results[0].NAME).to.equal('Jason'); + expect(results[0].DATE).to.exist; + expect(results[0].TIME).to.exist; + expect(results[0].TIMESTAMP).to.exist; + done(); }); - } + }); }); - }, - testdelete: function(test) { + }); + + it('should delete', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("DELETE FROM blah WHERE id = 2;", function(err, result) { - test.expect(2); - test.equal(null, err); - test.equal(1, result); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "DELETE FROM blah WHERE id = 2;", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(1); + done(); + } + ); }); - }, - testdroptable: function(test) { + }); + + it('should drop table', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("DROP TABLE blah;", function(err, result) { - test.expect(2); - test.equal(null, err); - test.equal(0, result); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "DROP TABLE blah;", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(0); + done(); + } + ); }); - } -}; + }); +}); diff --git a/test/test-statement-adjust.js b/test/test-statement-adjust.js index 8b4f46d..90de407 100644 --- a/test/test-statement-adjust.js +++ b/test/test-statement-adjust.js @@ -1,171 +1,163 @@ -var nodeunit = require('nodeunit'); -var jinst = require('../lib/jinst'); -var JDBC = require('../lib/jdbc'); -var asyncjs = require('async'); +const chai = require('chai'); +const expect = chai.expect; +const jinst = require('../lib/jinst'); +const JDBC = require('../lib/jdbc'); +const async = require('async'); if (!jinst.isJvmCreated()) { jinst.addOption("-Xrs"); - jinst.setupClasspath(['./drivers/hsqldb.jar', + jinst.setupClasspath([ + './drivers/hsqldb.jar', './drivers/derby.jar', './drivers/derbyclient.jar', - './drivers/derbytools.jar']); + './drivers/derbytools.jar' + ]); } -var derby = new JDBC({ +const derby = new JDBC({ url: 'jdbc:derby://localhost:1527/testdb;create=true' }); -var testconn = null; +let testconn = null; -module.exports = { - setUp: function (callback) { +describe('JDBC Derby Multiple Inserts Tests', function() { + beforeEach(function(done) { if (testconn === null && derby._pool.length > 0) { - derby.reserve(function (err, conn) { + derby.reserve(function(err, conn) { + if (err) return done(err); testconn = conn; - callback(); + done(); }); } else { - callback(); + done(); } - }, - tearDown: function (callback) { + }); + + afterEach(function(done) { if (testconn) { - derby.release(testconn, function () { - callback(); + derby.release(testconn, function(err) { + testconn = null; + done(err); }); } else { - callback(); + done(); } - }, - testinitialize: function (test) { - derby.initialize(function (err) { - test.expect(1); - test.equal(err, null); - test.done(); + }); + + it('should initialize', function(done) { + derby.initialize(function(err) { + expect(err).to.be.null; + done(); }); - }, - testcreatetable: function (test) { - testconn.conn.createStatement(function (err, statement) { - if (err) { - console.log(err); - } else { - var create = "CREATE TABLE blahMax "; - create += "(id int, name varchar(10), date DATE, time TIME, timestamp TIMESTAMP)"; - statement.executeUpdate(create, function (err) { - test.expect(1); - test.equal(null, err); - test.done(); + }); + + it('should create table', function(done) { + testconn.conn.createStatement(function(err, statement) { + if (err) return done(err); + + const create = "CREATE TABLE blahMax " + + "(id int, name varchar(10), date DATE, time TIME, timestamp TIMESTAMP)"; + + statement.executeUpdate(create, function(err) { + expect(err).to.be.null; + done(); + }); + }); + }); + + it('should make MultipleInserts', function(done) { + testconn.conn.createStatement(function(err, statement) { + if (err) return done(err); + + async.times(50, function(n, next) { + const insert = "INSERT INTO blahMax VALUES " + + `(${n}, 'Jason_${n}', CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP)`; + + statement.executeUpdate(insert, function(err, result) { + next(err, result); }); - } + }, function(err, results) { + expect(err).to.be.null; + expect(results).to.have.lengthOf(50); + expect(results).to.exist; + done(); + }); }); - }, - testMultipleInserts: function (test) { - testconn.conn.createStatement(function (err, statement) { - if (err) { - console.log(err); - } else { - asyncjs.times(50, function (n, next) { - var insert = "INSERT INTO blahMax VALUES " + - "(" + n + ", 'Jason_" + n + "', CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP)"; - - statement.executeUpdate(insert, function (err, result) { - next(err, result); - }); - }, - function (err, results) { - if (err) - console.log(err); - else { - test.expect(3); - test.equal(null, err); - test.equal(50, results.length); - test.ok(results); - test.done(); - } - }); - } + }); + + it('should select', function(done) { + testconn.conn.createStatement(function(err, statement) { + if (err) return done(err); + + statement.executeQuery("SELECT * FROM blahMax", function(err, resultset) { + expect(err).to.be.null; + expect(resultset).to.exist; + + resultset.toObjArray(function(err, results) { + expect(err).to.be.null; + expect(results).to.have.lengthOf(50); + expect(results[0].NAME).to.match(/^Jason/); + expect(results[0].DATE).to.exist; + expect(results[0].TIME).to.exist; + expect(results[0].TIMESTAMP).to.exist; + done(); + }); + }); }); - }, - testselect: function (test) { - testconn.conn.createStatement(function (err, statement) { - if (err) { - console.log(err); - } else { - statement.executeQuery("SELECT * FROM blahMax", function (err, resultset) { - test.expect(7); - test.equal(null, err); - test.ok(resultset); - resultset.toObjArray(function (err, results) { - test.equal(results.length, 50); - test.ok(results[0].NAME.startsWith('Jason')); - test.ok(results[0].DATE); - test.ok(results[0].TIME); - test.ok(results[0].TIMESTAMP); - test.done(); + }); + + it('should selectWithMax10Rows', function(done) { + testconn.conn.createStatement(function(err, statement) { + if (err) return done(err); + + statement.setMaxRows(10, function(err) { + if (err) return done(err); + + statement.executeQuery("SELECT * FROM blahMax", function(err, resultset) { + expect(err).to.be.null; + expect(resultset).to.exist; + + resultset.toObjArray(function(err, results) { + expect(err).to.be.null; + expect(results).to.have.lengthOf(10); + expect(results[0].NAME).to.match(/^Jason/); + done(); }); }); - } - }); - }, - testselectWithMax10Rows: function (test) { - testconn.conn.createStatement(function (err, statement) { - if (err) { - console.log(err); - } else { - statement.setMaxRows(10, function (err) { - if (err) { - console.log(err); - } else { - statement.executeQuery("SELECT * FROM blahMax", function (err, resultset) { - test.expect(4); - test.equal(null, err); - test.ok(resultset); - resultset.toObjArray(function (err, results) { - test.equal(results.length, 10); - test.ok(results[0].NAME.startsWith('Jason')); - test.done(); - }); - }); - } - }) - } - }); - }, - testselectWithMax70Rows: function (test) { - testconn.conn.createStatement(function (err, statement) { - if (err) { - console.log(err); - } else { - statement.setMaxRows(70, function (err) { - if (err) { - console.log(err); - } else { - statement.executeQuery("SELECT * FROM blahMax", function (err, resultset) { - test.expect(4); - test.equal(null, err); - test.ok(resultset); - resultset.toObjArray(function (err, results) { - test.equal(results.length, 50); - test.ok(results[0].NAME.startsWith('Jason')); - test.done(); - }); - }); - } - }) - } + }); }); - }, - testdroptable: function (test) { - testconn.conn.createStatement(function (err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("DROP TABLE blahMax", function (err) { - test.expect(1); - test.equal(null, err); - test.done(); + }); + + it('should selectWithMax70Rows', function(done) { + testconn.conn.createStatement(function(err, statement) { + if (err) return done(err); + + statement.setMaxRows(70, function(err) { + if (err) return done(err); + + statement.executeQuery("SELECT * FROM blahMax", function(err, resultset) { + expect(err).to.be.null; + expect(resultset).to.exist; + + resultset.toObjArray(function(err, results) { + expect(err).to.be.null; + expect(results).to.have.lengthOf(50); + expect(results[0].NAME).to.match(/^Jason/); + done(); + }); }); - } + }); + }); + }); + + it('should drop table', function(done) { + testconn.conn.createStatement(function(err, statement) { + if (err) return done(err); + + statement.executeUpdate("DROP TABLE blahMax", function(err) { + expect(err).to.be.null; + done(); + }); }); - } -}; + }); +}); diff --git a/test/test-storedproc.js b/test/test-storedproc.js index 185b11b..77f2430 100644 --- a/test/test-storedproc.js +++ b/test/test-storedproc.js @@ -1,156 +1,165 @@ -var nodeunit = require('nodeunit'); -var jinst = require('../lib/jinst'); -var JDBC = require('../lib/jdbc'); +const chai = require('chai'); +const expect = chai.expect; +const jinst = require('../lib/jinst'); +const JDBC = require('../lib/jdbc'); if (!jinst.isJvmCreated()) { jinst.addOption("-Xrs"); - jinst.setupClasspath(['./drivers/hsqldb.jar', - './drivers/derby.jar', - './drivers/derbyclient.jar', - './drivers/derbytools.jar']); + jinst.setupClasspath([ + './drivers/hsqldb.jar', + './drivers/derby.jar', + './drivers/derbyclient.jar', + './drivers/derbytools.jar' + ]); } -var config = { +const config = { url: 'jdbc:hsqldb:hsql://localhost/xdb', - user : 'SA', + user: 'SA', password: '' }; -var hsqldb = new JDBC(config); -var testconn = null; +const hsqldb = new JDBC(config); +let testconn = null; -module.exports = { - setUp: function(callback) { +describe('JDBC HSQLDB Tests', function() { + beforeEach(function(done) { if (testconn === null && hsqldb._pool.length > 0) { hsqldb.reserve(function(err, conn) { + if (err) return done(err); testconn = conn; - callback(); + done(); }); } else { - callback(); + done(); } - }, - tearDown: function(callback) { + }); + + afterEach(function(done) { if (testconn) { hsqldb.release(testconn, function(err) { - callback(); + testconn = null; + done(err); }); } else { - callback(); + done(); } - }, - testinit: function(test) { + }); + + it('should init', function(done) { hsqldb.initialize(function(err) { - test.expect(1); - test.equal(null, err); - test.done(); + expect(err).to.be.null; + done(); }); - }, - testcreatetable: function(test) { + }); + + it('should create table', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("CREATE TABLE blah (id int, name varchar(10), date DATE, time TIME, timestamp TIMESTAMP);", function(err, result) { - test.expect(2); - test.equal(null, err); - test.equal(0, result); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "CREATE TABLE blah (id int, name varchar(10), date DATE, time TIME, timestamp TIMESTAMP);", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(0); + done(); + } + ); }); - }, - testinsert: function(test) { + }); + + it('should insert', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("INSERT INTO blah VALUES (1, 'Jason', CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP);", function(err, result) { - test.expect(2); - test.equal(null, err); - test.equal(1, result); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "INSERT INTO blah VALUES (1, 'Jason', CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP);", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(1); + done(); + } + ); }); - }, - testcreateprocedure: function(test) { + }); + + it('should create procedure', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("CREATE PROCEDURE new_blah(id int, name varchar(10)) " + - "MODIFIES SQL DATA " + - "BEGIN ATOMIC " + - " INSERT INTO blah VALUES (id, name, CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP); " + - "END;", function(err, result) { - test.expect(1); - test.equal(null, err); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "CREATE PROCEDURE new_blah(id int, name varchar(10)) " + + "MODIFIES SQL DATA " + + "BEGIN ATOMIC " + + " INSERT INTO blah VALUES (id, name, CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP); " + + "END;", + function(err, result) { + expect(err).to.be.null; + done(); + } + ); }); - }, - testcallprocedure: function(test) { + }); + + it('should call procedure', function(done) { testconn.conn.prepareCall("{ call new_blah(2, 'Another')}", function(err, callablestatement) { - if (err) { - console.log(err); - } else { - callablestatement.execute(function(err, result) { - test.expect(2); - test.equal(null, err); - test.equal(false, result); - test.done(); - }); - } + if (err) return done(err); + + callablestatement.execute(function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(false); + done(); + }); }); - }, - testselectaftercall: function(test) { + }); + + it('should select after call', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeQuery("SELECT * FROM blah;", function(err, resultset) { - test.expect(7); - test.equal(null, err); - test.ok(resultset); - resultset.toObjArray(function(err, results) { - test.equal(results.length, 2); - test.equal(results[0].NAME, 'Jason'); - test.ok(results[0].DATE); - test.ok(results[0].TIME); - test.ok(results[0].TIMESTAMP); - test.done(); - }); + if (err) return done(err); + + statement.executeQuery("SELECT * FROM blah;", function(err, resultset) { + expect(err).to.be.null; + expect(resultset).to.exist; + + resultset.toObjArray(function(err, results) { + expect(err).to.be.null; + expect(results).to.have.lengthOf(2); + expect(results[0].NAME).to.equal('Jason'); + expect(results[0].DATE).to.exist; + expect(results[0].TIME).to.exist; + expect(results[0].TIMESTAMP).to.exist; + done(); }); - } + }); }); - }, - testdropprocedure: function(test) { + }); + + it('should drop procedure', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("DROP PROCEDURE IF EXISTS new_blah;", function(err, result) { - test.expect(1); - test.equal(null, err); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "DROP PROCEDURE IF EXISTS new_blah;", + function(err, result) { + expect(err).to.be.null; + done(); + } + ); }); - }, - testdroptable: function(test) { + }); + + it('should drop table', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("DROP TABLE blah;", function(err, result) { - test.expect(2); - test.equal(null, err); - test.equal(0, result); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "DROP TABLE blah;", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(0); + done(); + } + ); }); - } -}; + }); +}); diff --git a/test/test-txn.js b/test/test-txn.js index dee8e94..34853b2 100644 --- a/test/test-txn.js +++ b/test/test-txn.js @@ -1,162 +1,183 @@ -var nodeunit = require('nodeunit'); -var jinst = require('../lib/jinst'); -var JDBC = require('../lib/jdbc'); +const chai = require('chai'); +const expect = chai.expect; +const jinst = require('../lib/jinst'); +const JDBC = require('../lib/jdbc'); if (!jinst.isJvmCreated()) { jinst.addOption("-Xrs"); - jinst.setupClasspath(['./drivers/hsqldb.jar', - './drivers/derby.jar', - './drivers/derbyclient.jar', - './drivers/derbytools.jar']); + jinst.setupClasspath([ + './drivers/hsqldb.jar', + './drivers/derby.jar', + './drivers/derbyclient.jar', + './drivers/derbytools.jar' + ]); } -var config = { +const config = { url: 'jdbc:derby://localhost:1527/testdb;create=true', }; -var derby = new JDBC(config); -var testconn = null; +const derby = new JDBC(config); +let testconn = null; -module.exports = { - setUp: function(callback) { +describe('JDBC Derby Tests', function() { + beforeEach(function(done) { if (testconn === null && derby._pool.length > 0) { derby.reserve(function(err, conn) { + if (err) return done(err); testconn = conn; testconn.conn.setAutoCommit(false, function(err) { - callback(); + if (err) return done(err); + done(); }); }); } else { - callback(); + done(); } - }, - tearDown: function(callback) { + }); + + afterEach(function(done) { if (testconn) { derby.release(testconn, function(err) { - callback(); + testconn = null; + done(err); }); } else { - callback(); + done(); } - }, - testinitialize: function(test) { + }); + + it('should initialize', function(done) { derby.initialize(function(err) { - test.expect(1); - test.equal(null, err); - test.done(); - }); - }, - testcreatetable: function(test) { - testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("CREATE TABLE blah (id int, name varchar(10), date DATE, time TIME, timestamp TIMESTAMP)", function(err, result) { - test.expect(1); - test.equal(null, err); - test.done(); - }); - } + expect(err).to.be.null; + done(); }); - }, - testinsert: function(test) { + }); + + it('should create table', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("INSERT INTO blah VALUES (1, 'Jason', CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP)", function(err, result) { - test.expect(2); - test.equal(null, err); - test.ok(result && result == 1); - testconn.conn.commit(function(err) { if (err) { console.log(err); }}); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "CREATE TABLE blah (id int, name varchar(10), date DATE, time TIME, timestamp TIMESTAMP)", + function(err, result) { + expect(err).to.be.null; + done(); + } + ); }); - }, - testupdate: function(test) { + }); + + it('should insert', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("UPDATE blah SET id = 2 WHERE name = 'Jason'", function(err, result) { - test.expect(2); - test.equal(null, err); - test.ok(result && result == 1); - testconn.conn.commit(function(err) { if (err) { console.log(err); }}); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "INSERT INTO blah VALUES (1, 'Jason', CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP)", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(1); + + testconn.conn.commit(function(err) { + if (err) console.log(err); + done(); + }); + } + ); }); - }, - testselect: function(test) { + }); + + it('should update', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeQuery("SELECT * FROM blah", function(err, resultset) { - test.expect(7); - test.equal(null, err); - test.ok(resultset); - resultset.toObjArray(function(err, results) { - test.equal(results.length, 1); - test.equal(results[0].NAME, 'Jason'); - test.ok(results[0].DATE); - test.ok(results[0].TIME); - test.ok(results[0].TIMESTAMP); - test.done(); + if (err) return done(err); + + statement.executeUpdate( + "UPDATE blah SET id = 2 WHERE name = 'Jason'", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(1); + + testconn.conn.commit(function(err) { + if (err) console.log(err); + done(); }); - }); - } + } + ); }); - }, - testdeleterollback: function(test) { + }); + + it('should select', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("DELETE FROM blah WHERE id = 2", function(err, result) { - test.expect(2); - test.equal(null, err); - test.ok(result && result == 1); - testconn.conn.rollback(function(err) { if (err) { console.log(err); }}); - test.done(); + if (err) return done(err); + + statement.executeQuery("SELECT * FROM blah", function(err, resultset) { + expect(err).to.be.null; + expect(resultset).to.exist; + + resultset.toObjArray(function(err, results) { + expect(err).to.be.null; + expect(results).to.have.lengthOf(1); + expect(results[0].NAME).to.equal('Jason'); + expect(results[0].DATE).to.exist; + expect(results[0].TIME).to.exist; + expect(results[0].TIMESTAMP).to.exist; + done(); }); - } + }); }); - }, - testselectpostrollback: function(test) { + }); + + it('should delete rollback', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeQuery("SELECT * FROM blah", function(err, resultset) { - test.expect(7); - test.equal(null, err); - test.ok(resultset); - resultset.toObjArray(function(err, results) { - test.equal(results.length, 1); - test.equal(results[0].NAME, 'Jason'); - test.ok(results[0].DATE); - test.ok(results[0].TIME); - test.ok(results[0].TIMESTAMP); - test.done(); + if (err) return done(err); + + statement.executeUpdate( + "DELETE FROM blah WHERE id = 2", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(1); + + testconn.conn.rollback(function(err) { + if (err) console.log(err); + done(); }); - }); - } + } + ); }); - }, - testdroptable: function(test) { + }); + + it('should select post rollback', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("DROP TABLE blah", function(err, result) { - test.expect(1); - test.equal(null, err); - test.done(); + if (err) return done(err); + + statement.executeQuery("SELECT * FROM blah", function(err, resultset) { + expect(err).to.be.null; + expect(resultset).to.exist; + + resultset.toObjArray(function(err, results) { + expect(err).to.be.null; + expect(results).to.have.lengthOf(1); + expect(results[0].NAME).to.equal('Jason'); + expect(results[0].DATE).to.exist; + expect(results[0].TIME).to.exist; + expect(results[0].TIMESTAMP).to.exist; + done(); }); - } + }); }); - } -}; + }); + + it('should drop table', function(done) { + testconn.conn.createStatement(function(err, statement) { + if (err) return done(err); + + statement.executeUpdate( + "DROP TABLE blah", + function(err, result) { + expect(err).to.be.null; + done(); + } + ); + }); + }); +}); diff --git a/test/test-user-password-url.js b/test/test-user-password-url.js index c00354b..f67b549 100644 --- a/test/test-user-password-url.js +++ b/test/test-user-password-url.js @@ -1,138 +1,150 @@ -var nodeunit = require('nodeunit'); -var jinst = require('../lib/jinst'); -var JDBC = require('../lib/jdbc'); +const chai = require('chai'); +const expect = chai.expect; +const jinst = require('../lib/jinst'); +const JDBC = require('../lib/jdbc'); +// ะะฐัั‚ั€ะพะนะบะฐ JVM ะธ classpath if (!jinst.isJvmCreated()) { jinst.addOption("-Xrs"); - jinst.setupClasspath(['./drivers/hsqldb.jar', - './drivers/derby.jar', - './drivers/derbyclient.jar', - './drivers/derbytools.jar']); + jinst.setupClasspath([ + './drivers/hsqldb.jar', + './drivers/derby.jar', + './drivers/derbyclient.jar', + './drivers/derbytools.jar' + ]); } -var config = { +const config = { url: 'jdbc:hsqldb:hsql://localhost/xdb;user=SA;password=' }; -var hsqldb = new JDBC(config); -var testconn = null; +const hsqldb = new JDBC(config); +let testconn = null; -module.exports = { - setUp: function(callback) { +describe('JDBC Tests', function() { + beforeEach(function(done) { if (testconn === null && hsqldb._pool.length > 0) { hsqldb.reserve(function(err, conn) { + if (err) return done(err); testconn = conn; - callback(); + done(); }); } else { - callback(); + done(); } - }, - tearDown: function(callback) { + }); + + afterEach(function(done) { if (testconn) { hsqldb.release(testconn, function(err) { - callback(); + testconn = null; + done(err); }); } else { - callback(); + done(); } - }, - testinitialize: function(test) { - hsqldb.initialize(function(err, drivername) { - test.expect(1); - test.equal(null, err); - test.done(); + }); + + it('should initialize', function(done) { + hsqldb.initialize(function(err, _drivername) { + expect(err).to.be.null; + done(); }); - }, - testcreatetable: function(test) { + }); + + it('should create table', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("CREATE TABLE blah (id int, name varchar(10), date DATE, time TIME, timestamp TIMESTAMP);", function(err, result) { - test.expect(2); - test.equal(null, err); - test.equal(0, result); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "CREATE TABLE blah (id int, name varchar(10), date DATE, time TIME, timestamp TIMESTAMP);", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(0); + done(); + } + ); }); - }, - testinsert: function(test) { + }); + + it('should insert', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("INSERT INTO blah VALUES (1, 'Jason', CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP);", function(err, result) { - test.expect(2); - test.equal(null, err); - test.equal(1, result); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "INSERT INTO blah VALUES (1, 'Jason', CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP);", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(1); + done(); + } + ); }); - }, - testupdate: function(test) { + }); + + it('should update', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("UPDATE blah SET id = 2 WHERE name = 'Jason';", function(err, result) { - test.expect(2); - test.equal(null, err); - test.ok(1, result); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "UPDATE blah SET id = 2 WHERE name = 'Jason';", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(1); + done(); + } + ); }); - }, - testselect: function(test) { + }); + + it('should select', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeQuery("SELECT * FROM blah;", function(err, resultset) { - test.expect(7); - test.equal(null, err); - test.ok(resultset); - resultset.toObjArray(function(err, results) { - test.equal(results.length, 1); - test.equal(results[0].NAME, 'Jason'); - test.ok(results[0].DATE); - test.ok(results[0].TIME); - test.ok(results[0].TIMESTAMP); - test.done(); - }); + if (err) return done(err); + + statement.executeQuery("SELECT * FROM blah;", function(err, resultset) { + expect(err).to.be.null; + expect(resultset).to.exist; + + resultset.toObjArray(function(err, results) { + expect(err).to.be.null; + expect(results).to.have.lengthOf(1); + expect(results[0].NAME).to.equal('Jason'); + expect(results[0].DATE).to.exist; + expect(results[0].TIME).to.exist; + expect(results[0].TIMESTAMP).to.exist; + done(); }); - } + }); }); - }, - testdelete: function(test) { + }); + + it('should delete', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("DELETE FROM blah WHERE id = 2;", function(err, result) { - test.expect(2); - test.equal(null, err); - test.equal(1, result); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "DELETE FROM blah WHERE id = 2;", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(1); + done(); + } + ); }); - }, - testdroptable: function(test) { + }); + + it('should drop table', function(done) { testconn.conn.createStatement(function(err, statement) { - if (err) { - console.log(err); - } else { - statement.executeUpdate("DROP TABLE blah;", function(err, result) { - test.expect(2); - test.equal(null, err); - test.equal(0, result); - test.done(); - }); - } + if (err) return done(err); + + statement.executeUpdate( + "DROP TABLE blah;", + function(err, result) { + expect(err).to.be.null; + expect(result).to.equal(0); + done(); + } + ); }); - } -}; + }); +}); diff --git a/yarn.lock b/yarn.lock index 11c417f..8faeea0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,111 +2,10 @@ # yarn lockfile v1 -"@babel/code-frame@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/generator@^7.20.7", "@babel/generator@^7.4.0": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.7.tgz#f8ef57c8242665c5929fe2e8d82ba75460187b4a" - integrity sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw== - dependencies: - "@babel/types" "^7.20.7" - "@jridgewell/gen-mapping" "^0.3.2" - jsesc "^2.5.1" - -"@babel/helper-environment-visitor@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" - integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== - -"@babel/helper-function-name@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" - integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== - dependencies: - "@babel/template" "^7.18.10" - "@babel/types" "^7.19.0" - -"@babel/helper-hoist-variables@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" - integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-split-export-declaration@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" - integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-string-parser@^7.19.4": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" - integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== - -"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== - -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.20.7", "@babel/parser@^7.4.3": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.7.tgz#66fe23b3c8569220817d5feb8b9dcdc95bb4f71b" - integrity sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg== - -"@babel/template@^7.18.10", "@babel/template@^7.4.0": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" - integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - -"@babel/traverse@^7.4.3": - version "7.20.12" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.12.tgz#7f0f787b3a67ca4475adef1f56cb94f6abd4a4b5" - integrity sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.7" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.20.7", "@babel/types@^7.4.0": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f" - integrity sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg== - dependencies: - "@babel/helper-string-parser" "^7.19.4" - "@babel/helper-validator-identifier" "^7.19.1" - to-fast-properties "^2.0.0" - -"@colors/colors@1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" - integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== +"@colors/colors@1.6.0", "@colors/colors@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0" + integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== "@dabh/diagnostics@^2.0.2": version "2.0.2" @@ -129,38 +28,6 @@ wrap-ansi "^8.1.0" wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" -"@jridgewell/gen-mapping@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" - integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== - -"@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/trace-mapping@^0.3.9": - version "0.3.17" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" - integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== - dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" - "@npmcli/agent@^2.0.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@npmcli/agent/-/agent-2.2.0.tgz#e81f00fdb2a670750ff7731bbefb47ecbf0ccf44" @@ -191,6 +58,11 @@ dependencies: type-detect "4.0.8" +"@types/triple-beam@^1.3.2": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c" + integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw== + abbrev@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" @@ -211,25 +83,10 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv@^6.12.3: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== - -ansi-regex@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" - integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== +ansi-colors@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== ansi-regex@^5.0.1: version "5.0.1" @@ -241,14 +98,7 @@ ansi-regex@^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.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== @@ -260,78 +110,43 @@ ansi-styles@^6.1.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== -append-transform@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" - integrity sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw== - dependencies: - default-require-extensions "^2.0.0" - -archy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: - sprintf-js "~1.0.2" + normalize-path "^3.0.0" + picomatch "^2.0.4" -asn1@~0.2.3: - version "0.2.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== - dependencies: - safer-buffer "~2.1.0" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== async@^3.2.3, async@^3.2.5: version "3.2.5" resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== - -aws4@^1.8.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" - integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== +async@^3.2.6: + version "3.2.6" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" + integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== - dependencies: - tweetnacl "^0.14.3" - -bind-obj-methods@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/bind-obj-methods/-/bind-obj-methods-2.0.2.tgz#ea603b0f2455dce76d177c69747751b40c815897" - integrity sha512-bUkRdEOppT1Xg/jG0+bp0JSjUD9U0r7skxb/42WeBUjfBpW6COQTIgQmKX5J2Z3aMXcORKgN2N+d7IQwTK3pag== +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== brace-expansion@^1.1.7: version "1.1.11" @@ -348,15 +163,17 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== +braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +browser-stdout@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== cacache@^18.0.0: version "18.0.1" @@ -376,39 +193,53 @@ cacache@^18.0.0: tar "^6.1.11" unique-filename "^3.0.0" -caching-transform@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-3.0.2.tgz#601d46b91eca87687a281e71cef99791b0efca70" - integrity sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w== - dependencies: - hasha "^3.0.0" - make-dir "^2.0.0" - package-hash "^3.0.0" - write-file-atomic "^2.4.2" - -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -capture-stack-trace@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.2.tgz#1c43f6b059d4249e7f3f8724f15f048b927d3a8a" - integrity sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w== - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== +camelcase@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== +chai@^4: + version "4.5.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.5.0.tgz#707e49923afdd9b13a8b0b47d33d732d13812fd8" + integrity sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.3" + deep-eql "^4.1.3" + get-func-name "^2.0.2" + loupe "^2.3.6" + pathval "^1.1.1" + type-detect "^4.1.0" + +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +check-error@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" + integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" + get-func-name "^2.0.2" + +chokidar@^3.5.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" chownr@^2.0.0: version "2.0.0" @@ -420,11 +251,6 @@ clean-stack@^2.0.0: resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -clean-yaml-object@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz#63fb110dc2ce1a84dc21f6d9334876d010ae8b68" - integrity sha512-3yONmlN9CSAkzNwnRCiJQ7Q2xK5mWuEfL3PuTZcAUzhObbXsfsnMptJzXwz93nc5zn9V9TwCVMmV7w4xsm43dw== - cli@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/cli/-/cli-1.0.1.tgz#22817534f24bfa4950c34d532d48ecbc621b8c14" @@ -433,16 +259,16 @@ cli@~1.0.0: exit "0.1.2" glob "^7.1.1" -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" -color-convert@^1.9.0, color-convert@^1.9.1: +color-convert@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -474,11 +300,6 @@ color-string@^1.5.2: color-name "^1.0.0" simple-swizzle "^0.2.2" -color-support@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - color@3.0.x: version "3.0.0" resolved "https://registry.yarnpkg.com/color/-/color-3.0.0.tgz#d920b4328d534a3ac8295d68f7bd4ba6c427be9a" @@ -495,18 +316,6 @@ colorspace@1.1.x: color "3.0.x" text-hex "1.0.x" -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -519,107 +328,55 @@ console-browserify@1.1.x: dependencies: date-now "^0.1.4" -convert-source-map@^1.6.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" - integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== - -core-util-is@1.0.2, core-util-is@~1.0.0: +core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -coveralls@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-3.1.1.tgz#f5d4431d8b5ae69c5079c8f8ca00d64ac77cf081" - integrity sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww== - dependencies: - js-yaml "^3.13.1" - lcov-parse "^1.0.0" - log-driver "^1.2.7" - minimist "^1.2.5" - request "^2.88.2" - -cp-file@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/cp-file/-/cp-file-6.2.0.tgz#40d5ea4a1def2a9acdd07ba5c0b0246ef73dc10d" - integrity sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA== - dependencies: - graceful-fs "^4.1.2" - make-dir "^2.0.0" - nested-error-stacks "^2.0.0" - pify "^4.0.1" - safe-buffer "^5.0.1" - -cross-spawn@^4: - version "4.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" - integrity sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA== - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - cross-spawn@^7.0.0: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" which "^2.0.1" -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== - dependencies: - assert-plus "^1.0.0" - date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.4: +debug@4, 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.1.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== +debug@^4.3.5: + version "4.4.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" + integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== dependencies: - ms "2.0.0" + ms "^2.1.3" -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== -default-require-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" - integrity sha512-B0n2zDIXpzLzKeoEozorDSa1cHc1t0NjmxP0zuAxbizNU2MBqYJJKYXrrFdKuQliojXynrxgd7l4ahfg/+aA5g== +deep-eql@^4.1.3: + version "4.1.4" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.4.tgz#d0d3912865911bb8fac5afb4e3acfa6a28dc72b7" + integrity sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg== dependencies: - strip-bom "^3.0.0" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + type-detect "^4.0.0" -diff@^1.3.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf" - integrity sha512-VzVc42hMZbYU9Sx/ltb7KYuQ6pqAw+cbFWVy4XKdkuEL2CFaRLGEnISPs7YdzaUGpi+CpIqvRmu7hPQ4T7EQ5w== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +diff@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" + integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== dom-serializer@0: version "0.2.2" @@ -629,11 +386,6 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" -domain-browser@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - domelementtype@1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" @@ -664,24 +416,6 @@ eastasianwidth@^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.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ejs@^2.5.2: - version "2.7.4" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" - integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -724,42 +458,15 @@ err-code@^2.0.2: 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.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es6-error@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" - integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== - -escape-string-regexp@^1.0.3, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== +escalade@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== -esm@^3.2.5: - version "3.2.25" - resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" - integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -events-to-array@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/events-to-array/-/events-to-array-1.1.2.tgz#2d41f563e1fe400ed4962fe1a4d5c6a7539df7f6" - integrity sha512-inRWzRY7nG+aXZxBzEqYKB3HPgwflZRopAjDCHv0whhRx+MTUr1ei0ICZUypdyE0HRm4L2d5VEcIqLD6yl+BFA== +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== exit@0.1.2, exit@0.1.x: version "0.1.2" @@ -771,44 +478,17 @@ exponential-backoff@^3.1.1: resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== - -extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - fecha@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.0.tgz#3ffb6395453e3f3efff850404f0a59b6747f5f41" integrity sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg== -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" + to-regex-range "^5.0.1" find-java-home@^2.0.0: version "2.0.0" @@ -818,26 +498,24 @@ find-java-home@^2.0.0: which "~1.0.5" winreg "~1.2.2" -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: - locate-path "^3.0.0" + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== fn.name@1.x.x: version "1.1.0" resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== -foreground-child@^1.3.3, foreground-child@^1.5.6: - version "1.5.6" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" - integrity sha512-3TOY+4TKV0Ml83PXJQY+JFQaHNV38lzQDIzzXYg1kWdBLenGgoZhAs0CKgzI31vi2pWEpQMq/Yi4bpKwCPkw7g== - dependencies: - cross-spawn "^4" - signal-exit "^3.0.0" - foreground-child@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" @@ -846,25 +524,6 @@ foreground-child@^3.1.0: cross-spawn "^7.0.0" signal-exit "^4.0.1" -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -fs-exists-cached@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz#cf25554ca050dc49ae6656b41de42258989dcbce" - integrity sha512-kSxoARUDn4F2RPXX48UXnaFKwVU7Ivd/6qpzZL29MCDmr9sTvybv4gFCp+qaI4fM9m0z9fgz/yJvi56GAz+BZg== - fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" @@ -884,27 +543,27 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -function-loop@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/function-loop/-/function-loop-1.0.2.tgz#16b93dd757845eacfeca1a8061a6a65c106e0cb2" - integrity sha512-Iw4MzMfS3udk/rqxTiDDCllhGwlOrsr50zViTOO/W6lS/9y6B1J0BD2VZzrnWUYBJsl3aeqjgR5v7bWWhZSYbA== +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -get-caller-file@^2.0.1: +get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== +get-func-name@^2.0.1, get-func-name@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: - assert-plus "^1.0.0" + is-glob "^4.0.1" glob@^10.2.2, glob@^10.3.10: version "10.3.10" @@ -917,18 +576,6 @@ glob@^10.2.2, glob@^10.3.10: minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-scurry "^1.10.1" -glob@^7.0.5, glob@^7.1.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@^7.1.1: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" @@ -941,62 +588,31 @@ glob@^7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== +glob@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" 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== -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hasha@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/hasha/-/hasha-3.0.0.tgz#52a32fab8569d41ca69a61ff1a214f8eb7c8bd39" - integrity sha512-w0Kz8lJFBoyaurBiNrIvxPqr/gJ6fOfSkpAPOepN3oECqGJag37xPbOv57izi/KP8auHgNYxn5fXtAb+1LsJ6w== - dependencies: - is-stream "^1.0.1" - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== htmlparser2@3.8.x: version "3.8.3" @@ -1022,15 +638,6 @@ http-proxy-agent@^7.0.0: agent-base "^7.1.0" debug "^4.3.4" -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - https-proxy-agent@^7.0.1: version "7.0.2" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz#e2645b846b90e96c6e6f347fb5b2e41f1590b09b" @@ -1064,73 +671,75 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@^2.0.3, inherits@~2.0.1: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== ip@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" - integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + version "2.0.1" + resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.1.tgz#e8f3595d33a3ea66490204234b77636965307105" + integrity sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ== is-arrayish@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== -is-core-module@^2.9.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" - integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: - has "^1.0.3" + binary-extensions "^2.0.0" -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 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@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + 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-stream@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== is-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -1141,63 +750,6 @@ isexe@^3.1.1: resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== - -istanbul-lib-coverage@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" - integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== - -istanbul-lib-hook@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz#c95695f383d4f8f60df1f04252a9550e15b5b133" - integrity sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA== - dependencies: - append-transform "^1.0.0" - -istanbul-lib-instrument@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" - integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== - dependencies: - "@babel/generator" "^7.4.0" - "@babel/parser" "^7.4.3" - "@babel/template" "^7.4.0" - "@babel/traverse" "^7.4.3" - "@babel/types" "^7.4.0" - istanbul-lib-coverage "^2.0.5" - semver "^6.0.0" - -istanbul-lib-report@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" - integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== - dependencies: - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - supports-color "^6.1.0" - -istanbul-lib-source-maps@^3.0.6: - version "3.0.6" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" - integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - rimraf "^2.6.3" - source-map "^0.6.1" - -istanbul-reports@^2.2.4: - version "2.2.7" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" - integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== - dependencies: - html-escaper "^2.0.0" - jackspeak@^2.3.5: version "2.3.6" resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" @@ -1219,28 +771,12 @@ java@^0.14: nan "^2.18.0" node-gyp "^10.0.1" -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1, js-yaml@^3.2.7, js-yaml@^3.3.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + argparse "^2.0.1" jshint@2.13.6: version "2.13.6" @@ -1255,85 +791,38 @@ jshint@2.13.6: minimatch "~3.0.2" strip-json-comments "1.0.x" -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - -jsprim@^1.2.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" - integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.4.0" - verror "1.10.0" - kuler@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== -lcov-parse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-1.0.0.tgz#eb0d46b54111ebc561acb4c408ef9363bdc8f7e0" - integrity sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ== - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -lodash.flattendeep@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" - integrity sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ== + p-locate "^5.0.0" lodash@4.17.21, lodash@^4.17.21, lodash@~4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-driver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8" - integrity sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg== +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" -logform@^2.3.2, logform@^2.4.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/logform/-/logform-2.4.2.tgz#a617983ac0334d0c3b942c34945380062795b47c" - integrity sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw== +logform@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/logform/-/logform-2.7.0.tgz#cfca97528ef290f2e125a08396805002b2d060d1" + integrity sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ== dependencies: - "@colors/colors" "1.5.0" + "@colors/colors" "1.6.0" + "@types/triple-beam" "^1.3.2" fecha "^4.2.0" ms "^2.1.1" safe-stable-stringify "^2.3.1" @@ -1346,19 +835,18 @@ lolex@^6.0.0: dependencies: "@sinonjs/commons" "^1.7.0" +loupe@^2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" + integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== + dependencies: + get-func-name "^2.0.1" + lru-cache@^10.0.1, "lru-cache@^9.1.1 || ^10.0.0": version "10.1.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.1.0.tgz#2098d41c2dc56500e6c88584aa656c84de7d0484" integrity sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag== -lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -1366,19 +854,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - make-fetch-happen@^13.0.0: version "13.0.0" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz#705d6f6cbd7faecb8eac2432f551e49475bfedf0" @@ -1396,25 +871,6 @@ make-fetch-happen@^13.0.0: promise-retry "^2.0.1" ssri "^10.0.0" -merge-source-map@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" - integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== - dependencies: - source-map "^0.6.1" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - minimatch@^3.0.4, minimatch@~3.0.2: version "3.0.8" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.8.tgz#5e6a59bd11e2ab0de1cfb843eb2d82e546c321c1" @@ -1422,12 +878,12 @@ minimatch@^3.0.4, minimatch@~3.0.2: dependencies: brace-expansion "^1.1.7" -minimatch@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== +minimatch@^5.0.1, minimatch@^5.1.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== dependencies: - brace-expansion "^1.1.7" + brace-expansion "^2.0.1" minimatch@^9.0.1: version "9.0.3" @@ -1436,11 +892,6 @@ minimatch@^9.0.1: dependencies: brace-expansion "^2.0.1" -minimist@^1.2.5, minimist@^1.2.6: - version "1.2.7" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" - integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== - minipass-collect@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-2.0.1.tgz#1621bc77e12258a12c60d34e2276ec5c20680863" @@ -1480,14 +931,6 @@ minipass-sized@^1.0.3: dependencies: minipass "^3.0.0" -minipass@^2.2.0, minipass@^2.3.5: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - 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" @@ -1513,29 +956,43 @@ minizlib@^2.1.1, minizlib@^2.1.2: minipass "^3.0.0" yallist "^4.0.0" -mkdirp@^0.5.0, mkdirp@^0.5.1: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - mkdirp@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== +mocha@^10: + version "10.8.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.8.2.tgz#8d8342d016ed411b12a429eb731b825f961afb96" + integrity sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg== + dependencies: + ansi-colors "^4.1.3" + browser-stdout "^1.3.1" + chokidar "^3.5.3" + debug "^4.3.5" + diff "^5.2.0" + escape-string-regexp "^4.0.0" + find-up "^5.0.0" + glob "^8.1.0" + he "^1.2.0" + js-yaml "^4.1.0" + log-symbols "^4.1.0" + minimatch "^5.1.6" + ms "^2.1.3" + serialize-javascript "^6.0.2" + strip-json-comments "^3.1.1" + supports-color "^8.1.1" + workerpool "^6.5.1" + yargs "^16.2.0" + yargs-parser "^20.2.9" + yargs-unparser "^2.0.0" ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.1.1: +ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -1550,11 +1007,6 @@ negotiator@^0.6.3: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -nested-error-stacks@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz#26c8a3cee6cc05fbcf1e333cd2fc3e003326c0b5" - integrity sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw== - node-gyp@^10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-10.0.1.tgz#205514fc19e5830fa991e4a689f9e81af377a966" @@ -1571,14 +1023,6 @@ node-gyp@^10.0.1: tar "^6.1.2" which "^4.0.0" -nodeunit@~0.11.3: - version "0.11.3" - resolved "https://registry.yarnpkg.com/nodeunit/-/nodeunit-0.11.3.tgz#313afae26cd11b407b731ff774b8e35e5d6f9568" - integrity sha512-gDNxrDWpx07BxYNO/jn1UrGI1vNhDQZrIFphbHMcTCDc5mrrqQBWfQMXPHJ5WSgbFwD1D6bv4HOsqtTrPG03AA== - dependencies: - ejs "^2.5.2" - tap "^12.0.1" - nopt@^7.0.0: version "7.2.0" resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.2.0.tgz#067378c68116f602f552876194fd11f1292503d7" @@ -1586,51 +1030,10 @@ nopt@^7.0.0: dependencies: abbrev "^2.0.0" -normalize-package-data@^2.3.2: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -nyc@^14.0.0: - version "14.1.1" - resolved "https://registry.yarnpkg.com/nyc/-/nyc-14.1.1.tgz#151d64a6a9f9f5908a1b73233931e4a0a3075eeb" - integrity sha512-OI0vm6ZGUnoGZv/tLdZ2esSVzDwUC88SNs+6JoSOMVxA+gKMB8Tk7jBwgemLx4O40lhhvZCVw1C+OYLOBOPXWw== - dependencies: - archy "^1.0.0" - caching-transform "^3.0.2" - convert-source-map "^1.6.0" - cp-file "^6.2.0" - find-cache-dir "^2.1.0" - find-up "^3.0.0" - foreground-child "^1.5.6" - glob "^7.1.3" - istanbul-lib-coverage "^2.0.5" - istanbul-lib-hook "^2.0.7" - istanbul-lib-instrument "^3.3.0" - istanbul-lib-report "^2.0.8" - istanbul-lib-source-maps "^3.0.6" - istanbul-reports "^2.2.4" - js-yaml "^3.13.1" - make-dir "^2.1.0" - merge-source-map "^1.1.0" - resolve-from "^4.0.0" - rimraf "^2.6.3" - signal-exit "^3.0.2" - spawn-wrap "^1.4.2" - test-exclude "^5.2.3" - uuid "^3.3.2" - yargs "^13.2.2" - yargs-parser "^13.0.0" - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== once@^1.3.0: version "1.4.0" @@ -1646,41 +1049,19 @@ one-time@^1.0.0: dependencies: fn.name "1.x.x" -opener@^1.5.1: - version "1.5.2" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" - integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== - -os-homedir@^1.0.1, os-homedir@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== - -own-or-env@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/own-or-env/-/own-or-env-1.0.2.tgz#84e78d2d5128f7ee8a59f741ad5aafb4256a7c89" - integrity sha512-NQ7v0fliWtK7Lkb+WdFqe6ky9XAzYmlkXthQrBbzlYbmFKoAYbDDcwmOm6q8kOuwSRXW8bdL5ORksploUJmWgw== - dependencies: - own-or "^1.0.0" - -own-or@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/own-or/-/own-or-1.0.0.tgz#4e877fbeda9a2ec8000fbc0bcae39645ee8bf8dc" - integrity sha512-NfZr5+Tdf6MB8UI9GLvKRs4cXY8/yB0w3xtt84xFdWy8hkGjn+JFc60VhzS/hFRfbyxFcGYMTjnF4Me+RbbqrA== - -p-limit@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: - p-try "^2.0.0" + yocto-queue "^0.1.0" -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: - p-limit "^2.0.0" + p-limit "^3.0.2" p-map@^4.0.0: version "4.0.0" @@ -1689,33 +1070,10 @@ p-map@^4.0.0: dependencies: aggregate-error "^3.0.0" -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -package-hash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-3.0.0.tgz#50183f2d36c9e3e528ea0a8605dff57ce976f88e" - integrity sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA== - dependencies: - graceful-fs "^4.1.15" - hasha "^3.0.0" - lodash.flattendeep "^4.4.0" - release-zalgo "^1.0.0" - -parse-json@^4.0.0: +path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" @@ -1727,11 +1085,6 @@ path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - path-scurry@^1.10.1: version "1.10.1" resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" @@ -1740,45 +1093,21 @@ path-scurry@^1.10.1: lru-cache "^9.1.1 || ^10.0.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 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== -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - promise-retry@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" @@ -1787,52 +1116,12 @@ promise-retry@^2.0.1: err-code "^2.0.2" retry "^0.12.0" -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== - -psl@^1.1.28: - version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" - integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== - -punycode@^1.3.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== - -punycode@^2.1.0, punycode@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.2.0.tgz#2092cc57cd2582c38e4e7e8bb869dc8d3148bc74" - integrity sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw== - -q@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - -qs@~6.5.2: - version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - -read-pkg-up@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" - integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== - dependencies: - find-up "^3.0.0" - read-pkg "^3.0.0" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" + safe-buffer "^5.1.0" readable-stream@1.1: version "1.1.13" @@ -1844,20 +1133,7 @@ readable-stream@1.1: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2, readable-stream@^2.1.5: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.4.0, readable-stream@^3.6.0: +readable-stream@^3.4.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -1866,105 +1142,47 @@ readable-stream@^3.4.0, readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" -release-zalgo@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" - integrity sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA== - dependencies: - es6-error "^4.0.1" - -request@^2.88.2: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" +readable-stream@^3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve@^1.10.0: - version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - 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== -rimraf@^2.6.2, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - safe-stable-stringify@^2.3.1: version "2.4.2" resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.2.tgz#ec7b037768098bf65310d1d64370de0dc02353aa" integrity sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA== -"safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -"semver@2 || 3 || 4 || 5", semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.0.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - semver@^7.3.5: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" @@ -1972,10 +1190,12 @@ semver@^7.3.5: dependencies: lru-cache "^6.0.0" -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== +serialize-javascript@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" shebang-command@^2.0.0: version "2.0.0" @@ -1989,11 +1209,6 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - 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" @@ -2028,77 +1243,6 @@ socks@^2.7.1: ip "^2.0.0" smart-buffer "^4.2.0" -source-map-support@^0.5.10, source-map-support@^0.5.17: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0, source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -spawn-wrap@^1.4.2: - version "1.4.3" - resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.4.3.tgz#81b7670e170cca247d80bf5faf0cfb713bdcf848" - integrity sha512-IgB8md0QW/+tWqcavuFgKYR/qIRvJkRLPJDFaoXtLLUaVcCDK0+HeFTkmQHj3eprcYhc+gOl0aEA1w7qZlYezw== - dependencies: - foreground-child "^1.5.6" - mkdirp "^0.5.0" - os-homedir "^1.0.1" - rimraf "^2.6.2" - signal-exit "^3.0.2" - which "^1.3.0" - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.12" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779" - integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -sshpk@^1.7.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - ssri@^10.0.0: version "10.0.5" resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.5.tgz#e49efcd6e36385196cb515d3a2ad6c3f0265ef8c" @@ -2111,15 +1255,7 @@ stack-trace@0.0.x: resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= -stack-utils@^1.0.2: - version "1.0.5" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.5.tgz#a19b0b01947e0029c8e451d5d61a498f5bb1471b" - integrity sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ== - dependencies: - escape-string-regexp "^2.0.0" - -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0: - name string-width-cjs +"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== @@ -2128,14 +1264,14 @@ stack-utils@^1.0.2: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== +string-width@^4.1.0, 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 "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" + 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" @@ -2158,34 +1294,19 @@ string_decoder@~0.10.x: resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: - name strip-ansi-cjs +"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.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== +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 "^4.1.0" + ansi-regex "^5.0.1" strip-ansi@^7.0.1: version "7.1.0" @@ -2194,114 +1315,34 @@ strip-ansi@^7.0.1: dependencies: ansi-regex "^6.0.1" -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== - strip-json-comments@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" integrity sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E= -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: - has-flag "^3.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== - -tap-mocha-reporter@^3.0.9: - version "3.0.9" - resolved "https://registry.yarnpkg.com/tap-mocha-reporter/-/tap-mocha-reporter-3.0.9.tgz#ea41e741149a94c278d106cbcccc37fec2dfeeaa" - integrity sha512-VO07vhC9EG27EZdOe7bWBj1ldbK+DL9TnRadOgdQmiQOVZjFpUEQuuqO7+rNSO2kfmkq5hWeluYXDWNG/ytXTQ== - dependencies: - color-support "^1.1.0" - debug "^2.1.3" - diff "^1.3.2" - escape-string-regexp "^1.0.3" - glob "^7.0.5" - js-yaml "^3.3.1" - tap-parser "^5.1.0" - unicode-length "^1.0.0" - optionalDependencies: - readable-stream "^2.1.5" + has-flag "^4.0.0" -tap-parser@^5.1.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/tap-parser/-/tap-parser-5.4.0.tgz#6907e89725d7b7fa6ae41ee2c464c3db43188aec" - integrity sha512-BIsIaGqv7uTQgTW1KLTMNPSEQf4zDDPgYOBRdgOfuB+JFOLRBfEu6cLa/KvMvmqggu1FKXDfitjLwsq4827RvA== +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: - events-to-array "^1.0.1" - js-yaml "^3.2.7" - optionalDependencies: - readable-stream "^2" - -tap-parser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/tap-parser/-/tap-parser-7.0.0.tgz#54db35302fda2c2ccc21954ad3be22b2cba42721" - integrity sha512-05G8/LrzqOOFvZhhAk32wsGiPZ1lfUrl+iV7+OkKgfofZxiceZWMHkKmow71YsyVQ8IvGBP2EjcIjE5gL4l5lA== - dependencies: - events-to-array "^1.0.1" - js-yaml "^3.2.7" - minipass "^2.2.0" - -tap@^12.0.1: - version "12.7.0" - resolved "https://registry.yarnpkg.com/tap/-/tap-12.7.0.tgz#6e0c40eb7ec1347a9311aa3ce9dee098dc41b566" - integrity sha512-SjglJmRv0pqrQQ7d5ZBEY8ZOqv3nYDBXEX51oyycOH7piuhn82JKT/yDNewwmOsodTD/RZL9MccA96EjDgK+Eg== - dependencies: - bind-obj-methods "^2.0.0" - browser-process-hrtime "^1.0.0" - capture-stack-trace "^1.0.0" - clean-yaml-object "^0.1.0" - color-support "^1.1.0" - coveralls "^3.0.2" - domain-browser "^1.2.0" - esm "^3.2.5" - foreground-child "^1.3.3" - fs-exists-cached "^1.0.0" - function-loop "^1.0.1" - glob "^7.1.3" - isexe "^2.0.0" - js-yaml "^3.13.1" - minipass "^2.3.5" - mkdirp "^0.5.1" - nyc "^14.0.0" - opener "^1.5.1" - os-homedir "^1.0.2" - own-or "^1.0.0" - own-or-env "^1.0.1" - rimraf "^2.6.3" - signal-exit "^3.0.0" - source-map-support "^0.5.10" - stack-utils "^1.0.2" - tap-mocha-reporter "^3.0.9" - tap-parser "^7.0.0" - tmatch "^4.0.0" - trivial-deferred "^1.0.1" - ts-node "^8.0.2" - tsame "^2.0.1" - typescript "^3.3.3" - write-file-atomic "^2.4.2" - yapool "^1.0.0" + has-flag "^4.0.0" tar@^6.1.11, tar@^6.1.2: - version "6.2.0" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73" - integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== + 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" @@ -2310,94 +1351,32 @@ tar@^6.1.11, tar@^6.1.2: mkdirp "^1.0.3" yallist "^4.0.0" -test-exclude@^5.2.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" - integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== - dependencies: - glob "^7.1.3" - minimatch "^3.0.4" - read-pkg-up "^4.0.0" - require-main-filename "^2.0.0" - text-hex@1.0.x: version "1.0.0" resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== -tmatch@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tmatch/-/tmatch-4.0.0.tgz#ba178007f30bf6a70f37c643fca5045fb2f8c448" - integrity sha512-Ynn2Gsp+oCvYScQXeV+cCs7citRDilq0qDXA6tuvFwDgiYyyaq7D5vKUlAPezzZR5NDobc/QMeN6e5guOYmvxg== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: - psl "^1.1.28" - punycode "^2.1.1" + is-number "^7.0.0" triple-beam@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw== -trivial-deferred@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trivial-deferred/-/trivial-deferred-1.0.1.tgz#376d4d29d951d6368a6f7a0ae85c2f4d5e0658f3" - integrity sha512-dagAKX7vaesNNAwOc9Np9C2mJ+7YopF4lk+jE2JML9ta4kZ91Y6UruJNH65bLRYoUROD8EY+Pmi44qQWwXR7sw== - -ts-node@^8.0.2: - version "8.10.2" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.10.2.tgz#eee03764633b1234ddd37f8db9ec10b75ec7fb8d" - integrity sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA== - dependencies: - arg "^4.1.0" - diff "^4.0.1" - make-error "^1.1.1" - source-map-support "^0.5.17" - yn "3.1.1" - -tsame@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/tsame/-/tsame-2.0.1.tgz#70410ddbefcd29c61e2d68549b3347b0444d613f" - integrity sha512-jxyxgKVKa4Bh5dPcO42TJL22lIvfd9LOVJwdovKOnJa4TLLrHxquK+DlGm4rkGmrcur+GRx+x4oW00O2pY/fFw== - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== - type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -typescript@^3.3.3: - version "3.9.10" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" - integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== - -unicode-length@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/unicode-length/-/unicode-length-1.0.3.tgz#5ada7a7fed51841a418a328cf149478ac8358abb" - integrity sha512-rZKNhIqioUp7H49afr26tivLDCvUSqOXwmwEEnsCwnPX67S1CYbOL45Y5IP3K/XHN73/lg21HlrB8SNlYXKQTg== - dependencies: - punycode "^1.3.2" - strip-ansi "^3.0.1" +type-detect@^4.0.0, type-detect@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c" + integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw== unique-filename@^3.0.0: version "3.0.0" @@ -2413,56 +1392,15 @@ unique-slug@^4.0.0: dependencies: imurmurhash "^0.1.4" -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: +util-deprecate@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -uuid@9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" - integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== - -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== - -which@^1.2.9, which@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" +uuid@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.1.0.tgz#9549028be1753bb934fc96e2bca09bb4105ae912" + integrity sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A== which@^2.0.1: version "2.0.2" @@ -2488,31 +1426,36 @@ winreg@~1.2.2: resolved "https://registry.yarnpkg.com/winreg/-/winreg-1.2.4.tgz#ba065629b7a925130e15779108cf540990e98d1b" integrity sha1-ugZWKbepJRMOFXeRCM9UCZDpjRs= -winston-transport@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa" - integrity sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q== +winston-transport@^4.9.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.9.0.tgz#3bba345de10297654ea6f33519424560003b3bf9" + integrity sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A== dependencies: - logform "^2.3.2" - readable-stream "^3.6.0" + logform "^2.7.0" + readable-stream "^3.6.2" triple-beam "^1.3.0" -winston@3.8.2: - version "3.8.2" - resolved "https://registry.yarnpkg.com/winston/-/winston-3.8.2.tgz#56e16b34022eb4cff2638196d9646d7430fdad50" - integrity sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew== +winston@^3.17.0: + version "3.17.0" + resolved "https://registry.yarnpkg.com/winston/-/winston-3.17.0.tgz#74b8665ce9b4ea7b29d0922cfccf852a08a11423" + integrity sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw== dependencies: - "@colors/colors" "1.5.0" + "@colors/colors" "^1.6.0" "@dabh/diagnostics" "^2.0.2" async "^3.2.3" is-stream "^2.0.0" - logform "^2.4.0" + logform "^2.7.0" one-time "^1.0.0" readable-stream "^3.4.0" safe-stable-stringify "^2.3.1" stack-trace "0.0.x" triple-beam "^1.3.0" - winston-transport "^4.5.0" + winston-transport "^4.9.0" + +workerpool@^6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" + integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" @@ -2523,14 +1466,14 @@ winston@3.8.2: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== +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 "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" wrap-ansi@^8.1.0: version "8.1.0" @@ -2546,65 +1489,45 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^2.4.2: - version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== - -yallist@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yapool@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/yapool/-/yapool-1.0.0.tgz#f693f29a315b50d9a9da2646a7a6645c96985b6a" - integrity sha512-RONBZndo8Lo8pKPfORRxr2DIk2NZKIml654o4kaIu7RXVxQCKsAN6AqrcoZsI3h+2H5YO2mD/04Wy4LbAgd+Pg== - -yargs-parser@^13.0.0, yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" +yargs-parser@^20.2.2, yargs-parser@^20.2.9: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs@^13.2.2: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" +yargs-unparser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==