├── test-proxy ├── .meteor │ ├── versions │ ├── .gitignore │ ├── release │ ├── platforms │ ├── packages │ ├── .id │ └── .finished-upgraders ├── package.json └── package-lock.json ├── .meteorignore ├── .gitignore ├── .github └── workflows │ └── node.js.yml ├── LICENSE ├── package.js ├── README.md ├── History.md ├── batch-insert-common.js ├── batch-insert-server.js └── tests └── batch-insert.test.js /test-proxy/.meteor/versions: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.meteorignore: -------------------------------------------------------------------------------- 1 | tests/ 2 | test-proxy/ -------------------------------------------------------------------------------- /test-proxy/.meteor/.gitignore: -------------------------------------------------------------------------------- 1 | local 2 | -------------------------------------------------------------------------------- /test-proxy/.meteor/release: -------------------------------------------------------------------------------- 1 | METEOR@2.6 2 | -------------------------------------------------------------------------------- /test-proxy/.meteor/platforms: -------------------------------------------------------------------------------- 1 | server 2 | browser 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .meteor/local 2 | .meteor/meteorite 3 | .build* 4 | .DS_Store 5 | node_modules/ 6 | test-proxy/packages/ 7 | -------------------------------------------------------------------------------- /test-proxy/.meteor/packages: -------------------------------------------------------------------------------- 1 | # Meteor packages used by this project, one per line. 2 | # Leave this file here. 3 | # If removed, Meteor doesn't recognize a meteor project directory. -------------------------------------------------------------------------------- /test-proxy/.meteor/.id: -------------------------------------------------------------------------------- 1 | # This file contains a token that is unique to your project. 2 | # Check it into your repository along with the rest of this directory. 3 | # It can be used for purposes such as: 4 | # - ensuring you don't accidentally deploy one app on top of another 5 | # - providing package authors with aggregated statistics 6 | 7 | bomihl819wtg.piwtqj30tkkd 8 | -------------------------------------------------------------------------------- /test-proxy/.meteor/.finished-upgraders: -------------------------------------------------------------------------------- 1 | # This file contains information which helps Meteor properly upgrade your 2 | # app when you run 'meteor update'. You should check it into version control 3 | # with your project. 4 | 5 | notices-for-0.9.0 6 | notices-for-0.9.1 7 | 0.9.4-platform-file 8 | notices-for-facebook-graph-api-2 9 | 1.2.0-standard-minifiers-package 10 | 1.2.0-meteor-platform-split 11 | 1.2.0-cordova-changes 12 | 1.2.0-breaking-changes 13 | 1.3.0-split-minifiers-package 14 | 1.4.0-remove-old-dev-bundle-link 15 | 1.4.1-add-shell-server-package 16 | 1.4.3-split-account-service-packages 17 | 1.5-add-dynamic-import-package 18 | 1.7-split-underscore-from-meteor-base 19 | 1.8.3-split-jquery-from-blaze 20 | -------------------------------------------------------------------------------- /.github/workflows/node.js.yml: -------------------------------------------------------------------------------- 1 | name: Test suite 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | - develop 8 | pull_request: 9 | 10 | jobs: 11 | tests: 12 | runs-on: ubuntu-latest 13 | strategy: 14 | matrix: 15 | meteor: ["2.3.7", "2.5.6", "2.6"] 16 | name: Tests with Meteor version ${{ matrix.meteor }} 17 | steps: 18 | - name: checkout 19 | uses: actions/checkout@v2 20 | 21 | - name: Setup meteor 22 | uses: meteorengineer/setup-meteor@v1 23 | with: 24 | meteor-release: ${{ matrix.meteor }} 25 | 26 | - name: cache dependencies 27 | uses: actions/cache@v1 28 | with: 29 | path: ~/.npm 30 | key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} 31 | restore-keys: | 32 | ${{ runner.os }}-node- 33 | - run: cd test-proxy && meteor update --release ${{matrix.meteor}} 34 | - run: cd test-proxy && meteor npm ci 35 | - run: cd test-proxy && meteor npm run lint 36 | - run: cd test-proxy && meteor npm run test 37 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 mikowals 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /package.js: -------------------------------------------------------------------------------- 1 | /* eslint-env meteor */ 2 | Package.describe({ 3 | summary: 'Insert multiple documents to mongo collection with one db call.', 4 | version: '1.3.0', 5 | name: 'mikowals:batch-insert', 6 | git: 'https://github.com/mikowals/batch-insert.git' 7 | }) 8 | 9 | Npm.strip({ 10 | mongodb: ['test/'] 11 | }) 12 | 13 | Package.onUse = Package.onUse || Package.on_use // backwards-compat 14 | Package.onTest = Package.onTest || Package.on_test // backwards-compat 15 | 16 | Package.onUse(function (api) { 17 | api.addFiles = api.addFiles || api.add_files // backwards-compat 18 | 19 | api.versionsFrom('METEOR@1.10.2') 20 | 21 | api.use('npm-mongo@3.7.0 || 4.3.1-rc260.2', 'server') 22 | api.use(['ecmascript', 'mongo', 'ddp', 'ejson', 'underscore', 'check', 'lai:collection-extensions']) 23 | api.use('insecure', { weak: true }) 24 | api.imply(['mongo', 'ddp']) 25 | api.addFiles('batch-insert-server.js', 'server') 26 | api.addFiles('batch-insert-common.js') 27 | }) 28 | 29 | Package.onTest(function (api) { 30 | api.use([ 31 | 'ecmascript', 32 | 'meteortesting:mocha', 33 | 'random', 34 | 'mongo', 35 | 'accounts-base', 36 | 'autopublish', 37 | 'mikowals:batch-insert' 38 | ]) 39 | api.addFiles('tests/batch-insert.test.js') 40 | }) 41 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # batch-insert 2 | 3 | Meteor package enabling insert of multiple documents while maintaining reactivity and respecting `allow` and `deny` rules. 4 | 5 | If you find this package useful consider commenting at https://github.com/meteor/meteor-feature-requests/issues/15 to get bulk insert support directly in Meteor core. 6 | 7 | # Installation 8 | 9 | In your meteor app directory run: 10 | 11 | meteor add mikowals:batch-insert 12 | 13 | # Usage 14 | 15 | The package adds a `batchInsert()` function on each collection instance. It works just like `insert()` but takes an array of objects and returns an array of `_id`s. 16 | 17 | On the client, the `_id`s are available synchronously. Client-side security is managed with allow / deny rules on the collection. 18 | 19 | On the server, inserted documents are published to subscribed clients when the `batchInsert` completes successfully. 20 | 21 | // on server and client 22 | Data = new Meteor.Collection('data'); 23 | 24 | // must have an allow function on server to use batchInsert() on client. 25 | Data.allow({ 26 | insert: function(){ return true }; 27 | }); 28 | 29 | // on server or client 30 | var newIds = Data.batchInsert([{item: junk},{item: garbage}]); // returns array of created _id values 31 | 32 | // use asynchronously on client or server. 33 | var moreIds = Data.batchInsert([{item: junk2},{item: garbage2}], function( err, res){ 34 | //called with err or res where res is array of created _id values 35 | }); 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /test-proxy/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "test-proxy", 3 | "private": true, 4 | "scripts": { 5 | "start": "meteor run", 6 | "setup": "mkdir -p packages && ln -sfn ../../ ./packages/meteor-collection-extensions", 7 | "lint": "npm run setup && standardx -v .. | snazzy", 8 | "lint:fix": "npm run setup && standardx -v --fix .. | snazzy", 9 | "test": "METEOR_PACKAGE_DIRS='../' TEST_BROWSER_DRIVER=puppeteer meteor test-packages --once --raw-logs --driver-package meteortesting:mocha ../", 10 | "test:watch": "METEOR_PACKAGE_DIRS='../' TEST_BROWSER_DRIVER=puppeteer TEST_WATCH=1 meteor test-packages --raw-logs --driver-package meteortesting:mocha ../" 11 | }, 12 | "dependencies": { 13 | "@babel/runtime": "^7.15.3" 14 | }, 15 | "devDependencies": { 16 | "@babel/core": "^7.15.8", 17 | "@babel/eslint-parser": "^7.15.8", 18 | "chai": "^4.3.4", 19 | "chai-as-promised": "^7.1.1", 20 | "eslint-config-standard": "^16.0.3", 21 | "puppeteer": "^10.4.0", 22 | "snazzy": "^9.0.0", 23 | "standardx": "^7.0.0" 24 | }, 25 | "babel": {}, 26 | "standardx": { 27 | "globals": [ 28 | "AutoForm", 29 | "arrayTracker", 30 | "globalDefaultTemplate", 31 | "defaultTypeTemplates", 32 | "deps" 33 | ], 34 | "ignore": [ 35 | "**/test-proxy/" 36 | ] 37 | }, 38 | "eslintConfig": { 39 | "parser": "@babel/eslint-parser", 40 | "parserOptions": { 41 | "sourceType": "module", 42 | "allowImportExportEverywhere": false 43 | }, 44 | "rules": { 45 | "brace-style": [ 46 | "error", 47 | "stroustrup", 48 | { 49 | "allowSingleLine": true 50 | } 51 | ] 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /History.md: -------------------------------------------------------------------------------- 1 | ## v.1.3.0 2 | 3 | - allow Mongo Node Driver 4.3.1 enabling Mongo 5.0 4 | 5 | ## v.1.1.13 6 | 7 | - make sure writefence concludes for async server calls 8 | 9 | ## v.1.1.12 10 | 11 | - release for meteor-1.2 12 | 13 | ## v.1.1.11 14 | 15 | - release for meteor-1.2-rc.17 16 | 17 | ## v.1.1.10 18 | 19 | - for meteor@1.2-rc.17 20 | - fix [#5](https://github.com/mikowals/batch-insert/issues/5) - bad error handling on server calls 21 | 22 | ## v.1.1.9 23 | 24 | - make LocalCollection accessible from all package files 25 | - make sure callbacks get called from server only calls 26 | 27 | ## v.1.1.8 28 | 29 | - batchInsert() called in server method ignores allow/deny rules 30 | 31 | ## v.1.1.7 32 | 33 | - use .rawCollection() from meteor 1.0.4 34 | 35 | ## v.1.1.5 36 | 37 | - proper handling for collections with ObjectIDs for \_id 38 | - update mongodb driver 39 | 40 | ## v.1.1.3 41 | 42 | - don't define batchInsert for a null collection. 43 | 44 | ## v.1.1.2 45 | 46 | - all inserts in a batch fail if any insert fails. 47 | 48 | ## v.1.1.1 49 | 50 | - mimic insert behaviour with check of LocalCollection.isPlainObject() before sending to db. 51 | 52 | ## v.1.1.0 53 | 54 | - make batchInsert() function for Mongo.Collection instances to mimic behaviour of insert(). 55 | 56 | - check insert allow / deny rules on all objects to be inserted before inserting any objects. 57 | 58 | - refactor to enable the above behaviours so that the /_collection name_/batchInsert Meteor.method has access to the collection instance 59 | 60 | ## v.1.0.0 61 | 62 | - create batchInsert Meteor.method that uses the node mongo drivers batch insert capability to speed up multiple inserts 63 | 64 | - client side inserts are secured with simple check whether the Meteor.user making the request has {admin: true} 65 | -------------------------------------------------------------------------------- /batch-insert-common.js: -------------------------------------------------------------------------------- 1 | import { Meteor } from 'meteor/meteor' 2 | import { check } from 'meteor/check' 3 | import { Mongo } from 'meteor/mongo' 4 | import { _ } from 'meteor/underscore' 5 | import { EJSON } from 'meteor/ejson' 6 | import { MongoID } from 'meteor/minimongo' 7 | import { CollectionExtensions } from 'meteor/lai:collection-extensions' 8 | 9 | const Decimal = Package['mongo-decimal']?.Decimal || class DecimalStub {} // eslint-disable-line no-undef 10 | 11 | let _batchInsert 12 | if (Meteor.isServer) { 13 | ({ _batchInsert } = require('./batch-insert-server.js')) 14 | } 15 | 16 | Mongo.Collection.prototype._defineBatchInsert = function () { 17 | const self = this 18 | 19 | // don't define a method for a null collection 20 | if (!self._name || !self._connection) return 21 | const m = {} 22 | 23 | m['/' + self._name + '/batchInsert'] = function (docs) { 24 | check(docs, [Object]) 25 | // 'this' refers to method context 26 | if (this.isSimulation) { 27 | return docs.map(function (doc) { 28 | if (!doc._id) { doc._id = self._makeNewID() } 29 | return self.insert(doc) 30 | }) 31 | } 32 | 33 | // client returned so server code below 34 | const userId = this.userId 35 | const generatedIds = docs.map(function (doc) { 36 | if (!_.has(doc, '_id')) { 37 | return self._makeNewID() 38 | } else { return doc._id } 39 | }) 40 | 41 | docs.forEach(function (doc, ii) { 42 | if (this.connection) { 43 | // server method called by client so check allow / deny rules. 44 | if (!((doc && _type(doc)) && 45 | !EJSON._isCustomType(doc))) { 46 | throw new Error('Invalid modifier. Modifier must be an object.') 47 | } 48 | // call user validators. 49 | // Any deny returns true means denied. 50 | if (_.any(self._validators.insert.deny, function (validator) { 51 | return validator(userId, docToValidate(validator, doc, generatedIds[ii])) 52 | })) { 53 | throw new Meteor.Error(403, 'Access denied') 54 | } 55 | // Any allow returns true means proceed. Throw error if they all fail. 56 | if (_.all(self._validators.insert.allow, function (validator) { 57 | return !validator(userId, docToValidate(validator, doc, generatedIds[ii])) 58 | })) { 59 | throw new Meteor.Error(403, 'Access denied') 60 | } 61 | } 62 | 63 | doc._id = generatedIds[ii] 64 | }, this) // pass context of method into forEach 65 | return _batchInsert(self, docs) 66 | // end of method definition 67 | } 68 | 69 | self._connection.methods(m) 70 | } 71 | 72 | Mongo.Collection.prototype.batchInsert = function (/* args */) { 73 | const self = this 74 | 75 | const args = _.toArray(arguments) 76 | let cb 77 | if (typeof args[args.length - 1] === 'function') { 78 | cb = args.pop() 79 | } 80 | 81 | if (!self._name || !self._connection) { 82 | let res, err 83 | try { 84 | res = args[0].map(function (doc) { 85 | return self._collection.insert(doc) 86 | }) 87 | } catch (e) { 88 | if (!cb) { throw e } 89 | err = e 90 | }; 91 | cb && cb(err, res) 92 | 93 | return res 94 | } else if (self._connection && self._connection === Meteor.server) { 95 | const docs = args[0].map(function (doc) { 96 | if (!doc._id) doc._id = self._makeNewID() 97 | return doc 98 | }) 99 | return _batchInsert(self, docs, cb) 100 | } 101 | if (cb) { return self._connection.apply('/' + self._name + '/batchInsert', args, { returnStubValue: true }, cb) } 102 | 103 | return self._connection.apply('/' + self._name + '/batchInsert', args, { returnStubValue: true }) 104 | } 105 | 106 | CollectionExtensions.addExtension(function (name, options) { 107 | this._defineBatchInsert() 108 | }) 109 | 110 | Meteor.Collection = Mongo.Collection 111 | 112 | // function copied from MDG Mongo.Collection._validateInsert. Needed in allow / deny checks. 113 | 114 | function docToValidate (validator, doc, generatedId) { 115 | let ret = doc 116 | if (validator.transform) { 117 | ret = EJSON.clone(doc) 118 | // If you set a server-side transform on your collection, then you don't get 119 | // to tell the difference between "client specified the ID" and "server 120 | // generated the ID", because transforms expect to get _id. If you want to 121 | // do that check, you can do it with a specific 122 | // `C.allow({insert: f, transform: null})` validator. 123 | if (generatedId !== null) { 124 | ret._id = generatedId 125 | } 126 | ret = validator.transform(ret) 127 | } 128 | return ret 129 | }; 130 | 131 | function _type (v) { 132 | if (typeof v === 'number') { return 1 } 133 | if (typeof v === 'string') { return 2 } 134 | if (typeof v === 'boolean') { return 8 } 135 | if (_.isArray(v)) { return 4 } 136 | if (v === null) { return 10 } 137 | if (v instanceof RegExp) { return 11 } // note that typeof(/x/) === "object" 138 | if (typeof v === 'function') { return 13 } 139 | if (v instanceof Date) { return 9 } 140 | if (EJSON.isBinary(v)) { return 5 } 141 | if (v instanceof MongoID._ObjectID) { return 7 } 142 | if (v instanceof Decimal) { return 1 } 143 | return 3 // object 144 | 145 | // XXX support some/all of these: 146 | // 14, symbol 147 | // 15, javascript code with scope 148 | // 16, 18: 32-bit/64-bit integer 149 | // 17, timestamp 150 | // 255, minkey 151 | // 127, maxkey 152 | }; 153 | -------------------------------------------------------------------------------- /batch-insert-server.js: -------------------------------------------------------------------------------- 1 | 2 | import { Meteor } from 'meteor/meteor' 3 | import { NpmModuleMongodb } from 'meteor/npm-mongo' 4 | import { Random } from 'meteor/random' 5 | import { Mongo, MongoInternals } from 'meteor/mongo' 6 | import { _ } from 'meteor/underscore' 7 | import { EJSON } from 'meteor/ejson' 8 | 9 | const MongoDB = NpmModuleMongodb 10 | const Future = Npm.require('fibers/future') // eslint-disable-line no-undef 11 | 12 | // Need LocalCollection._ObjectID for type checking 13 | const LocalCollection = {} 14 | LocalCollection._ObjectID = function (hexString) { 15 | // random-based impl of Mongo ObjectID 16 | this.self._str = Random.hexString(24) 17 | } 18 | 19 | // This is used to add or remove EJSON from the beginning of everything nested 20 | // inside an EJSON custom type. It should only be called on pure JSON! 21 | const replaceNames = function (filter, thing) { 22 | if (typeof thing === 'object') { 23 | if (_.isArray(thing)) { 24 | return _.map(thing, _.bind(replaceNames, null, filter)) 25 | } 26 | const ret = {} 27 | _.each(thing, function (value, key) { 28 | ret[filter(key)] = replaceNames(filter, value) 29 | }) 30 | return ret 31 | } 32 | return thing 33 | } 34 | 35 | // Ensure that EJSON.clone keeps a Timestamp as a Timestamp (instead of just 36 | // doing a structural clone). 37 | // XXX how ok is this? what if there are multiple copies of MongoDB loaded? 38 | MongoDB.Timestamp.prototype.clone = function () { 39 | // Timestamps should be immutable. 40 | return this 41 | } 42 | 43 | const makeMongoLegal = function (name) { return 'EJSON' + name } 44 | const unmakeMongoLegal = function (name) { return name.substr(5) } 45 | 46 | const replaceMongoAtomWithMeteor = function (document) { 47 | if (document instanceof MongoDB.Binary) { 48 | const buffer = document.value(true) 49 | return new Uint8Array(buffer) 50 | } 51 | if (document instanceof MongoDB.ObjectID) { 52 | return new Mongo.ObjectID(document.toHexString()) 53 | } 54 | if (document.EJSON$type && document.EJSON$value && 55 | _.size(document) === 2) { 56 | return EJSON.fromJSONValue(replaceNames(unmakeMongoLegal, document)) 57 | } 58 | if (document instanceof MongoDB.Timestamp) { 59 | // For now, the Meteor representation of a Mongo timestamp type (not a date! 60 | // this is a weird internal thing used in the oplog!) is the same as the 61 | // Mongo representation. We need to do this explicitly or else we would do a 62 | // structural clone and lose the prototype. 63 | return document 64 | } 65 | return undefined 66 | } 67 | 68 | const replaceMeteorAtomWithMongo = function (document) { 69 | if (EJSON.isBinary(document)) { 70 | // This does more copies than we'd like, but is necessary because 71 | // MongoDB.BSON only looks like it takes a Uint8Array (and doesn't actually 72 | // serialize it correctly). 73 | return new MongoDB.Binary(Buffer.from(document)) 74 | } 75 | if (document instanceof Mongo.ObjectID) { 76 | return new MongoDB.ObjectID(document.toHexString()) 77 | } 78 | if (document instanceof MongoDB.Timestamp) { 79 | // For now, the Meteor representation of a Mongo timestamp type (not a date! 80 | // this is a weird internal thing used in the oplog!) is the same as the 81 | // Mongo representation. We need to do this explicitly or else we would do a 82 | // structural clone and lose the prototype. 83 | return document 84 | } 85 | if (EJSON._isCustomType(document)) { 86 | return replaceNames(makeMongoLegal, EJSON.toJSONValue(document)) 87 | } 88 | // It is not ordinarily possible to stick dollar-sign keys into mongo 89 | // so we don't bother checking for things that need escaping at this time. 90 | return undefined 91 | } 92 | 93 | const replaceTypes = function (document, atomTransformer) { 94 | if (typeof document !== 'object' || document === null) { return document } 95 | 96 | const replacedTopLevelAtom = atomTransformer(document) 97 | if (replacedTopLevelAtom !== undefined) { return replacedTopLevelAtom } 98 | 99 | let ret = document 100 | _.each(document, function (val, key) { 101 | const valReplaced = replaceTypes(val, atomTransformer) 102 | if (val !== valReplaced) { 103 | // Lazy clone. Shallow copy. 104 | if (ret === document) { ret = _.clone(document) } 105 | ret[key] = valReplaced 106 | } 107 | }) 108 | return ret 109 | } 110 | 111 | const getIdsFromMongoResult = function (res) { 112 | if (res?.ops) { 113 | const replacedOps = replaceTypes(res.ops, replaceMongoAtomWithMeteor) 114 | return _.pluck(replacedOps, '_id') 115 | } 116 | 117 | if (res?.insertedIds) { 118 | return Object.values(res.insertedIds) 119 | } 120 | 121 | throw new Error('getIdsFromMongoResult: unknown result type') 122 | } 123 | 124 | export const _batchInsert = function (collection, docs, cb) { 125 | const connection = MongoInternals.defaultRemoteCollectionDriver().mongo 126 | const write = connection._maybeBeginWrite() 127 | const _collection = collection.rawCollection() 128 | const future = new Future() 129 | _collection.insertMany(replaceTypes(docs, replaceMeteorAtomWithMongo), { safe: true }, future.resolver()) 130 | try { 131 | let result = future.wait() 132 | result = getIdsFromMongoResult(result) 133 | docs.forEach(function (doc) { 134 | Meteor.refresh({ collection: collection._name, id: doc._id }) 135 | }) 136 | write.committed() 137 | if (cb) { return cb(null, result) } 138 | return result 139 | } catch (e) { 140 | write.committed() 141 | if (cb) { return cb(e) } 142 | throw (e) 143 | } 144 | } 145 | -------------------------------------------------------------------------------- /tests/batch-insert.test.js: -------------------------------------------------------------------------------- 1 | /* eslint-env mocha */ 2 | import { Meteor } from 'meteor/meteor' 3 | import { Random } from 'meteor/random' 4 | import { Mongo } from 'meteor/mongo' 5 | 6 | import chai, { expect } from 'chai' 7 | chai.use(require('chai-as-promised')) 8 | 9 | Meteor.methods({ 10 | testDefineBatchInsert: function (s) { 11 | if (!this.isSimulation) { 12 | const colServer = new Meteor.Collection(s) 13 | colServer.allow({ 14 | insert: function () { return true } 15 | }) 16 | } 17 | return true 18 | }, 19 | testDefineBatchInsertDisallow: function (s) { 20 | if (!this.isSimulation) { 21 | const colServer2 = new Meteor.Collection(s) 22 | colServer2.allow({ 23 | insert: function () { return false } 24 | }) 25 | } 26 | return true 27 | }, 28 | 29 | testDefineBatchInsertDeny: function (s) { 30 | if (!this.isSimulation) { 31 | const colServer2 = new Meteor.Collection(s) 32 | colServer2.allow({ 33 | insert: function () { return true } 34 | }) 35 | colServer2.deny({ 36 | insert: function () { return true } 37 | }) 38 | } 39 | return true 40 | } 41 | }) 42 | 43 | describe('mikowals:batch-insert', function () { 44 | // common tests 45 | it('leaves collection as instance of Mongo.Collection', function () { 46 | const newColName = Random.secret(10) 47 | const col = new Meteor.Collection(newColName) 48 | expect(col instanceof Mongo.Collection).to.equal(true) 49 | }) 50 | 51 | it('leaves Meteor.users an instance of (Mongo/Meteor).Collection', function () { 52 | expect(Meteor.users).to.be.instanceof(Mongo.Collection) 53 | expect(Meteor.users).to.be.instanceof(Meteor.Collection) 54 | }) 55 | 56 | it('fails with duplicate ids', function () { 57 | const newColName = Random.secret(10) 58 | const col = new Meteor.Collection(newColName) 59 | col.batchInsert([{ _id: 1 }, { _id: 2 }]) 60 | const callInsert = () => new Promise((resolve, reject) => { 61 | col.batchInsert([{ _id: 3, name: 'shouldFail' }, { _id: 1 }], (err, res) => { 62 | if (err) { 63 | reject(err) 64 | } else { 65 | resolve(res) 66 | } 67 | }) 68 | }) 69 | const msg = 'E11000 duplicate key error collection: meteor.' + newColName + ' index: _id_ dup key: { _id: 1 }' 70 | expect(callInsert()).to.be.rejectedWith(msg) 71 | }) 72 | 73 | if (Meteor.isClient) { 74 | const colName = Random.secret(10) 75 | Meteor.apply('testDefineBatchInsert', [colName], { wait: true, returnStubValue: true }) 76 | const col = new Meteor.Collection(colName) 77 | 78 | it('inserts multiple docs', function () { 79 | const ids = col.batchInsert([{ _id: '1', name: 'phil' }, { _id: '2', name: 'sally' }]) 80 | expect(ids).to.deep.equal(['1', '2']) 81 | expect(col.find({ _id: { $in: ['1', '2'] } }).count()).to.equal(2) 82 | }) 83 | 84 | it('returns client ids that match server ids', function () { 85 | let clientIds 86 | const testFn = () => new Promise((resolve, reject) => { 87 | clientIds = col.batchInsert([{ name: 'john' }, { name: 'jerry' }], (err, res) => { 88 | if (err) { 89 | reject(err) 90 | } else { 91 | resolve(res) 92 | } 93 | }) 94 | }) 95 | expect(testFn()).to.eventually.deep.equal(clientIds) 96 | }) 97 | 98 | it('is is blocked from inserting without allow rule', function () { 99 | const testColName = Random.secret(10) 100 | Meteor.apply('testDefineBatchInsertDisallow', [testColName], { wait: true, returnStubValue: true }) 101 | const testCol = new Meteor.Collection(testColName) 102 | const testFn = () => new Promise((resolve, reject) => { 103 | testCol.batchInsert([{ name: Random.secret(5) }, { name: Random.secret(5) }], (err, res) => { 104 | if (err) { 105 | reject(err) 106 | } else { 107 | resolve(res) 108 | } 109 | }) 110 | }) 111 | expect(testFn()).to.be.rejectedWith('Access denied') 112 | }) 113 | 114 | it('is is blocked from inserting by deny rules', function () { 115 | const testColName = Random.secret(10) 116 | Meteor.apply('testDefineBatchInsertDeny', [testColName], { wait: true, returnStubValue: true }) 117 | const testCol = new Meteor.Collection(testColName) 118 | const testFn = () => new Promise((resolve, reject) => { 119 | testCol.batchInsert([{ name: Random.secret(5) }, { name: Random.secret(5) }], (err, res) => { 120 | if (err) { 121 | reject(err) 122 | } else { 123 | resolve(res) 124 | } 125 | }) 126 | }) 127 | expect(testFn()).to.be.rejectedWith('Access denied') 128 | }) 129 | } else { 130 | // server tests 131 | describe('mikowals:batch-insert', function () { 132 | it('ignores deny and inserts from server', function () { 133 | const serverCol = new Meteor.Collection(Random.secret(10)) 134 | serverCol.deny({ 135 | insert: function () { return true } 136 | }) 137 | const ids = serverCol.batchInsert([{ _id: 'a', name: 'earl' }, { _id: 'b', name: 'brian' }]) 138 | expect(ids).to.deep.equal(['a', 'b']) 139 | }) 140 | 141 | it('calls callback with result', async function () { 142 | const serverCol = new Meteor.Collection(Random.secret(10)) 143 | const result = await new Promise((resolve, reject) => { 144 | serverCol.batchInsert([{ _id: 'a', name: 'john' }, { _id: 'b', name: 'jerry' }], (err, res) => { 145 | if (err) { 146 | reject(err) 147 | } else { 148 | resolve(res) 149 | } 150 | }) 151 | }) 152 | expect(result).to.deep.equal(['a', 'b']) 153 | }) 154 | }) 155 | } 156 | }) 157 | -------------------------------------------------------------------------------- /test-proxy/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "test-proxy", 3 | "requires": true, 4 | "lockfileVersion": 1, 5 | "dependencies": { 6 | "@babel/code-frame": { 7 | "version": "7.16.7", 8 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", 9 | "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", 10 | "dev": true, 11 | "requires": { 12 | "@babel/highlight": "^7.16.7" 13 | } 14 | }, 15 | "@babel/compat-data": { 16 | "version": "7.16.8", 17 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz", 18 | "integrity": "sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==", 19 | "dev": true 20 | }, 21 | "@babel/core": { 22 | "version": "7.16.12", 23 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", 24 | "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", 25 | "dev": true, 26 | "requires": { 27 | "@babel/code-frame": "^7.16.7", 28 | "@babel/generator": "^7.16.8", 29 | "@babel/helper-compilation-targets": "^7.16.7", 30 | "@babel/helper-module-transforms": "^7.16.7", 31 | "@babel/helpers": "^7.16.7", 32 | "@babel/parser": "^7.16.12", 33 | "@babel/template": "^7.16.7", 34 | "@babel/traverse": "^7.16.10", 35 | "@babel/types": "^7.16.8", 36 | "convert-source-map": "^1.7.0", 37 | "debug": "^4.1.0", 38 | "gensync": "^1.0.0-beta.2", 39 | "json5": "^2.1.2", 40 | "semver": "^6.3.0", 41 | "source-map": "^0.5.0" 42 | } 43 | }, 44 | "@babel/eslint-parser": { 45 | "version": "7.16.5", 46 | "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.16.5.tgz", 47 | "integrity": "sha512-mUqYa46lgWqHKQ33Q6LNCGp/wPR3eqOYTUixHFsfrSQqRxH0+WOzca75iEjFr5RDGH1dDz622LaHhLOzOuQRUA==", 48 | "dev": true, 49 | "requires": { 50 | "eslint-scope": "^5.1.1", 51 | "eslint-visitor-keys": "^2.1.0", 52 | "semver": "^6.3.0" 53 | } 54 | }, 55 | "@babel/generator": { 56 | "version": "7.16.8", 57 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", 58 | "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", 59 | "dev": true, 60 | "requires": { 61 | "@babel/types": "^7.16.8", 62 | "jsesc": "^2.5.1", 63 | "source-map": "^0.5.0" 64 | } 65 | }, 66 | "@babel/helper-compilation-targets": { 67 | "version": "7.16.7", 68 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", 69 | "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", 70 | "dev": true, 71 | "requires": { 72 | "@babel/compat-data": "^7.16.4", 73 | "@babel/helper-validator-option": "^7.16.7", 74 | "browserslist": "^4.17.5", 75 | "semver": "^6.3.0" 76 | } 77 | }, 78 | "@babel/helper-environment-visitor": { 79 | "version": "7.16.7", 80 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", 81 | "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", 82 | "dev": true, 83 | "requires": { 84 | "@babel/types": "^7.16.7" 85 | } 86 | }, 87 | "@babel/helper-function-name": { 88 | "version": "7.16.7", 89 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", 90 | "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", 91 | "dev": true, 92 | "requires": { 93 | "@babel/helper-get-function-arity": "^7.16.7", 94 | "@babel/template": "^7.16.7", 95 | "@babel/types": "^7.16.7" 96 | } 97 | }, 98 | "@babel/helper-get-function-arity": { 99 | "version": "7.16.7", 100 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", 101 | "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", 102 | "dev": true, 103 | "requires": { 104 | "@babel/types": "^7.16.7" 105 | } 106 | }, 107 | "@babel/helper-hoist-variables": { 108 | "version": "7.16.7", 109 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", 110 | "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", 111 | "dev": true, 112 | "requires": { 113 | "@babel/types": "^7.16.7" 114 | } 115 | }, 116 | "@babel/helper-module-imports": { 117 | "version": "7.16.7", 118 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", 119 | "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", 120 | "dev": true, 121 | "requires": { 122 | "@babel/types": "^7.16.7" 123 | } 124 | }, 125 | "@babel/helper-module-transforms": { 126 | "version": "7.16.7", 127 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", 128 | "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", 129 | "dev": true, 130 | "requires": { 131 | "@babel/helper-environment-visitor": "^7.16.7", 132 | "@babel/helper-module-imports": "^7.16.7", 133 | "@babel/helper-simple-access": "^7.16.7", 134 | "@babel/helper-split-export-declaration": "^7.16.7", 135 | "@babel/helper-validator-identifier": "^7.16.7", 136 | "@babel/template": "^7.16.7", 137 | "@babel/traverse": "^7.16.7", 138 | "@babel/types": "^7.16.7" 139 | } 140 | }, 141 | "@babel/helper-simple-access": { 142 | "version": "7.16.7", 143 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", 144 | "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", 145 | "dev": true, 146 | "requires": { 147 | "@babel/types": "^7.16.7" 148 | } 149 | }, 150 | "@babel/helper-split-export-declaration": { 151 | "version": "7.16.7", 152 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", 153 | "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", 154 | "dev": true, 155 | "requires": { 156 | "@babel/types": "^7.16.7" 157 | } 158 | }, 159 | "@babel/helper-validator-identifier": { 160 | "version": "7.16.7", 161 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", 162 | "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", 163 | "dev": true 164 | }, 165 | "@babel/helper-validator-option": { 166 | "version": "7.16.7", 167 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", 168 | "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", 169 | "dev": true 170 | }, 171 | "@babel/helpers": { 172 | "version": "7.16.7", 173 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz", 174 | "integrity": "sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==", 175 | "dev": true, 176 | "requires": { 177 | "@babel/template": "^7.16.7", 178 | "@babel/traverse": "^7.16.7", 179 | "@babel/types": "^7.16.7" 180 | } 181 | }, 182 | "@babel/highlight": { 183 | "version": "7.16.10", 184 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", 185 | "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", 186 | "dev": true, 187 | "requires": { 188 | "@babel/helper-validator-identifier": "^7.16.7", 189 | "chalk": "^2.0.0", 190 | "js-tokens": "^4.0.0" 191 | } 192 | }, 193 | "@babel/parser": { 194 | "version": "7.16.12", 195 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz", 196 | "integrity": "sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==", 197 | "dev": true 198 | }, 199 | "@babel/runtime": { 200 | "version": "7.16.7", 201 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", 202 | "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", 203 | "requires": { 204 | "regenerator-runtime": "^0.13.4" 205 | } 206 | }, 207 | "@babel/template": { 208 | "version": "7.16.7", 209 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", 210 | "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", 211 | "dev": true, 212 | "requires": { 213 | "@babel/code-frame": "^7.16.7", 214 | "@babel/parser": "^7.16.7", 215 | "@babel/types": "^7.16.7" 216 | } 217 | }, 218 | "@babel/traverse": { 219 | "version": "7.16.10", 220 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", 221 | "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", 222 | "dev": true, 223 | "requires": { 224 | "@babel/code-frame": "^7.16.7", 225 | "@babel/generator": "^7.16.8", 226 | "@babel/helper-environment-visitor": "^7.16.7", 227 | "@babel/helper-function-name": "^7.16.7", 228 | "@babel/helper-hoist-variables": "^7.16.7", 229 | "@babel/helper-split-export-declaration": "^7.16.7", 230 | "@babel/parser": "^7.16.10", 231 | "@babel/types": "^7.16.8", 232 | "debug": "^4.1.0", 233 | "globals": "^11.1.0" 234 | } 235 | }, 236 | "@babel/types": { 237 | "version": "7.16.8", 238 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", 239 | "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", 240 | "dev": true, 241 | "requires": { 242 | "@babel/helper-validator-identifier": "^7.16.7", 243 | "to-fast-properties": "^2.0.0" 244 | } 245 | }, 246 | "@eslint/eslintrc": { 247 | "version": "0.3.0", 248 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", 249 | "integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==", 250 | "dev": true, 251 | "requires": { 252 | "ajv": "^6.12.4", 253 | "debug": "^4.1.1", 254 | "espree": "^7.3.0", 255 | "globals": "^12.1.0", 256 | "ignore": "^4.0.6", 257 | "import-fresh": "^3.2.1", 258 | "js-yaml": "^3.13.1", 259 | "lodash": "^4.17.20", 260 | "minimatch": "^3.0.4", 261 | "strip-json-comments": "^3.1.1" 262 | }, 263 | "dependencies": { 264 | "globals": { 265 | "version": "12.4.0", 266 | "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", 267 | "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", 268 | "dev": true, 269 | "requires": { 270 | "type-fest": "^0.8.1" 271 | } 272 | } 273 | } 274 | }, 275 | "@types/json5": { 276 | "version": "0.0.29", 277 | "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", 278 | "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", 279 | "dev": true 280 | }, 281 | "@types/node": { 282 | "version": "17.0.13", 283 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.13.tgz", 284 | "integrity": "sha512-Y86MAxASe25hNzlDbsviXl8jQHb0RDvKt4c40ZJQ1Don0AAL0STLZSs4N+6gLEO55pedy7r2cLwS+ZDxPm/2Bw==", 285 | "dev": true, 286 | "optional": true 287 | }, 288 | "@types/yauzl": { 289 | "version": "2.9.2", 290 | "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", 291 | "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", 292 | "dev": true, 293 | "optional": true, 294 | "requires": { 295 | "@types/node": "*" 296 | } 297 | }, 298 | "acorn": { 299 | "version": "7.4.1", 300 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 301 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", 302 | "dev": true 303 | }, 304 | "acorn-jsx": { 305 | "version": "5.3.2", 306 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 307 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 308 | "dev": true 309 | }, 310 | "agent-base": { 311 | "version": "6.0.2", 312 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 313 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 314 | "dev": true, 315 | "requires": { 316 | "debug": "4" 317 | } 318 | }, 319 | "ajv": { 320 | "version": "6.12.6", 321 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 322 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 323 | "dev": true, 324 | "requires": { 325 | "fast-deep-equal": "^3.1.1", 326 | "fast-json-stable-stringify": "^2.0.0", 327 | "json-schema-traverse": "^0.4.1", 328 | "uri-js": "^4.2.2" 329 | } 330 | }, 331 | "ansi-colors": { 332 | "version": "4.1.1", 333 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", 334 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", 335 | "dev": true 336 | }, 337 | "ansi-regex": { 338 | "version": "5.0.1", 339 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 340 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 341 | "dev": true 342 | }, 343 | "ansi-styles": { 344 | "version": "3.2.1", 345 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 346 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 347 | "dev": true, 348 | "requires": { 349 | "color-convert": "^1.9.0" 350 | } 351 | }, 352 | "argparse": { 353 | "version": "1.0.10", 354 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 355 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 356 | "dev": true, 357 | "requires": { 358 | "sprintf-js": "~1.0.2" 359 | } 360 | }, 361 | "array-includes": { 362 | "version": "3.1.4", 363 | "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", 364 | "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", 365 | "dev": true, 366 | "requires": { 367 | "call-bind": "^1.0.2", 368 | "define-properties": "^1.1.3", 369 | "es-abstract": "^1.19.1", 370 | "get-intrinsic": "^1.1.1", 371 | "is-string": "^1.0.7" 372 | } 373 | }, 374 | "array.prototype.flat": { 375 | "version": "1.2.5", 376 | "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", 377 | "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", 378 | "dev": true, 379 | "requires": { 380 | "call-bind": "^1.0.2", 381 | "define-properties": "^1.1.3", 382 | "es-abstract": "^1.19.0" 383 | } 384 | }, 385 | "array.prototype.flatmap": { 386 | "version": "1.2.5", 387 | "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", 388 | "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", 389 | "dev": true, 390 | "requires": { 391 | "call-bind": "^1.0.0", 392 | "define-properties": "^1.1.3", 393 | "es-abstract": "^1.19.0" 394 | } 395 | }, 396 | "assertion-error": { 397 | "version": "1.1.0", 398 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", 399 | "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", 400 | "dev": true 401 | }, 402 | "astral-regex": { 403 | "version": "2.0.0", 404 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", 405 | "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", 406 | "dev": true 407 | }, 408 | "balanced-match": { 409 | "version": "1.0.2", 410 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 411 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 412 | "dev": true 413 | }, 414 | "base64-js": { 415 | "version": "1.5.1", 416 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 417 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 418 | "dev": true 419 | }, 420 | "bl": { 421 | "version": "4.1.0", 422 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 423 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 424 | "dev": true, 425 | "requires": { 426 | "buffer": "^5.5.0", 427 | "inherits": "^2.0.4", 428 | "readable-stream": "^3.4.0" 429 | } 430 | }, 431 | "brace-expansion": { 432 | "version": "1.1.11", 433 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 434 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 435 | "dev": true, 436 | "requires": { 437 | "balanced-match": "^1.0.0", 438 | "concat-map": "0.0.1" 439 | } 440 | }, 441 | "browserslist": { 442 | "version": "4.19.1", 443 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", 444 | "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", 445 | "dev": true, 446 | "requires": { 447 | "caniuse-lite": "^1.0.30001286", 448 | "electron-to-chromium": "^1.4.17", 449 | "escalade": "^3.1.1", 450 | "node-releases": "^2.0.1", 451 | "picocolors": "^1.0.0" 452 | } 453 | }, 454 | "buffer": { 455 | "version": "5.7.1", 456 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 457 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 458 | "dev": true, 459 | "requires": { 460 | "base64-js": "^1.3.1", 461 | "ieee754": "^1.1.13" 462 | } 463 | }, 464 | "buffer-crc32": { 465 | "version": "0.2.13", 466 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 467 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", 468 | "dev": true 469 | }, 470 | "buffer-from": { 471 | "version": "1.1.2", 472 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 473 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 474 | "dev": true 475 | }, 476 | "call-bind": { 477 | "version": "1.0.2", 478 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 479 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 480 | "dev": true, 481 | "requires": { 482 | "function-bind": "^1.1.1", 483 | "get-intrinsic": "^1.0.2" 484 | } 485 | }, 486 | "callsites": { 487 | "version": "3.1.0", 488 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 489 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 490 | "dev": true 491 | }, 492 | "caniuse-lite": { 493 | "version": "1.0.30001304", 494 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001304.tgz", 495 | "integrity": "sha512-bdsfZd6K6ap87AGqSHJP/s1V+U6Z5lyrcbBu3ovbCCf8cSYpwTtGrCBObMpJqwxfTbLW6YTIdbb1jEeTelcpYQ==", 496 | "dev": true 497 | }, 498 | "chai": { 499 | "version": "4.3.6", 500 | "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", 501 | "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", 502 | "dev": true, 503 | "requires": { 504 | "assertion-error": "^1.1.0", 505 | "check-error": "^1.0.2", 506 | "deep-eql": "^3.0.1", 507 | "get-func-name": "^2.0.0", 508 | "loupe": "^2.3.1", 509 | "pathval": "^1.1.1", 510 | "type-detect": "^4.0.5" 511 | } 512 | }, 513 | "chai-as-promised": { 514 | "version": "7.1.1", 515 | "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", 516 | "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", 517 | "dev": true, 518 | "requires": { 519 | "check-error": "^1.0.2" 520 | } 521 | }, 522 | "chalk": { 523 | "version": "2.4.2", 524 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 525 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 526 | "dev": true, 527 | "requires": { 528 | "ansi-styles": "^3.2.1", 529 | "escape-string-regexp": "^1.0.5", 530 | "supports-color": "^5.3.0" 531 | } 532 | }, 533 | "check-error": { 534 | "version": "1.0.2", 535 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", 536 | "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", 537 | "dev": true 538 | }, 539 | "chownr": { 540 | "version": "1.1.4", 541 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 542 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", 543 | "dev": true 544 | }, 545 | "color-convert": { 546 | "version": "1.9.3", 547 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 548 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 549 | "dev": true, 550 | "requires": { 551 | "color-name": "1.1.3" 552 | } 553 | }, 554 | "color-name": { 555 | "version": "1.1.3", 556 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 557 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 558 | "dev": true 559 | }, 560 | "concat-map": { 561 | "version": "0.0.1", 562 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 563 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 564 | "dev": true 565 | }, 566 | "concat-stream": { 567 | "version": "2.0.0", 568 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", 569 | "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", 570 | "dev": true, 571 | "requires": { 572 | "buffer-from": "^1.0.0", 573 | "inherits": "^2.0.3", 574 | "readable-stream": "^3.0.2", 575 | "typedarray": "^0.0.6" 576 | } 577 | }, 578 | "convert-source-map": { 579 | "version": "1.8.0", 580 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", 581 | "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", 582 | "dev": true, 583 | "requires": { 584 | "safe-buffer": "~5.1.1" 585 | } 586 | }, 587 | "cross-spawn": { 588 | "version": "7.0.3", 589 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 590 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 591 | "dev": true, 592 | "requires": { 593 | "path-key": "^3.1.0", 594 | "shebang-command": "^2.0.0", 595 | "which": "^2.0.1" 596 | } 597 | }, 598 | "debug": { 599 | "version": "4.3.3", 600 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 601 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 602 | "dev": true, 603 | "requires": { 604 | "ms": "2.1.2" 605 | } 606 | }, 607 | "deep-eql": { 608 | "version": "3.0.1", 609 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", 610 | "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", 611 | "dev": true, 612 | "requires": { 613 | "type-detect": "^4.0.0" 614 | } 615 | }, 616 | "deep-is": { 617 | "version": "0.1.4", 618 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 619 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 620 | "dev": true 621 | }, 622 | "define-properties": { 623 | "version": "1.1.3", 624 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 625 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 626 | "dev": true, 627 | "requires": { 628 | "object-keys": "^1.0.12" 629 | } 630 | }, 631 | "devtools-protocol": { 632 | "version": "0.0.901419", 633 | "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.901419.tgz", 634 | "integrity": "sha512-4INMPwNm9XRpBukhNbF7OB6fNTTCaI8pzy/fXg0xQzAy5h3zL1P8xT3QazgKqBrb/hAYwIBizqDBZ7GtJE74QQ==", 635 | "dev": true 636 | }, 637 | "doctrine": { 638 | "version": "3.0.0", 639 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 640 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 641 | "dev": true, 642 | "requires": { 643 | "esutils": "^2.0.2" 644 | } 645 | }, 646 | "electron-to-chromium": { 647 | "version": "1.4.57", 648 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.57.tgz", 649 | "integrity": "sha512-FNC+P5K1n6pF+M0zIK+gFCoXcJhhzDViL3DRIGy2Fv5PohuSES1JHR7T+GlwxSxlzx4yYbsuzCZvHxcBSRCIOw==", 650 | "dev": true 651 | }, 652 | "emoji-regex": { 653 | "version": "8.0.0", 654 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 655 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 656 | "dev": true 657 | }, 658 | "end-of-stream": { 659 | "version": "1.4.4", 660 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 661 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 662 | "dev": true, 663 | "requires": { 664 | "once": "^1.4.0" 665 | } 666 | }, 667 | "enquirer": { 668 | "version": "2.3.6", 669 | "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", 670 | "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", 671 | "dev": true, 672 | "requires": { 673 | "ansi-colors": "^4.1.1" 674 | } 675 | }, 676 | "error-ex": { 677 | "version": "1.3.2", 678 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 679 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 680 | "dev": true, 681 | "requires": { 682 | "is-arrayish": "^0.2.1" 683 | } 684 | }, 685 | "es-abstract": { 686 | "version": "1.19.1", 687 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", 688 | "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", 689 | "dev": true, 690 | "requires": { 691 | "call-bind": "^1.0.2", 692 | "es-to-primitive": "^1.2.1", 693 | "function-bind": "^1.1.1", 694 | "get-intrinsic": "^1.1.1", 695 | "get-symbol-description": "^1.0.0", 696 | "has": "^1.0.3", 697 | "has-symbols": "^1.0.2", 698 | "internal-slot": "^1.0.3", 699 | "is-callable": "^1.2.4", 700 | "is-negative-zero": "^2.0.1", 701 | "is-regex": "^1.1.4", 702 | "is-shared-array-buffer": "^1.0.1", 703 | "is-string": "^1.0.7", 704 | "is-weakref": "^1.0.1", 705 | "object-inspect": "^1.11.0", 706 | "object-keys": "^1.1.1", 707 | "object.assign": "^4.1.2", 708 | "string.prototype.trimend": "^1.0.4", 709 | "string.prototype.trimstart": "^1.0.4", 710 | "unbox-primitive": "^1.0.1" 711 | } 712 | }, 713 | "es-to-primitive": { 714 | "version": "1.2.1", 715 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 716 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 717 | "dev": true, 718 | "requires": { 719 | "is-callable": "^1.1.4", 720 | "is-date-object": "^1.0.1", 721 | "is-symbol": "^1.0.2" 722 | } 723 | }, 724 | "escalade": { 725 | "version": "3.1.1", 726 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 727 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 728 | "dev": true 729 | }, 730 | "escape-string-regexp": { 731 | "version": "1.0.5", 732 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 733 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 734 | "dev": true 735 | }, 736 | "eslint": { 737 | "version": "7.18.0", 738 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.18.0.tgz", 739 | "integrity": "sha512-fbgTiE8BfUJZuBeq2Yi7J3RB3WGUQ9PNuNbmgi6jt9Iv8qrkxfy19Ds3OpL1Pm7zg3BtTVhvcUZbIRQ0wmSjAQ==", 740 | "dev": true, 741 | "requires": { 742 | "@babel/code-frame": "^7.0.0", 743 | "@eslint/eslintrc": "^0.3.0", 744 | "ajv": "^6.10.0", 745 | "chalk": "^4.0.0", 746 | "cross-spawn": "^7.0.2", 747 | "debug": "^4.0.1", 748 | "doctrine": "^3.0.0", 749 | "enquirer": "^2.3.5", 750 | "eslint-scope": "^5.1.1", 751 | "eslint-utils": "^2.1.0", 752 | "eslint-visitor-keys": "^2.0.0", 753 | "espree": "^7.3.1", 754 | "esquery": "^1.2.0", 755 | "esutils": "^2.0.2", 756 | "file-entry-cache": "^6.0.0", 757 | "functional-red-black-tree": "^1.0.1", 758 | "glob-parent": "^5.0.0", 759 | "globals": "^12.1.0", 760 | "ignore": "^4.0.6", 761 | "import-fresh": "^3.0.0", 762 | "imurmurhash": "^0.1.4", 763 | "is-glob": "^4.0.0", 764 | "js-yaml": "^3.13.1", 765 | "json-stable-stringify-without-jsonify": "^1.0.1", 766 | "levn": "^0.4.1", 767 | "lodash": "^4.17.20", 768 | "minimatch": "^3.0.4", 769 | "natural-compare": "^1.4.0", 770 | "optionator": "^0.9.1", 771 | "progress": "^2.0.0", 772 | "regexpp": "^3.1.0", 773 | "semver": "^7.2.1", 774 | "strip-ansi": "^6.0.0", 775 | "strip-json-comments": "^3.1.0", 776 | "table": "^6.0.4", 777 | "text-table": "^0.2.0", 778 | "v8-compile-cache": "^2.0.3" 779 | }, 780 | "dependencies": { 781 | "ansi-styles": { 782 | "version": "4.3.0", 783 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 784 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 785 | "dev": true, 786 | "requires": { 787 | "color-convert": "^2.0.1" 788 | } 789 | }, 790 | "chalk": { 791 | "version": "4.1.2", 792 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 793 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 794 | "dev": true, 795 | "requires": { 796 | "ansi-styles": "^4.1.0", 797 | "supports-color": "^7.1.0" 798 | } 799 | }, 800 | "color-convert": { 801 | "version": "2.0.1", 802 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 803 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 804 | "dev": true, 805 | "requires": { 806 | "color-name": "~1.1.4" 807 | } 808 | }, 809 | "color-name": { 810 | "version": "1.1.4", 811 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 812 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 813 | "dev": true 814 | }, 815 | "globals": { 816 | "version": "12.4.0", 817 | "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", 818 | "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", 819 | "dev": true, 820 | "requires": { 821 | "type-fest": "^0.8.1" 822 | } 823 | }, 824 | "has-flag": { 825 | "version": "4.0.0", 826 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 827 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 828 | "dev": true 829 | }, 830 | "semver": { 831 | "version": "7.3.5", 832 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", 833 | "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", 834 | "dev": true, 835 | "requires": { 836 | "lru-cache": "^6.0.0" 837 | } 838 | }, 839 | "supports-color": { 840 | "version": "7.2.0", 841 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 842 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 843 | "dev": true, 844 | "requires": { 845 | "has-flag": "^4.0.0" 846 | } 847 | } 848 | } 849 | }, 850 | "eslint-config-standard": { 851 | "version": "16.0.3", 852 | "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz", 853 | "integrity": "sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==", 854 | "dev": true 855 | }, 856 | "eslint-config-standard-jsx": { 857 | "version": "10.0.0", 858 | "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-10.0.0.tgz", 859 | "integrity": "sha512-hLeA2f5e06W1xyr/93/QJulN/rLbUVUmqTlexv9PRKHFwEC9ffJcH2LvJhMoEqYQBEYafedgGZXH2W8NUpt5lA==", 860 | "dev": true 861 | }, 862 | "eslint-import-resolver-node": { 863 | "version": "0.3.6", 864 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", 865 | "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", 866 | "dev": true, 867 | "requires": { 868 | "debug": "^3.2.7", 869 | "resolve": "^1.20.0" 870 | }, 871 | "dependencies": { 872 | "debug": { 873 | "version": "3.2.7", 874 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 875 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 876 | "dev": true, 877 | "requires": { 878 | "ms": "^2.1.1" 879 | } 880 | } 881 | } 882 | }, 883 | "eslint-module-utils": { 884 | "version": "2.7.3", 885 | "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", 886 | "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", 887 | "dev": true, 888 | "requires": { 889 | "debug": "^3.2.7", 890 | "find-up": "^2.1.0" 891 | }, 892 | "dependencies": { 893 | "debug": { 894 | "version": "3.2.7", 895 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 896 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 897 | "dev": true, 898 | "requires": { 899 | "ms": "^2.1.1" 900 | } 901 | }, 902 | "find-up": { 903 | "version": "2.1.0", 904 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 905 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 906 | "dev": true, 907 | "requires": { 908 | "locate-path": "^2.0.0" 909 | } 910 | }, 911 | "locate-path": { 912 | "version": "2.0.0", 913 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 914 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 915 | "dev": true, 916 | "requires": { 917 | "p-locate": "^2.0.0", 918 | "path-exists": "^3.0.0" 919 | } 920 | }, 921 | "p-limit": { 922 | "version": "1.3.0", 923 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 924 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 925 | "dev": true, 926 | "requires": { 927 | "p-try": "^1.0.0" 928 | } 929 | }, 930 | "p-locate": { 931 | "version": "2.0.0", 932 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 933 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 934 | "dev": true, 935 | "requires": { 936 | "p-limit": "^1.1.0" 937 | } 938 | }, 939 | "p-try": { 940 | "version": "1.0.0", 941 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 942 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 943 | "dev": true 944 | }, 945 | "path-exists": { 946 | "version": "3.0.0", 947 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 948 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 949 | "dev": true 950 | } 951 | } 952 | }, 953 | "eslint-plugin-es": { 954 | "version": "3.0.1", 955 | "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", 956 | "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", 957 | "dev": true, 958 | "requires": { 959 | "eslint-utils": "^2.0.0", 960 | "regexpp": "^3.0.0" 961 | } 962 | }, 963 | "eslint-plugin-import": { 964 | "version": "2.24.2", 965 | "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz", 966 | "integrity": "sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q==", 967 | "dev": true, 968 | "requires": { 969 | "array-includes": "^3.1.3", 970 | "array.prototype.flat": "^1.2.4", 971 | "debug": "^2.6.9", 972 | "doctrine": "^2.1.0", 973 | "eslint-import-resolver-node": "^0.3.6", 974 | "eslint-module-utils": "^2.6.2", 975 | "find-up": "^2.0.0", 976 | "has": "^1.0.3", 977 | "is-core-module": "^2.6.0", 978 | "minimatch": "^3.0.4", 979 | "object.values": "^1.1.4", 980 | "pkg-up": "^2.0.0", 981 | "read-pkg-up": "^3.0.0", 982 | "resolve": "^1.20.0", 983 | "tsconfig-paths": "^3.11.0" 984 | }, 985 | "dependencies": { 986 | "debug": { 987 | "version": "2.6.9", 988 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 989 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 990 | "dev": true, 991 | "requires": { 992 | "ms": "2.0.0" 993 | } 994 | }, 995 | "doctrine": { 996 | "version": "2.1.0", 997 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", 998 | "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", 999 | "dev": true, 1000 | "requires": { 1001 | "esutils": "^2.0.2" 1002 | } 1003 | }, 1004 | "find-up": { 1005 | "version": "2.1.0", 1006 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 1007 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 1008 | "dev": true, 1009 | "requires": { 1010 | "locate-path": "^2.0.0" 1011 | } 1012 | }, 1013 | "locate-path": { 1014 | "version": "2.0.0", 1015 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 1016 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 1017 | "dev": true, 1018 | "requires": { 1019 | "p-locate": "^2.0.0", 1020 | "path-exists": "^3.0.0" 1021 | } 1022 | }, 1023 | "ms": { 1024 | "version": "2.0.0", 1025 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1026 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1027 | "dev": true 1028 | }, 1029 | "p-limit": { 1030 | "version": "1.3.0", 1031 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 1032 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 1033 | "dev": true, 1034 | "requires": { 1035 | "p-try": "^1.0.0" 1036 | } 1037 | }, 1038 | "p-locate": { 1039 | "version": "2.0.0", 1040 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 1041 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 1042 | "dev": true, 1043 | "requires": { 1044 | "p-limit": "^1.1.0" 1045 | } 1046 | }, 1047 | "p-try": { 1048 | "version": "1.0.0", 1049 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 1050 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 1051 | "dev": true 1052 | }, 1053 | "path-exists": { 1054 | "version": "3.0.0", 1055 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 1056 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 1057 | "dev": true 1058 | } 1059 | } 1060 | }, 1061 | "eslint-plugin-node": { 1062 | "version": "11.1.0", 1063 | "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", 1064 | "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", 1065 | "dev": true, 1066 | "requires": { 1067 | "eslint-plugin-es": "^3.0.0", 1068 | "eslint-utils": "^2.0.0", 1069 | "ignore": "^5.1.1", 1070 | "minimatch": "^3.0.4", 1071 | "resolve": "^1.10.1", 1072 | "semver": "^6.1.0" 1073 | }, 1074 | "dependencies": { 1075 | "ignore": { 1076 | "version": "5.2.0", 1077 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", 1078 | "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", 1079 | "dev": true 1080 | } 1081 | } 1082 | }, 1083 | "eslint-plugin-promise": { 1084 | "version": "5.1.1", 1085 | "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.1.1.tgz", 1086 | "integrity": "sha512-XgdcdyNzHfmlQyweOPTxmc7pIsS6dE4MvwhXWMQ2Dxs1XAL2GJDilUsjWen6TWik0aSI+zD/PqocZBblcm9rdA==", 1087 | "dev": true 1088 | }, 1089 | "eslint-plugin-react": { 1090 | "version": "7.25.3", 1091 | "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.25.3.tgz", 1092 | "integrity": "sha512-ZMbFvZ1WAYSZKY662MBVEWR45VaBT6KSJCiupjrNlcdakB90juaZeDCbJq19e73JZQubqFtgETohwgAt8u5P6w==", 1093 | "dev": true, 1094 | "requires": { 1095 | "array-includes": "^3.1.3", 1096 | "array.prototype.flatmap": "^1.2.4", 1097 | "doctrine": "^2.1.0", 1098 | "estraverse": "^5.2.0", 1099 | "jsx-ast-utils": "^2.4.1 || ^3.0.0", 1100 | "minimatch": "^3.0.4", 1101 | "object.entries": "^1.1.4", 1102 | "object.fromentries": "^2.0.4", 1103 | "object.hasown": "^1.0.0", 1104 | "object.values": "^1.1.4", 1105 | "prop-types": "^15.7.2", 1106 | "resolve": "^2.0.0-next.3", 1107 | "string.prototype.matchall": "^4.0.5" 1108 | }, 1109 | "dependencies": { 1110 | "doctrine": { 1111 | "version": "2.1.0", 1112 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", 1113 | "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", 1114 | "dev": true, 1115 | "requires": { 1116 | "esutils": "^2.0.2" 1117 | } 1118 | }, 1119 | "estraverse": { 1120 | "version": "5.3.0", 1121 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1122 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1123 | "dev": true 1124 | }, 1125 | "resolve": { 1126 | "version": "2.0.0-next.3", 1127 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", 1128 | "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", 1129 | "dev": true, 1130 | "requires": { 1131 | "is-core-module": "^2.2.0", 1132 | "path-parse": "^1.0.6" 1133 | } 1134 | } 1135 | } 1136 | }, 1137 | "eslint-scope": { 1138 | "version": "5.1.1", 1139 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 1140 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 1141 | "dev": true, 1142 | "requires": { 1143 | "esrecurse": "^4.3.0", 1144 | "estraverse": "^4.1.1" 1145 | } 1146 | }, 1147 | "eslint-utils": { 1148 | "version": "2.1.0", 1149 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", 1150 | "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", 1151 | "dev": true, 1152 | "requires": { 1153 | "eslint-visitor-keys": "^1.1.0" 1154 | }, 1155 | "dependencies": { 1156 | "eslint-visitor-keys": { 1157 | "version": "1.3.0", 1158 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 1159 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 1160 | "dev": true 1161 | } 1162 | } 1163 | }, 1164 | "eslint-visitor-keys": { 1165 | "version": "2.1.0", 1166 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", 1167 | "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", 1168 | "dev": true 1169 | }, 1170 | "espree": { 1171 | "version": "7.3.1", 1172 | "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", 1173 | "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", 1174 | "dev": true, 1175 | "requires": { 1176 | "acorn": "^7.4.0", 1177 | "acorn-jsx": "^5.3.1", 1178 | "eslint-visitor-keys": "^1.3.0" 1179 | }, 1180 | "dependencies": { 1181 | "eslint-visitor-keys": { 1182 | "version": "1.3.0", 1183 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 1184 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 1185 | "dev": true 1186 | } 1187 | } 1188 | }, 1189 | "esprima": { 1190 | "version": "4.0.1", 1191 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 1192 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 1193 | "dev": true 1194 | }, 1195 | "esquery": { 1196 | "version": "1.4.0", 1197 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", 1198 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", 1199 | "dev": true, 1200 | "requires": { 1201 | "estraverse": "^5.1.0" 1202 | }, 1203 | "dependencies": { 1204 | "estraverse": { 1205 | "version": "5.3.0", 1206 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1207 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1208 | "dev": true 1209 | } 1210 | } 1211 | }, 1212 | "esrecurse": { 1213 | "version": "4.3.0", 1214 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1215 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1216 | "dev": true, 1217 | "requires": { 1218 | "estraverse": "^5.2.0" 1219 | }, 1220 | "dependencies": { 1221 | "estraverse": { 1222 | "version": "5.3.0", 1223 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1224 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1225 | "dev": true 1226 | } 1227 | } 1228 | }, 1229 | "estraverse": { 1230 | "version": "4.3.0", 1231 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 1232 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 1233 | "dev": true 1234 | }, 1235 | "esutils": { 1236 | "version": "2.0.3", 1237 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1238 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1239 | "dev": true 1240 | }, 1241 | "extract-zip": { 1242 | "version": "2.0.1", 1243 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", 1244 | "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", 1245 | "dev": true, 1246 | "requires": { 1247 | "@types/yauzl": "^2.9.1", 1248 | "debug": "^4.1.1", 1249 | "get-stream": "^5.1.0", 1250 | "yauzl": "^2.10.0" 1251 | } 1252 | }, 1253 | "fast-deep-equal": { 1254 | "version": "3.1.3", 1255 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1256 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1257 | "dev": true 1258 | }, 1259 | "fast-json-stable-stringify": { 1260 | "version": "2.1.0", 1261 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1262 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1263 | "dev": true 1264 | }, 1265 | "fast-levenshtein": { 1266 | "version": "2.0.6", 1267 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1268 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 1269 | "dev": true 1270 | }, 1271 | "fd-slicer": { 1272 | "version": "1.1.0", 1273 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 1274 | "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", 1275 | "dev": true, 1276 | "requires": { 1277 | "pend": "~1.2.0" 1278 | } 1279 | }, 1280 | "file-entry-cache": { 1281 | "version": "6.0.1", 1282 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 1283 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 1284 | "dev": true, 1285 | "requires": { 1286 | "flat-cache": "^3.0.4" 1287 | } 1288 | }, 1289 | "find-up": { 1290 | "version": "4.1.0", 1291 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 1292 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 1293 | "dev": true, 1294 | "requires": { 1295 | "locate-path": "^5.0.0", 1296 | "path-exists": "^4.0.0" 1297 | } 1298 | }, 1299 | "flat-cache": { 1300 | "version": "3.0.4", 1301 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 1302 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 1303 | "dev": true, 1304 | "requires": { 1305 | "flatted": "^3.1.0", 1306 | "rimraf": "^3.0.2" 1307 | } 1308 | }, 1309 | "flatted": { 1310 | "version": "3.2.5", 1311 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", 1312 | "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", 1313 | "dev": true 1314 | }, 1315 | "fs-constants": { 1316 | "version": "1.0.0", 1317 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 1318 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", 1319 | "dev": true 1320 | }, 1321 | "fs.realpath": { 1322 | "version": "1.0.0", 1323 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1324 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1325 | "dev": true 1326 | }, 1327 | "function-bind": { 1328 | "version": "1.1.1", 1329 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1330 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1331 | "dev": true 1332 | }, 1333 | "functional-red-black-tree": { 1334 | "version": "1.0.1", 1335 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 1336 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 1337 | "dev": true 1338 | }, 1339 | "gensync": { 1340 | "version": "1.0.0-beta.2", 1341 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 1342 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 1343 | "dev": true 1344 | }, 1345 | "get-func-name": { 1346 | "version": "2.0.0", 1347 | "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", 1348 | "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", 1349 | "dev": true 1350 | }, 1351 | "get-intrinsic": { 1352 | "version": "1.1.1", 1353 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 1354 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", 1355 | "dev": true, 1356 | "requires": { 1357 | "function-bind": "^1.1.1", 1358 | "has": "^1.0.3", 1359 | "has-symbols": "^1.0.1" 1360 | } 1361 | }, 1362 | "get-stdin": { 1363 | "version": "8.0.0", 1364 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", 1365 | "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", 1366 | "dev": true 1367 | }, 1368 | "get-stream": { 1369 | "version": "5.2.0", 1370 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 1371 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 1372 | "dev": true, 1373 | "requires": { 1374 | "pump": "^3.0.0" 1375 | } 1376 | }, 1377 | "get-symbol-description": { 1378 | "version": "1.0.0", 1379 | "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", 1380 | "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", 1381 | "dev": true, 1382 | "requires": { 1383 | "call-bind": "^1.0.2", 1384 | "get-intrinsic": "^1.1.1" 1385 | } 1386 | }, 1387 | "glob": { 1388 | "version": "7.2.0", 1389 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 1390 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 1391 | "dev": true, 1392 | "requires": { 1393 | "fs.realpath": "^1.0.0", 1394 | "inflight": "^1.0.4", 1395 | "inherits": "2", 1396 | "minimatch": "^3.0.4", 1397 | "once": "^1.3.0", 1398 | "path-is-absolute": "^1.0.0" 1399 | } 1400 | }, 1401 | "glob-parent": { 1402 | "version": "5.1.2", 1403 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1404 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1405 | "dev": true, 1406 | "requires": { 1407 | "is-glob": "^4.0.1" 1408 | } 1409 | }, 1410 | "globals": { 1411 | "version": "11.12.0", 1412 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 1413 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 1414 | "dev": true 1415 | }, 1416 | "graceful-fs": { 1417 | "version": "4.2.9", 1418 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", 1419 | "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", 1420 | "dev": true 1421 | }, 1422 | "has": { 1423 | "version": "1.0.3", 1424 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1425 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1426 | "dev": true, 1427 | "requires": { 1428 | "function-bind": "^1.1.1" 1429 | } 1430 | }, 1431 | "has-bigints": { 1432 | "version": "1.0.1", 1433 | "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", 1434 | "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", 1435 | "dev": true 1436 | }, 1437 | "has-flag": { 1438 | "version": "3.0.0", 1439 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1440 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1441 | "dev": true 1442 | }, 1443 | "has-symbols": { 1444 | "version": "1.0.2", 1445 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", 1446 | "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", 1447 | "dev": true 1448 | }, 1449 | "has-tostringtag": { 1450 | "version": "1.0.0", 1451 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", 1452 | "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", 1453 | "dev": true, 1454 | "requires": { 1455 | "has-symbols": "^1.0.2" 1456 | } 1457 | }, 1458 | "hosted-git-info": { 1459 | "version": "2.8.9", 1460 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", 1461 | "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", 1462 | "dev": true 1463 | }, 1464 | "https-proxy-agent": { 1465 | "version": "5.0.0", 1466 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", 1467 | "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", 1468 | "dev": true, 1469 | "requires": { 1470 | "agent-base": "6", 1471 | "debug": "4" 1472 | } 1473 | }, 1474 | "ieee754": { 1475 | "version": "1.2.1", 1476 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1477 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 1478 | "dev": true 1479 | }, 1480 | "ignore": { 1481 | "version": "4.0.6", 1482 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 1483 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 1484 | "dev": true 1485 | }, 1486 | "import-fresh": { 1487 | "version": "3.3.0", 1488 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 1489 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 1490 | "dev": true, 1491 | "requires": { 1492 | "parent-module": "^1.0.0", 1493 | "resolve-from": "^4.0.0" 1494 | } 1495 | }, 1496 | "imurmurhash": { 1497 | "version": "0.1.4", 1498 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1499 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 1500 | "dev": true 1501 | }, 1502 | "inflight": { 1503 | "version": "1.0.6", 1504 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1505 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1506 | "dev": true, 1507 | "requires": { 1508 | "once": "^1.3.0", 1509 | "wrappy": "1" 1510 | } 1511 | }, 1512 | "inherits": { 1513 | "version": "2.0.4", 1514 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1515 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1516 | "dev": true 1517 | }, 1518 | "internal-slot": { 1519 | "version": "1.0.3", 1520 | "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", 1521 | "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", 1522 | "dev": true, 1523 | "requires": { 1524 | "get-intrinsic": "^1.1.0", 1525 | "has": "^1.0.3", 1526 | "side-channel": "^1.0.4" 1527 | } 1528 | }, 1529 | "is-arrayish": { 1530 | "version": "0.2.1", 1531 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1532 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 1533 | "dev": true 1534 | }, 1535 | "is-bigint": { 1536 | "version": "1.0.4", 1537 | "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", 1538 | "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", 1539 | "dev": true, 1540 | "requires": { 1541 | "has-bigints": "^1.0.1" 1542 | } 1543 | }, 1544 | "is-boolean-object": { 1545 | "version": "1.1.2", 1546 | "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", 1547 | "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", 1548 | "dev": true, 1549 | "requires": { 1550 | "call-bind": "^1.0.2", 1551 | "has-tostringtag": "^1.0.0" 1552 | } 1553 | }, 1554 | "is-callable": { 1555 | "version": "1.2.4", 1556 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", 1557 | "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", 1558 | "dev": true 1559 | }, 1560 | "is-core-module": { 1561 | "version": "2.8.1", 1562 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", 1563 | "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", 1564 | "dev": true, 1565 | "requires": { 1566 | "has": "^1.0.3" 1567 | } 1568 | }, 1569 | "is-date-object": { 1570 | "version": "1.0.5", 1571 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", 1572 | "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", 1573 | "dev": true, 1574 | "requires": { 1575 | "has-tostringtag": "^1.0.0" 1576 | } 1577 | }, 1578 | "is-extglob": { 1579 | "version": "2.1.1", 1580 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1581 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 1582 | "dev": true 1583 | }, 1584 | "is-fullwidth-code-point": { 1585 | "version": "3.0.0", 1586 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1587 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1588 | "dev": true 1589 | }, 1590 | "is-glob": { 1591 | "version": "4.0.3", 1592 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1593 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1594 | "dev": true, 1595 | "requires": { 1596 | "is-extglob": "^2.1.1" 1597 | } 1598 | }, 1599 | "is-negative-zero": { 1600 | "version": "2.0.2", 1601 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", 1602 | "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", 1603 | "dev": true 1604 | }, 1605 | "is-number-object": { 1606 | "version": "1.0.6", 1607 | "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", 1608 | "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", 1609 | "dev": true, 1610 | "requires": { 1611 | "has-tostringtag": "^1.0.0" 1612 | } 1613 | }, 1614 | "is-regex": { 1615 | "version": "1.1.4", 1616 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", 1617 | "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", 1618 | "dev": true, 1619 | "requires": { 1620 | "call-bind": "^1.0.2", 1621 | "has-tostringtag": "^1.0.0" 1622 | } 1623 | }, 1624 | "is-shared-array-buffer": { 1625 | "version": "1.0.1", 1626 | "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", 1627 | "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", 1628 | "dev": true 1629 | }, 1630 | "is-string": { 1631 | "version": "1.0.7", 1632 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", 1633 | "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", 1634 | "dev": true, 1635 | "requires": { 1636 | "has-tostringtag": "^1.0.0" 1637 | } 1638 | }, 1639 | "is-symbol": { 1640 | "version": "1.0.4", 1641 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", 1642 | "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", 1643 | "dev": true, 1644 | "requires": { 1645 | "has-symbols": "^1.0.2" 1646 | } 1647 | }, 1648 | "is-weakref": { 1649 | "version": "1.0.2", 1650 | "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", 1651 | "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", 1652 | "dev": true, 1653 | "requires": { 1654 | "call-bind": "^1.0.2" 1655 | } 1656 | }, 1657 | "isexe": { 1658 | "version": "2.0.0", 1659 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1660 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1661 | "dev": true 1662 | }, 1663 | "js-tokens": { 1664 | "version": "4.0.0", 1665 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1666 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1667 | "dev": true 1668 | }, 1669 | "js-yaml": { 1670 | "version": "3.14.1", 1671 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 1672 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 1673 | "dev": true, 1674 | "requires": { 1675 | "argparse": "^1.0.7", 1676 | "esprima": "^4.0.0" 1677 | } 1678 | }, 1679 | "jsesc": { 1680 | "version": "2.5.2", 1681 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 1682 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 1683 | "dev": true 1684 | }, 1685 | "json-parse-better-errors": { 1686 | "version": "1.0.2", 1687 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", 1688 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", 1689 | "dev": true 1690 | }, 1691 | "json-schema-traverse": { 1692 | "version": "0.4.1", 1693 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1694 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1695 | "dev": true 1696 | }, 1697 | "json-stable-stringify-without-jsonify": { 1698 | "version": "1.0.1", 1699 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1700 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 1701 | "dev": true 1702 | }, 1703 | "json5": { 1704 | "version": "2.2.0", 1705 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", 1706 | "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", 1707 | "dev": true, 1708 | "requires": { 1709 | "minimist": "^1.2.5" 1710 | } 1711 | }, 1712 | "jsx-ast-utils": { 1713 | "version": "3.2.1", 1714 | "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", 1715 | "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==", 1716 | "dev": true, 1717 | "requires": { 1718 | "array-includes": "^3.1.3", 1719 | "object.assign": "^4.1.2" 1720 | } 1721 | }, 1722 | "levn": { 1723 | "version": "0.4.1", 1724 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 1725 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 1726 | "dev": true, 1727 | "requires": { 1728 | "prelude-ls": "^1.2.1", 1729 | "type-check": "~0.4.0" 1730 | } 1731 | }, 1732 | "load-json-file": { 1733 | "version": "4.0.0", 1734 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", 1735 | "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", 1736 | "dev": true, 1737 | "requires": { 1738 | "graceful-fs": "^4.1.2", 1739 | "parse-json": "^4.0.0", 1740 | "pify": "^3.0.0", 1741 | "strip-bom": "^3.0.0" 1742 | } 1743 | }, 1744 | "locate-path": { 1745 | "version": "5.0.0", 1746 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 1747 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 1748 | "dev": true, 1749 | "requires": { 1750 | "p-locate": "^4.1.0" 1751 | } 1752 | }, 1753 | "lodash": { 1754 | "version": "4.17.21", 1755 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1756 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 1757 | "dev": true 1758 | }, 1759 | "lodash.truncate": { 1760 | "version": "4.4.2", 1761 | "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", 1762 | "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", 1763 | "dev": true 1764 | }, 1765 | "loose-envify": { 1766 | "version": "1.4.0", 1767 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 1768 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 1769 | "dev": true, 1770 | "requires": { 1771 | "js-tokens": "^3.0.0 || ^4.0.0" 1772 | } 1773 | }, 1774 | "loupe": { 1775 | "version": "2.3.1", 1776 | "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.1.tgz", 1777 | "integrity": "sha512-EN1D3jyVmaX4tnajVlfbREU4axL647hLec1h/PXAb8CPDMJiYitcWF2UeLVNttRqaIqQs4x+mRvXf+d+TlDrCA==", 1778 | "dev": true, 1779 | "requires": { 1780 | "get-func-name": "^2.0.0" 1781 | } 1782 | }, 1783 | "lru-cache": { 1784 | "version": "6.0.0", 1785 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1786 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1787 | "dev": true, 1788 | "requires": { 1789 | "yallist": "^4.0.0" 1790 | } 1791 | }, 1792 | "minimatch": { 1793 | "version": "3.0.4", 1794 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1795 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1796 | "dev": true, 1797 | "requires": { 1798 | "brace-expansion": "^1.1.7" 1799 | } 1800 | }, 1801 | "minimist": { 1802 | "version": "1.2.5", 1803 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1804 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 1805 | "dev": true 1806 | }, 1807 | "mkdirp": { 1808 | "version": "0.5.5", 1809 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 1810 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 1811 | "dev": true, 1812 | "requires": { 1813 | "minimist": "^1.2.5" 1814 | } 1815 | }, 1816 | "ms": { 1817 | "version": "2.1.2", 1818 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1819 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1820 | "dev": true 1821 | }, 1822 | "natural-compare": { 1823 | "version": "1.4.0", 1824 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1825 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 1826 | "dev": true 1827 | }, 1828 | "node-fetch": { 1829 | "version": "2.6.1", 1830 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", 1831 | "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", 1832 | "dev": true 1833 | }, 1834 | "node-releases": { 1835 | "version": "2.0.1", 1836 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", 1837 | "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", 1838 | "dev": true 1839 | }, 1840 | "normalize-package-data": { 1841 | "version": "2.5.0", 1842 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 1843 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", 1844 | "dev": true, 1845 | "requires": { 1846 | "hosted-git-info": "^2.1.4", 1847 | "resolve": "^1.10.0", 1848 | "semver": "2 || 3 || 4 || 5", 1849 | "validate-npm-package-license": "^3.0.1" 1850 | }, 1851 | "dependencies": { 1852 | "semver": { 1853 | "version": "5.7.1", 1854 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1855 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 1856 | "dev": true 1857 | } 1858 | } 1859 | }, 1860 | "object-assign": { 1861 | "version": "4.1.1", 1862 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1863 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 1864 | "dev": true 1865 | }, 1866 | "object-inspect": { 1867 | "version": "1.12.0", 1868 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", 1869 | "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", 1870 | "dev": true 1871 | }, 1872 | "object-keys": { 1873 | "version": "1.1.1", 1874 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1875 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 1876 | "dev": true 1877 | }, 1878 | "object.assign": { 1879 | "version": "4.1.2", 1880 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", 1881 | "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", 1882 | "dev": true, 1883 | "requires": { 1884 | "call-bind": "^1.0.0", 1885 | "define-properties": "^1.1.3", 1886 | "has-symbols": "^1.0.1", 1887 | "object-keys": "^1.1.1" 1888 | } 1889 | }, 1890 | "object.entries": { 1891 | "version": "1.1.5", 1892 | "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", 1893 | "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", 1894 | "dev": true, 1895 | "requires": { 1896 | "call-bind": "^1.0.2", 1897 | "define-properties": "^1.1.3", 1898 | "es-abstract": "^1.19.1" 1899 | } 1900 | }, 1901 | "object.fromentries": { 1902 | "version": "2.0.5", 1903 | "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", 1904 | "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", 1905 | "dev": true, 1906 | "requires": { 1907 | "call-bind": "^1.0.2", 1908 | "define-properties": "^1.1.3", 1909 | "es-abstract": "^1.19.1" 1910 | } 1911 | }, 1912 | "object.hasown": { 1913 | "version": "1.1.0", 1914 | "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", 1915 | "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", 1916 | "dev": true, 1917 | "requires": { 1918 | "define-properties": "^1.1.3", 1919 | "es-abstract": "^1.19.1" 1920 | } 1921 | }, 1922 | "object.values": { 1923 | "version": "1.1.5", 1924 | "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", 1925 | "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", 1926 | "dev": true, 1927 | "requires": { 1928 | "call-bind": "^1.0.2", 1929 | "define-properties": "^1.1.3", 1930 | "es-abstract": "^1.19.1" 1931 | } 1932 | }, 1933 | "once": { 1934 | "version": "1.4.0", 1935 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1936 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1937 | "dev": true, 1938 | "requires": { 1939 | "wrappy": "1" 1940 | } 1941 | }, 1942 | "optionator": { 1943 | "version": "0.9.1", 1944 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 1945 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 1946 | "dev": true, 1947 | "requires": { 1948 | "deep-is": "^0.1.3", 1949 | "fast-levenshtein": "^2.0.6", 1950 | "levn": "^0.4.1", 1951 | "prelude-ls": "^1.2.1", 1952 | "type-check": "^0.4.0", 1953 | "word-wrap": "^1.2.3" 1954 | } 1955 | }, 1956 | "p-limit": { 1957 | "version": "2.3.0", 1958 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 1959 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 1960 | "dev": true, 1961 | "requires": { 1962 | "p-try": "^2.0.0" 1963 | } 1964 | }, 1965 | "p-locate": { 1966 | "version": "4.1.0", 1967 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 1968 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 1969 | "dev": true, 1970 | "requires": { 1971 | "p-limit": "^2.2.0" 1972 | } 1973 | }, 1974 | "p-try": { 1975 | "version": "2.2.0", 1976 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 1977 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 1978 | "dev": true 1979 | }, 1980 | "parent-module": { 1981 | "version": "1.0.1", 1982 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1983 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1984 | "dev": true, 1985 | "requires": { 1986 | "callsites": "^3.0.0" 1987 | } 1988 | }, 1989 | "parse-json": { 1990 | "version": "4.0.0", 1991 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", 1992 | "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", 1993 | "dev": true, 1994 | "requires": { 1995 | "error-ex": "^1.3.1", 1996 | "json-parse-better-errors": "^1.0.1" 1997 | } 1998 | }, 1999 | "path-exists": { 2000 | "version": "4.0.0", 2001 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 2002 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 2003 | "dev": true 2004 | }, 2005 | "path-is-absolute": { 2006 | "version": "1.0.1", 2007 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2008 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 2009 | "dev": true 2010 | }, 2011 | "path-key": { 2012 | "version": "3.1.1", 2013 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 2014 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 2015 | "dev": true 2016 | }, 2017 | "path-parse": { 2018 | "version": "1.0.7", 2019 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 2020 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 2021 | "dev": true 2022 | }, 2023 | "path-type": { 2024 | "version": "3.0.0", 2025 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", 2026 | "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", 2027 | "dev": true, 2028 | "requires": { 2029 | "pify": "^3.0.0" 2030 | } 2031 | }, 2032 | "pathval": { 2033 | "version": "1.1.1", 2034 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", 2035 | "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", 2036 | "dev": true 2037 | }, 2038 | "pend": { 2039 | "version": "1.2.0", 2040 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 2041 | "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", 2042 | "dev": true 2043 | }, 2044 | "picocolors": { 2045 | "version": "1.0.0", 2046 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 2047 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 2048 | "dev": true 2049 | }, 2050 | "pify": { 2051 | "version": "3.0.0", 2052 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 2053 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 2054 | "dev": true 2055 | }, 2056 | "pkg-conf": { 2057 | "version": "3.1.0", 2058 | "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", 2059 | "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", 2060 | "dev": true, 2061 | "requires": { 2062 | "find-up": "^3.0.0", 2063 | "load-json-file": "^5.2.0" 2064 | }, 2065 | "dependencies": { 2066 | "find-up": { 2067 | "version": "3.0.0", 2068 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 2069 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 2070 | "dev": true, 2071 | "requires": { 2072 | "locate-path": "^3.0.0" 2073 | } 2074 | }, 2075 | "load-json-file": { 2076 | "version": "5.3.0", 2077 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", 2078 | "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", 2079 | "dev": true, 2080 | "requires": { 2081 | "graceful-fs": "^4.1.15", 2082 | "parse-json": "^4.0.0", 2083 | "pify": "^4.0.1", 2084 | "strip-bom": "^3.0.0", 2085 | "type-fest": "^0.3.0" 2086 | } 2087 | }, 2088 | "locate-path": { 2089 | "version": "3.0.0", 2090 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 2091 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 2092 | "dev": true, 2093 | "requires": { 2094 | "p-locate": "^3.0.0", 2095 | "path-exists": "^3.0.0" 2096 | } 2097 | }, 2098 | "p-locate": { 2099 | "version": "3.0.0", 2100 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 2101 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 2102 | "dev": true, 2103 | "requires": { 2104 | "p-limit": "^2.0.0" 2105 | } 2106 | }, 2107 | "path-exists": { 2108 | "version": "3.0.0", 2109 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 2110 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 2111 | "dev": true 2112 | }, 2113 | "pify": { 2114 | "version": "4.0.1", 2115 | "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", 2116 | "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", 2117 | "dev": true 2118 | }, 2119 | "type-fest": { 2120 | "version": "0.3.1", 2121 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", 2122 | "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", 2123 | "dev": true 2124 | } 2125 | } 2126 | }, 2127 | "pkg-dir": { 2128 | "version": "4.2.0", 2129 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", 2130 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", 2131 | "dev": true, 2132 | "requires": { 2133 | "find-up": "^4.0.0" 2134 | } 2135 | }, 2136 | "pkg-up": { 2137 | "version": "2.0.0", 2138 | "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", 2139 | "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", 2140 | "dev": true, 2141 | "requires": { 2142 | "find-up": "^2.1.0" 2143 | }, 2144 | "dependencies": { 2145 | "find-up": { 2146 | "version": "2.1.0", 2147 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 2148 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 2149 | "dev": true, 2150 | "requires": { 2151 | "locate-path": "^2.0.0" 2152 | } 2153 | }, 2154 | "locate-path": { 2155 | "version": "2.0.0", 2156 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 2157 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 2158 | "dev": true, 2159 | "requires": { 2160 | "p-locate": "^2.0.0", 2161 | "path-exists": "^3.0.0" 2162 | } 2163 | }, 2164 | "p-limit": { 2165 | "version": "1.3.0", 2166 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 2167 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 2168 | "dev": true, 2169 | "requires": { 2170 | "p-try": "^1.0.0" 2171 | } 2172 | }, 2173 | "p-locate": { 2174 | "version": "2.0.0", 2175 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 2176 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 2177 | "dev": true, 2178 | "requires": { 2179 | "p-limit": "^1.1.0" 2180 | } 2181 | }, 2182 | "p-try": { 2183 | "version": "1.0.0", 2184 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 2185 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 2186 | "dev": true 2187 | }, 2188 | "path-exists": { 2189 | "version": "3.0.0", 2190 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 2191 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 2192 | "dev": true 2193 | } 2194 | } 2195 | }, 2196 | "prelude-ls": { 2197 | "version": "1.2.1", 2198 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 2199 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 2200 | "dev": true 2201 | }, 2202 | "progress": { 2203 | "version": "2.0.1", 2204 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz", 2205 | "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==", 2206 | "dev": true 2207 | }, 2208 | "prop-types": { 2209 | "version": "15.8.1", 2210 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", 2211 | "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", 2212 | "dev": true, 2213 | "requires": { 2214 | "loose-envify": "^1.4.0", 2215 | "object-assign": "^4.1.1", 2216 | "react-is": "^16.13.1" 2217 | } 2218 | }, 2219 | "proxy-from-env": { 2220 | "version": "1.1.0", 2221 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 2222 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", 2223 | "dev": true 2224 | }, 2225 | "pump": { 2226 | "version": "3.0.0", 2227 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 2228 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 2229 | "dev": true, 2230 | "requires": { 2231 | "end-of-stream": "^1.1.0", 2232 | "once": "^1.3.1" 2233 | } 2234 | }, 2235 | "punycode": { 2236 | "version": "2.1.1", 2237 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2238 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 2239 | "dev": true 2240 | }, 2241 | "puppeteer": { 2242 | "version": "10.4.0", 2243 | "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-10.4.0.tgz", 2244 | "integrity": "sha512-2cP8mBoqnu5gzAVpbZ0fRaobBWZM8GEUF4I1F6WbgHrKV/rz7SX8PG2wMymZgD0wo0UBlg2FBPNxlF/xlqW6+w==", 2245 | "dev": true, 2246 | "requires": { 2247 | "debug": "4.3.1", 2248 | "devtools-protocol": "0.0.901419", 2249 | "extract-zip": "2.0.1", 2250 | "https-proxy-agent": "5.0.0", 2251 | "node-fetch": "2.6.1", 2252 | "pkg-dir": "4.2.0", 2253 | "progress": "2.0.1", 2254 | "proxy-from-env": "1.1.0", 2255 | "rimraf": "3.0.2", 2256 | "tar-fs": "2.0.0", 2257 | "unbzip2-stream": "1.3.3", 2258 | "ws": "7.4.6" 2259 | }, 2260 | "dependencies": { 2261 | "debug": { 2262 | "version": "4.3.1", 2263 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", 2264 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", 2265 | "dev": true, 2266 | "requires": { 2267 | "ms": "2.1.2" 2268 | } 2269 | } 2270 | } 2271 | }, 2272 | "react-is": { 2273 | "version": "16.13.1", 2274 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 2275 | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", 2276 | "dev": true 2277 | }, 2278 | "read-pkg": { 2279 | "version": "3.0.0", 2280 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", 2281 | "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", 2282 | "dev": true, 2283 | "requires": { 2284 | "load-json-file": "^4.0.0", 2285 | "normalize-package-data": "^2.3.2", 2286 | "path-type": "^3.0.0" 2287 | } 2288 | }, 2289 | "read-pkg-up": { 2290 | "version": "3.0.0", 2291 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", 2292 | "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", 2293 | "dev": true, 2294 | "requires": { 2295 | "find-up": "^2.0.0", 2296 | "read-pkg": "^3.0.0" 2297 | }, 2298 | "dependencies": { 2299 | "find-up": { 2300 | "version": "2.1.0", 2301 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 2302 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 2303 | "dev": true, 2304 | "requires": { 2305 | "locate-path": "^2.0.0" 2306 | } 2307 | }, 2308 | "locate-path": { 2309 | "version": "2.0.0", 2310 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 2311 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 2312 | "dev": true, 2313 | "requires": { 2314 | "p-locate": "^2.0.0", 2315 | "path-exists": "^3.0.0" 2316 | } 2317 | }, 2318 | "p-limit": { 2319 | "version": "1.3.0", 2320 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 2321 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 2322 | "dev": true, 2323 | "requires": { 2324 | "p-try": "^1.0.0" 2325 | } 2326 | }, 2327 | "p-locate": { 2328 | "version": "2.0.0", 2329 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 2330 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 2331 | "dev": true, 2332 | "requires": { 2333 | "p-limit": "^1.1.0" 2334 | } 2335 | }, 2336 | "p-try": { 2337 | "version": "1.0.0", 2338 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 2339 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 2340 | "dev": true 2341 | }, 2342 | "path-exists": { 2343 | "version": "3.0.0", 2344 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 2345 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 2346 | "dev": true 2347 | } 2348 | } 2349 | }, 2350 | "readable-stream": { 2351 | "version": "3.6.0", 2352 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 2353 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 2354 | "dev": true, 2355 | "requires": { 2356 | "inherits": "^2.0.3", 2357 | "string_decoder": "^1.1.1", 2358 | "util-deprecate": "^1.0.1" 2359 | } 2360 | }, 2361 | "regenerator-runtime": { 2362 | "version": "0.13.9", 2363 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", 2364 | "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" 2365 | }, 2366 | "regexp.prototype.flags": { 2367 | "version": "1.4.1", 2368 | "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", 2369 | "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", 2370 | "dev": true, 2371 | "requires": { 2372 | "call-bind": "^1.0.2", 2373 | "define-properties": "^1.1.3" 2374 | } 2375 | }, 2376 | "regexpp": { 2377 | "version": "3.2.0", 2378 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", 2379 | "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", 2380 | "dev": true 2381 | }, 2382 | "require-from-string": { 2383 | "version": "2.0.2", 2384 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", 2385 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", 2386 | "dev": true 2387 | }, 2388 | "resolve": { 2389 | "version": "1.22.0", 2390 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", 2391 | "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", 2392 | "dev": true, 2393 | "requires": { 2394 | "is-core-module": "^2.8.1", 2395 | "path-parse": "^1.0.7", 2396 | "supports-preserve-symlinks-flag": "^1.0.0" 2397 | } 2398 | }, 2399 | "resolve-from": { 2400 | "version": "4.0.0", 2401 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2402 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 2403 | "dev": true 2404 | }, 2405 | "rimraf": { 2406 | "version": "3.0.2", 2407 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 2408 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 2409 | "dev": true, 2410 | "requires": { 2411 | "glob": "^7.1.3" 2412 | } 2413 | }, 2414 | "safe-buffer": { 2415 | "version": "5.1.2", 2416 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2417 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 2418 | "dev": true 2419 | }, 2420 | "semver": { 2421 | "version": "6.3.0", 2422 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 2423 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 2424 | "dev": true 2425 | }, 2426 | "shebang-command": { 2427 | "version": "2.0.0", 2428 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2429 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2430 | "dev": true, 2431 | "requires": { 2432 | "shebang-regex": "^3.0.0" 2433 | } 2434 | }, 2435 | "shebang-regex": { 2436 | "version": "3.0.0", 2437 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2438 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2439 | "dev": true 2440 | }, 2441 | "side-channel": { 2442 | "version": "1.0.4", 2443 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 2444 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 2445 | "dev": true, 2446 | "requires": { 2447 | "call-bind": "^1.0.0", 2448 | "get-intrinsic": "^1.0.2", 2449 | "object-inspect": "^1.9.0" 2450 | } 2451 | }, 2452 | "slice-ansi": { 2453 | "version": "4.0.0", 2454 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", 2455 | "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", 2456 | "dev": true, 2457 | "requires": { 2458 | "ansi-styles": "^4.0.0", 2459 | "astral-regex": "^2.0.0", 2460 | "is-fullwidth-code-point": "^3.0.0" 2461 | }, 2462 | "dependencies": { 2463 | "ansi-styles": { 2464 | "version": "4.3.0", 2465 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2466 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2467 | "dev": true, 2468 | "requires": { 2469 | "color-convert": "^2.0.1" 2470 | } 2471 | }, 2472 | "color-convert": { 2473 | "version": "2.0.1", 2474 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2475 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2476 | "dev": true, 2477 | "requires": { 2478 | "color-name": "~1.1.4" 2479 | } 2480 | }, 2481 | "color-name": { 2482 | "version": "1.1.4", 2483 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2484 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2485 | "dev": true 2486 | } 2487 | } 2488 | }, 2489 | "snazzy": { 2490 | "version": "9.0.0", 2491 | "resolved": "https://registry.npmjs.org/snazzy/-/snazzy-9.0.0.tgz", 2492 | "integrity": "sha512-8QZmJb11OiYaUP90Nnjqcj/LEpO8CLgChnP87Wqjv5tNB4djwHaz27VO2usSRR0NmViapeGW04p0aWAMhxxLXg==", 2493 | "dev": true, 2494 | "requires": { 2495 | "chalk": "^4.1.0", 2496 | "inherits": "^2.0.4", 2497 | "minimist": "^1.2.5", 2498 | "readable-stream": "^3.6.0", 2499 | "standard-json": "^1.1.0", 2500 | "strip-ansi": "^6.0.0", 2501 | "text-table": "^0.2.0" 2502 | }, 2503 | "dependencies": { 2504 | "ansi-styles": { 2505 | "version": "4.3.0", 2506 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2507 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2508 | "dev": true, 2509 | "requires": { 2510 | "color-convert": "^2.0.1" 2511 | } 2512 | }, 2513 | "chalk": { 2514 | "version": "4.1.2", 2515 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 2516 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 2517 | "dev": true, 2518 | "requires": { 2519 | "ansi-styles": "^4.1.0", 2520 | "supports-color": "^7.1.0" 2521 | } 2522 | }, 2523 | "color-convert": { 2524 | "version": "2.0.1", 2525 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2526 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2527 | "dev": true, 2528 | "requires": { 2529 | "color-name": "~1.1.4" 2530 | } 2531 | }, 2532 | "color-name": { 2533 | "version": "1.1.4", 2534 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2535 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2536 | "dev": true 2537 | }, 2538 | "has-flag": { 2539 | "version": "4.0.0", 2540 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2541 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2542 | "dev": true 2543 | }, 2544 | "supports-color": { 2545 | "version": "7.2.0", 2546 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2547 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2548 | "dev": true, 2549 | "requires": { 2550 | "has-flag": "^4.0.0" 2551 | } 2552 | } 2553 | } 2554 | }, 2555 | "source-map": { 2556 | "version": "0.5.7", 2557 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 2558 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 2559 | "dev": true 2560 | }, 2561 | "spdx-correct": { 2562 | "version": "3.1.1", 2563 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", 2564 | "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", 2565 | "dev": true, 2566 | "requires": { 2567 | "spdx-expression-parse": "^3.0.0", 2568 | "spdx-license-ids": "^3.0.0" 2569 | } 2570 | }, 2571 | "spdx-exceptions": { 2572 | "version": "2.3.0", 2573 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", 2574 | "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", 2575 | "dev": true 2576 | }, 2577 | "spdx-expression-parse": { 2578 | "version": "3.0.1", 2579 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", 2580 | "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", 2581 | "dev": true, 2582 | "requires": { 2583 | "spdx-exceptions": "^2.1.0", 2584 | "spdx-license-ids": "^3.0.0" 2585 | } 2586 | }, 2587 | "spdx-license-ids": { 2588 | "version": "3.0.11", 2589 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", 2590 | "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", 2591 | "dev": true 2592 | }, 2593 | "sprintf-js": { 2594 | "version": "1.0.3", 2595 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 2596 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 2597 | "dev": true 2598 | }, 2599 | "standard": { 2600 | "version": "16.0.4", 2601 | "resolved": "https://registry.npmjs.org/standard/-/standard-16.0.4.tgz", 2602 | "integrity": "sha512-2AGI874RNClW4xUdM+bg1LRXVlYLzTNEkHmTG5mhyn45OhbgwA+6znowkOGYy+WMb5HRyELvtNy39kcdMQMcYQ==", 2603 | "dev": true, 2604 | "requires": { 2605 | "eslint": "~7.18.0", 2606 | "eslint-config-standard": "16.0.3", 2607 | "eslint-config-standard-jsx": "10.0.0", 2608 | "eslint-plugin-import": "~2.24.2", 2609 | "eslint-plugin-node": "~11.1.0", 2610 | "eslint-plugin-promise": "~5.1.0", 2611 | "eslint-plugin-react": "~7.25.1", 2612 | "standard-engine": "^14.0.1" 2613 | } 2614 | }, 2615 | "standard-engine": { 2616 | "version": "14.0.1", 2617 | "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-14.0.1.tgz", 2618 | "integrity": "sha512-7FEzDwmHDOGva7r9ifOzD3BGdTbA7ujJ50afLVdW/tK14zQEptJjbFuUfn50irqdHDcTbNh0DTIoMPynMCXb0Q==", 2619 | "dev": true, 2620 | "requires": { 2621 | "get-stdin": "^8.0.0", 2622 | "minimist": "^1.2.5", 2623 | "pkg-conf": "^3.1.0", 2624 | "xdg-basedir": "^4.0.0" 2625 | } 2626 | }, 2627 | "standard-json": { 2628 | "version": "1.1.0", 2629 | "resolved": "https://registry.npmjs.org/standard-json/-/standard-json-1.1.0.tgz", 2630 | "integrity": "sha512-nkonX+n5g3pyVBvJZmvRlFtT/7JyLbNh4CtrYC3Qfxihgs8PKX52f6ONKQXORStuBWJ5PI83EUrNXme7LKfiTQ==", 2631 | "dev": true, 2632 | "requires": { 2633 | "concat-stream": "^2.0.0" 2634 | } 2635 | }, 2636 | "standardx": { 2637 | "version": "7.0.0", 2638 | "resolved": "https://registry.npmjs.org/standardx/-/standardx-7.0.0.tgz", 2639 | "integrity": "sha512-Uh2LIWyMD0pMFn+zoAS52dforkE8MUWP6hK48iQhiohTC5DRqBgTdXdJbhSGyjamRxCfETBdfvJ7hvtme2M3jg==", 2640 | "dev": true, 2641 | "requires": { 2642 | "standard": "^16.0.1", 2643 | "standard-engine": "^14.0.1" 2644 | } 2645 | }, 2646 | "string-width": { 2647 | "version": "4.2.3", 2648 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 2649 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 2650 | "dev": true, 2651 | "requires": { 2652 | "emoji-regex": "^8.0.0", 2653 | "is-fullwidth-code-point": "^3.0.0", 2654 | "strip-ansi": "^6.0.1" 2655 | } 2656 | }, 2657 | "string.prototype.matchall": { 2658 | "version": "4.0.6", 2659 | "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", 2660 | "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==", 2661 | "dev": true, 2662 | "requires": { 2663 | "call-bind": "^1.0.2", 2664 | "define-properties": "^1.1.3", 2665 | "es-abstract": "^1.19.1", 2666 | "get-intrinsic": "^1.1.1", 2667 | "has-symbols": "^1.0.2", 2668 | "internal-slot": "^1.0.3", 2669 | "regexp.prototype.flags": "^1.3.1", 2670 | "side-channel": "^1.0.4" 2671 | } 2672 | }, 2673 | "string.prototype.trimend": { 2674 | "version": "1.0.4", 2675 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", 2676 | "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", 2677 | "dev": true, 2678 | "requires": { 2679 | "call-bind": "^1.0.2", 2680 | "define-properties": "^1.1.3" 2681 | } 2682 | }, 2683 | "string.prototype.trimstart": { 2684 | "version": "1.0.4", 2685 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", 2686 | "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", 2687 | "dev": true, 2688 | "requires": { 2689 | "call-bind": "^1.0.2", 2690 | "define-properties": "^1.1.3" 2691 | } 2692 | }, 2693 | "string_decoder": { 2694 | "version": "1.3.0", 2695 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 2696 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 2697 | "dev": true, 2698 | "requires": { 2699 | "safe-buffer": "~5.2.0" 2700 | }, 2701 | "dependencies": { 2702 | "safe-buffer": { 2703 | "version": "5.2.1", 2704 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 2705 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 2706 | "dev": true 2707 | } 2708 | } 2709 | }, 2710 | "strip-ansi": { 2711 | "version": "6.0.1", 2712 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2713 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2714 | "dev": true, 2715 | "requires": { 2716 | "ansi-regex": "^5.0.1" 2717 | } 2718 | }, 2719 | "strip-bom": { 2720 | "version": "3.0.0", 2721 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 2722 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 2723 | "dev": true 2724 | }, 2725 | "strip-json-comments": { 2726 | "version": "3.1.1", 2727 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2728 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 2729 | "dev": true 2730 | }, 2731 | "supports-color": { 2732 | "version": "5.5.0", 2733 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2734 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2735 | "dev": true, 2736 | "requires": { 2737 | "has-flag": "^3.0.0" 2738 | } 2739 | }, 2740 | "supports-preserve-symlinks-flag": { 2741 | "version": "1.0.0", 2742 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 2743 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 2744 | "dev": true 2745 | }, 2746 | "table": { 2747 | "version": "6.8.0", 2748 | "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", 2749 | "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", 2750 | "dev": true, 2751 | "requires": { 2752 | "ajv": "^8.0.1", 2753 | "lodash.truncate": "^4.4.2", 2754 | "slice-ansi": "^4.0.0", 2755 | "string-width": "^4.2.3", 2756 | "strip-ansi": "^6.0.1" 2757 | }, 2758 | "dependencies": { 2759 | "ajv": { 2760 | "version": "8.9.0", 2761 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", 2762 | "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", 2763 | "dev": true, 2764 | "requires": { 2765 | "fast-deep-equal": "^3.1.1", 2766 | "json-schema-traverse": "^1.0.0", 2767 | "require-from-string": "^2.0.2", 2768 | "uri-js": "^4.2.2" 2769 | } 2770 | }, 2771 | "json-schema-traverse": { 2772 | "version": "1.0.0", 2773 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", 2774 | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", 2775 | "dev": true 2776 | } 2777 | } 2778 | }, 2779 | "tar-fs": { 2780 | "version": "2.0.0", 2781 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.0.tgz", 2782 | "integrity": "sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA==", 2783 | "dev": true, 2784 | "requires": { 2785 | "chownr": "^1.1.1", 2786 | "mkdirp": "^0.5.1", 2787 | "pump": "^3.0.0", 2788 | "tar-stream": "^2.0.0" 2789 | } 2790 | }, 2791 | "tar-stream": { 2792 | "version": "2.2.0", 2793 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", 2794 | "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", 2795 | "dev": true, 2796 | "requires": { 2797 | "bl": "^4.0.3", 2798 | "end-of-stream": "^1.4.1", 2799 | "fs-constants": "^1.0.0", 2800 | "inherits": "^2.0.3", 2801 | "readable-stream": "^3.1.1" 2802 | } 2803 | }, 2804 | "text-table": { 2805 | "version": "0.2.0", 2806 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 2807 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 2808 | "dev": true 2809 | }, 2810 | "through": { 2811 | "version": "2.3.8", 2812 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 2813 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 2814 | "dev": true 2815 | }, 2816 | "to-fast-properties": { 2817 | "version": "2.0.0", 2818 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 2819 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 2820 | "dev": true 2821 | }, 2822 | "tsconfig-paths": { 2823 | "version": "3.12.0", 2824 | "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", 2825 | "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", 2826 | "dev": true, 2827 | "requires": { 2828 | "@types/json5": "^0.0.29", 2829 | "json5": "^1.0.1", 2830 | "minimist": "^1.2.0", 2831 | "strip-bom": "^3.0.0" 2832 | }, 2833 | "dependencies": { 2834 | "json5": { 2835 | "version": "1.0.1", 2836 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", 2837 | "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", 2838 | "dev": true, 2839 | "requires": { 2840 | "minimist": "^1.2.0" 2841 | } 2842 | } 2843 | } 2844 | }, 2845 | "type-check": { 2846 | "version": "0.4.0", 2847 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 2848 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 2849 | "dev": true, 2850 | "requires": { 2851 | "prelude-ls": "^1.2.1" 2852 | } 2853 | }, 2854 | "type-detect": { 2855 | "version": "4.0.8", 2856 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", 2857 | "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", 2858 | "dev": true 2859 | }, 2860 | "type-fest": { 2861 | "version": "0.8.1", 2862 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 2863 | "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 2864 | "dev": true 2865 | }, 2866 | "typedarray": { 2867 | "version": "0.0.6", 2868 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 2869 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", 2870 | "dev": true 2871 | }, 2872 | "unbox-primitive": { 2873 | "version": "1.0.1", 2874 | "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", 2875 | "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", 2876 | "dev": true, 2877 | "requires": { 2878 | "function-bind": "^1.1.1", 2879 | "has-bigints": "^1.0.1", 2880 | "has-symbols": "^1.0.2", 2881 | "which-boxed-primitive": "^1.0.2" 2882 | } 2883 | }, 2884 | "unbzip2-stream": { 2885 | "version": "1.3.3", 2886 | "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz", 2887 | "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==", 2888 | "dev": true, 2889 | "requires": { 2890 | "buffer": "^5.2.1", 2891 | "through": "^2.3.8" 2892 | } 2893 | }, 2894 | "uri-js": { 2895 | "version": "4.4.1", 2896 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 2897 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2898 | "dev": true, 2899 | "requires": { 2900 | "punycode": "^2.1.0" 2901 | } 2902 | }, 2903 | "util-deprecate": { 2904 | "version": "1.0.2", 2905 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2906 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2907 | "dev": true 2908 | }, 2909 | "v8-compile-cache": { 2910 | "version": "2.3.0", 2911 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", 2912 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", 2913 | "dev": true 2914 | }, 2915 | "validate-npm-package-license": { 2916 | "version": "3.0.4", 2917 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 2918 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 2919 | "dev": true, 2920 | "requires": { 2921 | "spdx-correct": "^3.0.0", 2922 | "spdx-expression-parse": "^3.0.0" 2923 | } 2924 | }, 2925 | "which": { 2926 | "version": "2.0.2", 2927 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2928 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2929 | "dev": true, 2930 | "requires": { 2931 | "isexe": "^2.0.0" 2932 | } 2933 | }, 2934 | "which-boxed-primitive": { 2935 | "version": "1.0.2", 2936 | "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", 2937 | "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", 2938 | "dev": true, 2939 | "requires": { 2940 | "is-bigint": "^1.0.1", 2941 | "is-boolean-object": "^1.1.0", 2942 | "is-number-object": "^1.0.4", 2943 | "is-string": "^1.0.5", 2944 | "is-symbol": "^1.0.3" 2945 | } 2946 | }, 2947 | "word-wrap": { 2948 | "version": "1.2.3", 2949 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 2950 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 2951 | "dev": true 2952 | }, 2953 | "wrappy": { 2954 | "version": "1.0.2", 2955 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2956 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2957 | "dev": true 2958 | }, 2959 | "ws": { 2960 | "version": "7.4.6", 2961 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", 2962 | "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", 2963 | "dev": true 2964 | }, 2965 | "xdg-basedir": { 2966 | "version": "4.0.0", 2967 | "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", 2968 | "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", 2969 | "dev": true 2970 | }, 2971 | "yallist": { 2972 | "version": "4.0.0", 2973 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 2974 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 2975 | "dev": true 2976 | }, 2977 | "yauzl": { 2978 | "version": "2.10.0", 2979 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 2980 | "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", 2981 | "dev": true, 2982 | "requires": { 2983 | "buffer-crc32": "~0.2.3", 2984 | "fd-slicer": "~1.1.0" 2985 | } 2986 | } 2987 | } 2988 | } 2989 | --------------------------------------------------------------------------------