diff --git a/.babelrc b/.babelrc deleted file mode 100644 index 0602b00..0000000 --- a/.babelrc +++ /dev/null @@ -1,12 +0,0 @@ -{ - "presets": [ - "env", - "flow" - ], - "plugins": [ - "transform-object-rest-spread", - "transform-class-properties", - ["transform-runtime", { "polyfill": true, "regenerator": true }] - ], - "compact" : true -} diff --git a/.env.example b/.env.example index fc3dc0a..578c262 100644 --- a/.env.example +++ b/.env.example @@ -1,3 +1,20 @@ NPM_USERNAME=username NPM_PASSWORD=password -NPM_EMAIL=email@email.com \ No newline at end of file +NPM_EMAIL=email@email.com + +# Connection +HOST=HOST +PORT=PORT +VHOST=VHOST + +# Device +DEVICE_KEY=DEVICE_KEY +DEVICE_ID=DEVICE_ID +SECRET=SECRET + +# Stream +CLIENT=CLIENT +SECRET=SECRET +STREAM=STREAM +DEVICE_ID=DEVICE_ID +CHANNEL=CHANNEL \ No newline at end of file diff --git a/.eslintignore b/.eslintignore index 0e909b0..e7f06c8 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,9 +1,2 @@ -./assets -./config -./flow-typed -./dist -./docs -./examples -./lib -./node_modules -./public +lib +examples \ No newline at end of file diff --git a/.eslintrc b/.eslintrc index 0da3ce3..a737067 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,24 +1,50 @@ { - "extends": "eslint:recommended", + "extends": [ + "airbnb/base", + "plugin:@typescript-eslint/eslint-recommended", + "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/recommended-requiring-type-checking" + ], "env": { - "es6": true, + "browser": true, "node": true }, - "parser": "babel-eslint", + "parser": "@typescript-eslint/parser", "parserOptions": { - "sourceType": "module", - "ecmaVersion": 6, - "ecmaFeatures": { - "impliedStrict": true - } + "project": "tsconfig.lint.json", + "sourceType": "module" }, "rules": { - "no-console": 1, - "semi": 2, - "no-control-regex": 0, "no-undef": 0, - "react/require-default-props": 0 + "no-void": 0, + "comma-dangle": 0, + "camelcase": 0, + "no-use-before-define": 0, + "no-unneeded-ternary": 0, + "no-restricted-globals": 0, + "no-unused-expressions": 0, + "consistent-return": 0, + "max-len": 0, + "arrow-body-style": 0, + "arrow-parens": 0, + "import/no-extraneous-dependencies": 0, + "func-names": 0, + "global-require": 0, + "no-underscore-dangle": 0, + "no-bitwise": 0, + "object-curly-newline": 0, + "no-unused-vars": 0, + "import/prefer-default-export": 0, + "import/no-dynamic-require": 0, + "import/no-unresolved": 0, + "import/extensions": 0, + "@typescript-eslint/interface-name-prefix": 0, + "@typescript-eslint/explicit-function-return-type": 0, + "@typescript-eslint/no-empty-interface": 0, + "@typescript-eslint/no-explicit-any": 0, + "@typescript-eslint/no-var-requires": 0 }, "plugins": [ + "@typescript-eslint" ] } diff --git a/.flowconfig b/.flowconfig deleted file mode 100644 index a59721f..0000000 --- a/.flowconfig +++ /dev/null @@ -1,23 +0,0 @@ -[ignore] -.*/assets/.* -.*/dist/.* -.*/docs/.* -.*/examples/.* -.*/lib/.* -.*/node_modules/.* -.*/public/.* -.*/package.json -.*/*.lock -.*/*.example - -[include] - -[libs] -.*/node_modules/.* - -[options] -all=true -suppress_comment= \\(.\\|\n\\)*\\flowlint-line-ignore -module.ignore_non_literal_requires=true - -[lints] diff --git a/.nvmrc.example b/.nvmrc.example index 41c4217..fe55beb 100644 --- a/.nvmrc.example +++ b/.nvmrc.example @@ -1 +1 @@ -v8.11.3 +v12.16.0 diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..dfeaea9 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,9 @@ +{ + "recommendations": [ + "EditorConfig.EditorConfig", + "christian-kohler.path-intellisense", + "mike-co.import-sorter", + "mikestead.dotenv", + "Orta.vscode-jest" + ] +} diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..2096f5d --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,29 @@ +{ + // Use IntelliSense to learn about possible Node.js debug attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Debug", + "program": "${workspaceRoot}/dist/app.js", + "smartStep": true, + "outFiles": [ + "../dist/**/*.js" + ], + "protocol": "inspector", + "env": { + "NODE_ENV": "production" + } + }, + { + "type": "node", + "request": "attach", + "name": "Nodemon Debug", + "port": 9229, + "restart": true + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100755 index 0000000..6c9b460 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,12 @@ +{ + "typescript.tsdk": "./node_modules/typescript/lib", + "files.exclude": { + "tsconfig.build.json": true, + }, + "importSorter.generalConfiguration.sortOnBeforeSave": true, + "importSorter.importStringConfiguration.tabSize": 2, + "files.trimTrailingWhitespace": true, + "editor.formatOnSave": false, + "jest.showCoverageOnLoad": true, + "jest.autoEnable": false +} diff --git a/CHANGELOG.md b/CHANGELOG.md index 10bf845..11b1530 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,15 @@ All notable changes to this project will be documented in this file. - `0.6.x` Releases - [0.6.0] [0.6.1] - `0.6.x` Releases - [0.6.0] [0.6.1] - `0.7.x` Releases - [0.7.0] [0.7.1] [0.7.2] [0.7.3] [0.7.4] [0.7.5] [0.7.6] [0.7.7] [0.7.8] [0.7.9] [0.7.11] [0.7.12] [0.7.13] [0.7.14] [0.7.15] +- `1.0.x` Releases - [1.0.0] + +--- + +## [1.0.0](https://github.com/space-bunny/node-sdk/releases/tag/v1.0.0) + +#### Changed + +- Rewrite the library in TS --- @@ -195,13 +204,13 @@ All notable changes to this project will be documented in this file. ## [0.2.0](https://github.com/space-bunny/node-sdk/releases/tag/v0.2.0) -#### Added +#### Added - Ack / Nack handling for STOMP clients - support for DiscardMine and DiscardFromApi options ## [0.1.0](https://github.com/space-bunny/node-sdk/releases/tag/v0.1.0) -#### Added +#### Added - AMQP, STOMP, MQTT clients - AMQP, STOMP, MQTT stream clients diff --git a/EmptyModule.js b/EmptyModule.js deleted file mode 100644 index 6e56ce3..0000000 --- a/EmptyModule.js +++ /dev/null @@ -1,3 +0,0 @@ -type EmptyModule = { [key: string]: string }; -const EmptyModuleType: EmptyModule = {}; -export default EmptyModuleType; diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..dddff04 --- /dev/null +++ b/LICENSE @@ -0,0 +1 @@ +(c) Copyright 2018 Fancy Pixel S.r.l., all rights reserved. diff --git a/config/constants.js b/config/constants.js deleted file mode 100644 index a659ca7..0000000 --- a/config/constants.js +++ /dev/null @@ -1,81 +0,0 @@ -const CONFIG = { - endpoint: { - protocol: 'http', - secureProtocol: 'https', - host: 'api.spacebunny.io', - port: 80, - securePort: 443, - deviceConfigurationsPath: 'device_configurations', - liveStreamKeyConfigurationsPath: 'live_stream_key_configurations' - }, - tls: { - secureProtocol: 'TLSv1_2_method' - }, - fromApiHeader: 'x-from-sb-api', - protocol: 'amqp', - inboxTopic: 'inbox', - liveStreamSuffix: 'live_stream', - tempQueueSuffix: 'temp', - amqp: { - ackTypes: ['auto', 'manual'], - protocol: 'amqp', - tls: { - protocol: 'amqps' - }, - connection: { - opts: {} - }, - inputQueueArgs: {}, - deviceExchangeArgs: {}, - subscribeArgs: { noAck: true, requeue: false, allUpTo: false }, - publishArgs: { withConfirm: false }, - socketOptions: { frameMax: 32768, heartbeat: 60 }, - stream: { - defaultStreamRoutingKey: '#', - streamQueueArguments: { exclusive: true, autoDelete: true, durable: false } - } - }, - mqtt: { - protocol: 'mqtt', - tls: { - protocol: 'mqtts', - rejectUnauthorized: true - }, - connection: { - opts: { qos: 1, clean: true }, - timeout: 5000 - }, - stream: { - defaultStreamRoutingKey: '#' - } - }, - stomp: { - ackTypes: ['client'], - connection: { - headers: { - max_hbrlck_fails: 10, - 'accept-version': '1.0,1.1,1.2', - 'heart-beat': '10000,10000' - }, - opts: {} - }, - existingQueuePrefix: 'amq/queue', - defaultResource: 'exchange', - stream: { - exchangePrefix: 'exchange', - defaultPattern: '#' - } - }, - webStomp: { - ackTypes: ['client'], - webSocket: { - protocol: 'ws', - tls: { - protocol: 'wss', - }, - endpoint: 'ws' - } - } -}; - -export default CONFIG; diff --git a/examples/device/amqp/publisher.ts b/examples/device/amqp/publisher.ts new file mode 100644 index 0000000..884ca87 --- /dev/null +++ b/examples/device/amqp/publisher.ts @@ -0,0 +1,116 @@ +import dotenv from 'dotenv'; +import minimist from 'minimist'; +import { promisify } from 'util'; + +import { AmqpClient } from '../../../src/index'; +import { ISpaceBunnyParams } from '../../../src/spacebunny'; + +dotenv.config(); +const args = minimist(process.argv.slice(2)); +(async () => { + // Prerequisites: you have created a device through the Space Bunny's web interface. You also have a 'data' channel (name + // is not mandatory, but we'll use this for our example). You have also enabled 'data' channel for the device. See our + // Getting Started [link] for a quick introduction to Space Bunny's base concepts. + + // Once everything is set up get your Device-Key from Space Bunny's web application: on the web interface, + // go to devices section and create or pick an existing device. Click on the 'SHOW CONFIGURATION' link, + // copy the Device-Key and substitute it here: + const deviceKey = args.deviceKey || args['device-key'] || args.device_key || process.env.DEVICE_KEY || 'my-device-key'; + const tls = (args.tls !== 'false'); + let connectionParams: ISpaceBunnyParams = { tls, autoReconnect: false, heartbeat: 10, connectionTimeout: 5000 }; + + if (deviceKey !== undefined) { + connectionParams = { ...connectionParams, deviceKey }; + } else { + // You can also provide full manual configuration + connectionParams = { + ...connectionParams, + deviceId: process.env.DEVICE_ID, + secret: process.env.SECRET, + host: process.env.HOST, + port: parseInt(process.env.PORT, 10) || 5671, // default for AMQPs + vhost: process.env.VHOST, + }; + } + + // You can also provide different endpoint configurations to use a different endpoint, default is api.spacebunny.io + // connectionParams.endpoint = { + // protocol: 'http', + // secureProtocol: 'https', + // host: 'api.spacebunny.io', + // port: 80, + // securePort: 443, + // deviceConfigurationsPath: 'device_configurations', + // liveStreamKeyConfigurationsPath: 'live_stream_key_configurations' + // }; + + // If needed you can also provide the client certificates path + // const connectionParams = { + // ca: '/path/to/ca_certificate.pem', + // cert: '/path/to/client_certificate.pem', + // key: '/path/to/client_key.pem' + // }; + + // Let's instantiate a Space Bunny AMQP client, providing the Device-Key, that's the fastest and simplest method + // to create a new client. + const amqpClient = new AmqpClient(connectionParams); + process.once('SIGINT', () => { + amqpClient.disconnect().then((res) => { + console.log('Bye Bye.'); // eslint-disable-line no-console + const status = (res === true) ? 0 : 1; + process.exit(status); + // eslint-disable-next-line no-console + }).catch((error) => { console.error(error); }); + }); + + // Connect the client + await amqpClient.connect(); + + // At this point the SDK is auto-configured and ready to use. + // Configurations are automatically lazy-fetched by the SDK itself + + // PUBLISHING MESSAGES + + // As said in the prerequisites, we'll assume that 'data' channel is enabled for your device. + // If you're in doubt, please check that this is true through Space Bunny's web interface, by clicking on the device + // 'edit' (pencil icon) and verifying that 'data' channel is present and enabled for this device. Take a look at Getting + // Started [link] for a quick introduction to Space Bunny's base concepts. + + // Let's publish, for instance, some JSON. Payload can be everything you want, Space Bunny does not impose any constraint + // on format or content of payload. + + // Publish one message every second for a minute. + for (let n = 0; n < 60; n += 1) { + // 'publish' takes two mandatory arguments (channel's name and payload) and a variety of options: one of these options is + // the 'withConfirm' flag: when set to true this requires Space Bunny's platform to confirm the receipt of the message. + // This is useful when message delivery assurance is mandatory for your use case. + // Take a look at SDK's documentation for further details. + const content = { some: 'json' }; + const publishOpts = { withConfirm: true }; + // Select a channel or you can use amqpClient.channels() to get the complete channels' list + const channel = args.channel || 'data'; + try { + // eslint-disable-next-line no-await-in-loop + await amqpClient.publish(channel, content, publishOpts); + console.log(`Published message ${(n + 1)}`); // eslint-disable-line no-console + if (n === 59) { + // eslint-disable-next-line no-await-in-loop + await amqpClient.disconnect(); + } + } catch (error) { + console.error(error); // eslint-disable-line no-console + } + const timeout = promisify(setTimeout); + // eslint-disable-next-line no-await-in-loop + await timeout((n + 1) * 1000); + } + + // Bonus points: + // + // Space Bunny AMQP SDK uses "amqplib" [http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish] under the hoods so it supports all the features and attributes provided + // by the AMQP protocol. For instance, providing 'headers' or a 'timestamp' attribute is just a matter of adding it + // as options after the payload: + + // 'timestamp' property and 'Timestamp' header can be used to provide a 'captured at' timestamp to data persisted + // by 'Persistence' plugin. Learn more [link]. +})(); diff --git a/examples/device/amqp/receiver.js b/examples/device/amqp/receiver.js index a2a68a6..4de0a0b 100644 --- a/examples/device/amqp/receiver.js +++ b/examples/device/amqp/receiver.js @@ -1,9 +1,9 @@ -const AmqpClient = require('../../../lib/spacebunny').AmqpClient; const args = require('minimist')(process.argv.slice(2)); +const { AmqpClient } = require('../../../lib/spacebunny'); // callback called when a message is received const messageCallback = (amqpMessage) => { - console.log(amqpMessage); // eslint-disable-line no-console + console.log(amqpMessage); // eslint-disable-line no-console }; // Prerequisites: you have created a device through the Space Bunny's web interface. You also have a 'data' channel (name @@ -13,8 +13,8 @@ const messageCallback = (amqpMessage) => { // Once everything is set up get your Device-Key from Space Bunny's web application: on the web interface, // go to devices section and create or pick an existing device. Click on the 'SHOW CONFIGURATION' link, // copy the Device-Key and substitute it here: -const deviceKey = args['deviceKey'] || args['device-key'] || args['device_key'] || 'my-device-key'; -const tls = (args['tls'] !== false); +const deviceKey = args.deviceKey || args['device-key'] || args.device_key || 'my-device-key'; +const tls = (args.tls !== false); const connectionParams = { deviceKey, tls }; // You can also provide the endpointUrl to use a different end point, default is http://api.demo.spacebunny.io @@ -47,10 +47,10 @@ const amqpClient = new AmqpClient(connectionParams); // will be opened calling the onReceive method const disconnect = () => { amqpClient.disconnect().then(() => { - console.log('Bye Bye.'); // eslint-disable-line no-console + console.log('Bye Bye.'); // eslint-disable-line no-console process.exit(0); - }).catch(function(reason) { - console.error(reason); // eslint-disable-line no-console + }).catch((reason) => { + console.error(reason); // eslint-disable-line no-console process.exit(1); }); }; @@ -78,10 +78,10 @@ const subscriptionOpts = { noAck: false, allUpTo: false, requeue: false, discard // When a message is sent on the inbox channel of the current device, the callback function will bel called amqpClient.connect().then(() => { amqpClient.onReceive(messageCallback, subscriptionOpts).then(() => { - console.log('Start receiving..'); // eslint-disable-line no-console + console.log('Start receiving..'); // eslint-disable-line no-console }).catch((reason) => { - console.error(reason); // eslint-disable-line no-console + console.error(reason); // eslint-disable-line no-console }); }).catch((reason) => { - console.error(reason); // eslint-disable-line no-console + console.error(reason); // eslint-disable-line no-console }); diff --git a/examples/device/amqp/receiver.ts b/examples/device/amqp/receiver.ts new file mode 100644 index 0000000..2161bdf --- /dev/null +++ b/examples/device/amqp/receiver.ts @@ -0,0 +1,107 @@ +import dotenv from 'dotenv'; +import minimist from 'minimist'; + +import { AmqpClient } from '../../../src/index'; +import { ISpaceBunnyParams } from '../../../src/spacebunny'; + +dotenv.config(); +const args = minimist(process.argv.slice(2)); + +(async () => { + try { + // callback called when a message is received + const messageCallback = (amqpMessage: any) => { + console.log(amqpMessage); // eslint-disable-line no-console + }; + + // Prerequisites: you have created a device through the Space Bunny's web interface. You also have a 'data' channel (name + // is not mandatory, but we'll use this for our example). You have also enabled 'data' channel for the device. See our + // Getting Started [link] for a quick introduction to Space Bunny's base concepts. + + // Once everything is set up get your Device-Key from Space Bunny's web application: on the web interface, + // go to devices section and create or pick an existing device. Click on the 'SHOW CONFIGURATION' link, + // copy the Device-Key and substitute it here: + const deviceKey = args.deviceKey || args['device-key'] || args.device_key || process.env.DEVICE_KEY; + const tls = (args.tls !== 'false'); + let connectionParams: ISpaceBunnyParams = { tls, heartbeat: 10, connectionTimeout: 5000 }; + + if (deviceKey !== undefined) { + connectionParams = { ...connectionParams, deviceKey }; + } else { + // You can also provide full manual configuration + connectionParams = { + ...connectionParams, + deviceId: process.env.DEVICE_ID, + secret: process.env.SECRET, + host: process.env.HOST, + port: parseInt(process.env.PORT, 10) || 5671, // default for AMQPs + vhost: process.env.VHOST, + }; + } + + // You can also provide different endpoint configurations to use a different endpoint, default is api.spacebunny.io + // connectionParams.endpoint = { + // protocol: 'http', + // secureProtocol: 'https', + // host: 'api.spacebunny.io', + // port: 80, + // securePort: 443, + // deviceConfigurationsPath: 'device_configurations', + // liveStreamKeyConfigurationsPath: 'live_stream_key_configurations' + // }; + + // If needed you can also provide the client certificates path + // const connectionParams = { + // ca: '/path/to/ca_certificate.pem', + // cert: '/path/to/client_certificate.pem', + // key: '/path/to/client_key.pem' + // }; + + // Let's instantiate a Space Bunny AMQP client, providing the Device-Key, that's the fastest and simplest method + // to create a new client. + const amqpClient = new AmqpClient(connectionParams); + process.once('SIGINT', () => { + amqpClient.disconnect().then((res) => { + console.log('Bye Bye.'); // eslint-disable-line no-console + const status = (res === true) ? 0 : 1; + process.exit(status); + // eslint-disable-next-line no-console + }).catch((error) => { console.error(error); }); + }); + + // Bind log event + // eslint-disable-next-line no-console + amqpClient.on('log', (level, message) => { console.log(message); }); + + // At this point the SDK is auto-configured and ready to use. + // Configurations are automatically lazy-fetched by the SDK itself and the connection + // will be opened calling the onReceive method + + // RECEIVING MESSAGES + // 'onReceive' options: + + // noAck (default true) the broker won't expect an acknowledgement of messages delivered + + // 'discardFromApi' (default false) causes the SDK to filter out messages published through APIs (or WEB UI) or + // generally sent directly through Space Bunny's platform. + + // 'discardMine' (default false) causes the SDK to filter out auto-messages i.e. messages sent from this device + // and, for some reason, returned to the sender. This can happen in some particular situation such as when using m2m + // groups. + + // 'allUpTo' (default true), all outstanding messages prior to and including the given message shall be considered acknowledged. + // If false, or omitted, only the message supplied is acknowledged. + + // 'requeue' (default false) is truthy, the server will try to put the message or messages back on the queue or queues from which they came. + const subscriptionOpts = { noAck: false, allUpTo: false, requeue: false, discardMine: false, discardFromApi: false }; + + // Connect the client + await amqpClient.connect(); + + // When a message is sent on the inbox channel of the current device, the callback function will bel called + await amqpClient.onMessage(messageCallback, subscriptionOpts); + console.log('Start receiving..'); // eslint-disable-line no-console + } catch (error) { + console.error(error); // eslint-disable-line no-console + } +})(); diff --git a/examples/device/mqtt/publisher.ts b/examples/device/mqtt/publisher.ts new file mode 100644 index 0000000..d4de7d6 --- /dev/null +++ b/examples/device/mqtt/publisher.ts @@ -0,0 +1,111 @@ +import dotenv from 'dotenv'; +import minimist from 'minimist'; +import { promisify } from 'util'; + +import { MqttClient } from '../../../src/index'; +import { ISpaceBunnyParams } from '../../../src/spacebunny'; + +dotenv.config(); +const args = minimist(process.argv.slice(2)); +(async () => { + // Prerequisites: you have created a device through the Space Bunny's web interface. You also have a 'data' channel (name + // is not mandatory, but we'll use this for our example). You have also enabled 'data' channel for the device. See our + // Getting Started [link] for a quick introduction to Space Bunny's base concepts. + + // Once everything is set up get your Device-Key from Space Bunny's web application: on the web interface, + // go to devices section and create or pick an existing device. Click on the 'SHOW CONFIGURATION' link, + // copy the Device-Key and substitute it here: + const deviceKey = args.deviceKey || args['device-key'] || args.device_key || process.env.DEVICE_KEY || 'my-device-key'; + const tls = (args.tls !== 'false'); + let connectionParams: ISpaceBunnyParams = { tls, autoReconnect: false, heartbeat: 10, connectionTimeout: 5000 }; + + if (deviceKey !== undefined) { + connectionParams = { ...connectionParams, deviceKey }; + } else { + // You can also provide full manual configuration + connectionParams = { + ...connectionParams, + deviceId: process.env.DEVICE_ID, + secret: process.env.SECRET, + host: process.env.HOST, + port: parseInt(process.env.PORT, 10) || 1883, // default for MQTTs + vhost: process.env.VHOST, + }; + } + + // You can also provide different endpoint configurations to use a different endpoint, default is api.spacebunny.io + // connectionParams.endpoint = { + // protocol: 'http', + // secureProtocol: 'https', + // host: 'api.spacebunny.io', + // port: 80, + // securePort: 443, + // deviceConfigurationsPath: 'device_configurations', + // liveStreamKeyConfigurationsPath: 'live_stream_key_configurations' + // }; + + // If needed you can also provide the client certificates path + // const connectionParams = { + // ca: '/path/to/ca_certificate.pem', + // cert: '/path/to/client_certificate.pem', + // key: '/path/to/client_key.pem' + // }; + + // Let's instantiate a Space Bunny AMQP client, providing the Device-Key, that's the fastest and simplest method + // to create a new client. + const mqttClient = new MqttClient(connectionParams); + process.once('SIGINT', () => { + mqttClient.disconnect().then((res) => { + console.log('Bye Bye.'); // eslint-disable-line no-console + const status = (res === true) ? 0 : 1; + process.exit(status); + // eslint-disable-next-line no-console + }).catch((error) => { console.error(error); }); + }); + + // Connect the client + await mqttClient.connect(); + + // At this point the SDK is auto-configured and ready to use. + // Configurations are automatically lazy-fetched by the SDK itself + + // PUBLISHING MESSAGES + + // As said in the prerequisites, we'll assume that 'data' channel is enabled for your device. + // If you're in doubt, please check that this is true through Space Bunny's web interface, by clicking on the device + // 'edit' (pencil icon) and verifying that 'data' channel is present and enabled for this device. Take a look at Getting + // Started [link] for a quick introduction to Space Bunny's base concepts. + + // Let's publish, for instance, some JSON. Payload can be everything you want, Space Bunny does not impose any constraint + // on format or content of payload. + + // Publish one message every second for a minute. + for (let n = 0; n < 60; n += 1) { + const content = { some: 'json' }; + // Select a channel or you can use mqttClient.channels() to get the complete channels' list + const channel = args.channel || 'data'; + try { + // eslint-disable-next-line no-await-in-loop + await mqttClient.publish(channel, content); + console.log(`Published message ${(n + 1)}`); // eslint-disable-line no-console + if (n === 59) { + // eslint-disable-next-line no-await-in-loop + await mqttClient.disconnect(); + } + } catch (error) { + console.error(error); // eslint-disable-line no-console + } + const timeout = promisify(setTimeout); + // eslint-disable-next-line no-await-in-loop + await timeout((n + 1) * 1000); + } + + // Bonus points: + // + // Space Bunny AMQP SDK uses "amqplib" [http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish] under the hoods so it supports all the features and attributes provided + // by the AMQP protocol. For instance, providing 'headers' or a 'timestamp' attribute is just a matter of adding it + // as options after the payload: + + // 'timestamp' property and 'Timestamp' header can be used to provide a 'captured at' timestamp to data persisted + // by 'Persistence' plugin. Learn more [link]. +})(); diff --git a/examples/device/mqtt/receiver.ts b/examples/device/mqtt/receiver.ts new file mode 100644 index 0000000..cd29aa6 --- /dev/null +++ b/examples/device/mqtt/receiver.ts @@ -0,0 +1,92 @@ +import dotenv from 'dotenv'; +import minimist from 'minimist'; + +import { MqttClient } from '../../../src/index'; +import { ISpaceBunnyParams } from '../../../src/spacebunny'; + +dotenv.config(); +const args = minimist(process.argv.slice(2)); + +(async () => { + try { + // callback called when a message is received + const messageCallback = (topic: string, message: any) => { + console.log(topic, message); // eslint-disable-line no-console + }; + + // Prerequisites: you have created a device through the Space Bunny's web interface. You also have a 'data' channel (name + // is not mandatory, but we'll use this for our example). You have also enabled 'data' channel for the device. See our + // Getting Started [link] for a quick introduction to Space Bunny's base concepts. + + // Once everything is set up get your Device-Key from Space Bunny's web application: on the web interface, + // go to devices section and create or pick an existing device. Click on the 'SHOW CONFIGURATION' link, + // copy the Device-Key and substitute it here: + const deviceKey = args.deviceKey || args['device-key'] || args.device_key || process.env.DEVICE_KEY; + const tls = (args.tls !== 'false'); + let connectionParams: ISpaceBunnyParams = { tls, heartbeat: 10, connectionTimeout: 5000 }; + + if (deviceKey !== undefined) { + connectionParams = { ...connectionParams, deviceKey }; + } else { + // You can also provide full manual configuration + connectionParams = { + ...connectionParams, + deviceId: process.env.DEVICE_ID, + secret: process.env.SECRET, + host: process.env.HOST, + port: parseInt(process.env.PORT, 10) || 1883, // default for MQTTs + vhost: process.env.VHOST, + }; + } + + // You can also provide different endpoint configurations to use a different endpoint, default is api.spacebunny.io + // connectionParams.endpoint = { + // protocol: 'http', + // secureProtocol: 'https', + // host: 'api.spacebunny.io', + // port: 80, + // securePort: 443, + // deviceConfigurationsPath: 'device_configurations', + // liveStreamKeyConfigurationsPath: 'live_stream_key_configurations' + // }; + + // If needed you can also provide the client certificates path + // const connectionParams = { + // ca: '/path/to/ca_certificate.pem', + // cert: '/path/to/client_certificate.pem', + // key: '/path/to/client_key.pem' + // }; + + // Let's instantiate a Space Bunny AMQP client, providing the Device-Key, that's the fastest and simplest method + // to create a new client. + const mqttClient = new MqttClient(connectionParams); + process.once('SIGINT', () => { + mqttClient.disconnect().then((res) => { + console.log('Bye Bye.'); // eslint-disable-line no-console + const status = (res === true) ? 0 : 1; + process.exit(status); + // eslint-disable-next-line no-console + }).catch((error) => { console.error(error); }); + }); + + // Bind log event + // eslint-disable-next-line no-console + mqttClient.on('log', (level, message) => { console.log(message); }); + + // At this point the SDK is auto-configured and ready to use. + // Configurations are automatically lazy-fetched by the SDK itself and the connection + // will be opened calling the onReceive method + + // Connect the client + await mqttClient.connect(); + + // RECEIVING MESSAGES + // 'onMessage' options: + + // When a message is sent on the inbox channel of the current device, the callback function will bel called + await mqttClient.onMessage(messageCallback); + console.log('Start receiving..'); // eslint-disable-line no-console + } catch (error) { + console.error(error); // eslint-disable-line no-console + } +})(); diff --git a/examples/device/stomp/receiver.ts b/examples/device/stomp/receiver.ts new file mode 100644 index 0000000..f839bfd --- /dev/null +++ b/examples/device/stomp/receiver.ts @@ -0,0 +1,107 @@ +import dotenv from 'dotenv'; +import minimist from 'minimist'; + +import { StompClient } from '../../../src/index'; +import { ISpaceBunnyParams } from '../../../src/spacebunny'; + +dotenv.config(); +const args = minimist(process.argv.slice(2)); + +(async () => { + try { + // callback called when a message is received + const messageCallback = (amqpMessage: any) => { + console.log(amqpMessage); // eslint-disable-line no-console + }; + + // Prerequisites: you have created a device through the Space Bunny's web interface. You also have a 'data' channel (name + // is not mandatory, but we'll use this for our example). You have also enabled 'data' channel for the device. See our + // Getting Started [link] for a quick introduction to Space Bunny's base concepts. + + // Once everything is set up get your Device-Key from Space Bunny's web application: on the web interface, + // go to devices section and create or pick an existing device. Click on the 'SHOW CONFIGURATION' link, + // copy the Device-Key and substitute it here: + const deviceKey = args.deviceKey || args['device-key'] || args.device_key || process.env.DEVICE_KEY; + const tls = (args.tls !== 'false'); + let connectionParams: ISpaceBunnyParams = { tls, heartbeat: 10, connectionTimeout: 5000 }; + + if (deviceKey !== undefined) { + connectionParams = { ...connectionParams, deviceKey }; + } else { + // You can also provide full manual configuration + connectionParams = { + ...connectionParams, + deviceId: process.env.DEVICE_ID, + secret: process.env.SECRET, + host: process.env.HOST, + port: parseInt(process.env.PORT, 10) || 5671, // default for AMQPs + vhost: process.env.VHOST, + }; + } + + // You can also provide different endpoint configurations to use a different endpoint, default is api.spacebunny.io + // connectionParams.endpoint = { + // protocol: 'http', + // secureProtocol: 'https', + // host: 'api.spacebunny.io', + // port: 80, + // securePort: 443, + // deviceConfigurationsPath: 'device_configurations', + // liveStreamKeyConfigurationsPath: 'live_stream_key_configurations' + // }; + + // If needed you can also provide the client certificates path + // const connectionParams = { + // ca: '/path/to/ca_certificate.pem', + // cert: '/path/to/client_certificate.pem', + // key: '/path/to/client_key.pem' + // }; + + // Let's instantiate a Space Bunny AMQP client, providing the Device-Key, that's the fastest and simplest method + // to create a new client. + const stompClient = new StompClient(connectionParams); + process.once('SIGINT', () => { + stompClient.disconnect().then((res) => { + console.log('Bye Bye.'); // eslint-disable-line no-console + const status = (res === true) ? 0 : 1; + process.exit(status); + // eslint-disable-next-line no-console + }).catch((error) => { console.error(error); }); + }); + + // Bind log event + // eslint-disable-next-line no-console + stompClient.on('log', (level, message) => { console.log(message); }); + + // At this point the SDK is auto-configured and ready to use. + // Configurations are automatically lazy-fetched by the SDK itself and the connection + // will be opened calling the onReceive method + + // RECEIVING MESSAGES + // 'onReceive' options: + + // noAck (default true) the broker won't expect an acknowledgement of messages delivered + + // 'discardFromApi' (default false) causes the SDK to filter out messages published through APIs (or WEB UI) or + // generally sent directly through Space Bunny's platform. + + // 'discardMine' (default false) causes the SDK to filter out auto-messages i.e. messages sent from this device + // and, for some reason, returned to the sender. This can happen in some particular situation such as when using m2m + // groups. + + // 'allUpTo' (default true), all outstanding messages prior to and including the given message shall be considered acknowledged. + // If false, or omitted, only the message supplied is acknowledged. + + // 'requeue' (default false) is truthy, the server will try to put the message or messages back on the queue or queues from which they came. + const subscriptionOpts = { noAck: false, allUpTo: false, requeue: false, discardMine: false, discardFromApi: false }; + + // Connect the client + await stompClient.connect(); + + // When a message is sent on the inbox channel of the current device, the callback function will bel called + await stompClient.onMessage(messageCallback, subscriptionOpts); + console.log('Start receiving..'); // eslint-disable-line no-console + } catch (error) { + console.error(error); // eslint-disable-line no-console + } +})(); diff --git a/examples/stream/amqp/streamer.ts b/examples/stream/amqp/streamer.ts new file mode 100644 index 0000000..ec8dcc7 --- /dev/null +++ b/examples/stream/amqp/streamer.ts @@ -0,0 +1,120 @@ +import dotenv from 'dotenv'; +import minimist from 'minimist'; + +import { AmqpStreamClient } from '../../../src/index'; +import { ISpaceBunnyParams } from '../../../src/spacebunny'; + +dotenv.config(); +const args = minimist(process.argv.slice(2)); +(async () => { + try { + // callback called when a message is received + const messageCallback = (content) => { + console.log(content); // eslint-disable-line no-console + }; + + const tls = (args.tls !== 'false'); + let connectionParams: ISpaceBunnyParams = { tls, autoReconnect: false, heartbeat: 10, connectionTimeout: 5000 }; + const client = args.client || process.env.CLIENT; + const secret = args.secret || process.env.SECRET; + + // Auto Config + // You can also provide the endpointUrl to use a different end point, default is http://api.demo.spacebunny.io + connectionParams = { + ...connectionParams, + client, + secret, + }; + + const host = args.host || process.env.HOST; + const vhost = args.vhost || process.env.VHOST; + const port = parseInt(process.env.PORT, 10) || 5671; // default for AMQPs + if (host !== undefined && vhost !== undefined && port !== undefined) { + // You can also provide full manual configuration + connectionParams = { + ...connectionParams, + host, + port, + vhost, + }; + } + + // Auto Config with tls + // You can also provide the endpointUrl to use a different end point, default is http://api.demo.spacebunny.io + // const connectionParams = { + // client: 'your-client-id', + // secret: 'your-secret', + // tls: true, + // ca: '/path/to/ca_certificate.pem', + // cert: '/path/to/client_certificate.pem', + // key: '/path/to/client_key.pem' + // }; + + // Manual Config + // const connectionParams = { + // client: 'your-client-id', + // secret: 'your-secret', + // host: 'host', + // port: 61613, // default for MQTT + // vhost: 'vhost' + // }; + + // Stream hooks contains the stream name from which you want to collect data + // and the callback which is invoked when receiving a message on that stream + // the boolean cache option can be passed to specify the stream connection mode. + // + // Options: + // stream: represents the stream name + // cache: (default true) + // true (or missing) means that you want to read messages from the stream cache + // false means that you want to read messages in a temporary queue that will be delete on disconnect + + // const streams = ['data', 'alarms']; + const stream = (args.stream || process.env.STREAM || '').split(' '); + const streams = Array.isArray(stream) ? stream : [stream]; + const streamHooks = []; + for (let index = 0; index < streams.length; index += 1) { + const streamName = streams[index]; + streamHooks.push({ stream: streamName, callback: messageCallback, cache: false }); + } + + // Let's instantiate a Space Bunny AMQP client, providing the Device-Key, that's the fastest and simplest method + // to create a new client. + const streamClient = new AmqpStreamClient(connectionParams); + process.once('SIGINT', () => { + streamClient.disconnect().then((res) => { + console.log('Bye Bye.'); // eslint-disable-line no-console + const status = (res === true) ? 0 : 1; + process.exit(status); + // eslint-disable-next-line no-console + }).catch((error) => { console.error(error); }); + }); + + // Bind log event + // eslint-disable-next-line no-console + streamClient.on('log', (level, message, meta) => { console.log(message, ...meta); }); + + await streamClient.connect(); + + // Attach multiple hooks + await streamClient.streamFrom(streamHooks); + + // Custome stream hook, connect directly to a device channel + await streamClient.streamFrom({ + deviceId: args.deviceId || process.env.DEVICE_ID, + channel: args.channel || process.env.CHANNEL, + callback: messageCallback, + }); + + // Attach single hooks + // const tag1 = await streamClient.addStreamHook(streamHooks[0]); + // const tag2 = await streamClient.addStreamHook(streamHooks[1]); + console.log('Waiting for streamed messages..'); // eslint-disable-line no-console + + // Unsubscribe + // setTimeout(() => { streamClient.unsubscribe(tag1); }, 2000); + // setTimeout(() => { streamClient.unsubscribe(tag2); }, 5000); + } catch (error) { + console.error(error); // eslint-disable-line no-console + } +})(); diff --git a/examples/stream/mqtt/streamer.ts b/examples/stream/mqtt/streamer.ts new file mode 100644 index 0000000..a0ec386 --- /dev/null +++ b/examples/stream/mqtt/streamer.ts @@ -0,0 +1,120 @@ +import dotenv from 'dotenv'; +import minimist from 'minimist'; + +import { MqttStreamClient } from '../../../src/index'; +import { ISpaceBunnyParams } from '../../../src/spacebunny'; + +dotenv.config(); +const args = minimist(process.argv.slice(2)); +(async () => { + try { + // callback called when a message is received + const messageCallback = (content) => { + console.log(content); // eslint-disable-line no-console + }; + + const tls = (args.tls !== 'false'); + let connectionParams: ISpaceBunnyParams = { tls, autoReconnect: false, heartbeat: 10, connectionTimeout: 5000 }; + const client = args.client || process.env.CLIENT; + const secret = args.secret || process.env.SECRET; + + // Auto Config + // You can also provide the endpointUrl to use a different end point, default is http://api.demo.spacebunny.io + connectionParams = { + ...connectionParams, + client, + secret, + }; + + const host = args.host || process.env.HOST; + const vhost = args.vhost || process.env.VHOST; + const port = parseInt(process.env.PORT, 10) || 5671; // default for AMQPs + if (host !== undefined && vhost !== undefined && port !== undefined) { + // You can also provide full manual configuration + connectionParams = { + ...connectionParams, + host, + port, + vhost, + }; + } + + // Auto Config with tls + // You can also provide the endpointUrl to use a different end point, default is http://api.demo.spacebunny.io + // const connectionParams = { + // client: 'your-client-id', + // secret: 'your-secret', + // tls: true, + // ca: '/path/to/ca_certificate.pem', + // cert: '/path/to/client_certificate.pem', + // key: '/path/to/client_key.pem' + // }; + + // Manual Config + // const connectionParams = { + // client: 'your-client-id', + // secret: 'your-secret', + // host: 'host', + // port: 61613, // default for MQTT + // vhost: 'vhost' + // }; + + // Stream hooks contains the stream name from which you want to collect data + // and the callback which is invoked when receiving a message on that stream + // the boolean cache option can be passed to specify the stream connection mode. + // + // Options: + // stream: represents the stream name + // cache: (default true) + // true (or missing) means that you want to read messages from the stream cache + // false means that you want to read messages in a temporary queue that will be delete on disconnect + + // const streams = ['data', 'alarms']; + const stream = (args.stream || process.env.STREAM || '').split(' '); + const streams = Array.isArray(stream) ? stream : [stream]; + const streamHooks = []; + for (let index = 0; index < streams.length; index += 1) { + const streamName = streams[index]; + streamHooks.push({ stream: streamName, callback: messageCallback, cache: false }); + } + + // Let's instantiate a Space Bunny AMQP client, providing the Device-Key, that's the fastest and simplest method + // to create a new client. + const streamClient = new MqttStreamClient(connectionParams); + process.once('SIGINT', () => { + streamClient.disconnect().then((res) => { + console.log('Bye Bye.'); // eslint-disable-line no-console + const status = (res === true) ? 0 : 1; + process.exit(status); + // eslint-disable-next-line no-console + }).catch((error) => { console.error(error); }); + }); + + // Bind log event + // eslint-disable-next-line no-console + streamClient.on('log', (level, message, meta) => { console.log(message, ...meta); }); + + await streamClient.connect(); + + // Attach multiple hooks + await streamClient.streamFrom(streamHooks); + + // Custome stream hook, connect directly to a device channel + await streamClient.streamFrom([{ + deviceId: args.deviceId || process.env.DEVICE_ID, + channel: args.channel || process.env.CHANNEL, + callback: messageCallback, + }]); + + // Attach single hooks + // const tag1 = await streamClient.addStreamHook(streamHooks[0]); + // const tag2 = await streamClient.addStreamHook(streamHooks[1]); + console.log('Waiting for streamed messages..'); // eslint-disable-line no-console + + // Unsubscribe + // setTimeout(() => { streamClient.unsubscribe(tag1); }, 2000); + // setTimeout(() => { streamClient.unsubscribe(tag2); }, 5000); + } catch (error) { + console.error(error); // eslint-disable-line no-console + } +})(); diff --git a/flow-typed/npm/ajv_vx.x.x.js b/flow-typed/npm/ajv_vx.x.x.js deleted file mode 100644 index 97d0f0f..0000000 --- a/flow-typed/npm/ajv_vx.x.x.js +++ /dev/null @@ -1,340 +0,0 @@ -// flow-typed signature: 3988c6192555cb78232accf4a3d9692b -// flow-typed version: <>/ajv_v6.10.2/flow_v0.100.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'ajv' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'ajv' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'ajv/dist/ajv.bundle' { - declare module.exports: any; -} - -declare module 'ajv/dist/ajv.min' { - declare module.exports: any; -} - -declare module 'ajv/lib/ajv' { - declare module.exports: any; -} - -declare module 'ajv/lib/cache' { - declare module.exports: any; -} - -declare module 'ajv/lib/compile/async' { - declare module.exports: any; -} - -declare module 'ajv/lib/compile/equal' { - declare module.exports: any; -} - -declare module 'ajv/lib/compile/error_classes' { - declare module.exports: any; -} - -declare module 'ajv/lib/compile/formats' { - declare module.exports: any; -} - -declare module 'ajv/lib/compile/index' { - declare module.exports: any; -} - -declare module 'ajv/lib/compile/resolve' { - declare module.exports: any; -} - -declare module 'ajv/lib/compile/rules' { - declare module.exports: any; -} - -declare module 'ajv/lib/compile/schema_obj' { - declare module.exports: any; -} - -declare module 'ajv/lib/compile/ucs2length' { - declare module.exports: any; -} - -declare module 'ajv/lib/compile/util' { - declare module.exports: any; -} - -declare module 'ajv/lib/data' { - declare module.exports: any; -} - -declare module 'ajv/lib/definition_schema' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/_limit' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/_limitItems' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/_limitLength' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/_limitProperties' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/allOf' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/anyOf' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/comment' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/const' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/contains' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/custom' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/dependencies' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/enum' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/format' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/if' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/index' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/items' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/multipleOf' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/not' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/oneOf' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/pattern' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/properties' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/propertyNames' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/ref' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/required' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/uniqueItems' { - declare module.exports: any; -} - -declare module 'ajv/lib/dotjs/validate' { - declare module.exports: any; -} - -declare module 'ajv/lib/keyword' { - declare module.exports: any; -} - -declare module 'ajv/scripts/bundle' { - declare module.exports: any; -} - -declare module 'ajv/scripts/compile-dots' { - declare module.exports: any; -} - -// Filename aliases -declare module 'ajv/dist/ajv.bundle.js' { - declare module.exports: $Exports<'ajv/dist/ajv.bundle'>; -} -declare module 'ajv/dist/ajv.min.js' { - declare module.exports: $Exports<'ajv/dist/ajv.min'>; -} -declare module 'ajv/lib/ajv.js' { - declare module.exports: $Exports<'ajv/lib/ajv'>; -} -declare module 'ajv/lib/cache.js' { - declare module.exports: $Exports<'ajv/lib/cache'>; -} -declare module 'ajv/lib/compile/async.js' { - declare module.exports: $Exports<'ajv/lib/compile/async'>; -} -declare module 'ajv/lib/compile/equal.js' { - declare module.exports: $Exports<'ajv/lib/compile/equal'>; -} -declare module 'ajv/lib/compile/error_classes.js' { - declare module.exports: $Exports<'ajv/lib/compile/error_classes'>; -} -declare module 'ajv/lib/compile/formats.js' { - declare module.exports: $Exports<'ajv/lib/compile/formats'>; -} -declare module 'ajv/lib/compile/index.js' { - declare module.exports: $Exports<'ajv/lib/compile/index'>; -} -declare module 'ajv/lib/compile/resolve.js' { - declare module.exports: $Exports<'ajv/lib/compile/resolve'>; -} -declare module 'ajv/lib/compile/rules.js' { - declare module.exports: $Exports<'ajv/lib/compile/rules'>; -} -declare module 'ajv/lib/compile/schema_obj.js' { - declare module.exports: $Exports<'ajv/lib/compile/schema_obj'>; -} -declare module 'ajv/lib/compile/ucs2length.js' { - declare module.exports: $Exports<'ajv/lib/compile/ucs2length'>; -} -declare module 'ajv/lib/compile/util.js' { - declare module.exports: $Exports<'ajv/lib/compile/util'>; -} -declare module 'ajv/lib/data.js' { - declare module.exports: $Exports<'ajv/lib/data'>; -} -declare module 'ajv/lib/definition_schema.js' { - declare module.exports: $Exports<'ajv/lib/definition_schema'>; -} -declare module 'ajv/lib/dotjs/_limit.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/_limit'>; -} -declare module 'ajv/lib/dotjs/_limitItems.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/_limitItems'>; -} -declare module 'ajv/lib/dotjs/_limitLength.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/_limitLength'>; -} -declare module 'ajv/lib/dotjs/_limitProperties.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/_limitProperties'>; -} -declare module 'ajv/lib/dotjs/allOf.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/allOf'>; -} -declare module 'ajv/lib/dotjs/anyOf.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/anyOf'>; -} -declare module 'ajv/lib/dotjs/comment.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/comment'>; -} -declare module 'ajv/lib/dotjs/const.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/const'>; -} -declare module 'ajv/lib/dotjs/contains.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/contains'>; -} -declare module 'ajv/lib/dotjs/custom.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/custom'>; -} -declare module 'ajv/lib/dotjs/dependencies.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/dependencies'>; -} -declare module 'ajv/lib/dotjs/enum.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/enum'>; -} -declare module 'ajv/lib/dotjs/format.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/format'>; -} -declare module 'ajv/lib/dotjs/if.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/if'>; -} -declare module 'ajv/lib/dotjs/index.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/index'>; -} -declare module 'ajv/lib/dotjs/items.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/items'>; -} -declare module 'ajv/lib/dotjs/multipleOf.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/multipleOf'>; -} -declare module 'ajv/lib/dotjs/not.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/not'>; -} -declare module 'ajv/lib/dotjs/oneOf.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/oneOf'>; -} -declare module 'ajv/lib/dotjs/pattern.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/pattern'>; -} -declare module 'ajv/lib/dotjs/properties.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/properties'>; -} -declare module 'ajv/lib/dotjs/propertyNames.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/propertyNames'>; -} -declare module 'ajv/lib/dotjs/ref.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/ref'>; -} -declare module 'ajv/lib/dotjs/required.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/required'>; -} -declare module 'ajv/lib/dotjs/uniqueItems.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/uniqueItems'>; -} -declare module 'ajv/lib/dotjs/validate.js' { - declare module.exports: $Exports<'ajv/lib/dotjs/validate'>; -} -declare module 'ajv/lib/keyword.js' { - declare module.exports: $Exports<'ajv/lib/keyword'>; -} -declare module 'ajv/scripts/bundle.js' { - declare module.exports: $Exports<'ajv/scripts/bundle'>; -} -declare module 'ajv/scripts/compile-dots.js' { - declare module.exports: $Exports<'ajv/scripts/compile-dots'>; -} diff --git a/flow-typed/npm/amqplib_v0.5.x.js b/flow-typed/npm/amqplib_v0.5.x.js deleted file mode 100644 index e73d0bd..0000000 --- a/flow-typed/npm/amqplib_v0.5.x.js +++ /dev/null @@ -1,289 +0,0 @@ -// flow-typed signature: df43ae3289798115a31acac5953eb873 -// flow-typed version: c6154227d1/amqplib_v0.5.x/flow_>=v0.60.1 <=v0.103.x - -// @flow - -declare module 'amqplib' { - declare export type AMQPError = any; - - declare export type Message = { - content: Buffer, - fields: { - deliveryTag: string, - consumerTag: string, - exchange: string, - routingKey: string, - redelivered: boolean, - }, - properties: { - expiration: string, - userId: string, - CC: string | string[], - priority: number, - persistent: boolean, - contentType: string, - contentEncoding: string, - headers: Object, - correlationId: string, - replyTo: string, - messageId: string, - timestamp: number, - type: string, - appId: string, - }, - } - - declare export type ConnectOptions = { - +protocol?: 'amqp' | 'amqps', - +hostname?: string, - +port?: number, - +username?: string, - +password?: string, - +locale?: string, - +frameMax?: number, - +heartbeat?: number, - +vhost?: string, - } - - declare export type AssertQueueOptions = { - +exclusive?: boolean, - +durable?: boolean, - +autoDelete?: boolean, - +arguments?: Object, - +messageTtl?: number, - +expires?: number, - +deadLetterExchange?: string, - +maxLength?: number, - +maxPriority?: number, - } - - declare export type DeleteQueueOptions = { - +ifUnused?: boolean, - +ifEmpty?: boolean, - } - - declare export type AssertExchangeOptions = { - +durable?: boolean, - +internal?: boolean, - +autoDelete?: boolean, - +alternateExchange?: string, - +arguments?: Object, - } - - declare export type DeleteExchangeOptions = { - +ifUnused?: boolean, - } - - declare export type PublishOptions = { - +expiration?: string, - +userId?: string, - +CC?: string | string[], - +priority?: number, - +persistent?: boolean, - +deliveryMode?: boolean | number, - +mandatory?: boolean, - +BCC?: string | string[], - +immediate?: boolean, - +contentType?: string, - +contentEncoding?: string, - +headers?: Object, - +correlationId?: string, - +replyTo?: string, - +messageId?: string, - +timestamp?: number, - +type?: string, - +appId?: string, - } - - declare export type ConsumeOptions = { - +consumerTag?: string, - +noLocal?: boolean, - +noAck?: boolean, - +exclusive?: boolean, - +priority?: number, - +arguments?: Object, - } - - declare export type GetOptions = { - +noAck?: boolean, - } - - declare export type QueueOKReply = { - queue: string, - messageCount: number, - consumerCount: number, - } - - declare export type OKReply = { - messageCount: number, - } - - declare export type ExchangeOKReply = { - exchange: string, - } - - declare export type ConsumeOKReply = { - consumerTag: string, - } - - - declare export class Channel { - close: () => Promise, - - on: - & (('close', (() => mixed)) => void) - & (('error', ((err: any) => mixed)) => void) - & (('return', ((msg: Message) => mixed)) => void) - & (('drain', (() => mixed)) => void), - - assertQueue: (queue: string, options?: AssertQueueOptions) => Promise, - - checkQueue: (queue: string) => Promise, - - deleteQueue: (queue: string, options?: DeleteQueueOptions) => Promise, - - purgeQueue: (queue: string) => Promise, - - bindQueue: (queue: string, source: string, pattern: string, args?: Object) => Promise, - - unbindQueue: (queue: string, source: string, pattern: string, args?: Object) => Promise, - - assertExchange: (exchange: string, type: string, options?: AssertExchangeOptions) => Promise, - - checkExchange: (exchange: string) => Promise, - - deleteExchange: (name: string, options?: DeleteExchangeOptions) => Promise, - - bindExchange: (destination: string, source: string, pattern: string, args?: Object) => Promise, - - unbindExchange: (destination: string, source: string, pattern: string, args?: Object) => Promise, - - publish: (exchange: string, routingKey: string, content: Buffer, options?: PublishOptions) => boolean, - - sendToQueue: (queue: string, content: Buffer, options?: PublishOptions) => boolean, - - consume: (queue: string, (msg: ?Message) => mixed, options?: ConsumeOptions) => Promise, - - cancel: (consumerTag: string) => Promise, - - get: (queue: string, options?: GetOptions) => Promise, - - ack: (message: Message, allUpTo?: boolean) => void, - - ackAll: () => void, - - nack: (message: Message, allUpTo?: boolean, requeue?: boolean) => void, - - nackAll: (requeue?: boolean) => void, - - reject: (message: Message, requeue?: boolean) => void, - - prefetch: (count: number, global?: boolean) => void, - - recover: () => Promise, - } - - declare export class ConfirmChannel extends Channel { - waitForConfirms: () => Promise, - } - - declare export class Connection { - createChannel: () => Promise, - - createConfirmChannel: () => Promise, - - close: () => Promise, - } - - declare export var connect: (url?: string | ConnectOptions, socketOptions?: Object) => Promise -} - -declare module 'amqplib/callback_api' { - import type { - AMQPError, - AssertExchangeOptions, - AssertQueueOptions, - ConnectOptions, - ConsumeOKReply, - ConsumeOptions, - DeleteExchangeOptions, - DeleteQueueOptions, - ExchangeOKReply, - GetOptions, - Message, - OKReply, - PublishOptions, - QueueOKReply, - } from 'amqplib'; - - declare export class Channel { - close: (?(?AMQPError => void)) => void, - on: - & (('close', (() => mixed)) => void) - & (('error', ((err:?AMQPError) => mixed)) => void) - & (('return', ((msg: Message) => mixed)) => void) - & (('drain', (() => mixed)) => void), - - assertQueue: (queue: string, options: ?AssertQueueOptions, ?(?AMQPError , QueueOKReply) => mixed) => void, - - checkQueue: (queue: string, ?(?AMQPError , QueueOKReply) => mixed) => void, - - deleteQueue: (queue: string, options: ?DeleteQueueOptions, ?(?AMQPError , OKReply) => mixed) => void, - - purgeQueue: (queue: string, ?(?AMQPError , OKReply) => mixed) => void, - - bindQueue: (queue: string, source: string, pattern: string, args: ?Object, ?(?AMQPError , void) => mixed) => void, - - unbindQueue: (queue: string, source: string, pattern: string, args: ?Object, ?(?AMQPError , void) => mixed) => void, - - assertExchange: (exchange: string, type: string, options: ?AssertExchangeOptions, ?(?AMQPError , ExchangeOKReply) => mixed) => void, - - checkExchange: (?(exchange: string) => void) => void, - - deleteExchange: (name: string, options: ?DeleteExchangeOptions, ?(?AMQPError , void) => mixed) => void, - - bindExchange: (destination: string, source: string, pattern: string, args: ?Object, ?(?AMQPError , void) => mixed) => void, - - unbindExchange: (destination: string, source: string, pattern: string, args: ?Object, ?(?AMQPError , void) => mixed) => void, - - publish: (exchange: string, routingKey: string, content: Buffer, options?: PublishOptions) => boolean, - - sendToQueue: (queue: string, content: Buffer, options?: PublishOptions) => boolean, - - consume: (queue: string, (msg: ?Message) => mixed, options: ?ConsumeOptions, ?(?AMQPError , ConsumeOKReply) => mixed) => void, - - cancel: (consumerTag: string, ?(?AMQPError , void) => mixed) => void, - - get: (queue: string, options: ?GetOptions, ?(?AMQPError , Message | false) => mixed) => void, - - ack: (message: Message, allUpTo?: boolean) => void, - - ackAll: () => void, - - nack: (message: Message, allUpTo?: boolean, requeue?: boolean) => void, - - nackAll: (requeue?: boolean) => void, - - reject: (message: Message, requeue?: boolean) => void, - - prefetch: (count: number, global?: boolean) => void, - - recover: ((?AMQPError , void) => mixed) => void, - } - - declare export class ConfirmChannel extends Channel { - waitForConfirms: (?(?AMQPError ) => void) => void, - } - - declare export class Connection { - createChannel: ((?AMQPError, Channel) => mixed) => void, - - createConfirmChannel: ((?AMQPError, ConfirmChannel) => mixed) => void, - - close: (?(?AMQPError => void)) => void, - } - - declare export var connect: - & ((url?: string | ConnectOptions, (AMQPError, Connection) => void) => void) - & ((url?: string | ConnectOptions, socketOptions: Object, (AMQPError, Connection) => void) => void) -} diff --git a/flow-typed/npm/axios_v0.18.x.js b/flow-typed/npm/axios_v0.18.x.js deleted file mode 100644 index 088e0ae..0000000 --- a/flow-typed/npm/axios_v0.18.x.js +++ /dev/null @@ -1,165 +0,0 @@ -// flow-typed signature: c7fc5e55e23fbd64fda47f934043c4f8 -// flow-typed version: 7ffaa2ca07/axios_v0.18.x/flow_>=v0.93.x - -declare module 'axios' { - declare interface AxiosTransformer { - (data: T, headers?: Object): Object; - } - declare interface ProxyConfig { - host: string; - port: number; - auth?: { - username: string, - password: string, - }; - } - declare interface Cancel { - constructor(message?: string): Cancel; - message: string; - } - declare interface Canceler { - (message?: string): void; - } - declare interface CancelTokenSource { - token: CancelToken; - cancel: Canceler; - } - declare class CancelToken { - constructor(executor: (cancel: Canceler) => void): CancelToken; - static source(): CancelTokenSource; - promise: Promise; - reason?: Cancel; - throwIfRequested(): void; - } - declare interface AxiosXHRConfigBase { - adapter?: (config: AxiosXHRConfig) => Promise>; - auth?: { - username: string, - password: string, - }; - baseURL?: string; - cancelToken?: CancelToken; - headers?: Object; - httpAgent?: mixed; // Missing the type in the core flow node libdef - httpsAgent?: mixed; // Missing the type in the core flow node libdef - maxContentLength?: number; - maxRedirects?: number; - params?: Object; - paramsSerializer?: (params: Object) => string; - onUploadProgress?: (progressEvent: ProgressEvent) => void; - onDownloadProgress?: (progressEvent: ProgressEvent) => void; - proxy?: ProxyConfig | false; - responseType?: - | 'arraybuffer' - | 'blob' - | 'document' - | 'json' - | 'text' - | 'stream'; - timeout?: number; - transformRequest?: AxiosTransformer | Array>; - transformResponse?: AxiosTransformer | Array>; - validateStatus?: (status: number) => boolean; - withCredentials?: boolean; - xsrfCookieName?: string; - xsrfHeaderName?: string; - } - declare type $AxiosXHRConfigBase = AxiosXHRConfigBase; - declare interface AxiosXHRConfig extends AxiosXHRConfigBase { - data?: T; - method?: string; - url: string; - } - declare type $AxiosXHRConfig = AxiosXHRConfig; - declare class AxiosXHR { - config: AxiosXHRConfig; - data: R; - headers?: Object; - status: number; - statusText: string; - request: http$ClientRequest<> | XMLHttpRequest; - } - declare type $AxiosXHR = AxiosXHR; - declare type AxiosInterceptorIdent = number; - declare class AxiosRequestInterceptor { - use( - successHandler: ?( - response: AxiosXHRConfig - ) => Promise> | AxiosXHRConfig<*, *>, - errorHandler: ?(error: mixed) => mixed - ): AxiosInterceptorIdent; - eject(ident: AxiosInterceptorIdent): void; - } - declare class AxiosResponseInterceptor { - use( - successHandler: ?(response: AxiosXHR) => mixed, - errorHandler: ?(error: $AxiosError) => mixed - ): AxiosInterceptorIdent; - eject(ident: AxiosInterceptorIdent): void; - } - declare type AxiosPromise = Promise>; - declare class Axios { - ( - config: AxiosXHRConfig | string, - config?: AxiosXHRConfig - ): AxiosPromise; - constructor(config?: AxiosXHRConfigBase): void; - request(config: AxiosXHRConfig): AxiosPromise; - delete( - url: string, - config?: AxiosXHRConfigBase - ): AxiosPromise; - get( - url: string, - config?: AxiosXHRConfigBase - ): AxiosPromise; - head( - url: string, - config?: AxiosXHRConfigBase - ): AxiosPromise; - post( - url: string, - data?: mixed, - config?: AxiosXHRConfigBase - ): AxiosPromise; - put( - url: string, - data?: mixed, - config?: AxiosXHRConfigBase - ): AxiosPromise; - patch( - url: string, - data?: mixed, - config?: AxiosXHRConfigBase - ): AxiosPromise; - interceptors: { - request: AxiosRequestInterceptor, - response: AxiosResponseInterceptor, - }; - defaults: { headers: Object } & AxiosXHRConfig<*, *>; - } - - declare class AxiosError extends Error { - config: AxiosXHRConfig; - request?: http$ClientRequest<> | XMLHttpRequest; - response?: AxiosXHR; - code?: string; - } - - declare type $AxiosError = AxiosError; - - declare interface AxiosExport extends Axios { - ( - config: AxiosXHRConfig | string, - config?: AxiosXHRConfig - ): AxiosPromise; - Axios: typeof Axios; - Cancel: Class; - CancelToken: Class; - isCancel(value: any): boolean; - create(config?: AxiosXHRConfigBase): Axios; - all: typeof Promise.all; - spread(callback: Function): (arr: Array) => Function; - } - declare module.exports: AxiosExport; -} diff --git a/flow-typed/npm/axios_vx.x.x.js b/flow-typed/npm/axios_vx.x.x.js deleted file mode 100644 index 948875b..0000000 --- a/flow-typed/npm/axios_vx.x.x.js +++ /dev/null @@ -1,227 +0,0 @@ -// flow-typed signature: 9b626fa483ad55f8b3bd2d394d8a9464 -// flow-typed version: <>/axios_v0.19.0/flow_v0.100.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'axios' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'axios' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'axios/dist/axios' { - declare module.exports: any; -} - -declare module 'axios/dist/axios.min' { - declare module.exports: any; -} - -declare module 'axios/lib/adapters/http' { - declare module.exports: any; -} - -declare module 'axios/lib/adapters/xhr' { - declare module.exports: any; -} - -declare module 'axios/lib/axios' { - declare module.exports: any; -} - -declare module 'axios/lib/cancel/Cancel' { - declare module.exports: any; -} - -declare module 'axios/lib/cancel/CancelToken' { - declare module.exports: any; -} - -declare module 'axios/lib/cancel/isCancel' { - declare module.exports: any; -} - -declare module 'axios/lib/core/Axios' { - declare module.exports: any; -} - -declare module 'axios/lib/core/createError' { - declare module.exports: any; -} - -declare module 'axios/lib/core/dispatchRequest' { - declare module.exports: any; -} - -declare module 'axios/lib/core/enhanceError' { - declare module.exports: any; -} - -declare module 'axios/lib/core/InterceptorManager' { - declare module.exports: any; -} - -declare module 'axios/lib/core/mergeConfig' { - declare module.exports: any; -} - -declare module 'axios/lib/core/settle' { - declare module.exports: any; -} - -declare module 'axios/lib/core/transformData' { - declare module.exports: any; -} - -declare module 'axios/lib/defaults' { - declare module.exports: any; -} - -declare module 'axios/lib/helpers/bind' { - declare module.exports: any; -} - -declare module 'axios/lib/helpers/buildURL' { - declare module.exports: any; -} - -declare module 'axios/lib/helpers/combineURLs' { - declare module.exports: any; -} - -declare module 'axios/lib/helpers/cookies' { - declare module.exports: any; -} - -declare module 'axios/lib/helpers/deprecatedMethod' { - declare module.exports: any; -} - -declare module 'axios/lib/helpers/isAbsoluteURL' { - declare module.exports: any; -} - -declare module 'axios/lib/helpers/isURLSameOrigin' { - declare module.exports: any; -} - -declare module 'axios/lib/helpers/normalizeHeaderName' { - declare module.exports: any; -} - -declare module 'axios/lib/helpers/parseHeaders' { - declare module.exports: any; -} - -declare module 'axios/lib/helpers/spread' { - declare module.exports: any; -} - -declare module 'axios/lib/utils' { - declare module.exports: any; -} - -// Filename aliases -declare module 'axios/dist/axios.js' { - declare module.exports: $Exports<'axios/dist/axios'>; -} -declare module 'axios/dist/axios.min.js' { - declare module.exports: $Exports<'axios/dist/axios.min'>; -} -declare module 'axios/index' { - declare module.exports: $Exports<'axios'>; -} -declare module 'axios/index.js' { - declare module.exports: $Exports<'axios'>; -} -declare module 'axios/lib/adapters/http.js' { - declare module.exports: $Exports<'axios/lib/adapters/http'>; -} -declare module 'axios/lib/adapters/xhr.js' { - declare module.exports: $Exports<'axios/lib/adapters/xhr'>; -} -declare module 'axios/lib/axios.js' { - declare module.exports: $Exports<'axios/lib/axios'>; -} -declare module 'axios/lib/cancel/Cancel.js' { - declare module.exports: $Exports<'axios/lib/cancel/Cancel'>; -} -declare module 'axios/lib/cancel/CancelToken.js' { - declare module.exports: $Exports<'axios/lib/cancel/CancelToken'>; -} -declare module 'axios/lib/cancel/isCancel.js' { - declare module.exports: $Exports<'axios/lib/cancel/isCancel'>; -} -declare module 'axios/lib/core/Axios.js' { - declare module.exports: $Exports<'axios/lib/core/Axios'>; -} -declare module 'axios/lib/core/createError.js' { - declare module.exports: $Exports<'axios/lib/core/createError'>; -} -declare module 'axios/lib/core/dispatchRequest.js' { - declare module.exports: $Exports<'axios/lib/core/dispatchRequest'>; -} -declare module 'axios/lib/core/enhanceError.js' { - declare module.exports: $Exports<'axios/lib/core/enhanceError'>; -} -declare module 'axios/lib/core/InterceptorManager.js' { - declare module.exports: $Exports<'axios/lib/core/InterceptorManager'>; -} -declare module 'axios/lib/core/mergeConfig.js' { - declare module.exports: $Exports<'axios/lib/core/mergeConfig'>; -} -declare module 'axios/lib/core/settle.js' { - declare module.exports: $Exports<'axios/lib/core/settle'>; -} -declare module 'axios/lib/core/transformData.js' { - declare module.exports: $Exports<'axios/lib/core/transformData'>; -} -declare module 'axios/lib/defaults.js' { - declare module.exports: $Exports<'axios/lib/defaults'>; -} -declare module 'axios/lib/helpers/bind.js' { - declare module.exports: $Exports<'axios/lib/helpers/bind'>; -} -declare module 'axios/lib/helpers/buildURL.js' { - declare module.exports: $Exports<'axios/lib/helpers/buildURL'>; -} -declare module 'axios/lib/helpers/combineURLs.js' { - declare module.exports: $Exports<'axios/lib/helpers/combineURLs'>; -} -declare module 'axios/lib/helpers/cookies.js' { - declare module.exports: $Exports<'axios/lib/helpers/cookies'>; -} -declare module 'axios/lib/helpers/deprecatedMethod.js' { - declare module.exports: $Exports<'axios/lib/helpers/deprecatedMethod'>; -} -declare module 'axios/lib/helpers/isAbsoluteURL.js' { - declare module.exports: $Exports<'axios/lib/helpers/isAbsoluteURL'>; -} -declare module 'axios/lib/helpers/isURLSameOrigin.js' { - declare module.exports: $Exports<'axios/lib/helpers/isURLSameOrigin'>; -} -declare module 'axios/lib/helpers/normalizeHeaderName.js' { - declare module.exports: $Exports<'axios/lib/helpers/normalizeHeaderName'>; -} -declare module 'axios/lib/helpers/parseHeaders.js' { - declare module.exports: $Exports<'axios/lib/helpers/parseHeaders'>; -} -declare module 'axios/lib/helpers/spread.js' { - declare module.exports: $Exports<'axios/lib/helpers/spread'>; -} -declare module 'axios/lib/utils.js' { - declare module.exports: $Exports<'axios/lib/utils'>; -} diff --git a/flow-typed/npm/babel-cli_vx.x.x.js b/flow-typed/npm/babel-cli_vx.x.x.js deleted file mode 100644 index 8eae3f8..0000000 --- a/flow-typed/npm/babel-cli_vx.x.x.js +++ /dev/null @@ -1,108 +0,0 @@ -// flow-typed signature: dd6b89a36686d78376ab66a30dc99569 -// flow-typed version: <>/babel-cli_v6.26.0/flow_v0.100.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'babel-cli' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'babel-cli' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'babel-cli/bin/babel-doctor' { - declare module.exports: any; -} - -declare module 'babel-cli/bin/babel-external-helpers' { - declare module.exports: any; -} - -declare module 'babel-cli/bin/babel-node' { - declare module.exports: any; -} - -declare module 'babel-cli/bin/babel' { - declare module.exports: any; -} - -declare module 'babel-cli/lib/_babel-node' { - declare module.exports: any; -} - -declare module 'babel-cli/lib/babel-external-helpers' { - declare module.exports: any; -} - -declare module 'babel-cli/lib/babel-node' { - declare module.exports: any; -} - -declare module 'babel-cli/lib/babel/dir' { - declare module.exports: any; -} - -declare module 'babel-cli/lib/babel/file' { - declare module.exports: any; -} - -declare module 'babel-cli/lib/babel/index' { - declare module.exports: any; -} - -declare module 'babel-cli/lib/babel/util' { - declare module.exports: any; -} - -// Filename aliases -declare module 'babel-cli/bin/babel-doctor.js' { - declare module.exports: $Exports<'babel-cli/bin/babel-doctor'>; -} -declare module 'babel-cli/bin/babel-external-helpers.js' { - declare module.exports: $Exports<'babel-cli/bin/babel-external-helpers'>; -} -declare module 'babel-cli/bin/babel-node.js' { - declare module.exports: $Exports<'babel-cli/bin/babel-node'>; -} -declare module 'babel-cli/bin/babel.js' { - declare module.exports: $Exports<'babel-cli/bin/babel'>; -} -declare module 'babel-cli/index' { - declare module.exports: $Exports<'babel-cli'>; -} -declare module 'babel-cli/index.js' { - declare module.exports: $Exports<'babel-cli'>; -} -declare module 'babel-cli/lib/_babel-node.js' { - declare module.exports: $Exports<'babel-cli/lib/_babel-node'>; -} -declare module 'babel-cli/lib/babel-external-helpers.js' { - declare module.exports: $Exports<'babel-cli/lib/babel-external-helpers'>; -} -declare module 'babel-cli/lib/babel-node.js' { - declare module.exports: $Exports<'babel-cli/lib/babel-node'>; -} -declare module 'babel-cli/lib/babel/dir.js' { - declare module.exports: $Exports<'babel-cli/lib/babel/dir'>; -} -declare module 'babel-cli/lib/babel/file.js' { - declare module.exports: $Exports<'babel-cli/lib/babel/file'>; -} -declare module 'babel-cli/lib/babel/index.js' { - declare module.exports: $Exports<'babel-cli/lib/babel/index'>; -} -declare module 'babel-cli/lib/babel/util.js' { - declare module.exports: $Exports<'babel-cli/lib/babel/util'>; -} diff --git a/flow-typed/npm/babel-core_vx.x.x.js b/flow-typed/npm/babel-core_vx.x.x.js deleted file mode 100644 index 1a72c7b..0000000 --- a/flow-typed/npm/babel-core_vx.x.x.js +++ /dev/null @@ -1,234 +0,0 @@ -// flow-typed signature: 8d09f6ca97e2aa3083220d0d78ab332b -// flow-typed version: <>/babel-core_v6.26.3/flow_v0.100.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'babel-core' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'babel-core' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'babel-core/lib/api/browser' { - declare module.exports: any; -} - -declare module 'babel-core/lib/api/node' { - declare module.exports: any; -} - -declare module 'babel-core/lib/helpers/get-possible-plugin-names' { - declare module.exports: any; -} - -declare module 'babel-core/lib/helpers/get-possible-preset-names' { - declare module.exports: any; -} - -declare module 'babel-core/lib/helpers/merge' { - declare module.exports: any; -} - -declare module 'babel-core/lib/helpers/normalize-ast' { - declare module.exports: any; -} - -declare module 'babel-core/lib/helpers/resolve-from-possible-names' { - declare module.exports: any; -} - -declare module 'babel-core/lib/helpers/resolve-plugin' { - declare module.exports: any; -} - -declare module 'babel-core/lib/helpers/resolve-preset' { - declare module.exports: any; -} - -declare module 'babel-core/lib/helpers/resolve' { - declare module.exports: any; -} - -declare module 'babel-core/lib/store' { - declare module.exports: any; -} - -declare module 'babel-core/lib/tools/build-external-helpers' { - declare module.exports: any; -} - -declare module 'babel-core/lib/transformation/file/index' { - declare module.exports: any; -} - -declare module 'babel-core/lib/transformation/file/logger' { - declare module.exports: any; -} - -declare module 'babel-core/lib/transformation/file/merge-map' { - declare module.exports: any; -} - -declare module 'babel-core/lib/transformation/file/metadata' { - declare module.exports: any; -} - -declare module 'babel-core/lib/transformation/file/options/build-config-chain' { - declare module.exports: any; -} - -declare module 'babel-core/lib/transformation/file/options/config' { - declare module.exports: any; -} - -declare module 'babel-core/lib/transformation/file/options/index' { - declare module.exports: any; -} - -declare module 'babel-core/lib/transformation/file/options/option-manager' { - declare module.exports: any; -} - -declare module 'babel-core/lib/transformation/file/options/parsers' { - declare module.exports: any; -} - -declare module 'babel-core/lib/transformation/file/options/removed' { - declare module.exports: any; -} - -declare module 'babel-core/lib/transformation/internal-plugins/block-hoist' { - declare module.exports: any; -} - -declare module 'babel-core/lib/transformation/internal-plugins/shadow-functions' { - declare module.exports: any; -} - -declare module 'babel-core/lib/transformation/pipeline' { - declare module.exports: any; -} - -declare module 'babel-core/lib/transformation/plugin-pass' { - declare module.exports: any; -} - -declare module 'babel-core/lib/transformation/plugin' { - declare module.exports: any; -} - -declare module 'babel-core/lib/util' { - declare module.exports: any; -} - -declare module 'babel-core/register' { - declare module.exports: any; -} - -// Filename aliases -declare module 'babel-core/index' { - declare module.exports: $Exports<'babel-core'>; -} -declare module 'babel-core/index.js' { - declare module.exports: $Exports<'babel-core'>; -} -declare module 'babel-core/lib/api/browser.js' { - declare module.exports: $Exports<'babel-core/lib/api/browser'>; -} -declare module 'babel-core/lib/api/node.js' { - declare module.exports: $Exports<'babel-core/lib/api/node'>; -} -declare module 'babel-core/lib/helpers/get-possible-plugin-names.js' { - declare module.exports: $Exports<'babel-core/lib/helpers/get-possible-plugin-names'>; -} -declare module 'babel-core/lib/helpers/get-possible-preset-names.js' { - declare module.exports: $Exports<'babel-core/lib/helpers/get-possible-preset-names'>; -} -declare module 'babel-core/lib/helpers/merge.js' { - declare module.exports: $Exports<'babel-core/lib/helpers/merge'>; -} -declare module 'babel-core/lib/helpers/normalize-ast.js' { - declare module.exports: $Exports<'babel-core/lib/helpers/normalize-ast'>; -} -declare module 'babel-core/lib/helpers/resolve-from-possible-names.js' { - declare module.exports: $Exports<'babel-core/lib/helpers/resolve-from-possible-names'>; -} -declare module 'babel-core/lib/helpers/resolve-plugin.js' { - declare module.exports: $Exports<'babel-core/lib/helpers/resolve-plugin'>; -} -declare module 'babel-core/lib/helpers/resolve-preset.js' { - declare module.exports: $Exports<'babel-core/lib/helpers/resolve-preset'>; -} -declare module 'babel-core/lib/helpers/resolve.js' { - declare module.exports: $Exports<'babel-core/lib/helpers/resolve'>; -} -declare module 'babel-core/lib/store.js' { - declare module.exports: $Exports<'babel-core/lib/store'>; -} -declare module 'babel-core/lib/tools/build-external-helpers.js' { - declare module.exports: $Exports<'babel-core/lib/tools/build-external-helpers'>; -} -declare module 'babel-core/lib/transformation/file/index.js' { - declare module.exports: $Exports<'babel-core/lib/transformation/file/index'>; -} -declare module 'babel-core/lib/transformation/file/logger.js' { - declare module.exports: $Exports<'babel-core/lib/transformation/file/logger'>; -} -declare module 'babel-core/lib/transformation/file/merge-map.js' { - declare module.exports: $Exports<'babel-core/lib/transformation/file/merge-map'>; -} -declare module 'babel-core/lib/transformation/file/metadata.js' { - declare module.exports: $Exports<'babel-core/lib/transformation/file/metadata'>; -} -declare module 'babel-core/lib/transformation/file/options/build-config-chain.js' { - declare module.exports: $Exports<'babel-core/lib/transformation/file/options/build-config-chain'>; -} -declare module 'babel-core/lib/transformation/file/options/config.js' { - declare module.exports: $Exports<'babel-core/lib/transformation/file/options/config'>; -} -declare module 'babel-core/lib/transformation/file/options/index.js' { - declare module.exports: $Exports<'babel-core/lib/transformation/file/options/index'>; -} -declare module 'babel-core/lib/transformation/file/options/option-manager.js' { - declare module.exports: $Exports<'babel-core/lib/transformation/file/options/option-manager'>; -} -declare module 'babel-core/lib/transformation/file/options/parsers.js' { - declare module.exports: $Exports<'babel-core/lib/transformation/file/options/parsers'>; -} -declare module 'babel-core/lib/transformation/file/options/removed.js' { - declare module.exports: $Exports<'babel-core/lib/transformation/file/options/removed'>; -} -declare module 'babel-core/lib/transformation/internal-plugins/block-hoist.js' { - declare module.exports: $Exports<'babel-core/lib/transformation/internal-plugins/block-hoist'>; -} -declare module 'babel-core/lib/transformation/internal-plugins/shadow-functions.js' { - declare module.exports: $Exports<'babel-core/lib/transformation/internal-plugins/shadow-functions'>; -} -declare module 'babel-core/lib/transformation/pipeline.js' { - declare module.exports: $Exports<'babel-core/lib/transformation/pipeline'>; -} -declare module 'babel-core/lib/transformation/plugin-pass.js' { - declare module.exports: $Exports<'babel-core/lib/transformation/plugin-pass'>; -} -declare module 'babel-core/lib/transformation/plugin.js' { - declare module.exports: $Exports<'babel-core/lib/transformation/plugin'>; -} -declare module 'babel-core/lib/util.js' { - declare module.exports: $Exports<'babel-core/lib/util'>; -} -declare module 'babel-core/register.js' { - declare module.exports: $Exports<'babel-core/register'>; -} diff --git a/flow-typed/npm/babel-eslint_vx.x.x.js b/flow-typed/npm/babel-eslint_vx.x.x.js deleted file mode 100644 index 296e8d3..0000000 --- a/flow-typed/npm/babel-eslint_vx.x.x.js +++ /dev/null @@ -1,123 +0,0 @@ -// flow-typed signature: d776a849adb5390f97b034d16b36fc0e -// flow-typed version: <>/babel-eslint_v8.2.6/flow_v0.100.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'babel-eslint' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'babel-eslint' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'babel-eslint/lib/analyze-scope' { - declare module.exports: any; -} - -declare module 'babel-eslint/lib/babylon-to-espree/attachComments' { - declare module.exports: any; -} - -declare module 'babel-eslint/lib/babylon-to-espree/convertComments' { - declare module.exports: any; -} - -declare module 'babel-eslint/lib/babylon-to-espree/convertTemplateType' { - declare module.exports: any; -} - -declare module 'babel-eslint/lib/babylon-to-espree/index' { - declare module.exports: any; -} - -declare module 'babel-eslint/lib/babylon-to-espree/toAST' { - declare module.exports: any; -} - -declare module 'babel-eslint/lib/babylon-to-espree/toToken' { - declare module.exports: any; -} - -declare module 'babel-eslint/lib/babylon-to-espree/toTokens' { - declare module.exports: any; -} - -declare module 'babel-eslint/lib/index' { - declare module.exports: any; -} - -declare module 'babel-eslint/lib/parse-with-patch' { - declare module.exports: any; -} - -declare module 'babel-eslint/lib/parse-with-scope' { - declare module.exports: any; -} - -declare module 'babel-eslint/lib/parse' { - declare module.exports: any; -} - -declare module 'babel-eslint/lib/patch-eslint-scope' { - declare module.exports: any; -} - -declare module 'babel-eslint/lib/visitor-keys' { - declare module.exports: any; -} - -// Filename aliases -declare module 'babel-eslint/lib/analyze-scope.js' { - declare module.exports: $Exports<'babel-eslint/lib/analyze-scope'>; -} -declare module 'babel-eslint/lib/babylon-to-espree/attachComments.js' { - declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/attachComments'>; -} -declare module 'babel-eslint/lib/babylon-to-espree/convertComments.js' { - declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/convertComments'>; -} -declare module 'babel-eslint/lib/babylon-to-espree/convertTemplateType.js' { - declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/convertTemplateType'>; -} -declare module 'babel-eslint/lib/babylon-to-espree/index.js' { - declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/index'>; -} -declare module 'babel-eslint/lib/babylon-to-espree/toAST.js' { - declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/toAST'>; -} -declare module 'babel-eslint/lib/babylon-to-espree/toToken.js' { - declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/toToken'>; -} -declare module 'babel-eslint/lib/babylon-to-espree/toTokens.js' { - declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/toTokens'>; -} -declare module 'babel-eslint/lib/index.js' { - declare module.exports: $Exports<'babel-eslint/lib/index'>; -} -declare module 'babel-eslint/lib/parse-with-patch.js' { - declare module.exports: $Exports<'babel-eslint/lib/parse-with-patch'>; -} -declare module 'babel-eslint/lib/parse-with-scope.js' { - declare module.exports: $Exports<'babel-eslint/lib/parse-with-scope'>; -} -declare module 'babel-eslint/lib/parse.js' { - declare module.exports: $Exports<'babel-eslint/lib/parse'>; -} -declare module 'babel-eslint/lib/patch-eslint-scope.js' { - declare module.exports: $Exports<'babel-eslint/lib/patch-eslint-scope'>; -} -declare module 'babel-eslint/lib/visitor-keys.js' { - declare module.exports: $Exports<'babel-eslint/lib/visitor-keys'>; -} diff --git a/flow-typed/npm/babel-loader_vx.x.x.js b/flow-typed/npm/babel-loader_vx.x.x.js deleted file mode 100644 index 0fab3ea..0000000 --- a/flow-typed/npm/babel-loader_vx.x.x.js +++ /dev/null @@ -1,67 +0,0 @@ -// flow-typed signature: 0ff1696e77b10dafbb0d82e69b182de3 -// flow-typed version: <>/babel-loader_v7.1.5/flow_v0.100.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'babel-loader' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'babel-loader' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'babel-loader/lib/fs-cache' { - declare module.exports: any; -} - -declare module 'babel-loader/lib/index' { - declare module.exports: any; -} - -declare module 'babel-loader/lib/resolve-rc' { - declare module.exports: any; -} - -declare module 'babel-loader/lib/utils/exists' { - declare module.exports: any; -} - -declare module 'babel-loader/lib/utils/read' { - declare module.exports: any; -} - -declare module 'babel-loader/lib/utils/relative' { - declare module.exports: any; -} - -// Filename aliases -declare module 'babel-loader/lib/fs-cache.js' { - declare module.exports: $Exports<'babel-loader/lib/fs-cache'>; -} -declare module 'babel-loader/lib/index.js' { - declare module.exports: $Exports<'babel-loader/lib/index'>; -} -declare module 'babel-loader/lib/resolve-rc.js' { - declare module.exports: $Exports<'babel-loader/lib/resolve-rc'>; -} -declare module 'babel-loader/lib/utils/exists.js' { - declare module.exports: $Exports<'babel-loader/lib/utils/exists'>; -} -declare module 'babel-loader/lib/utils/read.js' { - declare module.exports: $Exports<'babel-loader/lib/utils/read'>; -} -declare module 'babel-loader/lib/utils/relative.js' { - declare module.exports: $Exports<'babel-loader/lib/utils/relative'>; -} diff --git a/flow-typed/npm/babel-plugin-transform-class-properties_vx.x.x.js b/flow-typed/npm/babel-plugin-transform-class-properties_vx.x.x.js deleted file mode 100644 index b6e5c6e..0000000 --- a/flow-typed/npm/babel-plugin-transform-class-properties_vx.x.x.js +++ /dev/null @@ -1,32 +0,0 @@ -// flow-typed signature: d5bc949e43ec90ce51e1f5c4487c8efe -// flow-typed version: <>/babel-plugin-transform-class-properties_v6.24.1/flow_v0.100.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'babel-plugin-transform-class-properties' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'babel-plugin-transform-class-properties' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'babel-plugin-transform-class-properties/lib/index' { - declare module.exports: any; -} - -// Filename aliases -declare module 'babel-plugin-transform-class-properties/lib/index.js' { - declare module.exports: $Exports<'babel-plugin-transform-class-properties/lib/index'>; -} diff --git a/flow-typed/npm/babel-plugin-transform-object-rest-spread_vx.x.x.js b/flow-typed/npm/babel-plugin-transform-object-rest-spread_vx.x.x.js deleted file mode 100644 index d783393..0000000 --- a/flow-typed/npm/babel-plugin-transform-object-rest-spread_vx.x.x.js +++ /dev/null @@ -1,32 +0,0 @@ -// flow-typed signature: e854cdeb3faa3caf3443e06f97340fca -// flow-typed version: <>/babel-plugin-transform-object-rest-spread_v6.26.0/flow_v0.100.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'babel-plugin-transform-object-rest-spread' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'babel-plugin-transform-object-rest-spread' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'babel-plugin-transform-object-rest-spread/lib/index' { - declare module.exports: any; -} - -// Filename aliases -declare module 'babel-plugin-transform-object-rest-spread/lib/index.js' { - declare module.exports: $Exports<'babel-plugin-transform-object-rest-spread/lib/index'>; -} diff --git a/flow-typed/npm/babel-plugin-transform-runtime_vx.x.x.js b/flow-typed/npm/babel-plugin-transform-runtime_vx.x.x.js deleted file mode 100644 index 2736f30..0000000 --- a/flow-typed/npm/babel-plugin-transform-runtime_vx.x.x.js +++ /dev/null @@ -1,39 +0,0 @@ -// flow-typed signature: c1645299f524732917aa136db45f665a -// flow-typed version: <>/babel-plugin-transform-runtime_v6.23.0/flow_v0.100.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'babel-plugin-transform-runtime' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'babel-plugin-transform-runtime' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'babel-plugin-transform-runtime/lib/definitions' { - declare module.exports: any; -} - -declare module 'babel-plugin-transform-runtime/lib/index' { - declare module.exports: any; -} - -// Filename aliases -declare module 'babel-plugin-transform-runtime/lib/definitions.js' { - declare module.exports: $Exports<'babel-plugin-transform-runtime/lib/definitions'>; -} -declare module 'babel-plugin-transform-runtime/lib/index.js' { - declare module.exports: $Exports<'babel-plugin-transform-runtime/lib/index'>; -} diff --git a/flow-typed/npm/babel-preset-env_vx.x.x.js b/flow-typed/npm/babel-preset-env_vx.x.x.js deleted file mode 100644 index 053791d..0000000 --- a/flow-typed/npm/babel-preset-env_vx.x.x.js +++ /dev/null @@ -1,88 +0,0 @@ -// flow-typed signature: 5baa687e767459d98f94beff0d0dfd3b -// flow-typed version: <>/babel-preset-env_v1.7.0/flow_v0.100.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'babel-preset-env' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'babel-preset-env' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'babel-preset-env/data/built-in-features' { - declare module.exports: any; -} - -declare module 'babel-preset-env/data/plugin-features' { - declare module.exports: any; -} - -declare module 'babel-preset-env/lib/default-includes' { - declare module.exports: any; -} - -declare module 'babel-preset-env/lib/index' { - declare module.exports: any; -} - -declare module 'babel-preset-env/lib/module-transformations' { - declare module.exports: any; -} - -declare module 'babel-preset-env/lib/normalize-options' { - declare module.exports: any; -} - -declare module 'babel-preset-env/lib/targets-parser' { - declare module.exports: any; -} - -declare module 'babel-preset-env/lib/transform-polyfill-require-plugin' { - declare module.exports: any; -} - -declare module 'babel-preset-env/lib/utils' { - declare module.exports: any; -} - -// Filename aliases -declare module 'babel-preset-env/data/built-in-features.js' { - declare module.exports: $Exports<'babel-preset-env/data/built-in-features'>; -} -declare module 'babel-preset-env/data/plugin-features.js' { - declare module.exports: $Exports<'babel-preset-env/data/plugin-features'>; -} -declare module 'babel-preset-env/lib/default-includes.js' { - declare module.exports: $Exports<'babel-preset-env/lib/default-includes'>; -} -declare module 'babel-preset-env/lib/index.js' { - declare module.exports: $Exports<'babel-preset-env/lib/index'>; -} -declare module 'babel-preset-env/lib/module-transformations.js' { - declare module.exports: $Exports<'babel-preset-env/lib/module-transformations'>; -} -declare module 'babel-preset-env/lib/normalize-options.js' { - declare module.exports: $Exports<'babel-preset-env/lib/normalize-options'>; -} -declare module 'babel-preset-env/lib/targets-parser.js' { - declare module.exports: $Exports<'babel-preset-env/lib/targets-parser'>; -} -declare module 'babel-preset-env/lib/transform-polyfill-require-plugin.js' { - declare module.exports: $Exports<'babel-preset-env/lib/transform-polyfill-require-plugin'>; -} -declare module 'babel-preset-env/lib/utils.js' { - declare module.exports: $Exports<'babel-preset-env/lib/utils'>; -} diff --git a/flow-typed/npm/babel-preset-flow_vx.x.x.js b/flow-typed/npm/babel-preset-flow_vx.x.x.js deleted file mode 100644 index 0d407c1..0000000 --- a/flow-typed/npm/babel-preset-flow_vx.x.x.js +++ /dev/null @@ -1,32 +0,0 @@ -// flow-typed signature: 3fa16f012b06194ee61fdbd4357bac8e -// flow-typed version: <>/babel-preset-flow_v6.23.0/flow_v0.100.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'babel-preset-flow' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'babel-preset-flow' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'babel-preset-flow/lib/index' { - declare module.exports: any; -} - -// Filename aliases -declare module 'babel-preset-flow/lib/index.js' { - declare module.exports: $Exports<'babel-preset-flow/lib/index'>; -} diff --git a/flow-typed/npm/babel-runtime_vx.x.x.js b/flow-typed/npm/babel-runtime_vx.x.x.js deleted file mode 100644 index 255f28a..0000000 --- a/flow-typed/npm/babel-runtime_vx.x.x.js +++ /dev/null @@ -1,1691 +0,0 @@ -// flow-typed signature: d3db19f15dcff8170d38f3875e7062e8 -// flow-typed version: <>/babel-runtime_v6.26.0/flow_v0.100.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'babel-runtime' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'babel-runtime' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'babel-runtime/core-js' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/concat' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/copy-within' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/entries' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/every' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/fill' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/filter' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/find-index' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/find' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/for-each' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/from' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/includes' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/index-of' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/join' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/keys' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/last-index-of' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/map' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/of' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/pop' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/push' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/reduce-right' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/reduce' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/reverse' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/shift' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/slice' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/some' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/sort' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/splice' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/unshift' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/array/values' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/asap' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/clear-immediate' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/error/is-error' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/get-iterator' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/is-iterable' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/json/stringify' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/map' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/math/acosh' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/math/asinh' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/math/atanh' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/math/cbrt' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/math/clz32' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/math/cosh' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/math/expm1' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/math/fround' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/math/hypot' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/math/iaddh' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/math/imul' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/math/imulh' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/math/isubh' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/math/log10' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/math/log1p' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/math/log2' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/math/sign' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/math/sinh' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/math/tanh' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/math/trunc' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/math/umulh' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/number/epsilon' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/number/is-finite' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/number/is-integer' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/number/is-nan' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/number/is-safe-integer' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/number/max-safe-integer' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/number/min-safe-integer' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/number/parse-float' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/number/parse-int' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/object/assign' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/object/create' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/object/define-properties' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/object/define-property' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/object/entries' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/object/freeze' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/object/get-own-property-descriptor' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/object/get-own-property-descriptors' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/object/get-own-property-names' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/object/get-own-property-symbols' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/object/get-prototype-of' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/object/is-extensible' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/object/is-frozen' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/object/is-sealed' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/object/is' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/object/keys' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/object/prevent-extensions' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/object/seal' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/object/set-prototype-of' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/object/values' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/observable' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/promise' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/reflect/apply' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/reflect/construct' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/reflect/define-metadata' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/reflect/define-property' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/reflect/delete-metadata' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/reflect/delete-property' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/reflect/enumerate' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/reflect/get-metadata-keys' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/reflect/get-metadata' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/reflect/get-own-metadata-keys' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/reflect/get-own-metadata' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/reflect/get-own-property-descriptor' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/reflect/get-prototype-of' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/reflect/get' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/reflect/has-metadata' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/reflect/has-own-metadata' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/reflect/has' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/reflect/is-extensible' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/reflect/metadata' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/reflect/own-keys' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/reflect/prevent-extensions' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/reflect/set-prototype-of' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/reflect/set' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/regexp/escape' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/set-immediate' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/set' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/string/at' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/string/code-point-at' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/string/ends-with' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/string/from-code-point' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/string/includes' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/string/match-all' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/string/pad-end' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/string/pad-left' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/string/pad-right' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/string/pad-start' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/string/raw' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/string/repeat' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/string/starts-with' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/string/trim-end' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/string/trim-left' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/string/trim-right' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/string/trim-start' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/string/trim' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/symbol' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/symbol/async-iterator' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/symbol/for' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/symbol/has-instance' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/symbol/is-concat-spreadable' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/symbol/iterator' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/symbol/key-for' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/symbol/match' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/symbol/observable' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/symbol/replace' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/symbol/search' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/symbol/species' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/symbol/split' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/symbol/to-primitive' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/symbol/to-string-tag' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/symbol/unscopables' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/system/global' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/weak-map' { - declare module.exports: any; -} - -declare module 'babel-runtime/core-js/weak-set' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_async-generator-delegate' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_async-generator' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_async-iterator' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_async-to-generator' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_class-call-check' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_create-class' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_defaults' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_define-enumerable-properties' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_define-property' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_extends' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_get' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_inherits' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_instanceof' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_interop-require-default' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_interop-require-wildcard' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_jsx' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_new-arrow-check' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_object-destructuring-empty' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_object-without-properties' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_possible-constructor-return' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_self-global' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_set' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_sliced-to-array-loose' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_sliced-to-array' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_tagged-template-literal-loose' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_tagged-template-literal' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_temporal-ref' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_temporal-undefined' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_to-array' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_to-consumable-array' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/_typeof' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/async-generator-delegate' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/async-generator' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/async-iterator' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/async-to-generator' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/asyncGenerator' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/asyncGeneratorDelegate' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/asyncIterator' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/asyncToGenerator' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/class-call-check' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/classCallCheck' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/create-class' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/createClass' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/defaults' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/define-enumerable-properties' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/define-property' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/defineEnumerableProperties' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/defineProperty' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/extends' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/get' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/inherits' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/instanceof' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/interop-require-default' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/interop-require-wildcard' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/interopRequireDefault' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/interopRequireWildcard' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/jsx' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/new-arrow-check' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/newArrowCheck' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/object-destructuring-empty' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/object-without-properties' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/objectDestructuringEmpty' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/objectWithoutProperties' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/possible-constructor-return' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/possibleConstructorReturn' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/self-global' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/selfGlobal' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/set' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/sliced-to-array-loose' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/sliced-to-array' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/slicedToArray' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/slicedToArrayLoose' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/tagged-template-literal-loose' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/tagged-template-literal' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/taggedTemplateLiteral' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/taggedTemplateLiteralLoose' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/temporal-ref' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/temporal-undefined' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/temporalRef' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/temporalUndefined' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/to-array' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/to-consumable-array' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/toArray' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/toConsumableArray' { - declare module.exports: any; -} - -declare module 'babel-runtime/helpers/typeof' { - declare module.exports: any; -} - -declare module 'babel-runtime/regenerator/index' { - declare module.exports: any; -} - -// Filename aliases -declare module 'babel-runtime/core-js.js' { - declare module.exports: $Exports<'babel-runtime/core-js'>; -} -declare module 'babel-runtime/core-js/array/concat.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/concat'>; -} -declare module 'babel-runtime/core-js/array/copy-within.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/copy-within'>; -} -declare module 'babel-runtime/core-js/array/entries.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/entries'>; -} -declare module 'babel-runtime/core-js/array/every.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/every'>; -} -declare module 'babel-runtime/core-js/array/fill.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/fill'>; -} -declare module 'babel-runtime/core-js/array/filter.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/filter'>; -} -declare module 'babel-runtime/core-js/array/find-index.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/find-index'>; -} -declare module 'babel-runtime/core-js/array/find.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/find'>; -} -declare module 'babel-runtime/core-js/array/for-each.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/for-each'>; -} -declare module 'babel-runtime/core-js/array/from.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/from'>; -} -declare module 'babel-runtime/core-js/array/includes.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/includes'>; -} -declare module 'babel-runtime/core-js/array/index-of.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/index-of'>; -} -declare module 'babel-runtime/core-js/array/join.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/join'>; -} -declare module 'babel-runtime/core-js/array/keys.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/keys'>; -} -declare module 'babel-runtime/core-js/array/last-index-of.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/last-index-of'>; -} -declare module 'babel-runtime/core-js/array/map.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/map'>; -} -declare module 'babel-runtime/core-js/array/of.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/of'>; -} -declare module 'babel-runtime/core-js/array/pop.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/pop'>; -} -declare module 'babel-runtime/core-js/array/push.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/push'>; -} -declare module 'babel-runtime/core-js/array/reduce-right.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/reduce-right'>; -} -declare module 'babel-runtime/core-js/array/reduce.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/reduce'>; -} -declare module 'babel-runtime/core-js/array/reverse.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/reverse'>; -} -declare module 'babel-runtime/core-js/array/shift.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/shift'>; -} -declare module 'babel-runtime/core-js/array/slice.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/slice'>; -} -declare module 'babel-runtime/core-js/array/some.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/some'>; -} -declare module 'babel-runtime/core-js/array/sort.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/sort'>; -} -declare module 'babel-runtime/core-js/array/splice.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/splice'>; -} -declare module 'babel-runtime/core-js/array/unshift.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/unshift'>; -} -declare module 'babel-runtime/core-js/array/values.js' { - declare module.exports: $Exports<'babel-runtime/core-js/array/values'>; -} -declare module 'babel-runtime/core-js/asap.js' { - declare module.exports: $Exports<'babel-runtime/core-js/asap'>; -} -declare module 'babel-runtime/core-js/clear-immediate.js' { - declare module.exports: $Exports<'babel-runtime/core-js/clear-immediate'>; -} -declare module 'babel-runtime/core-js/error/is-error.js' { - declare module.exports: $Exports<'babel-runtime/core-js/error/is-error'>; -} -declare module 'babel-runtime/core-js/get-iterator.js' { - declare module.exports: $Exports<'babel-runtime/core-js/get-iterator'>; -} -declare module 'babel-runtime/core-js/is-iterable.js' { - declare module.exports: $Exports<'babel-runtime/core-js/is-iterable'>; -} -declare module 'babel-runtime/core-js/json/stringify.js' { - declare module.exports: $Exports<'babel-runtime/core-js/json/stringify'>; -} -declare module 'babel-runtime/core-js/map.js' { - declare module.exports: $Exports<'babel-runtime/core-js/map'>; -} -declare module 'babel-runtime/core-js/math/acosh.js' { - declare module.exports: $Exports<'babel-runtime/core-js/math/acosh'>; -} -declare module 'babel-runtime/core-js/math/asinh.js' { - declare module.exports: $Exports<'babel-runtime/core-js/math/asinh'>; -} -declare module 'babel-runtime/core-js/math/atanh.js' { - declare module.exports: $Exports<'babel-runtime/core-js/math/atanh'>; -} -declare module 'babel-runtime/core-js/math/cbrt.js' { - declare module.exports: $Exports<'babel-runtime/core-js/math/cbrt'>; -} -declare module 'babel-runtime/core-js/math/clz32.js' { - declare module.exports: $Exports<'babel-runtime/core-js/math/clz32'>; -} -declare module 'babel-runtime/core-js/math/cosh.js' { - declare module.exports: $Exports<'babel-runtime/core-js/math/cosh'>; -} -declare module 'babel-runtime/core-js/math/expm1.js' { - declare module.exports: $Exports<'babel-runtime/core-js/math/expm1'>; -} -declare module 'babel-runtime/core-js/math/fround.js' { - declare module.exports: $Exports<'babel-runtime/core-js/math/fround'>; -} -declare module 'babel-runtime/core-js/math/hypot.js' { - declare module.exports: $Exports<'babel-runtime/core-js/math/hypot'>; -} -declare module 'babel-runtime/core-js/math/iaddh.js' { - declare module.exports: $Exports<'babel-runtime/core-js/math/iaddh'>; -} -declare module 'babel-runtime/core-js/math/imul.js' { - declare module.exports: $Exports<'babel-runtime/core-js/math/imul'>; -} -declare module 'babel-runtime/core-js/math/imulh.js' { - declare module.exports: $Exports<'babel-runtime/core-js/math/imulh'>; -} -declare module 'babel-runtime/core-js/math/isubh.js' { - declare module.exports: $Exports<'babel-runtime/core-js/math/isubh'>; -} -declare module 'babel-runtime/core-js/math/log10.js' { - declare module.exports: $Exports<'babel-runtime/core-js/math/log10'>; -} -declare module 'babel-runtime/core-js/math/log1p.js' { - declare module.exports: $Exports<'babel-runtime/core-js/math/log1p'>; -} -declare module 'babel-runtime/core-js/math/log2.js' { - declare module.exports: $Exports<'babel-runtime/core-js/math/log2'>; -} -declare module 'babel-runtime/core-js/math/sign.js' { - declare module.exports: $Exports<'babel-runtime/core-js/math/sign'>; -} -declare module 'babel-runtime/core-js/math/sinh.js' { - declare module.exports: $Exports<'babel-runtime/core-js/math/sinh'>; -} -declare module 'babel-runtime/core-js/math/tanh.js' { - declare module.exports: $Exports<'babel-runtime/core-js/math/tanh'>; -} -declare module 'babel-runtime/core-js/math/trunc.js' { - declare module.exports: $Exports<'babel-runtime/core-js/math/trunc'>; -} -declare module 'babel-runtime/core-js/math/umulh.js' { - declare module.exports: $Exports<'babel-runtime/core-js/math/umulh'>; -} -declare module 'babel-runtime/core-js/number/epsilon.js' { - declare module.exports: $Exports<'babel-runtime/core-js/number/epsilon'>; -} -declare module 'babel-runtime/core-js/number/is-finite.js' { - declare module.exports: $Exports<'babel-runtime/core-js/number/is-finite'>; -} -declare module 'babel-runtime/core-js/number/is-integer.js' { - declare module.exports: $Exports<'babel-runtime/core-js/number/is-integer'>; -} -declare module 'babel-runtime/core-js/number/is-nan.js' { - declare module.exports: $Exports<'babel-runtime/core-js/number/is-nan'>; -} -declare module 'babel-runtime/core-js/number/is-safe-integer.js' { - declare module.exports: $Exports<'babel-runtime/core-js/number/is-safe-integer'>; -} -declare module 'babel-runtime/core-js/number/max-safe-integer.js' { - declare module.exports: $Exports<'babel-runtime/core-js/number/max-safe-integer'>; -} -declare module 'babel-runtime/core-js/number/min-safe-integer.js' { - declare module.exports: $Exports<'babel-runtime/core-js/number/min-safe-integer'>; -} -declare module 'babel-runtime/core-js/number/parse-float.js' { - declare module.exports: $Exports<'babel-runtime/core-js/number/parse-float'>; -} -declare module 'babel-runtime/core-js/number/parse-int.js' { - declare module.exports: $Exports<'babel-runtime/core-js/number/parse-int'>; -} -declare module 'babel-runtime/core-js/object/assign.js' { - declare module.exports: $Exports<'babel-runtime/core-js/object/assign'>; -} -declare module 'babel-runtime/core-js/object/create.js' { - declare module.exports: $Exports<'babel-runtime/core-js/object/create'>; -} -declare module 'babel-runtime/core-js/object/define-properties.js' { - declare module.exports: $Exports<'babel-runtime/core-js/object/define-properties'>; -} -declare module 'babel-runtime/core-js/object/define-property.js' { - declare module.exports: $Exports<'babel-runtime/core-js/object/define-property'>; -} -declare module 'babel-runtime/core-js/object/entries.js' { - declare module.exports: $Exports<'babel-runtime/core-js/object/entries'>; -} -declare module 'babel-runtime/core-js/object/freeze.js' { - declare module.exports: $Exports<'babel-runtime/core-js/object/freeze'>; -} -declare module 'babel-runtime/core-js/object/get-own-property-descriptor.js' { - declare module.exports: $Exports<'babel-runtime/core-js/object/get-own-property-descriptor'>; -} -declare module 'babel-runtime/core-js/object/get-own-property-descriptors.js' { - declare module.exports: $Exports<'babel-runtime/core-js/object/get-own-property-descriptors'>; -} -declare module 'babel-runtime/core-js/object/get-own-property-names.js' { - declare module.exports: $Exports<'babel-runtime/core-js/object/get-own-property-names'>; -} -declare module 'babel-runtime/core-js/object/get-own-property-symbols.js' { - declare module.exports: $Exports<'babel-runtime/core-js/object/get-own-property-symbols'>; -} -declare module 'babel-runtime/core-js/object/get-prototype-of.js' { - declare module.exports: $Exports<'babel-runtime/core-js/object/get-prototype-of'>; -} -declare module 'babel-runtime/core-js/object/is-extensible.js' { - declare module.exports: $Exports<'babel-runtime/core-js/object/is-extensible'>; -} -declare module 'babel-runtime/core-js/object/is-frozen.js' { - declare module.exports: $Exports<'babel-runtime/core-js/object/is-frozen'>; -} -declare module 'babel-runtime/core-js/object/is-sealed.js' { - declare module.exports: $Exports<'babel-runtime/core-js/object/is-sealed'>; -} -declare module 'babel-runtime/core-js/object/is.js' { - declare module.exports: $Exports<'babel-runtime/core-js/object/is'>; -} -declare module 'babel-runtime/core-js/object/keys.js' { - declare module.exports: $Exports<'babel-runtime/core-js/object/keys'>; -} -declare module 'babel-runtime/core-js/object/prevent-extensions.js' { - declare module.exports: $Exports<'babel-runtime/core-js/object/prevent-extensions'>; -} -declare module 'babel-runtime/core-js/object/seal.js' { - declare module.exports: $Exports<'babel-runtime/core-js/object/seal'>; -} -declare module 'babel-runtime/core-js/object/set-prototype-of.js' { - declare module.exports: $Exports<'babel-runtime/core-js/object/set-prototype-of'>; -} -declare module 'babel-runtime/core-js/object/values.js' { - declare module.exports: $Exports<'babel-runtime/core-js/object/values'>; -} -declare module 'babel-runtime/core-js/observable.js' { - declare module.exports: $Exports<'babel-runtime/core-js/observable'>; -} -declare module 'babel-runtime/core-js/promise.js' { - declare module.exports: $Exports<'babel-runtime/core-js/promise'>; -} -declare module 'babel-runtime/core-js/reflect/apply.js' { - declare module.exports: $Exports<'babel-runtime/core-js/reflect/apply'>; -} -declare module 'babel-runtime/core-js/reflect/construct.js' { - declare module.exports: $Exports<'babel-runtime/core-js/reflect/construct'>; -} -declare module 'babel-runtime/core-js/reflect/define-metadata.js' { - declare module.exports: $Exports<'babel-runtime/core-js/reflect/define-metadata'>; -} -declare module 'babel-runtime/core-js/reflect/define-property.js' { - declare module.exports: $Exports<'babel-runtime/core-js/reflect/define-property'>; -} -declare module 'babel-runtime/core-js/reflect/delete-metadata.js' { - declare module.exports: $Exports<'babel-runtime/core-js/reflect/delete-metadata'>; -} -declare module 'babel-runtime/core-js/reflect/delete-property.js' { - declare module.exports: $Exports<'babel-runtime/core-js/reflect/delete-property'>; -} -declare module 'babel-runtime/core-js/reflect/enumerate.js' { - declare module.exports: $Exports<'babel-runtime/core-js/reflect/enumerate'>; -} -declare module 'babel-runtime/core-js/reflect/get-metadata-keys.js' { - declare module.exports: $Exports<'babel-runtime/core-js/reflect/get-metadata-keys'>; -} -declare module 'babel-runtime/core-js/reflect/get-metadata.js' { - declare module.exports: $Exports<'babel-runtime/core-js/reflect/get-metadata'>; -} -declare module 'babel-runtime/core-js/reflect/get-own-metadata-keys.js' { - declare module.exports: $Exports<'babel-runtime/core-js/reflect/get-own-metadata-keys'>; -} -declare module 'babel-runtime/core-js/reflect/get-own-metadata.js' { - declare module.exports: $Exports<'babel-runtime/core-js/reflect/get-own-metadata'>; -} -declare module 'babel-runtime/core-js/reflect/get-own-property-descriptor.js' { - declare module.exports: $Exports<'babel-runtime/core-js/reflect/get-own-property-descriptor'>; -} -declare module 'babel-runtime/core-js/reflect/get-prototype-of.js' { - declare module.exports: $Exports<'babel-runtime/core-js/reflect/get-prototype-of'>; -} -declare module 'babel-runtime/core-js/reflect/get.js' { - declare module.exports: $Exports<'babel-runtime/core-js/reflect/get'>; -} -declare module 'babel-runtime/core-js/reflect/has-metadata.js' { - declare module.exports: $Exports<'babel-runtime/core-js/reflect/has-metadata'>; -} -declare module 'babel-runtime/core-js/reflect/has-own-metadata.js' { - declare module.exports: $Exports<'babel-runtime/core-js/reflect/has-own-metadata'>; -} -declare module 'babel-runtime/core-js/reflect/has.js' { - declare module.exports: $Exports<'babel-runtime/core-js/reflect/has'>; -} -declare module 'babel-runtime/core-js/reflect/is-extensible.js' { - declare module.exports: $Exports<'babel-runtime/core-js/reflect/is-extensible'>; -} -declare module 'babel-runtime/core-js/reflect/metadata.js' { - declare module.exports: $Exports<'babel-runtime/core-js/reflect/metadata'>; -} -declare module 'babel-runtime/core-js/reflect/own-keys.js' { - declare module.exports: $Exports<'babel-runtime/core-js/reflect/own-keys'>; -} -declare module 'babel-runtime/core-js/reflect/prevent-extensions.js' { - declare module.exports: $Exports<'babel-runtime/core-js/reflect/prevent-extensions'>; -} -declare module 'babel-runtime/core-js/reflect/set-prototype-of.js' { - declare module.exports: $Exports<'babel-runtime/core-js/reflect/set-prototype-of'>; -} -declare module 'babel-runtime/core-js/reflect/set.js' { - declare module.exports: $Exports<'babel-runtime/core-js/reflect/set'>; -} -declare module 'babel-runtime/core-js/regexp/escape.js' { - declare module.exports: $Exports<'babel-runtime/core-js/regexp/escape'>; -} -declare module 'babel-runtime/core-js/set-immediate.js' { - declare module.exports: $Exports<'babel-runtime/core-js/set-immediate'>; -} -declare module 'babel-runtime/core-js/set.js' { - declare module.exports: $Exports<'babel-runtime/core-js/set'>; -} -declare module 'babel-runtime/core-js/string/at.js' { - declare module.exports: $Exports<'babel-runtime/core-js/string/at'>; -} -declare module 'babel-runtime/core-js/string/code-point-at.js' { - declare module.exports: $Exports<'babel-runtime/core-js/string/code-point-at'>; -} -declare module 'babel-runtime/core-js/string/ends-with.js' { - declare module.exports: $Exports<'babel-runtime/core-js/string/ends-with'>; -} -declare module 'babel-runtime/core-js/string/from-code-point.js' { - declare module.exports: $Exports<'babel-runtime/core-js/string/from-code-point'>; -} -declare module 'babel-runtime/core-js/string/includes.js' { - declare module.exports: $Exports<'babel-runtime/core-js/string/includes'>; -} -declare module 'babel-runtime/core-js/string/match-all.js' { - declare module.exports: $Exports<'babel-runtime/core-js/string/match-all'>; -} -declare module 'babel-runtime/core-js/string/pad-end.js' { - declare module.exports: $Exports<'babel-runtime/core-js/string/pad-end'>; -} -declare module 'babel-runtime/core-js/string/pad-left.js' { - declare module.exports: $Exports<'babel-runtime/core-js/string/pad-left'>; -} -declare module 'babel-runtime/core-js/string/pad-right.js' { - declare module.exports: $Exports<'babel-runtime/core-js/string/pad-right'>; -} -declare module 'babel-runtime/core-js/string/pad-start.js' { - declare module.exports: $Exports<'babel-runtime/core-js/string/pad-start'>; -} -declare module 'babel-runtime/core-js/string/raw.js' { - declare module.exports: $Exports<'babel-runtime/core-js/string/raw'>; -} -declare module 'babel-runtime/core-js/string/repeat.js' { - declare module.exports: $Exports<'babel-runtime/core-js/string/repeat'>; -} -declare module 'babel-runtime/core-js/string/starts-with.js' { - declare module.exports: $Exports<'babel-runtime/core-js/string/starts-with'>; -} -declare module 'babel-runtime/core-js/string/trim-end.js' { - declare module.exports: $Exports<'babel-runtime/core-js/string/trim-end'>; -} -declare module 'babel-runtime/core-js/string/trim-left.js' { - declare module.exports: $Exports<'babel-runtime/core-js/string/trim-left'>; -} -declare module 'babel-runtime/core-js/string/trim-right.js' { - declare module.exports: $Exports<'babel-runtime/core-js/string/trim-right'>; -} -declare module 'babel-runtime/core-js/string/trim-start.js' { - declare module.exports: $Exports<'babel-runtime/core-js/string/trim-start'>; -} -declare module 'babel-runtime/core-js/string/trim.js' { - declare module.exports: $Exports<'babel-runtime/core-js/string/trim'>; -} -declare module 'babel-runtime/core-js/symbol.js' { - declare module.exports: $Exports<'babel-runtime/core-js/symbol'>; -} -declare module 'babel-runtime/core-js/symbol/async-iterator.js' { - declare module.exports: $Exports<'babel-runtime/core-js/symbol/async-iterator'>; -} -declare module 'babel-runtime/core-js/symbol/for.js' { - declare module.exports: $Exports<'babel-runtime/core-js/symbol/for'>; -} -declare module 'babel-runtime/core-js/symbol/has-instance.js' { - declare module.exports: $Exports<'babel-runtime/core-js/symbol/has-instance'>; -} -declare module 'babel-runtime/core-js/symbol/is-concat-spreadable.js' { - declare module.exports: $Exports<'babel-runtime/core-js/symbol/is-concat-spreadable'>; -} -declare module 'babel-runtime/core-js/symbol/iterator.js' { - declare module.exports: $Exports<'babel-runtime/core-js/symbol/iterator'>; -} -declare module 'babel-runtime/core-js/symbol/key-for.js' { - declare module.exports: $Exports<'babel-runtime/core-js/symbol/key-for'>; -} -declare module 'babel-runtime/core-js/symbol/match.js' { - declare module.exports: $Exports<'babel-runtime/core-js/symbol/match'>; -} -declare module 'babel-runtime/core-js/symbol/observable.js' { - declare module.exports: $Exports<'babel-runtime/core-js/symbol/observable'>; -} -declare module 'babel-runtime/core-js/symbol/replace.js' { - declare module.exports: $Exports<'babel-runtime/core-js/symbol/replace'>; -} -declare module 'babel-runtime/core-js/symbol/search.js' { - declare module.exports: $Exports<'babel-runtime/core-js/symbol/search'>; -} -declare module 'babel-runtime/core-js/symbol/species.js' { - declare module.exports: $Exports<'babel-runtime/core-js/symbol/species'>; -} -declare module 'babel-runtime/core-js/symbol/split.js' { - declare module.exports: $Exports<'babel-runtime/core-js/symbol/split'>; -} -declare module 'babel-runtime/core-js/symbol/to-primitive.js' { - declare module.exports: $Exports<'babel-runtime/core-js/symbol/to-primitive'>; -} -declare module 'babel-runtime/core-js/symbol/to-string-tag.js' { - declare module.exports: $Exports<'babel-runtime/core-js/symbol/to-string-tag'>; -} -declare module 'babel-runtime/core-js/symbol/unscopables.js' { - declare module.exports: $Exports<'babel-runtime/core-js/symbol/unscopables'>; -} -declare module 'babel-runtime/core-js/system/global.js' { - declare module.exports: $Exports<'babel-runtime/core-js/system/global'>; -} -declare module 'babel-runtime/core-js/weak-map.js' { - declare module.exports: $Exports<'babel-runtime/core-js/weak-map'>; -} -declare module 'babel-runtime/core-js/weak-set.js' { - declare module.exports: $Exports<'babel-runtime/core-js/weak-set'>; -} -declare module 'babel-runtime/helpers/_async-generator-delegate.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_async-generator-delegate'>; -} -declare module 'babel-runtime/helpers/_async-generator.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_async-generator'>; -} -declare module 'babel-runtime/helpers/_async-iterator.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_async-iterator'>; -} -declare module 'babel-runtime/helpers/_async-to-generator.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_async-to-generator'>; -} -declare module 'babel-runtime/helpers/_class-call-check.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_class-call-check'>; -} -declare module 'babel-runtime/helpers/_create-class.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_create-class'>; -} -declare module 'babel-runtime/helpers/_defaults.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_defaults'>; -} -declare module 'babel-runtime/helpers/_define-enumerable-properties.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_define-enumerable-properties'>; -} -declare module 'babel-runtime/helpers/_define-property.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_define-property'>; -} -declare module 'babel-runtime/helpers/_extends.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_extends'>; -} -declare module 'babel-runtime/helpers/_get.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_get'>; -} -declare module 'babel-runtime/helpers/_inherits.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_inherits'>; -} -declare module 'babel-runtime/helpers/_instanceof.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_instanceof'>; -} -declare module 'babel-runtime/helpers/_interop-require-default.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_interop-require-default'>; -} -declare module 'babel-runtime/helpers/_interop-require-wildcard.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_interop-require-wildcard'>; -} -declare module 'babel-runtime/helpers/_jsx.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_jsx'>; -} -declare module 'babel-runtime/helpers/_new-arrow-check.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_new-arrow-check'>; -} -declare module 'babel-runtime/helpers/_object-destructuring-empty.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_object-destructuring-empty'>; -} -declare module 'babel-runtime/helpers/_object-without-properties.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_object-without-properties'>; -} -declare module 'babel-runtime/helpers/_possible-constructor-return.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_possible-constructor-return'>; -} -declare module 'babel-runtime/helpers/_self-global.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_self-global'>; -} -declare module 'babel-runtime/helpers/_set.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_set'>; -} -declare module 'babel-runtime/helpers/_sliced-to-array-loose.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_sliced-to-array-loose'>; -} -declare module 'babel-runtime/helpers/_sliced-to-array.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_sliced-to-array'>; -} -declare module 'babel-runtime/helpers/_tagged-template-literal-loose.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_tagged-template-literal-loose'>; -} -declare module 'babel-runtime/helpers/_tagged-template-literal.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_tagged-template-literal'>; -} -declare module 'babel-runtime/helpers/_temporal-ref.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_temporal-ref'>; -} -declare module 'babel-runtime/helpers/_temporal-undefined.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_temporal-undefined'>; -} -declare module 'babel-runtime/helpers/_to-array.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_to-array'>; -} -declare module 'babel-runtime/helpers/_to-consumable-array.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_to-consumable-array'>; -} -declare module 'babel-runtime/helpers/_typeof.js' { - declare module.exports: $Exports<'babel-runtime/helpers/_typeof'>; -} -declare module 'babel-runtime/helpers/async-generator-delegate.js' { - declare module.exports: $Exports<'babel-runtime/helpers/async-generator-delegate'>; -} -declare module 'babel-runtime/helpers/async-generator.js' { - declare module.exports: $Exports<'babel-runtime/helpers/async-generator'>; -} -declare module 'babel-runtime/helpers/async-iterator.js' { - declare module.exports: $Exports<'babel-runtime/helpers/async-iterator'>; -} -declare module 'babel-runtime/helpers/async-to-generator.js' { - declare module.exports: $Exports<'babel-runtime/helpers/async-to-generator'>; -} -declare module 'babel-runtime/helpers/asyncGenerator.js' { - declare module.exports: $Exports<'babel-runtime/helpers/asyncGenerator'>; -} -declare module 'babel-runtime/helpers/asyncGeneratorDelegate.js' { - declare module.exports: $Exports<'babel-runtime/helpers/asyncGeneratorDelegate'>; -} -declare module 'babel-runtime/helpers/asyncIterator.js' { - declare module.exports: $Exports<'babel-runtime/helpers/asyncIterator'>; -} -declare module 'babel-runtime/helpers/asyncToGenerator.js' { - declare module.exports: $Exports<'babel-runtime/helpers/asyncToGenerator'>; -} -declare module 'babel-runtime/helpers/class-call-check.js' { - declare module.exports: $Exports<'babel-runtime/helpers/class-call-check'>; -} -declare module 'babel-runtime/helpers/classCallCheck.js' { - declare module.exports: $Exports<'babel-runtime/helpers/classCallCheck'>; -} -declare module 'babel-runtime/helpers/create-class.js' { - declare module.exports: $Exports<'babel-runtime/helpers/create-class'>; -} -declare module 'babel-runtime/helpers/createClass.js' { - declare module.exports: $Exports<'babel-runtime/helpers/createClass'>; -} -declare module 'babel-runtime/helpers/defaults.js' { - declare module.exports: $Exports<'babel-runtime/helpers/defaults'>; -} -declare module 'babel-runtime/helpers/define-enumerable-properties.js' { - declare module.exports: $Exports<'babel-runtime/helpers/define-enumerable-properties'>; -} -declare module 'babel-runtime/helpers/define-property.js' { - declare module.exports: $Exports<'babel-runtime/helpers/define-property'>; -} -declare module 'babel-runtime/helpers/defineEnumerableProperties.js' { - declare module.exports: $Exports<'babel-runtime/helpers/defineEnumerableProperties'>; -} -declare module 'babel-runtime/helpers/defineProperty.js' { - declare module.exports: $Exports<'babel-runtime/helpers/defineProperty'>; -} -declare module 'babel-runtime/helpers/extends.js' { - declare module.exports: $Exports<'babel-runtime/helpers/extends'>; -} -declare module 'babel-runtime/helpers/get.js' { - declare module.exports: $Exports<'babel-runtime/helpers/get'>; -} -declare module 'babel-runtime/helpers/inherits.js' { - declare module.exports: $Exports<'babel-runtime/helpers/inherits'>; -} -declare module 'babel-runtime/helpers/instanceof.js' { - declare module.exports: $Exports<'babel-runtime/helpers/instanceof'>; -} -declare module 'babel-runtime/helpers/interop-require-default.js' { - declare module.exports: $Exports<'babel-runtime/helpers/interop-require-default'>; -} -declare module 'babel-runtime/helpers/interop-require-wildcard.js' { - declare module.exports: $Exports<'babel-runtime/helpers/interop-require-wildcard'>; -} -declare module 'babel-runtime/helpers/interopRequireDefault.js' { - declare module.exports: $Exports<'babel-runtime/helpers/interopRequireDefault'>; -} -declare module 'babel-runtime/helpers/interopRequireWildcard.js' { - declare module.exports: $Exports<'babel-runtime/helpers/interopRequireWildcard'>; -} -declare module 'babel-runtime/helpers/jsx.js' { - declare module.exports: $Exports<'babel-runtime/helpers/jsx'>; -} -declare module 'babel-runtime/helpers/new-arrow-check.js' { - declare module.exports: $Exports<'babel-runtime/helpers/new-arrow-check'>; -} -declare module 'babel-runtime/helpers/newArrowCheck.js' { - declare module.exports: $Exports<'babel-runtime/helpers/newArrowCheck'>; -} -declare module 'babel-runtime/helpers/object-destructuring-empty.js' { - declare module.exports: $Exports<'babel-runtime/helpers/object-destructuring-empty'>; -} -declare module 'babel-runtime/helpers/object-without-properties.js' { - declare module.exports: $Exports<'babel-runtime/helpers/object-without-properties'>; -} -declare module 'babel-runtime/helpers/objectDestructuringEmpty.js' { - declare module.exports: $Exports<'babel-runtime/helpers/objectDestructuringEmpty'>; -} -declare module 'babel-runtime/helpers/objectWithoutProperties.js' { - declare module.exports: $Exports<'babel-runtime/helpers/objectWithoutProperties'>; -} -declare module 'babel-runtime/helpers/possible-constructor-return.js' { - declare module.exports: $Exports<'babel-runtime/helpers/possible-constructor-return'>; -} -declare module 'babel-runtime/helpers/possibleConstructorReturn.js' { - declare module.exports: $Exports<'babel-runtime/helpers/possibleConstructorReturn'>; -} -declare module 'babel-runtime/helpers/self-global.js' { - declare module.exports: $Exports<'babel-runtime/helpers/self-global'>; -} -declare module 'babel-runtime/helpers/selfGlobal.js' { - declare module.exports: $Exports<'babel-runtime/helpers/selfGlobal'>; -} -declare module 'babel-runtime/helpers/set.js' { - declare module.exports: $Exports<'babel-runtime/helpers/set'>; -} -declare module 'babel-runtime/helpers/sliced-to-array-loose.js' { - declare module.exports: $Exports<'babel-runtime/helpers/sliced-to-array-loose'>; -} -declare module 'babel-runtime/helpers/sliced-to-array.js' { - declare module.exports: $Exports<'babel-runtime/helpers/sliced-to-array'>; -} -declare module 'babel-runtime/helpers/slicedToArray.js' { - declare module.exports: $Exports<'babel-runtime/helpers/slicedToArray'>; -} -declare module 'babel-runtime/helpers/slicedToArrayLoose.js' { - declare module.exports: $Exports<'babel-runtime/helpers/slicedToArrayLoose'>; -} -declare module 'babel-runtime/helpers/tagged-template-literal-loose.js' { - declare module.exports: $Exports<'babel-runtime/helpers/tagged-template-literal-loose'>; -} -declare module 'babel-runtime/helpers/tagged-template-literal.js' { - declare module.exports: $Exports<'babel-runtime/helpers/tagged-template-literal'>; -} -declare module 'babel-runtime/helpers/taggedTemplateLiteral.js' { - declare module.exports: $Exports<'babel-runtime/helpers/taggedTemplateLiteral'>; -} -declare module 'babel-runtime/helpers/taggedTemplateLiteralLoose.js' { - declare module.exports: $Exports<'babel-runtime/helpers/taggedTemplateLiteralLoose'>; -} -declare module 'babel-runtime/helpers/temporal-ref.js' { - declare module.exports: $Exports<'babel-runtime/helpers/temporal-ref'>; -} -declare module 'babel-runtime/helpers/temporal-undefined.js' { - declare module.exports: $Exports<'babel-runtime/helpers/temporal-undefined'>; -} -declare module 'babel-runtime/helpers/temporalRef.js' { - declare module.exports: $Exports<'babel-runtime/helpers/temporalRef'>; -} -declare module 'babel-runtime/helpers/temporalUndefined.js' { - declare module.exports: $Exports<'babel-runtime/helpers/temporalUndefined'>; -} -declare module 'babel-runtime/helpers/to-array.js' { - declare module.exports: $Exports<'babel-runtime/helpers/to-array'>; -} -declare module 'babel-runtime/helpers/to-consumable-array.js' { - declare module.exports: $Exports<'babel-runtime/helpers/to-consumable-array'>; -} -declare module 'babel-runtime/helpers/toArray.js' { - declare module.exports: $Exports<'babel-runtime/helpers/toArray'>; -} -declare module 'babel-runtime/helpers/toConsumableArray.js' { - declare module.exports: $Exports<'babel-runtime/helpers/toConsumableArray'>; -} -declare module 'babel-runtime/helpers/typeof.js' { - declare module.exports: $Exports<'babel-runtime/helpers/typeof'>; -} -declare module 'babel-runtime/regenerator/index.js' { - declare module.exports: $Exports<'babel-runtime/regenerator/index'>; -} diff --git a/flow-typed/npm/bluebird_v3.x.x.js b/flow-typed/npm/bluebird_v3.x.x.js deleted file mode 100644 index 028a15e..0000000 --- a/flow-typed/npm/bluebird_v3.x.x.js +++ /dev/null @@ -1,329 +0,0 @@ -// flow-typed signature: 1209c57e5c57671a356ea70db5dc52de -// flow-typed version: c6154227d1/bluebird_v3.x.x/flow_>=v0.70.x <=v0.103.x - -type Bluebird$RangeError = Error; -type Bluebird$CancellationErrors = Error; -type Bluebird$TimeoutError = Error; -type Bluebird$RejectionError = Error; -type Bluebird$OperationalError = Error; - -type Bluebird$ConcurrencyOption = { - concurrency: number -}; -type Bluebird$SpreadOption = { - spread: boolean -}; -type Bluebird$MultiArgsOption = { - multiArgs: boolean -}; -type Bluebird$BluebirdConfig = { - warnings?: boolean, - longStackTraces?: boolean, - cancellation?: boolean, - monitoring?: boolean -}; - -declare class Bluebird$PromiseInspection { - isCancelled(): boolean; - isFulfilled(): boolean; - isRejected(): boolean; - pending(): boolean; - reason(): any; - value(): T; -} - -type Bluebird$PromisifyOptions = {| - multiArgs?: boolean, - context: any -|}; - -declare type Bluebird$PromisifyAllOptions = { - suffix?: string, - filter?: ( - name: string, - func: Function, - target?: any, - passesDefaultFilter?: boolean - ) => boolean, - // The promisifier gets a reference to the original method and should return a function which returns a promise - promisifier?: (originalMethod: Function) => () => Bluebird$Promise -}; - -declare type $Promisable = Promise | T; - -declare class Bluebird$Disposable {} - -declare class Bluebird$Promise<+R> extends Promise { - static RangeError: Class; - static CancellationErrors: Class; - static TimeoutError: Class; - static RejectionError: Class; - static OperationalError: Class; - - static Defer: Class; - static PromiseInspection: Class>; - - static all( - Promises: $Promisable>> - ): Bluebird$Promise>; - static props( - input: Object | Map<*, *> | $Promisable> - ): Bluebird$Promise<*>; - static any>( - Promises: Iterable | $Promisable> - ): Bluebird$Promise; - static race>( - Promises: Iterable | $Promisable> - ): Bluebird$Promise; - static reject(error?: any): Bluebird$Promise; - static resolve(object?: $Promisable): Bluebird$Promise; - static some>( - Promises: Iterable | $Promisable>, - count: number - ): Bluebird$Promise>; - static join( - value1: $Promisable, - handler: (a: A) => $Promisable - ): Bluebird$Promise; - static join( - value1: $Promisable, - value2: $Promisable, - handler: (a: A, b: B) => $Promisable - ): Bluebird$Promise; - static join( - value1: $Promisable, - value2: $Promisable, - value3: $Promisable, - handler: (a: A, b: B, c: C) => $Promisable - ): Bluebird$Promise; - static map>( - Promises: Iterable | $Promisable>, - mapper: (item: T, index: number, arrayLength: number) => $Promisable, - options?: Bluebird$ConcurrencyOption - ): Bluebird$Promise>; - static mapSeries>( - Promises: Iterable | $Promisable>, - mapper: (item: T, index: number, arrayLength: number) => $Promisable - ): Bluebird$Promise>; - static reduce>( - Promises: Iterable | $Promisable>, - reducer: ( - total: U, - current: T, - index: number, - arrayLength: number - ) => $Promisable, - initialValue?: $Promisable - ): Bluebird$Promise; - static filter>( - Promises: Iterable | $Promisable>, - filterer: ( - item: T, - index: number, - arrayLength: number - ) => $Promisable, - option?: Bluebird$ConcurrencyOption - ): Bluebird$Promise>; - static each>( - Promises: Iterable | $Promisable>, - iterator: ( - item: T, - index: number, - arrayLength: number - ) => $Promisable - ): Bluebird$Promise>; - static try( - fn: () => $Promisable, - args: ?Array, - ctx: ?any - ): Bluebird$Promise; - static attempt( - fn: () => $Promisable, - args: ?Array, - ctx: ?any - ): Bluebird$Promise; - static delay(ms: number, value: $Promisable): Bluebird$Promise; - static delay(ms: number): Bluebird$Promise; - static config(config: Bluebird$BluebirdConfig): void; - - static defer(): Bluebird$Defer; - static setScheduler( - scheduler: (callback: (...args: Array) => void) => void - ): void; - static promisify( - nodeFunction: Function, - receiver?: Bluebird$PromisifyOptions - ): Function; - static promisifyAll( - target: Object | Array, - options?: Bluebird$PromisifyAllOptions - ): void; - - static coroutine(generatorFunction: Function): Function; - static spawn(generatorFunction: Function): Promise; - - // It doesn't seem possible to have type-generics for a variable number of arguments. - // Handle up to 3 arguments, then just give up and accept 'any'. - static method>(fn: () => R): () => Bluebird$Promise; - static method, A>( - fn: (a: A) => R - ): (a: A) => Bluebird$Promise; - static method, A, B>( - fn: (a: A, b: B) => R - ): (a: A, b: B) => Bluebird$Promise; - static method, A, B, C>( - fn: (a: A, b: B, c: C) => R - ): (a: A, b: B, c: C) => Bluebird$Promise; - static method>( - fn: (...args: any) => R - ): (...args: any) => Bluebird$Promise; - - static cast(value: $Promisable): Bluebird$Promise; - // static bind(ctx: any): Bluebird$Promise; - static is(value: any): boolean; - static longStackTraces(): void; - - static onPossiblyUnhandledRejection(handler: (reason: any) => any): void; - static fromCallback( - resolver: (fn: (error: ?Error, value?: T) => any) => any, - options?: Bluebird$MultiArgsOption - ): Bluebird$Promise; - - constructor( - callback: ( - resolve: (result?: $Promisable) => void, - reject: (error?: any) => void, - onCancel?: (fn?: () => void) => void, - ) => mixed - ): void; - then(onFulfill: null | void, onReject: null | void): Bluebird$Promise; - then( - onFulfill: null | void, - onReject: (error: any) => Promise | U - ): Bluebird$Promise; - then( - onFulfill: (value: R) => Promise | U, - onReject: null | void | ((error: any) => Promise | U) - ): Bluebird$Promise; - catch(onReject: null | void): Promise; - catch(onReject?: (error: any) => $Promisable): Bluebird$Promise; - catch( - err: Class, - onReject: (error: ErrorT) => $Promisable - ): Bluebird$Promise; - catch( - err1: Class, - err2: Class, - onReject: (error: ErrorT) => $Promisable - ): Bluebird$Promise; - catch( - err1: Class, - err2: Class, - err3: Class, - onReject: (error: ErrorT) => $Promisable - ): Bluebird$Promise; - caught( - err: Class, - onReject: (error: Error) => $Promisable - ): Bluebird$Promise; - caught( - err1: Class, - err2: Class, - onReject: (error: ErrorT) => $Promisable - ): Bluebird$Promise; - caught( - err1: Class, - err2: Class, - err3: Class, - onReject: (error: ErrorT) => $Promisable - ): Bluebird$Promise; - caught(onReject: (error: any) => $Promisable): Bluebird$Promise; - - error(onReject?: (error: any) => ?$Promisable): Bluebird$Promise; - done( - onFulfill?: (value: R) => mixed, - onReject?: (error: any) => mixed - ): void; - finally(onDone?: (value: R) => mixed): Bluebird$Promise; - lastly(onDone?: (value: R) => mixed): Bluebird$Promise; - tap(onDone?: (value: R) => mixed): Bluebird$Promise; - delay(ms: number): Bluebird$Promise; - timeout(ms: number, message?: string): Bluebird$Promise; - cancel(): void; - - // bind(ctx: any): Bluebird$Promise; - call(propertyName: string, ...args: Array): Bluebird$Promise; - throw(reason: Error): Bluebird$Promise; - thenThrow(reason: Error): Bluebird$Promise; - all(): Bluebird$Promise>; - any(): Bluebird$Promise; - some(count: number): Bluebird$Promise>; - race(): Bluebird$Promise; - map( - mapper: (item: T, index: number, arrayLength: number) => $Promisable, - options?: Bluebird$ConcurrencyOption - ): Bluebird$Promise>; - mapSeries( - mapper: (item: T, index: number, arrayLength: number) => $Promisable - ): Bluebird$Promise>; - reduce( - reducer: ( - total: T, - item: U, - index: number, - arrayLength: number - ) => $Promisable, - initialValue?: $Promisable - ): Bluebird$Promise; - filter( - filterer: ( - item: T, - index: number, - arrayLength: number - ) => $Promisable, - options?: Bluebird$ConcurrencyOption - ): Bluebird$Promise>; - each( - iterator: (item: T, index: number, arrayLength: number) => $Promisable - ): Bluebird$Promise>; - asCallback( - callback: (error: ?any, value?: T) => any, - options?: Bluebird$SpreadOption - ): void; - return(value: T): Bluebird$Promise; - thenReturn(value: T): Bluebird$Promise; - spread(...args: Array): Bluebird$Promise<*>; - - reflect(): Bluebird$Promise>; - - isFulfilled(): boolean; - isRejected(): boolean; - isPending(): boolean; - isResolved(): boolean; - - value(): R; - reason(): any; - - disposer( - disposer: (value: R, promise: Promise<*>) => void - ): Bluebird$Disposable; - - static using( - disposable: Bluebird$Disposable, - handler: (value: T) => $Promisable - ): Bluebird$Promise; - - suppressUnhandledRejections(): void; -} - -declare class Bluebird$Defer { - promise: Bluebird$Promise<*>; - resolve: (value: any) => any; - reject: (value: any) => any; -} - -declare module "bluebird" { - declare module.exports: typeof Bluebird$Promise; - - declare type Disposable = Bluebird$Disposable; -} diff --git a/flow-typed/npm/chalk_v2.x.x.js b/flow-typed/npm/chalk_v2.x.x.js deleted file mode 100644 index 78db58e..0000000 --- a/flow-typed/npm/chalk_v2.x.x.js +++ /dev/null @@ -1,98 +0,0 @@ -// flow-typed signature: 44e706b2f04e8e65097119cbf57b9846 -// flow-typed version: c6154227d1/chalk_v2.x.x/flow_>=v0.25.x <=v0.103.x - -// From: https://github.com/chalk/chalk/blob/master/index.js.flow - -declare module "chalk" { - declare type TemplateStringsArray = $ReadOnlyArray; - - declare type Level = $Values<{ - None: 0, - Basic: 1, - Ansi256: 2, - TrueColor: 3 - }>; - - declare type ChalkOptions = {| - enabled?: boolean, - level?: Level - |}; - - declare type ColorSupport = {| - level: Level, - hasBasic: boolean, - has256: boolean, - has16m: boolean - |}; - - declare interface Chalk { - (...text: string[]): string, - (text: TemplateStringsArray, ...placeholders: string[]): string, - constructor(options?: ChalkOptions): Chalk, - enabled: boolean, - level: Level, - rgb(r: number, g: number, b: number): Chalk, - hsl(h: number, s: number, l: number): Chalk, - hsv(h: number, s: number, v: number): Chalk, - hwb(h: number, w: number, b: number): Chalk, - bgHex(color: string): Chalk, - bgKeyword(color: string): Chalk, - bgRgb(r: number, g: number, b: number): Chalk, - bgHsl(h: number, s: number, l: number): Chalk, - bgHsv(h: number, s: number, v: number): Chalk, - bgHwb(h: number, w: number, b: number): Chalk, - hex(color: string): Chalk, - keyword(color: string): Chalk, - - +reset: Chalk, - +bold: Chalk, - +dim: Chalk, - +italic: Chalk, - +underline: Chalk, - +inverse: Chalk, - +hidden: Chalk, - +strikethrough: Chalk, - - +visible: Chalk, - - +black: Chalk, - +red: Chalk, - +green: Chalk, - +yellow: Chalk, - +blue: Chalk, - +magenta: Chalk, - +cyan: Chalk, - +white: Chalk, - +gray: Chalk, - +grey: Chalk, - +blackBright: Chalk, - +redBright: Chalk, - +greenBright: Chalk, - +yellowBright: Chalk, - +blueBright: Chalk, - +magentaBright: Chalk, - +cyanBright: Chalk, - +whiteBright: Chalk, - - +bgBlack: Chalk, - +bgRed: Chalk, - +bgGreen: Chalk, - +bgYellow: Chalk, - +bgBlue: Chalk, - +bgMagenta: Chalk, - +bgCyan: Chalk, - +bgWhite: Chalk, - +bgBlackBright: Chalk, - +bgRedBright: Chalk, - +bgGreenBright: Chalk, - +bgYellowBright: Chalk, - +bgBlueBright: Chalk, - +bgMagentaBright: Chalk, - +bgCyanBright: Chalk, - +bgWhiteBrigh: Chalk, - - supportsColor: ColorSupport - } - - declare module.exports: Chalk; -} diff --git a/flow-typed/npm/copy-webpack-plugin_vx.x.x.js b/flow-typed/npm/copy-webpack-plugin_vx.x.x.js deleted file mode 100644 index d9c6bd9..0000000 --- a/flow-typed/npm/copy-webpack-plugin_vx.x.x.js +++ /dev/null @@ -1,95 +0,0 @@ -// flow-typed signature: 1f47103c1de066572ad7e7566ef9f78a -// flow-typed version: <>/copy-webpack-plugin_v4.6.0/flow_v0.96.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'copy-webpack-plugin' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'copy-webpack-plugin' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'copy-webpack-plugin/dist/index' { - declare module.exports: any; -} - -declare module 'copy-webpack-plugin/dist/preProcessPattern' { - declare module.exports: any; -} - -declare module 'copy-webpack-plugin/dist/processPattern' { - declare module.exports: any; -} - -declare module 'copy-webpack-plugin/dist/utils/escape' { - declare module.exports: any; -} - -declare module 'copy-webpack-plugin/dist/utils/isObject' { - declare module.exports: any; -} - -declare module 'copy-webpack-plugin/dist/utils/promisify' { - declare module.exports: any; -} - -declare module 'copy-webpack-plugin/dist/utils/readFilePromise' { - declare module.exports: any; -} - -declare module 'copy-webpack-plugin/dist/utils/readPromise' { - declare module.exports: any; -} - -declare module 'copy-webpack-plugin/dist/utils/statPromise' { - declare module.exports: any; -} - -declare module 'copy-webpack-plugin/dist/writeFile' { - declare module.exports: any; -} - -// Filename aliases -declare module 'copy-webpack-plugin/dist/index.js' { - declare module.exports: $Exports<'copy-webpack-plugin/dist/index'>; -} -declare module 'copy-webpack-plugin/dist/preProcessPattern.js' { - declare module.exports: $Exports<'copy-webpack-plugin/dist/preProcessPattern'>; -} -declare module 'copy-webpack-plugin/dist/processPattern.js' { - declare module.exports: $Exports<'copy-webpack-plugin/dist/processPattern'>; -} -declare module 'copy-webpack-plugin/dist/utils/escape.js' { - declare module.exports: $Exports<'copy-webpack-plugin/dist/utils/escape'>; -} -declare module 'copy-webpack-plugin/dist/utils/isObject.js' { - declare module.exports: $Exports<'copy-webpack-plugin/dist/utils/isObject'>; -} -declare module 'copy-webpack-plugin/dist/utils/promisify.js' { - declare module.exports: $Exports<'copy-webpack-plugin/dist/utils/promisify'>; -} -declare module 'copy-webpack-plugin/dist/utils/readFilePromise.js' { - declare module.exports: $Exports<'copy-webpack-plugin/dist/utils/readFilePromise'>; -} -declare module 'copy-webpack-plugin/dist/utils/readPromise.js' { - declare module.exports: $Exports<'copy-webpack-plugin/dist/utils/readPromise'>; -} -declare module 'copy-webpack-plugin/dist/utils/statPromise.js' { - declare module.exports: $Exports<'copy-webpack-plugin/dist/utils/statPromise'>; -} -declare module 'copy-webpack-plugin/dist/writeFile.js' { - declare module.exports: $Exports<'copy-webpack-plugin/dist/writeFile'>; -} diff --git a/flow-typed/npm/cross-env_vx.x.x.js b/flow-typed/npm/cross-env_vx.x.x.js deleted file mode 100644 index 9ba5a77..0000000 --- a/flow-typed/npm/cross-env_vx.x.x.js +++ /dev/null @@ -1,60 +0,0 @@ -// flow-typed signature: 4aa7e68372aa47006a68c7b60ed3c341 -// flow-typed version: <>/cross-env_v5.2.0/flow_v0.100.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'cross-env' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'cross-env' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'cross-env/dist/bin/cross-env-shell' { - declare module.exports: any; -} - -declare module 'cross-env/dist/bin/cross-env' { - declare module.exports: any; -} - -declare module 'cross-env/dist/command' { - declare module.exports: any; -} - -declare module 'cross-env/dist/index' { - declare module.exports: any; -} - -declare module 'cross-env/dist/variable' { - declare module.exports: any; -} - -// Filename aliases -declare module 'cross-env/dist/bin/cross-env-shell.js' { - declare module.exports: $Exports<'cross-env/dist/bin/cross-env-shell'>; -} -declare module 'cross-env/dist/bin/cross-env.js' { - declare module.exports: $Exports<'cross-env/dist/bin/cross-env'>; -} -declare module 'cross-env/dist/command.js' { - declare module.exports: $Exports<'cross-env/dist/command'>; -} -declare module 'cross-env/dist/index.js' { - declare module.exports: $Exports<'cross-env/dist/index'>; -} -declare module 'cross-env/dist/variable.js' { - declare module.exports: $Exports<'cross-env/dist/variable'>; -} diff --git a/flow-typed/npm/eslint_vx.x.x.js b/flow-typed/npm/eslint_vx.x.x.js deleted file mode 100644 index 7a89758..0000000 --- a/flow-typed/npm/eslint_vx.x.x.js +++ /dev/null @@ -1,2587 +0,0 @@ -// flow-typed signature: 0f8bf92e8504be9458ae8396b5216f2a -// flow-typed version: <>/eslint_v6.2.2/flow_v0.100.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'eslint' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'eslint' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'eslint/bin/eslint' { - declare module.exports: any; -} - -declare module 'eslint/conf/config-schema' { - declare module.exports: any; -} - -declare module 'eslint/conf/default-cli-options' { - declare module.exports: any; -} - -declare module 'eslint/conf/environments' { - declare module.exports: any; -} - -declare module 'eslint/conf/eslint-all' { - declare module.exports: any; -} - -declare module 'eslint/conf/eslint-recommended' { - declare module.exports: any; -} - -declare module 'eslint/lib/api' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/cascading-config-array-factory' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/cli-engine' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/config-array-factory' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/config-array/config-array' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/config-array/config-dependency' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/config-array/extracted-config' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/config-array/index' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/config-array/override-tester' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/file-enumerator' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/checkstyle' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/codeframe' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/compact' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/html' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/jslint-xml' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/json-with-metadata' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/json' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/junit' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/stylish' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/table' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/tap' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/unix' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/formatters/visualstudio' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/hash' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/ignored-paths' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/index' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/lint-result-cache' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/load-rules' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli-engine/xml-escape' { - declare module.exports: any; -} - -declare module 'eslint/lib/cli' { - declare module.exports: any; -} - -declare module 'eslint/lib/init/autoconfig' { - declare module.exports: any; -} - -declare module 'eslint/lib/init/config-file' { - declare module.exports: any; -} - -declare module 'eslint/lib/init/config-initializer' { - declare module.exports: any; -} - -declare module 'eslint/lib/init/config-rule' { - declare module.exports: any; -} - -declare module 'eslint/lib/init/npm-utils' { - declare module.exports: any; -} - -declare module 'eslint/lib/init/source-code-utils' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/apply-disable-directives' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/code-path-analysis/code-path-analyzer' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/code-path-analysis/code-path-segment' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/code-path-analysis/code-path-state' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/code-path-analysis/code-path' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/code-path-analysis/debug-helpers' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/code-path-analysis/fork-context' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/code-path-analysis/id-generator' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/config-comment-parser' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/index' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/interpolate' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/linter' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/node-event-generator' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/report-translator' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/rule-fixer' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/rules' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/safe-emitter' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/source-code-fixer' { - declare module.exports: any; -} - -declare module 'eslint/lib/linter/timing' { - declare module.exports: any; -} - -declare module 'eslint/lib/options' { - declare module.exports: any; -} - -declare module 'eslint/lib/rule-tester/index' { - declare module.exports: any; -} - -declare module 'eslint/lib/rule-tester/rule-tester' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/accessor-pairs' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/array-bracket-newline' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/array-bracket-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/array-callback-return' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/array-element-newline' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/arrow-body-style' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/arrow-parens' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/arrow-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/block-scoped-var' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/block-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/brace-style' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/callback-return' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/camelcase' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/capitalized-comments' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/class-methods-use-this' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/comma-dangle' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/comma-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/comma-style' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/complexity' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/computed-property-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/consistent-return' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/consistent-this' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/constructor-super' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/curly' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/default-case' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/dot-location' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/dot-notation' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/eol-last' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/eqeqeq' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/for-direction' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/func-call-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/func-name-matching' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/func-names' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/func-style' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/function-call-argument-newline' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/function-paren-newline' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/generator-star-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/getter-return' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/global-require' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/guard-for-in' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/handle-callback-err' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/id-blacklist' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/id-length' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/id-match' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/implicit-arrow-linebreak' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/indent-legacy' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/indent' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/index' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/init-declarations' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/jsx-quotes' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/key-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/keyword-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/line-comment-position' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/linebreak-style' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/lines-around-comment' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/lines-around-directive' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/lines-between-class-members' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/max-classes-per-file' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/max-depth' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/max-len' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/max-lines-per-function' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/max-lines' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/max-nested-callbacks' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/max-params' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/max-statements-per-line' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/max-statements' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/multiline-comment-style' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/multiline-ternary' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/new-cap' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/new-parens' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/newline-after-var' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/newline-before-return' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/newline-per-chained-call' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-alert' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-array-constructor' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-async-promise-executor' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-await-in-loop' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-bitwise' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-buffer-constructor' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-caller' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-case-declarations' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-catch-shadow' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-class-assign' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-compare-neg-zero' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-cond-assign' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-confusing-arrow' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-console' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-const-assign' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-constant-condition' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-continue' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-control-regex' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-debugger' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-delete-var' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-div-regex' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-dupe-args' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-dupe-class-members' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-dupe-keys' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-duplicate-case' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-duplicate-imports' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-else-return' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-empty-character-class' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-empty-function' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-empty-pattern' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-empty' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-eq-null' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-eval' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-ex-assign' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-extend-native' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-extra-bind' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-extra-boolean-cast' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-extra-label' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-extra-parens' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-extra-semi' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-fallthrough' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-floating-decimal' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-func-assign' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-global-assign' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-implicit-coercion' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-implicit-globals' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-implied-eval' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-inline-comments' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-inner-declarations' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-invalid-regexp' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-invalid-this' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-irregular-whitespace' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-iterator' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-label-var' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-labels' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-lone-blocks' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-lonely-if' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-loop-func' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-magic-numbers' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-misleading-character-class' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-mixed-operators' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-mixed-requires' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-mixed-spaces-and-tabs' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-multi-assign' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-multi-spaces' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-multi-str' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-multiple-empty-lines' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-native-reassign' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-negated-condition' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-negated-in-lhs' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-nested-ternary' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-new-func' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-new-object' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-new-require' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-new-symbol' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-new-wrappers' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-new' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-obj-calls' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-octal-escape' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-octal' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-param-reassign' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-path-concat' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-plusplus' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-process-env' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-process-exit' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-proto' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-prototype-builtins' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-redeclare' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-regex-spaces' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-restricted-globals' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-restricted-imports' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-restricted-modules' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-restricted-properties' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-restricted-syntax' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-return-assign' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-return-await' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-script-url' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-self-assign' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-self-compare' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-sequences' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-shadow-restricted-names' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-shadow' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-spaced-func' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-sparse-arrays' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-sync' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-tabs' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-template-curly-in-string' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-ternary' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-this-before-super' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-throw-literal' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-trailing-spaces' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-undef-init' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-undef' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-undefined' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-underscore-dangle' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-unexpected-multiline' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-unmodified-loop-condition' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-unneeded-ternary' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-unreachable' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-unsafe-finally' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-unsafe-negation' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-unused-expressions' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-unused-labels' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-unused-vars' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-use-before-define' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-useless-call' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-useless-catch' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-useless-computed-key' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-useless-concat' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-useless-constructor' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-useless-escape' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-useless-rename' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-useless-return' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-var' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-void' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-warning-comments' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-whitespace-before-property' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/no-with' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/nonblock-statement-body-position' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/object-curly-newline' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/object-curly-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/object-property-newline' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/object-shorthand' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/one-var-declaration-per-line' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/one-var' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/operator-assignment' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/operator-linebreak' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/padded-blocks' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/padding-line-between-statements' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/prefer-arrow-callback' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/prefer-const' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/prefer-destructuring' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/prefer-named-capture-group' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/prefer-numeric-literals' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/prefer-object-spread' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/prefer-promise-reject-errors' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/prefer-reflect' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/prefer-rest-params' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/prefer-spread' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/prefer-template' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/quote-props' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/quotes' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/radix' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/require-atomic-updates' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/require-await' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/require-jsdoc' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/require-unicode-regexp' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/require-yield' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/rest-spread-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/semi-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/semi-style' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/semi' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/sort-imports' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/sort-keys' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/sort-vars' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/space-before-blocks' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/space-before-function-paren' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/space-in-parens' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/space-infix-ops' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/space-unary-ops' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/spaced-comment' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/strict' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/switch-colon-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/symbol-description' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/template-curly-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/template-tag-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/unicode-bom' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/use-isnan' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/utils/ast-utils' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/utils/fix-tracker' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/utils/keywords' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/utils/lazy-loading-rule-map' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/utils/patterns/letters' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/utils/unicode/index' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/utils/unicode/is-combining-character' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/utils/unicode/is-emoji-modifier' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/utils/unicode/is-regional-indicator-symbol' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/utils/unicode/is-surrogate-pair' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/valid-jsdoc' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/valid-typeof' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/vars-on-top' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/wrap-iife' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/wrap-regex' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/yield-star-spacing' { - declare module.exports: any; -} - -declare module 'eslint/lib/rules/yoda' { - declare module.exports: any; -} - -declare module 'eslint/lib/shared/ajv' { - declare module.exports: any; -} - -declare module 'eslint/lib/shared/ast-utils' { - declare module.exports: any; -} - -declare module 'eslint/lib/shared/config-ops' { - declare module.exports: any; -} - -declare module 'eslint/lib/shared/config-validator' { - declare module.exports: any; -} - -declare module 'eslint/lib/shared/logging' { - declare module.exports: any; -} - -declare module 'eslint/lib/shared/naming' { - declare module.exports: any; -} - -declare module 'eslint/lib/shared/relative-module-resolver' { - declare module.exports: any; -} - -declare module 'eslint/lib/shared/traverser' { - declare module.exports: any; -} - -declare module 'eslint/lib/shared/types' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/index' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/source-code' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store/backward-token-comment-cursor' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store/backward-token-cursor' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store/cursor' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store/cursors' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store/decorative-cursor' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store/filter-cursor' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store/forward-token-comment-cursor' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store/forward-token-cursor' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store/index' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store/limit-cursor' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store/padded-token-cursor' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store/skip-cursor' { - declare module.exports: any; -} - -declare module 'eslint/lib/source-code/token-store/utils' { - declare module.exports: any; -} - -// Filename aliases -declare module 'eslint/bin/eslint.js' { - declare module.exports: $Exports<'eslint/bin/eslint'>; -} -declare module 'eslint/conf/config-schema.js' { - declare module.exports: $Exports<'eslint/conf/config-schema'>; -} -declare module 'eslint/conf/default-cli-options.js' { - declare module.exports: $Exports<'eslint/conf/default-cli-options'>; -} -declare module 'eslint/conf/environments.js' { - declare module.exports: $Exports<'eslint/conf/environments'>; -} -declare module 'eslint/conf/eslint-all.js' { - declare module.exports: $Exports<'eslint/conf/eslint-all'>; -} -declare module 'eslint/conf/eslint-recommended.js' { - declare module.exports: $Exports<'eslint/conf/eslint-recommended'>; -} -declare module 'eslint/lib/api.js' { - declare module.exports: $Exports<'eslint/lib/api'>; -} -declare module 'eslint/lib/cli-engine/cascading-config-array-factory.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/cascading-config-array-factory'>; -} -declare module 'eslint/lib/cli-engine/cli-engine.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/cli-engine'>; -} -declare module 'eslint/lib/cli-engine/config-array-factory.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/config-array-factory'>; -} -declare module 'eslint/lib/cli-engine/config-array/config-array.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/config-array/config-array'>; -} -declare module 'eslint/lib/cli-engine/config-array/config-dependency.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/config-array/config-dependency'>; -} -declare module 'eslint/lib/cli-engine/config-array/extracted-config.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/config-array/extracted-config'>; -} -declare module 'eslint/lib/cli-engine/config-array/index.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/config-array/index'>; -} -declare module 'eslint/lib/cli-engine/config-array/override-tester.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/config-array/override-tester'>; -} -declare module 'eslint/lib/cli-engine/file-enumerator.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/file-enumerator'>; -} -declare module 'eslint/lib/cli-engine/formatters/checkstyle.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/checkstyle'>; -} -declare module 'eslint/lib/cli-engine/formatters/codeframe.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/codeframe'>; -} -declare module 'eslint/lib/cli-engine/formatters/compact.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/compact'>; -} -declare module 'eslint/lib/cli-engine/formatters/html.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/html'>; -} -declare module 'eslint/lib/cli-engine/formatters/jslint-xml.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/jslint-xml'>; -} -declare module 'eslint/lib/cli-engine/formatters/json-with-metadata.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/json-with-metadata'>; -} -declare module 'eslint/lib/cli-engine/formatters/json.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/json'>; -} -declare module 'eslint/lib/cli-engine/formatters/junit.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/junit'>; -} -declare module 'eslint/lib/cli-engine/formatters/stylish.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/stylish'>; -} -declare module 'eslint/lib/cli-engine/formatters/table.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/table'>; -} -declare module 'eslint/lib/cli-engine/formatters/tap.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/tap'>; -} -declare module 'eslint/lib/cli-engine/formatters/unix.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/unix'>; -} -declare module 'eslint/lib/cli-engine/formatters/visualstudio.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/formatters/visualstudio'>; -} -declare module 'eslint/lib/cli-engine/hash.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/hash'>; -} -declare module 'eslint/lib/cli-engine/ignored-paths.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/ignored-paths'>; -} -declare module 'eslint/lib/cli-engine/index.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/index'>; -} -declare module 'eslint/lib/cli-engine/lint-result-cache.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/lint-result-cache'>; -} -declare module 'eslint/lib/cli-engine/load-rules.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/load-rules'>; -} -declare module 'eslint/lib/cli-engine/xml-escape.js' { - declare module.exports: $Exports<'eslint/lib/cli-engine/xml-escape'>; -} -declare module 'eslint/lib/cli.js' { - declare module.exports: $Exports<'eslint/lib/cli'>; -} -declare module 'eslint/lib/init/autoconfig.js' { - declare module.exports: $Exports<'eslint/lib/init/autoconfig'>; -} -declare module 'eslint/lib/init/config-file.js' { - declare module.exports: $Exports<'eslint/lib/init/config-file'>; -} -declare module 'eslint/lib/init/config-initializer.js' { - declare module.exports: $Exports<'eslint/lib/init/config-initializer'>; -} -declare module 'eslint/lib/init/config-rule.js' { - declare module.exports: $Exports<'eslint/lib/init/config-rule'>; -} -declare module 'eslint/lib/init/npm-utils.js' { - declare module.exports: $Exports<'eslint/lib/init/npm-utils'>; -} -declare module 'eslint/lib/init/source-code-utils.js' { - declare module.exports: $Exports<'eslint/lib/init/source-code-utils'>; -} -declare module 'eslint/lib/linter/apply-disable-directives.js' { - declare module.exports: $Exports<'eslint/lib/linter/apply-disable-directives'>; -} -declare module 'eslint/lib/linter/code-path-analysis/code-path-analyzer.js' { - declare module.exports: $Exports<'eslint/lib/linter/code-path-analysis/code-path-analyzer'>; -} -declare module 'eslint/lib/linter/code-path-analysis/code-path-segment.js' { - declare module.exports: $Exports<'eslint/lib/linter/code-path-analysis/code-path-segment'>; -} -declare module 'eslint/lib/linter/code-path-analysis/code-path-state.js' { - declare module.exports: $Exports<'eslint/lib/linter/code-path-analysis/code-path-state'>; -} -declare module 'eslint/lib/linter/code-path-analysis/code-path.js' { - declare module.exports: $Exports<'eslint/lib/linter/code-path-analysis/code-path'>; -} -declare module 'eslint/lib/linter/code-path-analysis/debug-helpers.js' { - declare module.exports: $Exports<'eslint/lib/linter/code-path-analysis/debug-helpers'>; -} -declare module 'eslint/lib/linter/code-path-analysis/fork-context.js' { - declare module.exports: $Exports<'eslint/lib/linter/code-path-analysis/fork-context'>; -} -declare module 'eslint/lib/linter/code-path-analysis/id-generator.js' { - declare module.exports: $Exports<'eslint/lib/linter/code-path-analysis/id-generator'>; -} -declare module 'eslint/lib/linter/config-comment-parser.js' { - declare module.exports: $Exports<'eslint/lib/linter/config-comment-parser'>; -} -declare module 'eslint/lib/linter/index.js' { - declare module.exports: $Exports<'eslint/lib/linter/index'>; -} -declare module 'eslint/lib/linter/interpolate.js' { - declare module.exports: $Exports<'eslint/lib/linter/interpolate'>; -} -declare module 'eslint/lib/linter/linter.js' { - declare module.exports: $Exports<'eslint/lib/linter/linter'>; -} -declare module 'eslint/lib/linter/node-event-generator.js' { - declare module.exports: $Exports<'eslint/lib/linter/node-event-generator'>; -} -declare module 'eslint/lib/linter/report-translator.js' { - declare module.exports: $Exports<'eslint/lib/linter/report-translator'>; -} -declare module 'eslint/lib/linter/rule-fixer.js' { - declare module.exports: $Exports<'eslint/lib/linter/rule-fixer'>; -} -declare module 'eslint/lib/linter/rules.js' { - declare module.exports: $Exports<'eslint/lib/linter/rules'>; -} -declare module 'eslint/lib/linter/safe-emitter.js' { - declare module.exports: $Exports<'eslint/lib/linter/safe-emitter'>; -} -declare module 'eslint/lib/linter/source-code-fixer.js' { - declare module.exports: $Exports<'eslint/lib/linter/source-code-fixer'>; -} -declare module 'eslint/lib/linter/timing.js' { - declare module.exports: $Exports<'eslint/lib/linter/timing'>; -} -declare module 'eslint/lib/options.js' { - declare module.exports: $Exports<'eslint/lib/options'>; -} -declare module 'eslint/lib/rule-tester/index.js' { - declare module.exports: $Exports<'eslint/lib/rule-tester/index'>; -} -declare module 'eslint/lib/rule-tester/rule-tester.js' { - declare module.exports: $Exports<'eslint/lib/rule-tester/rule-tester'>; -} -declare module 'eslint/lib/rules/accessor-pairs.js' { - declare module.exports: $Exports<'eslint/lib/rules/accessor-pairs'>; -} -declare module 'eslint/lib/rules/array-bracket-newline.js' { - declare module.exports: $Exports<'eslint/lib/rules/array-bracket-newline'>; -} -declare module 'eslint/lib/rules/array-bracket-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/array-bracket-spacing'>; -} -declare module 'eslint/lib/rules/array-callback-return.js' { - declare module.exports: $Exports<'eslint/lib/rules/array-callback-return'>; -} -declare module 'eslint/lib/rules/array-element-newline.js' { - declare module.exports: $Exports<'eslint/lib/rules/array-element-newline'>; -} -declare module 'eslint/lib/rules/arrow-body-style.js' { - declare module.exports: $Exports<'eslint/lib/rules/arrow-body-style'>; -} -declare module 'eslint/lib/rules/arrow-parens.js' { - declare module.exports: $Exports<'eslint/lib/rules/arrow-parens'>; -} -declare module 'eslint/lib/rules/arrow-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/arrow-spacing'>; -} -declare module 'eslint/lib/rules/block-scoped-var.js' { - declare module.exports: $Exports<'eslint/lib/rules/block-scoped-var'>; -} -declare module 'eslint/lib/rules/block-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/block-spacing'>; -} -declare module 'eslint/lib/rules/brace-style.js' { - declare module.exports: $Exports<'eslint/lib/rules/brace-style'>; -} -declare module 'eslint/lib/rules/callback-return.js' { - declare module.exports: $Exports<'eslint/lib/rules/callback-return'>; -} -declare module 'eslint/lib/rules/camelcase.js' { - declare module.exports: $Exports<'eslint/lib/rules/camelcase'>; -} -declare module 'eslint/lib/rules/capitalized-comments.js' { - declare module.exports: $Exports<'eslint/lib/rules/capitalized-comments'>; -} -declare module 'eslint/lib/rules/class-methods-use-this.js' { - declare module.exports: $Exports<'eslint/lib/rules/class-methods-use-this'>; -} -declare module 'eslint/lib/rules/comma-dangle.js' { - declare module.exports: $Exports<'eslint/lib/rules/comma-dangle'>; -} -declare module 'eslint/lib/rules/comma-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/comma-spacing'>; -} -declare module 'eslint/lib/rules/comma-style.js' { - declare module.exports: $Exports<'eslint/lib/rules/comma-style'>; -} -declare module 'eslint/lib/rules/complexity.js' { - declare module.exports: $Exports<'eslint/lib/rules/complexity'>; -} -declare module 'eslint/lib/rules/computed-property-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/computed-property-spacing'>; -} -declare module 'eslint/lib/rules/consistent-return.js' { - declare module.exports: $Exports<'eslint/lib/rules/consistent-return'>; -} -declare module 'eslint/lib/rules/consistent-this.js' { - declare module.exports: $Exports<'eslint/lib/rules/consistent-this'>; -} -declare module 'eslint/lib/rules/constructor-super.js' { - declare module.exports: $Exports<'eslint/lib/rules/constructor-super'>; -} -declare module 'eslint/lib/rules/curly.js' { - declare module.exports: $Exports<'eslint/lib/rules/curly'>; -} -declare module 'eslint/lib/rules/default-case.js' { - declare module.exports: $Exports<'eslint/lib/rules/default-case'>; -} -declare module 'eslint/lib/rules/dot-location.js' { - declare module.exports: $Exports<'eslint/lib/rules/dot-location'>; -} -declare module 'eslint/lib/rules/dot-notation.js' { - declare module.exports: $Exports<'eslint/lib/rules/dot-notation'>; -} -declare module 'eslint/lib/rules/eol-last.js' { - declare module.exports: $Exports<'eslint/lib/rules/eol-last'>; -} -declare module 'eslint/lib/rules/eqeqeq.js' { - declare module.exports: $Exports<'eslint/lib/rules/eqeqeq'>; -} -declare module 'eslint/lib/rules/for-direction.js' { - declare module.exports: $Exports<'eslint/lib/rules/for-direction'>; -} -declare module 'eslint/lib/rules/func-call-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/func-call-spacing'>; -} -declare module 'eslint/lib/rules/func-name-matching.js' { - declare module.exports: $Exports<'eslint/lib/rules/func-name-matching'>; -} -declare module 'eslint/lib/rules/func-names.js' { - declare module.exports: $Exports<'eslint/lib/rules/func-names'>; -} -declare module 'eslint/lib/rules/func-style.js' { - declare module.exports: $Exports<'eslint/lib/rules/func-style'>; -} -declare module 'eslint/lib/rules/function-call-argument-newline.js' { - declare module.exports: $Exports<'eslint/lib/rules/function-call-argument-newline'>; -} -declare module 'eslint/lib/rules/function-paren-newline.js' { - declare module.exports: $Exports<'eslint/lib/rules/function-paren-newline'>; -} -declare module 'eslint/lib/rules/generator-star-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/generator-star-spacing'>; -} -declare module 'eslint/lib/rules/getter-return.js' { - declare module.exports: $Exports<'eslint/lib/rules/getter-return'>; -} -declare module 'eslint/lib/rules/global-require.js' { - declare module.exports: $Exports<'eslint/lib/rules/global-require'>; -} -declare module 'eslint/lib/rules/guard-for-in.js' { - declare module.exports: $Exports<'eslint/lib/rules/guard-for-in'>; -} -declare module 'eslint/lib/rules/handle-callback-err.js' { - declare module.exports: $Exports<'eslint/lib/rules/handle-callback-err'>; -} -declare module 'eslint/lib/rules/id-blacklist.js' { - declare module.exports: $Exports<'eslint/lib/rules/id-blacklist'>; -} -declare module 'eslint/lib/rules/id-length.js' { - declare module.exports: $Exports<'eslint/lib/rules/id-length'>; -} -declare module 'eslint/lib/rules/id-match.js' { - declare module.exports: $Exports<'eslint/lib/rules/id-match'>; -} -declare module 'eslint/lib/rules/implicit-arrow-linebreak.js' { - declare module.exports: $Exports<'eslint/lib/rules/implicit-arrow-linebreak'>; -} -declare module 'eslint/lib/rules/indent-legacy.js' { - declare module.exports: $Exports<'eslint/lib/rules/indent-legacy'>; -} -declare module 'eslint/lib/rules/indent.js' { - declare module.exports: $Exports<'eslint/lib/rules/indent'>; -} -declare module 'eslint/lib/rules/index.js' { - declare module.exports: $Exports<'eslint/lib/rules/index'>; -} -declare module 'eslint/lib/rules/init-declarations.js' { - declare module.exports: $Exports<'eslint/lib/rules/init-declarations'>; -} -declare module 'eslint/lib/rules/jsx-quotes.js' { - declare module.exports: $Exports<'eslint/lib/rules/jsx-quotes'>; -} -declare module 'eslint/lib/rules/key-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/key-spacing'>; -} -declare module 'eslint/lib/rules/keyword-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/keyword-spacing'>; -} -declare module 'eslint/lib/rules/line-comment-position.js' { - declare module.exports: $Exports<'eslint/lib/rules/line-comment-position'>; -} -declare module 'eslint/lib/rules/linebreak-style.js' { - declare module.exports: $Exports<'eslint/lib/rules/linebreak-style'>; -} -declare module 'eslint/lib/rules/lines-around-comment.js' { - declare module.exports: $Exports<'eslint/lib/rules/lines-around-comment'>; -} -declare module 'eslint/lib/rules/lines-around-directive.js' { - declare module.exports: $Exports<'eslint/lib/rules/lines-around-directive'>; -} -declare module 'eslint/lib/rules/lines-between-class-members.js' { - declare module.exports: $Exports<'eslint/lib/rules/lines-between-class-members'>; -} -declare module 'eslint/lib/rules/max-classes-per-file.js' { - declare module.exports: $Exports<'eslint/lib/rules/max-classes-per-file'>; -} -declare module 'eslint/lib/rules/max-depth.js' { - declare module.exports: $Exports<'eslint/lib/rules/max-depth'>; -} -declare module 'eslint/lib/rules/max-len.js' { - declare module.exports: $Exports<'eslint/lib/rules/max-len'>; -} -declare module 'eslint/lib/rules/max-lines-per-function.js' { - declare module.exports: $Exports<'eslint/lib/rules/max-lines-per-function'>; -} -declare module 'eslint/lib/rules/max-lines.js' { - declare module.exports: $Exports<'eslint/lib/rules/max-lines'>; -} -declare module 'eslint/lib/rules/max-nested-callbacks.js' { - declare module.exports: $Exports<'eslint/lib/rules/max-nested-callbacks'>; -} -declare module 'eslint/lib/rules/max-params.js' { - declare module.exports: $Exports<'eslint/lib/rules/max-params'>; -} -declare module 'eslint/lib/rules/max-statements-per-line.js' { - declare module.exports: $Exports<'eslint/lib/rules/max-statements-per-line'>; -} -declare module 'eslint/lib/rules/max-statements.js' { - declare module.exports: $Exports<'eslint/lib/rules/max-statements'>; -} -declare module 'eslint/lib/rules/multiline-comment-style.js' { - declare module.exports: $Exports<'eslint/lib/rules/multiline-comment-style'>; -} -declare module 'eslint/lib/rules/multiline-ternary.js' { - declare module.exports: $Exports<'eslint/lib/rules/multiline-ternary'>; -} -declare module 'eslint/lib/rules/new-cap.js' { - declare module.exports: $Exports<'eslint/lib/rules/new-cap'>; -} -declare module 'eslint/lib/rules/new-parens.js' { - declare module.exports: $Exports<'eslint/lib/rules/new-parens'>; -} -declare module 'eslint/lib/rules/newline-after-var.js' { - declare module.exports: $Exports<'eslint/lib/rules/newline-after-var'>; -} -declare module 'eslint/lib/rules/newline-before-return.js' { - declare module.exports: $Exports<'eslint/lib/rules/newline-before-return'>; -} -declare module 'eslint/lib/rules/newline-per-chained-call.js' { - declare module.exports: $Exports<'eslint/lib/rules/newline-per-chained-call'>; -} -declare module 'eslint/lib/rules/no-alert.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-alert'>; -} -declare module 'eslint/lib/rules/no-array-constructor.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-array-constructor'>; -} -declare module 'eslint/lib/rules/no-async-promise-executor.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-async-promise-executor'>; -} -declare module 'eslint/lib/rules/no-await-in-loop.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-await-in-loop'>; -} -declare module 'eslint/lib/rules/no-bitwise.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-bitwise'>; -} -declare module 'eslint/lib/rules/no-buffer-constructor.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-buffer-constructor'>; -} -declare module 'eslint/lib/rules/no-caller.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-caller'>; -} -declare module 'eslint/lib/rules/no-case-declarations.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-case-declarations'>; -} -declare module 'eslint/lib/rules/no-catch-shadow.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-catch-shadow'>; -} -declare module 'eslint/lib/rules/no-class-assign.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-class-assign'>; -} -declare module 'eslint/lib/rules/no-compare-neg-zero.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-compare-neg-zero'>; -} -declare module 'eslint/lib/rules/no-cond-assign.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-cond-assign'>; -} -declare module 'eslint/lib/rules/no-confusing-arrow.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-confusing-arrow'>; -} -declare module 'eslint/lib/rules/no-console.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-console'>; -} -declare module 'eslint/lib/rules/no-const-assign.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-const-assign'>; -} -declare module 'eslint/lib/rules/no-constant-condition.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-constant-condition'>; -} -declare module 'eslint/lib/rules/no-continue.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-continue'>; -} -declare module 'eslint/lib/rules/no-control-regex.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-control-regex'>; -} -declare module 'eslint/lib/rules/no-debugger.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-debugger'>; -} -declare module 'eslint/lib/rules/no-delete-var.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-delete-var'>; -} -declare module 'eslint/lib/rules/no-div-regex.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-div-regex'>; -} -declare module 'eslint/lib/rules/no-dupe-args.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-dupe-args'>; -} -declare module 'eslint/lib/rules/no-dupe-class-members.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-dupe-class-members'>; -} -declare module 'eslint/lib/rules/no-dupe-keys.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-dupe-keys'>; -} -declare module 'eslint/lib/rules/no-duplicate-case.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-duplicate-case'>; -} -declare module 'eslint/lib/rules/no-duplicate-imports.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-duplicate-imports'>; -} -declare module 'eslint/lib/rules/no-else-return.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-else-return'>; -} -declare module 'eslint/lib/rules/no-empty-character-class.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-empty-character-class'>; -} -declare module 'eslint/lib/rules/no-empty-function.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-empty-function'>; -} -declare module 'eslint/lib/rules/no-empty-pattern.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-empty-pattern'>; -} -declare module 'eslint/lib/rules/no-empty.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-empty'>; -} -declare module 'eslint/lib/rules/no-eq-null.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-eq-null'>; -} -declare module 'eslint/lib/rules/no-eval.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-eval'>; -} -declare module 'eslint/lib/rules/no-ex-assign.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-ex-assign'>; -} -declare module 'eslint/lib/rules/no-extend-native.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-extend-native'>; -} -declare module 'eslint/lib/rules/no-extra-bind.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-extra-bind'>; -} -declare module 'eslint/lib/rules/no-extra-boolean-cast.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-extra-boolean-cast'>; -} -declare module 'eslint/lib/rules/no-extra-label.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-extra-label'>; -} -declare module 'eslint/lib/rules/no-extra-parens.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-extra-parens'>; -} -declare module 'eslint/lib/rules/no-extra-semi.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-extra-semi'>; -} -declare module 'eslint/lib/rules/no-fallthrough.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-fallthrough'>; -} -declare module 'eslint/lib/rules/no-floating-decimal.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-floating-decimal'>; -} -declare module 'eslint/lib/rules/no-func-assign.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-func-assign'>; -} -declare module 'eslint/lib/rules/no-global-assign.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-global-assign'>; -} -declare module 'eslint/lib/rules/no-implicit-coercion.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-implicit-coercion'>; -} -declare module 'eslint/lib/rules/no-implicit-globals.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-implicit-globals'>; -} -declare module 'eslint/lib/rules/no-implied-eval.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-implied-eval'>; -} -declare module 'eslint/lib/rules/no-inline-comments.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-inline-comments'>; -} -declare module 'eslint/lib/rules/no-inner-declarations.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-inner-declarations'>; -} -declare module 'eslint/lib/rules/no-invalid-regexp.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-invalid-regexp'>; -} -declare module 'eslint/lib/rules/no-invalid-this.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-invalid-this'>; -} -declare module 'eslint/lib/rules/no-irregular-whitespace.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-irregular-whitespace'>; -} -declare module 'eslint/lib/rules/no-iterator.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-iterator'>; -} -declare module 'eslint/lib/rules/no-label-var.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-label-var'>; -} -declare module 'eslint/lib/rules/no-labels.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-labels'>; -} -declare module 'eslint/lib/rules/no-lone-blocks.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-lone-blocks'>; -} -declare module 'eslint/lib/rules/no-lonely-if.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-lonely-if'>; -} -declare module 'eslint/lib/rules/no-loop-func.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-loop-func'>; -} -declare module 'eslint/lib/rules/no-magic-numbers.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-magic-numbers'>; -} -declare module 'eslint/lib/rules/no-misleading-character-class.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-misleading-character-class'>; -} -declare module 'eslint/lib/rules/no-mixed-operators.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-mixed-operators'>; -} -declare module 'eslint/lib/rules/no-mixed-requires.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-mixed-requires'>; -} -declare module 'eslint/lib/rules/no-mixed-spaces-and-tabs.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-mixed-spaces-and-tabs'>; -} -declare module 'eslint/lib/rules/no-multi-assign.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-multi-assign'>; -} -declare module 'eslint/lib/rules/no-multi-spaces.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-multi-spaces'>; -} -declare module 'eslint/lib/rules/no-multi-str.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-multi-str'>; -} -declare module 'eslint/lib/rules/no-multiple-empty-lines.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-multiple-empty-lines'>; -} -declare module 'eslint/lib/rules/no-native-reassign.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-native-reassign'>; -} -declare module 'eslint/lib/rules/no-negated-condition.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-negated-condition'>; -} -declare module 'eslint/lib/rules/no-negated-in-lhs.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-negated-in-lhs'>; -} -declare module 'eslint/lib/rules/no-nested-ternary.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-nested-ternary'>; -} -declare module 'eslint/lib/rules/no-new-func.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-new-func'>; -} -declare module 'eslint/lib/rules/no-new-object.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-new-object'>; -} -declare module 'eslint/lib/rules/no-new-require.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-new-require'>; -} -declare module 'eslint/lib/rules/no-new-symbol.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-new-symbol'>; -} -declare module 'eslint/lib/rules/no-new-wrappers.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-new-wrappers'>; -} -declare module 'eslint/lib/rules/no-new.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-new'>; -} -declare module 'eslint/lib/rules/no-obj-calls.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-obj-calls'>; -} -declare module 'eslint/lib/rules/no-octal-escape.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-octal-escape'>; -} -declare module 'eslint/lib/rules/no-octal.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-octal'>; -} -declare module 'eslint/lib/rules/no-param-reassign.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-param-reassign'>; -} -declare module 'eslint/lib/rules/no-path-concat.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-path-concat'>; -} -declare module 'eslint/lib/rules/no-plusplus.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-plusplus'>; -} -declare module 'eslint/lib/rules/no-process-env.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-process-env'>; -} -declare module 'eslint/lib/rules/no-process-exit.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-process-exit'>; -} -declare module 'eslint/lib/rules/no-proto.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-proto'>; -} -declare module 'eslint/lib/rules/no-prototype-builtins.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-prototype-builtins'>; -} -declare module 'eslint/lib/rules/no-redeclare.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-redeclare'>; -} -declare module 'eslint/lib/rules/no-regex-spaces.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-regex-spaces'>; -} -declare module 'eslint/lib/rules/no-restricted-globals.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-restricted-globals'>; -} -declare module 'eslint/lib/rules/no-restricted-imports.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-restricted-imports'>; -} -declare module 'eslint/lib/rules/no-restricted-modules.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-restricted-modules'>; -} -declare module 'eslint/lib/rules/no-restricted-properties.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-restricted-properties'>; -} -declare module 'eslint/lib/rules/no-restricted-syntax.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-restricted-syntax'>; -} -declare module 'eslint/lib/rules/no-return-assign.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-return-assign'>; -} -declare module 'eslint/lib/rules/no-return-await.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-return-await'>; -} -declare module 'eslint/lib/rules/no-script-url.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-script-url'>; -} -declare module 'eslint/lib/rules/no-self-assign.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-self-assign'>; -} -declare module 'eslint/lib/rules/no-self-compare.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-self-compare'>; -} -declare module 'eslint/lib/rules/no-sequences.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-sequences'>; -} -declare module 'eslint/lib/rules/no-shadow-restricted-names.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-shadow-restricted-names'>; -} -declare module 'eslint/lib/rules/no-shadow.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-shadow'>; -} -declare module 'eslint/lib/rules/no-spaced-func.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-spaced-func'>; -} -declare module 'eslint/lib/rules/no-sparse-arrays.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-sparse-arrays'>; -} -declare module 'eslint/lib/rules/no-sync.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-sync'>; -} -declare module 'eslint/lib/rules/no-tabs.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-tabs'>; -} -declare module 'eslint/lib/rules/no-template-curly-in-string.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-template-curly-in-string'>; -} -declare module 'eslint/lib/rules/no-ternary.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-ternary'>; -} -declare module 'eslint/lib/rules/no-this-before-super.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-this-before-super'>; -} -declare module 'eslint/lib/rules/no-throw-literal.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-throw-literal'>; -} -declare module 'eslint/lib/rules/no-trailing-spaces.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-trailing-spaces'>; -} -declare module 'eslint/lib/rules/no-undef-init.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-undef-init'>; -} -declare module 'eslint/lib/rules/no-undef.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-undef'>; -} -declare module 'eslint/lib/rules/no-undefined.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-undefined'>; -} -declare module 'eslint/lib/rules/no-underscore-dangle.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-underscore-dangle'>; -} -declare module 'eslint/lib/rules/no-unexpected-multiline.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-unexpected-multiline'>; -} -declare module 'eslint/lib/rules/no-unmodified-loop-condition.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-unmodified-loop-condition'>; -} -declare module 'eslint/lib/rules/no-unneeded-ternary.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-unneeded-ternary'>; -} -declare module 'eslint/lib/rules/no-unreachable.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-unreachable'>; -} -declare module 'eslint/lib/rules/no-unsafe-finally.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-unsafe-finally'>; -} -declare module 'eslint/lib/rules/no-unsafe-negation.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-unsafe-negation'>; -} -declare module 'eslint/lib/rules/no-unused-expressions.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-unused-expressions'>; -} -declare module 'eslint/lib/rules/no-unused-labels.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-unused-labels'>; -} -declare module 'eslint/lib/rules/no-unused-vars.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-unused-vars'>; -} -declare module 'eslint/lib/rules/no-use-before-define.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-use-before-define'>; -} -declare module 'eslint/lib/rules/no-useless-call.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-useless-call'>; -} -declare module 'eslint/lib/rules/no-useless-catch.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-useless-catch'>; -} -declare module 'eslint/lib/rules/no-useless-computed-key.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-useless-computed-key'>; -} -declare module 'eslint/lib/rules/no-useless-concat.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-useless-concat'>; -} -declare module 'eslint/lib/rules/no-useless-constructor.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-useless-constructor'>; -} -declare module 'eslint/lib/rules/no-useless-escape.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-useless-escape'>; -} -declare module 'eslint/lib/rules/no-useless-rename.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-useless-rename'>; -} -declare module 'eslint/lib/rules/no-useless-return.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-useless-return'>; -} -declare module 'eslint/lib/rules/no-var.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-var'>; -} -declare module 'eslint/lib/rules/no-void.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-void'>; -} -declare module 'eslint/lib/rules/no-warning-comments.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-warning-comments'>; -} -declare module 'eslint/lib/rules/no-whitespace-before-property.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-whitespace-before-property'>; -} -declare module 'eslint/lib/rules/no-with.js' { - declare module.exports: $Exports<'eslint/lib/rules/no-with'>; -} -declare module 'eslint/lib/rules/nonblock-statement-body-position.js' { - declare module.exports: $Exports<'eslint/lib/rules/nonblock-statement-body-position'>; -} -declare module 'eslint/lib/rules/object-curly-newline.js' { - declare module.exports: $Exports<'eslint/lib/rules/object-curly-newline'>; -} -declare module 'eslint/lib/rules/object-curly-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/object-curly-spacing'>; -} -declare module 'eslint/lib/rules/object-property-newline.js' { - declare module.exports: $Exports<'eslint/lib/rules/object-property-newline'>; -} -declare module 'eslint/lib/rules/object-shorthand.js' { - declare module.exports: $Exports<'eslint/lib/rules/object-shorthand'>; -} -declare module 'eslint/lib/rules/one-var-declaration-per-line.js' { - declare module.exports: $Exports<'eslint/lib/rules/one-var-declaration-per-line'>; -} -declare module 'eslint/lib/rules/one-var.js' { - declare module.exports: $Exports<'eslint/lib/rules/one-var'>; -} -declare module 'eslint/lib/rules/operator-assignment.js' { - declare module.exports: $Exports<'eslint/lib/rules/operator-assignment'>; -} -declare module 'eslint/lib/rules/operator-linebreak.js' { - declare module.exports: $Exports<'eslint/lib/rules/operator-linebreak'>; -} -declare module 'eslint/lib/rules/padded-blocks.js' { - declare module.exports: $Exports<'eslint/lib/rules/padded-blocks'>; -} -declare module 'eslint/lib/rules/padding-line-between-statements.js' { - declare module.exports: $Exports<'eslint/lib/rules/padding-line-between-statements'>; -} -declare module 'eslint/lib/rules/prefer-arrow-callback.js' { - declare module.exports: $Exports<'eslint/lib/rules/prefer-arrow-callback'>; -} -declare module 'eslint/lib/rules/prefer-const.js' { - declare module.exports: $Exports<'eslint/lib/rules/prefer-const'>; -} -declare module 'eslint/lib/rules/prefer-destructuring.js' { - declare module.exports: $Exports<'eslint/lib/rules/prefer-destructuring'>; -} -declare module 'eslint/lib/rules/prefer-named-capture-group.js' { - declare module.exports: $Exports<'eslint/lib/rules/prefer-named-capture-group'>; -} -declare module 'eslint/lib/rules/prefer-numeric-literals.js' { - declare module.exports: $Exports<'eslint/lib/rules/prefer-numeric-literals'>; -} -declare module 'eslint/lib/rules/prefer-object-spread.js' { - declare module.exports: $Exports<'eslint/lib/rules/prefer-object-spread'>; -} -declare module 'eslint/lib/rules/prefer-promise-reject-errors.js' { - declare module.exports: $Exports<'eslint/lib/rules/prefer-promise-reject-errors'>; -} -declare module 'eslint/lib/rules/prefer-reflect.js' { - declare module.exports: $Exports<'eslint/lib/rules/prefer-reflect'>; -} -declare module 'eslint/lib/rules/prefer-rest-params.js' { - declare module.exports: $Exports<'eslint/lib/rules/prefer-rest-params'>; -} -declare module 'eslint/lib/rules/prefer-spread.js' { - declare module.exports: $Exports<'eslint/lib/rules/prefer-spread'>; -} -declare module 'eslint/lib/rules/prefer-template.js' { - declare module.exports: $Exports<'eslint/lib/rules/prefer-template'>; -} -declare module 'eslint/lib/rules/quote-props.js' { - declare module.exports: $Exports<'eslint/lib/rules/quote-props'>; -} -declare module 'eslint/lib/rules/quotes.js' { - declare module.exports: $Exports<'eslint/lib/rules/quotes'>; -} -declare module 'eslint/lib/rules/radix.js' { - declare module.exports: $Exports<'eslint/lib/rules/radix'>; -} -declare module 'eslint/lib/rules/require-atomic-updates.js' { - declare module.exports: $Exports<'eslint/lib/rules/require-atomic-updates'>; -} -declare module 'eslint/lib/rules/require-await.js' { - declare module.exports: $Exports<'eslint/lib/rules/require-await'>; -} -declare module 'eslint/lib/rules/require-jsdoc.js' { - declare module.exports: $Exports<'eslint/lib/rules/require-jsdoc'>; -} -declare module 'eslint/lib/rules/require-unicode-regexp.js' { - declare module.exports: $Exports<'eslint/lib/rules/require-unicode-regexp'>; -} -declare module 'eslint/lib/rules/require-yield.js' { - declare module.exports: $Exports<'eslint/lib/rules/require-yield'>; -} -declare module 'eslint/lib/rules/rest-spread-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/rest-spread-spacing'>; -} -declare module 'eslint/lib/rules/semi-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/semi-spacing'>; -} -declare module 'eslint/lib/rules/semi-style.js' { - declare module.exports: $Exports<'eslint/lib/rules/semi-style'>; -} -declare module 'eslint/lib/rules/semi.js' { - declare module.exports: $Exports<'eslint/lib/rules/semi'>; -} -declare module 'eslint/lib/rules/sort-imports.js' { - declare module.exports: $Exports<'eslint/lib/rules/sort-imports'>; -} -declare module 'eslint/lib/rules/sort-keys.js' { - declare module.exports: $Exports<'eslint/lib/rules/sort-keys'>; -} -declare module 'eslint/lib/rules/sort-vars.js' { - declare module.exports: $Exports<'eslint/lib/rules/sort-vars'>; -} -declare module 'eslint/lib/rules/space-before-blocks.js' { - declare module.exports: $Exports<'eslint/lib/rules/space-before-blocks'>; -} -declare module 'eslint/lib/rules/space-before-function-paren.js' { - declare module.exports: $Exports<'eslint/lib/rules/space-before-function-paren'>; -} -declare module 'eslint/lib/rules/space-in-parens.js' { - declare module.exports: $Exports<'eslint/lib/rules/space-in-parens'>; -} -declare module 'eslint/lib/rules/space-infix-ops.js' { - declare module.exports: $Exports<'eslint/lib/rules/space-infix-ops'>; -} -declare module 'eslint/lib/rules/space-unary-ops.js' { - declare module.exports: $Exports<'eslint/lib/rules/space-unary-ops'>; -} -declare module 'eslint/lib/rules/spaced-comment.js' { - declare module.exports: $Exports<'eslint/lib/rules/spaced-comment'>; -} -declare module 'eslint/lib/rules/strict.js' { - declare module.exports: $Exports<'eslint/lib/rules/strict'>; -} -declare module 'eslint/lib/rules/switch-colon-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/switch-colon-spacing'>; -} -declare module 'eslint/lib/rules/symbol-description.js' { - declare module.exports: $Exports<'eslint/lib/rules/symbol-description'>; -} -declare module 'eslint/lib/rules/template-curly-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/template-curly-spacing'>; -} -declare module 'eslint/lib/rules/template-tag-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/template-tag-spacing'>; -} -declare module 'eslint/lib/rules/unicode-bom.js' { - declare module.exports: $Exports<'eslint/lib/rules/unicode-bom'>; -} -declare module 'eslint/lib/rules/use-isnan.js' { - declare module.exports: $Exports<'eslint/lib/rules/use-isnan'>; -} -declare module 'eslint/lib/rules/utils/ast-utils.js' { - declare module.exports: $Exports<'eslint/lib/rules/utils/ast-utils'>; -} -declare module 'eslint/lib/rules/utils/fix-tracker.js' { - declare module.exports: $Exports<'eslint/lib/rules/utils/fix-tracker'>; -} -declare module 'eslint/lib/rules/utils/keywords.js' { - declare module.exports: $Exports<'eslint/lib/rules/utils/keywords'>; -} -declare module 'eslint/lib/rules/utils/lazy-loading-rule-map.js' { - declare module.exports: $Exports<'eslint/lib/rules/utils/lazy-loading-rule-map'>; -} -declare module 'eslint/lib/rules/utils/patterns/letters.js' { - declare module.exports: $Exports<'eslint/lib/rules/utils/patterns/letters'>; -} -declare module 'eslint/lib/rules/utils/unicode/index.js' { - declare module.exports: $Exports<'eslint/lib/rules/utils/unicode/index'>; -} -declare module 'eslint/lib/rules/utils/unicode/is-combining-character.js' { - declare module.exports: $Exports<'eslint/lib/rules/utils/unicode/is-combining-character'>; -} -declare module 'eslint/lib/rules/utils/unicode/is-emoji-modifier.js' { - declare module.exports: $Exports<'eslint/lib/rules/utils/unicode/is-emoji-modifier'>; -} -declare module 'eslint/lib/rules/utils/unicode/is-regional-indicator-symbol.js' { - declare module.exports: $Exports<'eslint/lib/rules/utils/unicode/is-regional-indicator-symbol'>; -} -declare module 'eslint/lib/rules/utils/unicode/is-surrogate-pair.js' { - declare module.exports: $Exports<'eslint/lib/rules/utils/unicode/is-surrogate-pair'>; -} -declare module 'eslint/lib/rules/valid-jsdoc.js' { - declare module.exports: $Exports<'eslint/lib/rules/valid-jsdoc'>; -} -declare module 'eslint/lib/rules/valid-typeof.js' { - declare module.exports: $Exports<'eslint/lib/rules/valid-typeof'>; -} -declare module 'eslint/lib/rules/vars-on-top.js' { - declare module.exports: $Exports<'eslint/lib/rules/vars-on-top'>; -} -declare module 'eslint/lib/rules/wrap-iife.js' { - declare module.exports: $Exports<'eslint/lib/rules/wrap-iife'>; -} -declare module 'eslint/lib/rules/wrap-regex.js' { - declare module.exports: $Exports<'eslint/lib/rules/wrap-regex'>; -} -declare module 'eslint/lib/rules/yield-star-spacing.js' { - declare module.exports: $Exports<'eslint/lib/rules/yield-star-spacing'>; -} -declare module 'eslint/lib/rules/yoda.js' { - declare module.exports: $Exports<'eslint/lib/rules/yoda'>; -} -declare module 'eslint/lib/shared/ajv.js' { - declare module.exports: $Exports<'eslint/lib/shared/ajv'>; -} -declare module 'eslint/lib/shared/ast-utils.js' { - declare module.exports: $Exports<'eslint/lib/shared/ast-utils'>; -} -declare module 'eslint/lib/shared/config-ops.js' { - declare module.exports: $Exports<'eslint/lib/shared/config-ops'>; -} -declare module 'eslint/lib/shared/config-validator.js' { - declare module.exports: $Exports<'eslint/lib/shared/config-validator'>; -} -declare module 'eslint/lib/shared/logging.js' { - declare module.exports: $Exports<'eslint/lib/shared/logging'>; -} -declare module 'eslint/lib/shared/naming.js' { - declare module.exports: $Exports<'eslint/lib/shared/naming'>; -} -declare module 'eslint/lib/shared/relative-module-resolver.js' { - declare module.exports: $Exports<'eslint/lib/shared/relative-module-resolver'>; -} -declare module 'eslint/lib/shared/traverser.js' { - declare module.exports: $Exports<'eslint/lib/shared/traverser'>; -} -declare module 'eslint/lib/shared/types.js' { - declare module.exports: $Exports<'eslint/lib/shared/types'>; -} -declare module 'eslint/lib/source-code/index.js' { - declare module.exports: $Exports<'eslint/lib/source-code/index'>; -} -declare module 'eslint/lib/source-code/source-code.js' { - declare module.exports: $Exports<'eslint/lib/source-code/source-code'>; -} -declare module 'eslint/lib/source-code/token-store/backward-token-comment-cursor.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store/backward-token-comment-cursor'>; -} -declare module 'eslint/lib/source-code/token-store/backward-token-cursor.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store/backward-token-cursor'>; -} -declare module 'eslint/lib/source-code/token-store/cursor.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store/cursor'>; -} -declare module 'eslint/lib/source-code/token-store/cursors.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store/cursors'>; -} -declare module 'eslint/lib/source-code/token-store/decorative-cursor.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store/decorative-cursor'>; -} -declare module 'eslint/lib/source-code/token-store/filter-cursor.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store/filter-cursor'>; -} -declare module 'eslint/lib/source-code/token-store/forward-token-comment-cursor.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store/forward-token-comment-cursor'>; -} -declare module 'eslint/lib/source-code/token-store/forward-token-cursor.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store/forward-token-cursor'>; -} -declare module 'eslint/lib/source-code/token-store/index.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store/index'>; -} -declare module 'eslint/lib/source-code/token-store/limit-cursor.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store/limit-cursor'>; -} -declare module 'eslint/lib/source-code/token-store/padded-token-cursor.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store/padded-token-cursor'>; -} -declare module 'eslint/lib/source-code/token-store/skip-cursor.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store/skip-cursor'>; -} -declare module 'eslint/lib/source-code/token-store/utils.js' { - declare module.exports: $Exports<'eslint/lib/source-code/token-store/utils'>; -} diff --git a/flow-typed/npm/flow-bin_v0.x.x.js b/flow-typed/npm/flow-bin_v0.x.x.js deleted file mode 100644 index 72f9667..0000000 --- a/flow-typed/npm/flow-bin_v0.x.x.js +++ /dev/null @@ -1,6 +0,0 @@ -// flow-typed signature: 4e6a5da3290fe9ea49e6bcdced64f358 -// flow-typed version: c6154227d1/flow-bin_v0.x.x/flow_>=v0.25.x <=v0.103.x - -declare module "flow-bin" { - declare module.exports: string; -} diff --git a/flow-typed/npm/flow-typed_vx.x.x.js b/flow-typed/npm/flow-typed_vx.x.x.js deleted file mode 100644 index f69296b..0000000 --- a/flow-typed/npm/flow-typed_vx.x.x.js +++ /dev/null @@ -1,193 +0,0 @@ -// flow-typed signature: d10451e3178d4f93e819b300e5b18964 -// flow-typed version: <>/flow-typed_v2.5.1/flow_v0.100.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'flow-typed' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'flow-typed' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'flow-typed/dist/cli' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/commands/create-stub' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/commands/install' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/commands/runTests' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/commands/search' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/commands/update-cache' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/commands/update' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/commands/validateDefs' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/commands/version' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/cacheRepoUtils' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/codeSign' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/fileUtils' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/flowProjectUtils' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/flowVersion' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/git' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/github' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/isInFlowTypedRepo' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/libDefs' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/node' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/npm/npmLibDefs' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/npm/npmProjectUtils' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/semver' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/stubUtils' { - declare module.exports: any; -} - -declare module 'flow-typed/dist/lib/validationErrors' { - declare module.exports: any; -} - -// Filename aliases -declare module 'flow-typed/dist/cli.js' { - declare module.exports: $Exports<'flow-typed/dist/cli'>; -} -declare module 'flow-typed/dist/commands/create-stub.js' { - declare module.exports: $Exports<'flow-typed/dist/commands/create-stub'>; -} -declare module 'flow-typed/dist/commands/install.js' { - declare module.exports: $Exports<'flow-typed/dist/commands/install'>; -} -declare module 'flow-typed/dist/commands/runTests.js' { - declare module.exports: $Exports<'flow-typed/dist/commands/runTests'>; -} -declare module 'flow-typed/dist/commands/search.js' { - declare module.exports: $Exports<'flow-typed/dist/commands/search'>; -} -declare module 'flow-typed/dist/commands/update-cache.js' { - declare module.exports: $Exports<'flow-typed/dist/commands/update-cache'>; -} -declare module 'flow-typed/dist/commands/update.js' { - declare module.exports: $Exports<'flow-typed/dist/commands/update'>; -} -declare module 'flow-typed/dist/commands/validateDefs.js' { - declare module.exports: $Exports<'flow-typed/dist/commands/validateDefs'>; -} -declare module 'flow-typed/dist/commands/version.js' { - declare module.exports: $Exports<'flow-typed/dist/commands/version'>; -} -declare module 'flow-typed/dist/lib/cacheRepoUtils.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/cacheRepoUtils'>; -} -declare module 'flow-typed/dist/lib/codeSign.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/codeSign'>; -} -declare module 'flow-typed/dist/lib/fileUtils.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/fileUtils'>; -} -declare module 'flow-typed/dist/lib/flowProjectUtils.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/flowProjectUtils'>; -} -declare module 'flow-typed/dist/lib/flowVersion.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/flowVersion'>; -} -declare module 'flow-typed/dist/lib/git.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/git'>; -} -declare module 'flow-typed/dist/lib/github.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/github'>; -} -declare module 'flow-typed/dist/lib/isInFlowTypedRepo.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/isInFlowTypedRepo'>; -} -declare module 'flow-typed/dist/lib/libDefs.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/libDefs'>; -} -declare module 'flow-typed/dist/lib/node.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/node'>; -} -declare module 'flow-typed/dist/lib/npm/npmLibDefs.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/npm/npmLibDefs'>; -} -declare module 'flow-typed/dist/lib/npm/npmProjectUtils.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/npm/npmProjectUtils'>; -} -declare module 'flow-typed/dist/lib/semver.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/semver'>; -} -declare module 'flow-typed/dist/lib/stubUtils.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/stubUtils'>; -} -declare module 'flow-typed/dist/lib/validationErrors.js' { - declare module.exports: $Exports<'flow-typed/dist/lib/validationErrors'>; -} diff --git a/flow-typed/npm/humps_v2.x.x.js b/flow-typed/npm/humps_v2.x.x.js deleted file mode 100644 index 4f60afb..0000000 --- a/flow-typed/npm/humps_v2.x.x.js +++ /dev/null @@ -1,50 +0,0 @@ -// flow-typed signature: b737e7e573134572c6e4b65e61e451d4 -// flow-typed version: c6154227d1/humps_v2.x.x/flow_>=v0.25.x <=v0.103.x - -// @flow strict - -/** - * Flow libdef for 'humps' - * See https://www.npmjs.com/package/humps - * by Vincent Driessen, 2018-12-21 - */ - -declare module "humps" { - declare type Options = {| - separator?: string, - split?: RegExp | string - |}; - - declare export function camelize(string): string; - declare export function pascalize(string): string; - declare export function decamelize(string, options?: Options): string; - declare export function depascalize(string, options?: Options): string; - - declare export function camelizeKeys( - { +[string]: mixed }, - options?: Options - ): { [string]: mixed }; - declare export function pascalizeKeys( - { +[string]: mixed }, - options?: Options - ): { [string]: mixed }; - declare export function decamelizeKeys( - { +[string]: mixed }, - options?: Options - ): { [string]: mixed }; - declare export function depascalizeKeys( - { +[string]: mixed }, - options?: Options - ): { [string]: mixed }; - - declare export default {| - camelize: typeof camelize, - pascalize: typeof pascalize, - decamelize: typeof decamelize, - depascalize: typeof depascalize, - camelizeKeys: typeof camelizeKeys, - pascalizeKeys: typeof pascalizeKeys, - decamelizeKeys: typeof decamelizeKeys, - depascalizeKeys: typeof depascalizeKeys - |}; -} diff --git a/flow-typed/npm/js-md5_vx.x.x.js b/flow-typed/npm/js-md5_vx.x.x.js deleted file mode 100644 index 14c60aa..0000000 --- a/flow-typed/npm/js-md5_vx.x.x.js +++ /dev/null @@ -1,39 +0,0 @@ -// flow-typed signature: ec12015d9d60762891521730f4502e86 -// flow-typed version: <>/js-md5_v0.7.3/flow_v0.100.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'js-md5' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'js-md5' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'js-md5/build/md5.min' { - declare module.exports: any; -} - -declare module 'js-md5/src/md5' { - declare module.exports: any; -} - -// Filename aliases -declare module 'js-md5/build/md5.min.js' { - declare module.exports: $Exports<'js-md5/build/md5.min'>; -} -declare module 'js-md5/src/md5.js' { - declare module.exports: $Exports<'js-md5/src/md5'>; -} diff --git a/flow-typed/npm/lodash_v4.x.x.js b/flow-typed/npm/lodash_v4.x.x.js deleted file mode 100644 index 2f3e96c..0000000 --- a/flow-typed/npm/lodash_v4.x.x.js +++ /dev/null @@ -1,6097 +0,0 @@ -// flow-typed signature: 96e97db746b98786dbff6de500b4b862 -// flow-typed version: 5fe02f287a/lodash_v4.x.x/flow_>=v0.63.x <=v0.103.x - -declare module "lodash" { - declare type Path = $ReadOnlyArray | string | number; - declare type __CurriedFunction1 = (...r: [AA]) => R; - declare type CurriedFunction1 = __CurriedFunction1; - - declare type __CurriedFunction2 = (( - ...r: [AA] - ) => CurriedFunction1) & - ((...r: [AA, BB]) => R); - declare type CurriedFunction2 = __CurriedFunction2; - - declare type __CurriedFunction3 = (( - ...r: [AA] - ) => CurriedFunction2) & - ((...r: [AA, BB]) => CurriedFunction1) & - ((...r: [AA, BB, CC]) => R); - declare type CurriedFunction3 = __CurriedFunction3< - A, - B, - C, - R, - *, - *, - * - >; - - declare type __CurriedFunction4< - A, - B, - C, - D, - R, - AA: A, - BB: B, - CC: C, - DD: D - > = ((...r: [AA]) => CurriedFunction3) & - ((...r: [AA, BB]) => CurriedFunction2) & - ((...r: [AA, BB, CC]) => CurriedFunction1) & - ((...r: [AA, BB, CC, DD]) => R); - declare type CurriedFunction4 = __CurriedFunction4< - A, - B, - C, - D, - R, - *, - *, - *, - * - >; - - declare type __CurriedFunction5< - A, - B, - C, - D, - E, - R, - AA: A, - BB: B, - CC: C, - DD: D, - EE: E - > = ((...r: [AA]) => CurriedFunction4) & - ((...r: [AA, BB]) => CurriedFunction3) & - ((...r: [AA, BB, CC]) => CurriedFunction2) & - ((...r: [AA, BB, CC, DD]) => CurriedFunction1) & - ((...r: [AA, BB, CC, DD, EE]) => R); - declare type CurriedFunction5 = __CurriedFunction5< - A, - B, - C, - D, - E, - R, - *, - *, - *, - *, - * - >; - - declare type __CurriedFunction6< - A, - B, - C, - D, - E, - F, - R, - AA: A, - BB: B, - CC: C, - DD: D, - EE: E, - FF: F - > = ((...r: [AA]) => CurriedFunction5) & - ((...r: [AA, BB]) => CurriedFunction4) & - ((...r: [AA, BB, CC]) => CurriedFunction3) & - ((...r: [AA, BB, CC, DD]) => CurriedFunction2) & - ((...r: [AA, BB, CC, DD, EE]) => CurriedFunction1) & - ((...r: [AA, BB, CC, DD, EE, FF]) => R); - declare type CurriedFunction6 = __CurriedFunction6< - A, - B, - C, - D, - E, - F, - R, - *, - *, - *, - *, - *, - * - >; - - declare type Curry = (((...r: [A]) => R) => CurriedFunction1) & - (((...r: [A, B]) => R) => CurriedFunction2) & - (((...r: [A, B, C]) => R) => CurriedFunction3) & - (( - (...r: [A, B, C, D]) => R - ) => CurriedFunction4) & - (( - (...r: [A, B, C, D, E]) => R - ) => CurriedFunction5) & - (( - (...r: [A, B, C, D, E, F]) => R - ) => CurriedFunction6); - - declare type UnaryFn = (a: A) => R; - - declare type TemplateSettings = { - escape?: RegExp, - evaluate?: RegExp, - imports?: Object, - interpolate?: RegExp, - variable?: string - }; - - declare type TruncateOptions = { - length?: number, - omission?: string, - separator?: RegExp | string - }; - - declare type Cancelable = { - cancel: () => void, - flush: () => mixed - }; - - declare type DebounceOptions = { - leading?: boolean, - maxWait?: number, - trailing?: boolean - }; - - declare type ThrottleOptions = { - leading?: boolean, - trailing?: boolean - }; - - declare type NestedArray = Array>; - - declare type matchesIterateeShorthand = {[key: any]: any}; - declare type matchesPropertyIterateeShorthand = [string, any]; - declare type propertyIterateeShorthand = string; - - declare type OPredicate = - | ((value: A, key: string, object: O) => any) - | matchesIterateeShorthand - | matchesPropertyIterateeShorthand - | propertyIterateeShorthand; - - declare type OIterateeWithResult = - | Object - | string - | ((value: V, key: string, object: O) => R); - declare type OIteratee = OIterateeWithResult; - declare type OFlatMapIteratee = OIterateeWithResult>; - - declare type Predicate = - | ((value: T, index: number, array: Array) => any) - | matchesIterateeShorthand - | matchesPropertyIterateeShorthand - | propertyIterateeShorthand; - - declare type _ValueOnlyIteratee = (value: T) => mixed; - declare type ValueOnlyIteratee = _ValueOnlyIteratee | string; - declare type _Iteratee = ( - item: T, - index: number, - array: ?Array - ) => mixed; - declare type Iteratee = _Iteratee | Object | string; - declare type FlatMapIteratee = - | ((item: T, index: number, array: ?$ReadOnlyArray) => Array) - | Object - | string; - declare type Comparator = (item: T, item2: T) => boolean; - - declare type MapIterator = - | ((item: T, index: number, array: Array) => U) - | propertyIterateeShorthand; - - declare type ReadOnlyMapIterator = - | ((item: T, index: number, array: $ReadOnlyArray) => U) - | propertyIterateeShorthand; - - declare type OMapIterator = - | ((item: T, key: string, object: O) => U) - | propertyIterateeShorthand; - - declare class Lodash { - // Array - chunk(array?: ?Array, size?: ?number): Array>; - compact(array?: ?Array): Array; - concat( - base?: ?$ReadOnlyArray, - ...elements: Array - ): Array; - difference( - array?: ?$ReadOnlyArray, - ...values: Array> - ): Array; - differenceBy( - array?: ?$ReadOnlyArray, - values?: ?$ReadOnlyArray, - iteratee?: ?ValueOnlyIteratee - ): T[]; - differenceWith( - array?: ?$ReadOnlyArray, - values?: ?$ReadOnlyArray, - comparator?: ?Comparator - ): T[]; - drop(array?: ?Array, n?: ?number): Array; - dropRight(array?: ?Array, n?: ?number): Array; - dropRightWhile(array?: ?Array, predicate?: ?Predicate): Array; - dropWhile(array?: ?Array, predicate?: ?Predicate): Array; - fill( - array?: ?Array, - value?: ?U, - start?: ?number, - end?: ?number - ): Array; - findIndex( - array: $ReadOnlyArray, - predicate?: ?Predicate, - fromIndex?: ?number - ): number; - findIndex( - array: void | null, - predicate?: ?Predicate, - fromIndex?: ?number - ): -1; - findLastIndex( - array: $ReadOnlyArray, - predicate?: ?Predicate, - fromIndex?: ?number - ): number; - findLastIndex( - array: void | null, - predicate?: ?Predicate, - fromIndex?: ?number - ): -1; - // alias of _.head - first(array: ?$ReadOnlyArray): T; - flatten(array?: ?$ReadOnlyArray<$ReadOnlyArray | X>): Array; - flattenDeep(array?: ?(any[])): Array; - flattenDepth(array?: ?(any[]), depth?: ?number): any[]; - fromPairs(pairs?: ?Array<[A, B]>): { [key: A]: B }; - head(array: ?$ReadOnlyArray): T; - indexOf(array: $ReadOnlyArray, value: T, fromIndex?: number): number; - indexOf(array: void | null, value?: ?T, fromIndex?: ?number): -1; - initial(array: ?$ReadOnlyArray): Array; - intersection(...arrays?: Array<$ReadOnlyArray>): Array; - //Workaround until (...parameter: T, parameter2: U) works - intersectionBy( - a1?: ?$ReadOnlyArray, - iteratee?: ?ValueOnlyIteratee - ): Array; - intersectionBy( - a1?: ?$ReadOnlyArray, - a2?: ?$ReadOnlyArray, - iteratee?: ?ValueOnlyIteratee - ): Array; - intersectionBy( - a1?: ?$ReadOnlyArray, - a2?: ?$ReadOnlyArray, - a3?: ?$ReadOnlyArray, - iteratee?: ?ValueOnlyIteratee - ): Array; - intersectionBy( - a1?: ?$ReadOnlyArray, - a2?: ?$ReadOnlyArray, - a3?: ?$ReadOnlyArray, - a4?: ?$ReadOnlyArray, - iteratee?: ?ValueOnlyIteratee - ): Array; - //Workaround until (...parameter: T, parameter2: U) works - intersectionWith( - a1?: ?$ReadOnlyArray, - comparator?: ?Comparator - ): Array; - intersectionWith( - a1?: ?$ReadOnlyArray, - a2?: ?$ReadOnlyArray, - comparator?: ?Comparator - ): Array; - intersectionWith( - a1?: ?$ReadOnlyArray, - a2?: ?$ReadOnlyArray, - a3?: ?$ReadOnlyArray, - comparator?: ?Comparator - ): Array; - intersectionWith( - a1?: ?$ReadOnlyArray, - a2?: ?$ReadOnlyArray, - a3?: ?$ReadOnlyArray, - a4?: ?$ReadOnlyArray, - comparator?: ?Comparator - ): Array; - join(array: $ReadOnlyArray, separator?: ?string): string; - join(array: void | null, separator?: ?string): ""; - last(array: ?$ReadOnlyArray): T; - lastIndexOf(array: $ReadOnlyArray, value?: ?T, fromIndex?: ?number): number; - lastIndexOf(array: void | null, value?: ?T, fromIndex?: ?number): -1; - nth(array: T[], n?: ?number): T; - nth(array: void | null, n?: ?number): void; - pull(array: Array, ...values?: Array): Array; - pull(array: T, ...values?: Array): T; - pullAll(array: Array, values?: ?Array): Array; - pullAll(array: T, values?: ?Array): T; - pullAllBy( - array: Array, - values?: ?Array, - iteratee?: ?ValueOnlyIteratee - ): Array; - pullAllBy( - array: T, - values?: ?Array, - iteratee?: ?ValueOnlyIteratee - ): T; - pullAllWith(array: T[], values?: ?(T[]), comparator?: ?Function): T[]; - pullAllWith( - array: T, - values?: ?Array, - comparator?: ?Function - ): T; - pullAt(array?: ?Array, ...indexed?: Array): Array; - pullAt(array?: ?Array, indexed?: ?Array): Array; - remove(array?: ?Array, predicate?: ?Predicate): Array; - reverse(array: Array): Array; - reverse(array: T): T; - slice( - array?: ?$ReadOnlyArray, - start?: ?number, - end?: ?number - ): Array; - sortedIndex(array: $ReadOnlyArray, value: T): number; - sortedIndex(array: void | null, value: ?T): 0; - sortedIndexBy( - array: $ReadOnlyArray, - value?: ?T, - iteratee?: ?ValueOnlyIteratee - ): number; - sortedIndexBy( - array: void | null, - value?: ?T, - iteratee?: ?ValueOnlyIteratee - ): 0; - sortedIndexOf(array: $ReadOnlyArray, value: T): number; - sortedIndexOf(array: void | null, value?: ?T): -1; - sortedLastIndex(array: $ReadOnlyArray, value: T): number; - sortedLastIndex(array: void | null, value?: ?T): 0; - sortedLastIndexBy( - array: $ReadOnlyArray, - value: T, - iteratee?: ValueOnlyIteratee - ): number; - sortedLastIndexBy( - array: void | null, - value?: ?T, - iteratee?: ?ValueOnlyIteratee - ): 0; - sortedLastIndexOf(array: $ReadOnlyArray, value: T): number; - sortedLastIndexOf(array: void | null, value?: ?T): -1; - sortedUniq(array?: ?$ReadOnlyArray): Array; - sortedUniqBy( - array?: ?$ReadOnlyArray, - iteratee?: ?ValueOnlyIteratee - ): Array; - tail(array?: ?$ReadOnlyArray): Array; - take(array?: ?$ReadOnlyArray, n?: ?number): Array; - takeRight(array?: ?$ReadOnlyArray, n?: ?number): Array; - takeRightWhile(array?: ?Array, predicate?: ?Predicate): Array; - takeWhile(array?: ?Array, predicate?: ?Predicate): Array; - union(...arrays?: Array<$ReadOnlyArray>): Array; - //Workaround until (...parameter: T, parameter2: U) works - unionBy( - a1?: ?$ReadOnlyArray, - iteratee?: ?ValueOnlyIteratee - ): Array; - unionBy( - a1?: ?$ReadOnlyArray, - a2: $ReadOnlyArray, - iteratee?: ValueOnlyIteratee - ): Array; - unionBy( - a1: $ReadOnlyArray, - a2: $ReadOnlyArray, - a3: $ReadOnlyArray, - iteratee?: ValueOnlyIteratee - ): Array; - unionBy( - a1: $ReadOnlyArray, - a2: $ReadOnlyArray, - a3: $ReadOnlyArray, - a4: $ReadOnlyArray, - iteratee?: ValueOnlyIteratee - ): Array; - //Workaround until (...parameter: T, parameter2: U) works - unionWith(a1?: ?Array, comparator?: ?Comparator): Array; - unionWith( - a1: $ReadOnlyArray, - a2: $ReadOnlyArray, - comparator?: Comparator - ): Array; - unionWith( - a1: $ReadOnlyArray, - a2: $ReadOnlyArray, - a3: $ReadOnlyArray, - comparator?: Comparator - ): Array; - unionWith( - a1: $ReadOnlyArray, - a2: $ReadOnlyArray, - a3: $ReadOnlyArray, - a4: $ReadOnlyArray, - comparator?: Comparator - ): Array; - uniq(array?: ?$ReadOnlyArray): Array; - uniqBy(array?: ?$ReadOnlyArray, iteratee?: ?ValueOnlyIteratee): Array; - uniqWith(array?: ?$ReadOnlyArray, comparator?: ?Comparator): Array; - unzip(array?: ?$ReadOnlyArray): Array; - unzipWith(array: ?Array, iteratee?: ?Iteratee): Array; - without(array?: ?$ReadOnlyArray, ...values?: Array): Array; - xor(...array: Array>): Array; - //Workaround until (...parameter: T, parameter2: U) works - xorBy(a1?: ?$ReadOnlyArray, iteratee?: ?ValueOnlyIteratee): Array; - xorBy( - a1: $ReadOnlyArray, - a2: $ReadOnlyArray, - iteratee?: ValueOnlyIteratee - ): Array; - xorBy( - a1: $ReadOnlyArray, - a2: $ReadOnlyArray, - a3: $ReadOnlyArray, - iteratee?: ValueOnlyIteratee - ): Array; - xorBy( - a1: $ReadOnlyArray, - a2: $ReadOnlyArray, - a3: $ReadOnlyArray, - a4: $ReadOnlyArray, - iteratee?: ValueOnlyIteratee - ): Array; - //Workaround until (...parameter: T, parameter2: U) works - xorWith(a1?: ?$ReadOnlyArray, comparator?: ?Comparator): Array; - xorWith( - a1: $ReadOnlyArray, - a2: $ReadOnlyArray, - comparator?: Comparator - ): Array; - xorWith( - a1: $ReadOnlyArray, - a2: $ReadOnlyArray, - a3: $ReadOnlyArray, - comparator?: Comparator - ): Array; - xorWith( - a1: $ReadOnlyArray, - a2: $ReadOnlyArray, - a3: $ReadOnlyArray, - a4: $ReadOnlyArray, - comparator?: Comparator - ): Array; - zip(a1?: ?($ReadOnlyArray), a2?: ?($ReadOnlyArray)): Array<[A, B]>; - zip(a1: $ReadOnlyArray, a2: $ReadOnlyArray, a3: $ReadOnlyArray): Array<[A, B, C]>; - zip(a1: $ReadOnlyArray, a2: $ReadOnlyArray, a3: $ReadOnlyArray, a4: $ReadOnlyArray): Array<[A, B, C, D]>; - zip( - a1: $ReadOnlyArray, - a2: $ReadOnlyArray, - a3: $ReadOnlyArray, - a4: $ReadOnlyArray, - a5: $ReadOnlyArray - ): Array<[A, B, C, D, E]>; - - zipObject(props: Array, values?: ?Array): { [key: K]: V }; - zipObject(props: void | null, values?: ?Array): {}; - zipObjectDeep(props: any[], values?: ?any): Object; - zipObjectDeep(props: void | null, values?: ?any): {}; - - zipWith(a1?: ?$ReadOnlyArray): Array<[A]>; - zipWith(a1: $ReadOnlyArray, iteratee: (A) => T): Array; - - zipWith(a1: $ReadOnlyArray, a2: $ReadOnlyArray): Array<[A, B]>; - zipWith( - a1: $ReadOnlyArray, - a2: $ReadOnlyArray, - iteratee: (A, B) => T - ): $ReadOnlyArray; - - zipWith( - a1: $ReadOnlyArray, - a2: $ReadOnlyArray, - a3: $ReadOnlyArray - ): Array<[A, B, C]>; - zipWith( - a1: $ReadOnlyArray, - a2: $ReadOnlyArray, - a3: $ReadOnlyArray, - iteratee: (A, B, C) => T - ): Array; - - zipWith( - a1: $ReadOnlyArray, - a2: $ReadOnlyArray, - a3: $ReadOnlyArray, - a4: $ReadOnlyArray - ): Array<[A, B, C, D]>; - zipWith( - a1: $ReadOnlyArray, - a2: $ReadOnlyArray, - a3: $ReadOnlyArray, - a4: $ReadOnlyArray, - iteratee: (A, B, C, D) => T - ): Array; - - // Collection - countBy(array: $ReadOnlyArray, iteratee?: ?ValueOnlyIteratee): Object; - countBy(array: void | null, iteratee?: ?ValueOnlyIteratee): {}; - countBy(object: T, iteratee?: ?ValueOnlyIteratee): Object; - // alias of _.forEach - each(array: $ReadOnlyArray, iteratee?: ?Iteratee): Array; - each(array: T, iteratee?: ?Iteratee): T; - each(object: T, iteratee?: ?OIteratee): T; - // alias of _.forEachRight - eachRight(array: $ReadOnlyArray, iteratee?: ?Iteratee): Array; - eachRight(array: T, iteratee?: ?Iteratee): T; - eachRight(object: T, iteratee?: OIteratee): T; - every(array?: ?$ReadOnlyArray, iteratee?: ?Iteratee): boolean; - every(object: T, iteratee?: OIteratee): boolean; - filter(array?: ?$ReadOnlyArray, predicate?: ?Predicate): Array; - filter( - object: T, - predicate?: OPredicate - ): Array; - find( - array: $ReadOnlyArray, - predicate?: ?Predicate, - fromIndex?: ?number - ): T | void; - find( - array: void | null, - predicate?: ?Predicate, - fromIndex?: ?number - ): void; - find( - object: T, - predicate?: OPredicate, - fromIndex?: number - ): V; - findLast( - array: ?$ReadOnlyArray, - predicate?: ?Predicate, - fromIndex?: ?number - ): T | void; - findLast( - object: T, - predicate?: ?OPredicate - ): V; - flatMap( - array?: ?$ReadOnlyArray, - iteratee?: ?FlatMapIteratee - ): Array; - flatMap( - object: T, - iteratee?: OFlatMapIteratee - ): Array; - flatMapDeep( - array?: ?$ReadOnlyArray, - iteratee?: ?FlatMapIteratee - ): Array; - flatMapDeep( - object: T, - iteratee?: ?OFlatMapIteratee - ): Array; - flatMapDepth( - array?: ?Array, - iteratee?: ?FlatMapIteratee, - depth?: ?number - ): Array; - flatMapDepth( - object: T, - iteratee?: OFlatMapIteratee, - depth?: number - ): Array; - forEach(array: $ReadOnlyArray, iteratee?: ?Iteratee): Array; - forEach(array: T, iteratee?: ?Iteratee): T; - forEach(object: T, iteratee?: ?OIteratee): T; - forEachRight( - array: $ReadOnlyArray, - iteratee?: ?Iteratee - ): Array; - forEachRight(array: T, iteratee?: ?Iteratee): T; - forEachRight(object: T, iteratee?: ?OIteratee): T; - groupBy( - array: $ReadOnlyArray, - iteratee?: ?ValueOnlyIteratee - ): { [key: V]: Array }; - groupBy(array: void | null, iteratee?: ?ValueOnlyIteratee): {}; - groupBy( - object: T, - iteratee?: ValueOnlyIteratee - ): { [key: V]: Array }; - includes( - array: $ReadOnlyArray, - value: T, - fromIndex?: ?number - ): boolean; - includes(array: void | null, value?: ?T, fromIndex?: ?number): false; - includes(object: T, value: any, fromIndex?: number): boolean; - includes(str: string, value: string, fromIndex?: number): boolean; - invokeMap( - array?: ?$ReadOnlyArray, - path?: ?((value: T) => Path) | Path, - ...args?: Array - ): Array; - invokeMap( - object: T, - path: ((value: any) => Path) | Path, - ...args?: Array - ): Array; - keyBy( - array: $ReadOnlyArray, - iteratee?: ?ValueOnlyIteratee - ): { [key: V]: T }; - keyBy(array: void | null, iteratee?: ?ValueOnlyIteratee<*>): {}; - keyBy( - object: T, - iteratee?: ?ValueOnlyIteratee - ): { [key: V]: A }; - map(array?: ?Array, iteratee?: ?MapIterator): Array; - map( - array: ?$ReadOnlyArray, - iteratee?: ReadOnlyMapIterator - ): Array; - map( - object: ?T, - iteratee?: OMapIterator - ): Array; - map( - str: ?string, - iteratee?: (char: string, index: number, str: string) => any - ): string; - orderBy( - array: $ReadOnlyArray, - iteratees?: ?$ReadOnlyArray> | ?string, - orders?: ?$ReadOnlyArray<"asc" | "desc"> | ?string - ): Array; - orderBy( - array: null | void, - iteratees?: ?$ReadOnlyArray> | ?string, - orders?: ?$ReadOnlyArray<"asc" | "desc"> | ?string - ): Array; - orderBy( - object: T, - iteratees?: $ReadOnlyArray> | string, - orders?: $ReadOnlyArray<"asc" | "desc"> | string - ): Array; - partition( - array?: ?$ReadOnlyArray, - predicate?: ?Predicate - ): [Array, Array]; - partition( - object: T, - predicate?: OPredicate - ): [Array, Array]; - reduce( - array: $ReadOnlyArray, - iteratee?: ( - accumulator: U, - value: T, - index: number, - array: ?Array - ) => U, - accumulator?: U - ): U; - reduce( - array: void | null, - iteratee?: ?( - accumulator: U, - value: T, - index: number, - array: ?Array - ) => U, - accumulator?: ?U - ): void | null; - reduce( - object: T, - iteratee?: (accumulator: U, value: any, key: string, object: T) => U, - accumulator?: U - ): U; - reduceRight( - array: void | null, - iteratee?: ?( - accumulator: U, - value: T, - index: number, - array: ?Array - ) => U, - accumulator?: ?U - ): void | null; - reduceRight( - array: $ReadOnlyArray, - iteratee?: ?( - accumulator: U, - value: T, - index: number, - array: ?Array - ) => U, - accumulator?: ?U - ): U; - reduceRight( - object: T, - iteratee?: ?(accumulator: U, value: any, key: string, object: T) => U, - accumulator?: ?U - ): U; - reject(array: ?$ReadOnlyArray, predicate?: Predicate): Array; - reject( - object?: ?T, - predicate?: ?OPredicate - ): Array; - sample(array: ?$ReadOnlyArray): T; - sample(object: T): V; - sampleSize(array?: ?$ReadOnlyArray, n?: ?number): Array; - sampleSize(object: T, n?: number): Array; - shuffle(array: ?$ReadOnlyArray): Array; - shuffle(object: T): Array; - size(collection: $ReadOnlyArray | Object | string): number; - some(array: void | null, predicate?: ?Predicate): false; - some(array: ?$ReadOnlyArray, predicate?: Predicate): boolean; - some( - object?: ?T, - predicate?: OPredicate - ): boolean; - sortBy( - array: ?$ReadOnlyArray, - ...iteratees?: $ReadOnlyArray> - ): Array; - sortBy( - array: ?$ReadOnlyArray, - iteratees?: $ReadOnlyArray> - ): Array; - sortBy( - object: T, - ...iteratees?: Array> - ): Array; - sortBy( - object: T, - iteratees?: $ReadOnlyArray> - ): Array; - - // Date - now(): number; - - // Function - after(n: number, fn: Function): Function; - ary(func: Function, n?: number): Function; - before(n: number, fn: Function): Function; - bind any>(func: F, thisArg: any, ...partials: Array): F; - bindKey(obj?: ?Object, key?: ?string, ...partials?: Array): Function; - curry: Curry; - curry(func: Function, arity?: number): Function; - curryRight(func: Function, arity?: number): Function; - debounce any>( - func: F, - wait?: number, - options?: DebounceOptions - ): F & Cancelable; - defer(func: (...any[]) => any, ...args?: Array): TimeoutID; - delay(func: Function, wait: number, ...args?: Array): TimeoutID; - flip(func: (...any[]) => R): (...any[]) => R; - memoize(func: (...A) => R, resolver?: (...A) => any): (...A) => R; - negate(predicate: (...A) => R): (...A) => boolean; - once any>(func: F): F; - overArgs(func?: ?Function, ...transforms?: Array): Function; - overArgs(func?: ?Function, transforms?: ?Array): Function; - partial(func: (...any[]) => R, ...partials: any[]): (...any[]) => R; - partialRight(func: (...any[]) => R, ...partials: Array): (...any[]) => R; - partialRight(func: (...any[]) => R, partials: Array): (...any[]) => R; - rearg(func: Function, ...indexes: Array): Function; - rearg(func: Function, indexes: Array): Function; - rest(func: Function, start?: number): Function; - spread(func: Function): Function; - throttle any>( - func: F, - wait?: number, - options?: ThrottleOptions - ): F & Cancelable; - unary any>(func: F): F; - wrap(value?: any, wrapper?: ?Function): Function; - - // Lang - castArray(value: *): any[]; - clone(value: T): T; - cloneDeep(value: T): T; - cloneDeepWith( - value: T, - customizer?: ?(value: T, key: number | string, object: T, stack: any) => U - ): U; - cloneWith( - value: T, - customizer?: ?(value: T, key: number | string, object: T, stack: any) => U - ): U; - conformsTo( - source: T, - predicates: T & { [key: string]: (x: any) => boolean } - ): boolean; - eq(value: any, other: any): boolean; - gt(value: any, other: any): boolean; - gte(value: any, other: any): boolean; - isArguments(value: void | null): false; - isArguments(value: any): boolean; - isArray(value: $ReadOnlyArray): true; - isArray(value: any): false; - isArrayBuffer(value: ArrayBuffer): true; - isArrayBuffer(value: any): false; - isArrayLike(value: $ReadOnlyArray | string | { length: number }): true; - isArrayLike(value: any): false; - isArrayLikeObject(value: { length: number } | $ReadOnlyArray): true; - isArrayLikeObject(value: any): false; - isBoolean(value: boolean): true; - isBoolean(value: any): false; - isBuffer(value: void | null): false; - isBuffer(value: any): boolean; - isDate(value: Date): true; - isDate(value: any): false; - isElement(value: Element): true; - isElement(value: any): false; - isEmpty(value: void | null | "" | {} | [] | number | boolean): true; - isEmpty(value: any): boolean; - isEqual(value: any, other: any): boolean; - isEqualWith( - value?: ?T, - other?: ?U, - customizer?: ?( - objValue: any, - otherValue: any, - key: number | string, - object: T, - other: U, - stack: any - ) => boolean | void - ): boolean; - isError(value: Error): true; - isError(value: any): false; - isFinite(value: number): boolean; - isFinite(value: any): false; - isFunction(value: Function): true; - isFunction(value: any): false; - isInteger(value: number): boolean; - isInteger(value: any): false; - isLength(value: void | null): false; - isLength(value: any): boolean; - isMap(value: Map): true; - isMap(value: any): false; - isMatch(object?: ?Object, source?: ?Object): boolean; - isMatchWith( - object?: ?T, - source?: ?U, - customizer?: ?( - objValue: any, - srcValue: any, - key: number | string, - object: T, - source: U - ) => boolean | void - ): boolean; - isNaN(value: number): boolean; - isNaN(value: any): false; - isNative(value: number | string | void | null | Object): false; - isNative(value: any): boolean; - isNil(value: void | null): true; - isNil(value: any): false; - isNull(value: null): true; - isNull(value: any): false; - isNumber(value: number): true; - isNumber(value: any): false; - isObject(value: any): boolean; - isObjectLike(value: void | null): false; - isObjectLike(value: any): boolean; - isPlainObject(value: any): boolean; - isRegExp(value: RegExp): true; - isRegExp(value: any): false; - isSafeInteger(value: number): boolean; - isSafeInteger(value: any): false; - isSet(value: Set): true; - isSet(value: any): false; - isString(value: string): true; - isString(value: any): false; - isSymbol(value: Symbol): true; - isSymbol(value: any): false; - isTypedArray(value: $TypedArray): true; - isTypedArray(value: any): false; - isUndefined(value: void): true; - isUndefined(value: any): false; - isWeakMap(value: WeakMap): true; - isWeakMap(value: any): false; - isWeakSet(value: WeakSet): true; - isWeakSet(value: any): false; - lt(value: any, other: any): boolean; - lte(value: any, other: any): boolean; - toArray(value: any): Array; - toFinite(value: void | null): 0; - toFinite(value: any): number; - toInteger(value: void | null): 0; - toInteger(value: any): number; - toLength(value: void | null): 0; - toLength(value: any): number; - toNumber(value: void | null): 0; - toNumber(value: any): number; - toPlainObject(value: any): Object; - toSafeInteger(value: void | null): 0; - toSafeInteger(value: any): number; - toString(value: void | null): ""; - toString(value: any): string; - - // Math - add(augend: number, addend: number): number; - ceil(number: number, precision?: number): number; - divide(dividend: number, divisor: number): number; - floor(number: number, precision?: number): number; - max(array: ?$ReadOnlyArray): T; - maxBy(array: ?$ReadOnlyArray, iteratee?: Iteratee): T; - mean(array: $ReadOnlyArray<*>): number; - meanBy(array: Array, iteratee?: Iteratee): number; - min(array: ?$ReadOnlyArray): T; - minBy(array: ?$ReadOnlyArray, iteratee?: Iteratee): T; - multiply(multiplier: number, multiplicand: number): number; - round(number: number, precision?: number): number; - subtract(minuend: number, subtrahend: number): number; - sum(array: $ReadOnlyArray<*>): number; - sumBy(array: $ReadOnlyArray, iteratee?: Iteratee): number; - - // number - clamp(number?: number, lower?: ?number, upper?: ?number): number; - clamp(number: ?number, lower?: ?number, upper?: ?number): 0; - inRange(number: number, start?: number, end: number): boolean; - random(lower?: number, upper?: number, floating?: boolean): number; - - // Object - assign(object?: ?Object, ...sources?: Array): Object; - assignIn(): {}; - assignIn(a: A, b: B): A & B; - assignIn(a: A, b: B, c: C): A & B & C; - assignIn(a: A, b: B, c: C, d: D): A & B & C & D; - assignIn(a: A, b: B, c: C, d: D, e: E): A & B & C & D & E; - assignInWith(): {}; - assignInWith( - object: T, - s1: A, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void - ): Object; - assignInWith( - object: T, - s1: A, - s2: B, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B - ) => any | void - ): Object; - assignInWith( - object: T, - s1: A, - s2: B, - s3: C, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B | C - ) => any | void - ): Object; - assignInWith( - object: T, - s1: A, - s2: B, - s3: C, - s4: D, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B | C | D - ) => any | void - ): Object; - assignWith(): {}; - assignWith( - object: T, - s1: A, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void - ): Object; - assignWith( - object: T, - s1: A, - s2: B, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B - ) => any | void - ): Object; - assignWith( - object: T, - s1: A, - s2: B, - s3: C, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B | C - ) => any | void - ): Object; - assignWith( - object: T, - s1: A, - s2: B, - s3: C, - s4: D, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B | C | D - ) => any | void - ): Object; - at(object?: ?Object, ...paths: $ReadOnlyArray): Array; - at(object?: ?Object, paths: $ReadOnlyArray): Array; - create(prototype: void | null, properties: void | null): {}; - create(prototype: T, properties: Object): T; - create(prototype: any, properties: void | null): {}; - defaults(object?: ?Object, ...sources?: Array): Object; - defaultsDeep(object?: ?Object, ...sources?: Array): Object; - // alias for _.toPairs - entries(object?: ?Object): Array<[string, any]>; - // alias for _.toPairsIn - entriesIn(object?: ?Object): Array<[string, any]>; - // alias for _.assignIn - extend(a?: ?A, b?: ?B): A & B; - extend(a: A, b: B, c: C): A & B & C; - extend(a: A, b: B, c: C, d: D): A & B & C & D; - extend(a: A, b: B, c: C, d: D, e: E): A & B & C & D & E; - // alias for _.assignInWith - extendWith( - object?: ?T, - s1?: ?A, - customizer?: ?( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void - ): Object; - extendWith( - object: T, - s1: A, - s2: B, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B - ) => any | void - ): Object; - extendWith( - object: T, - s1: A, - s2: B, - s3: C, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B | C - ) => any | void - ): Object; - extendWith( - object: T, - s1: A, - s2: B, - s3: C, - s4: D, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B | C | D - ) => any | void - ): Object; - findKey( - object: T, - predicate?: ?OPredicate - ): string | void; - findKey( - object: void | null, - predicate?: ?OPredicate - ): void; - findLastKey( - object: T, - predicate?: ?OPredicate - ): string | void; - findLastKey( - object: void | null, - predicate?: ?OPredicate - ): void; - forIn(object: Object, iteratee?: ?OIteratee<*>): Object; - forIn(object: void | null, iteratee?: ?OIteratee<*>): null; - forInRight(object: Object, iteratee?: ?OIteratee<*>): Object; - forInRight(object: void | null, iteratee?: ?OIteratee<*>): null; - forOwn(object: Object, iteratee?: ?OIteratee<*>): Object; - forOwn(object: void | null, iteratee?: ?OIteratee<*>): null; - forOwnRight(object: Object, iteratee?: ?OIteratee<*>): Object; - forOwnRight(object: void | null, iteratee?: ?OIteratee<*>): null; - functions(object?: ?Object): Array; - functionsIn(object?: ?Object): Array; - get( - object?: ?Object | ?$ReadOnlyArray | void | null, - path?: ?Path, - defaultValue?: any - ): any; - has(object: Object, path: Path): boolean; - has(object: Object, path: void | null): false; - has(object: void | null, path?: ?Path): false; - hasIn(object: Object, path: Path): boolean; - hasIn(object: Object, path: void | null): false; - hasIn(object: void | null, path?: ?Path): false; - invert(object: Object, multiVal?: ?boolean): Object; - invert(object: void | null, multiVal?: ?boolean): {}; - invertBy(object: Object, iteratee?: ?Function): Object; - invertBy(object: void | null, iteratee?: ?Function): {}; - invoke( - object?: ?Object, - path?: ?Path, - ...args?: Array - ): any; - keys(object?: ?{ [key: K]: any }): Array; - keys(object?: ?Object): Array; - keysIn(object?: ?Object): Array; - mapKeys(object: Object, iteratee?: ?OIteratee<*>): Object; - mapKeys(object: void | null, iteratee?: ?OIteratee<*>): {}; - mapValues(object: Object, iteratee?: ?OIteratee<*>): Object; - mapValues(object: void | null, iteratee?: ?OIteratee<*>): {}; - merge(object?: ?Object, ...sources?: Array): Object; - mergeWith(): {}; - mergeWith( - object: T, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void - ): Object; - mergeWith( - object: T, - s1: A, - s2: B, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B - ) => any | void - ): Object; - mergeWith( - object: T, - s1: A, - s2: B, - s3: C, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B | C - ) => any | void - ): Object; - mergeWith( - object: T, - s1: A, - s2: B, - s3: C, - s4: D, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B | C | D - ) => any | void - ): Object; - omit(object?: ?Object, ...props: $ReadOnlyArray): Object; - omit(object?: ?Object, props: $ReadOnlyArray): Object; - omitBy( - object: T, - predicate?: ?OPredicate - ): Object; - omitBy(object: void | null, predicate?: ?OPredicate): {}; - pick(object?: ?Object, ...props: $ReadOnlyArray): Object; - pick(object?: ?Object, props: $ReadOnlyArray): Object; - pickBy( - object: T, - predicate?: ?OPredicate - ): Object; - pickBy(object: void | null, predicate?: ?OPredicate): {}; - result( - object?: ?Object, - path?: ?Path, - defaultValue?: any - ): any; - set(object: Object, path?: ?Path, value: any): Object; - set( - object: T, - path?: ?Path, - value?: ?any - ): T; - setWith( - object: T, - path?: ?Path, - value: any, - customizer?: (nsValue: any, key: string, nsObject: T) => any - ): Object; - setWith( - object: T, - path?: ?Path, - value?: ?any, - customizer?: ?(nsValue: any, key: string, nsObject: T) => any - ): T; - toPairs(object?: ?Object | Array<*>): Array<[string, any]>; - toPairsIn(object?: ?Object): Array<[string, any]>; - transform( - collection: Object | $ReadOnlyArray, - iteratee?: ?OIteratee<*>, - accumulator?: any - ): any; - transform( - collection: void | null, - iteratee?: ?OIteratee<*>, - accumulator?: ?any - ): {}; - unset(object: void | null, path?: ?Path): true; - unset(object: Object, path?: ?Path): boolean; - update(object: Object, path: Path, updater: Function): Object; - update( - object: T, - path?: ?Path, - updater?: ?Function - ): T; - updateWith( - object: Object, - path?: ?Path, - updater?: ?Function, - customizer?: ?Function - ): Object; - updateWith( - object: T, - path?: ?Path, - updater?: ?Function, - customizer?: ?Function - ): T; - values(object?: ?Object): Array; - valuesIn(object?: ?Object): Array; - - // Seq - // harder to read, but this is _() - (value: any): any; - chain(value: T): any; - tap(value: T, interceptor: (value: T) => any): T; - thru(value: T1, interceptor: (value: T1) => T2): T2; - // TODO: _.prototype.* - - // String - camelCase(string: string): string; - camelCase(string: void | null): ""; - capitalize(string: string): string; - capitalize(string: void | null): ""; - deburr(string: string): string; - deburr(string: void | null): ""; - endsWith(string: string, target?: string, position?: ?number): boolean; - endsWith(string: void | null, target?: ?string, position?: ?number): false; - escape(string: string): string; - escape(string: void | null): ""; - escapeRegExp(string: string): string; - escapeRegExp(string: void | null): ""; - kebabCase(string: string): string; - kebabCase(string: void | null): ""; - lowerCase(string: string): string; - lowerCase(string: void | null): ""; - lowerFirst(string: string): string; - lowerFirst(string: void | null): ""; - pad(string?: ?string, length?: ?number, chars?: ?string): string; - padEnd(string?: ?string, length?: ?number, chars?: ?string): string; - padStart(string?: ?string, length?: ?number, chars?: ?string): string; - parseInt(string: string, radix?: ?number): number; - repeat(string: string, n?: ?number): string; - repeat(string: void | null, n?: ?number): ""; - replace( - string: string, - pattern: RegExp | string, - replacement: ((string: string) => string) | string - ): string; - replace( - string: void | null, - pattern?: ?RegExp | ?string, - replacement: ?((string: string) => string) | ?string - ): ""; - snakeCase(string: string): string; - snakeCase(string: void | null): ""; - split( - string?: ?string, - separator?: ?RegExp | ?string, - limit?: ?number - ): Array; - startCase(string: string): string; - startCase(string: void | null): ""; - startsWith(string: string, target?: string, position?: number): boolean; - startsWith( - string: void | null, - target?: ?string, - position?: ?number - ): false; - template(string?: ?string, options?: ?TemplateSettings): Function; - toLower(string: string): string; - toLower(string: void | null): ""; - toUpper(string: string): string; - toUpper(string: void | null): ""; - trim(string: string, chars?: string): string; - trim(string: void | null, chars?: ?string): ""; - trimEnd(string: string, chars?: ?string): string; - trimEnd(string: void | null, chars?: ?string): ""; - trimStart(string: string, chars?: ?string): string; - trimStart(string: void | null, chars?: ?string): ""; - truncate(string: string, options?: TruncateOptions): string; - truncate(string: void | null, options?: ?TruncateOptions): ""; - unescape(string: string): string; - unescape(string: void | null): ""; - upperCase(string: string): string; - upperCase(string: void | null): ""; - upperFirst(string: string): string; - upperFirst(string: void | null): ""; - words(string?: ?string, pattern?: ?RegExp | ?string): Array; - - // Util - attempt(func: Function, ...args: Array): any; - bindAll(object: Object, methodNames?: ?Array): Object; - bindAll(object: T, methodNames?: ?Array): T; - bindAll(object: Object, ...methodNames: Array): Object; - cond(pairs?: ?NestedArray): Function; - conforms(source?: ?Object): Function; - constant(value: T): () => T; - defaultTo(value: T1, defaultValue: T2): T2; - defaultTo( - value: T1, - defaultValue: T2 - ): T1; - // NaN is a number instead of its own type, otherwise it would behave like null/void - defaultTo(value: T1, defaultValue: T2): T1 | T2; - flow: $ComposeReverse & ((funcs: Array) => Function); - flowRight: $Compose & ((funcs: Array) => Function); - identity(value: T): T; - iteratee(func?: any): Function; - matches(source?: ?Object): Function; - matchesProperty(path?: ?Path, srcValue: any): Function; - method(path?: ?Path, ...args?: Array): Function; - methodOf(object?: ?Object, ...args?: Array): Function; - mixin( - object?: T, - source: Object, - options?: { chain: boolean } - ): T; - noConflict(): Lodash; - noop(...args: Array): void; - nthArg(n?: ?number): Function; - over(...iteratees: Array): Function; - over(iteratees: Array): Function; - overEvery(...predicates: Array): Function; - overEvery(predicates: Array): Function; - overSome(...predicates: Array): Function; - overSome(predicates: Array): Function; - property(path?: ?Path): Function; - propertyOf(object?: ?Object): Function; - range(start: number, end: number, step?: number): Array; - range(end: number, step?: number): Array; - rangeRight(start?: ?number, end?: ?number, step?: ?number): Array; - rangeRight(end?: ?number, step?: ?number): Array; - runInContext(context?: ?Object): Function; - - stubArray(): Array<*>; - stubFalse(): false; - stubObject(): {}; - stubString(): ""; - stubTrue(): true; - times(n?: ?number, ...rest?: Array): Array; - times(n: number, iteratee: (i: number) => T): Array; - toPath(value: any): Array; - uniqueId(prefix?: ?string): string; - - // Properties - VERSION: string; - templateSettings: TemplateSettings; - } - - declare module.exports: Lodash; -} - -declare module "lodash/fp" { - declare type Path = $ReadOnlyArray | string | number; - declare type __CurriedFunction1 = (...r: [AA]) => R; - declare type CurriedFunction1 = __CurriedFunction1; - - declare type __CurriedFunction2 = (( - ...r: [AA] - ) => CurriedFunction1) & - ((...r: [AA, BB]) => R); - declare type CurriedFunction2 = __CurriedFunction2; - - declare type __CurriedFunction3 = (( - ...r: [AA] - ) => CurriedFunction2) & - ((...r: [AA, BB]) => CurriedFunction1) & - ((...r: [AA, BB, CC]) => R); - declare type CurriedFunction3 = __CurriedFunction3< - A, - B, - C, - R, - *, - *, - * - >; - - declare type __CurriedFunction4< - A, - B, - C, - D, - R, - AA: A, - BB: B, - CC: C, - DD: D - > = ((...r: [AA]) => CurriedFunction3) & - ((...r: [AA, BB]) => CurriedFunction2) & - ((...r: [AA, BB, CC]) => CurriedFunction1) & - ((...r: [AA, BB, CC, DD]) => R); - declare type CurriedFunction4 = __CurriedFunction4< - A, - B, - C, - D, - R, - *, - *, - *, - * - >; - - declare type __CurriedFunction5< - A, - B, - C, - D, - E, - R, - AA: A, - BB: B, - CC: C, - DD: D, - EE: E - > = ((...r: [AA]) => CurriedFunction4) & - ((...r: [AA, BB]) => CurriedFunction3) & - ((...r: [AA, BB, CC]) => CurriedFunction2) & - ((...r: [AA, BB, CC, DD]) => CurriedFunction1) & - ((...r: [AA, BB, CC, DD, EE]) => R); - declare type CurriedFunction5 = __CurriedFunction5< - A, - B, - C, - D, - E, - R, - *, - *, - *, - *, - * - >; - - declare type __CurriedFunction6< - A, - B, - C, - D, - E, - F, - R, - AA: A, - BB: B, - CC: C, - DD: D, - EE: E, - FF: F - > = ((...r: [AA]) => CurriedFunction5) & - ((...r: [AA, BB]) => CurriedFunction4) & - ((...r: [AA, BB, CC]) => CurriedFunction3) & - ((...r: [AA, BB, CC, DD]) => CurriedFunction2) & - ((...r: [AA, BB, CC, DD, EE]) => CurriedFunction1) & - ((...r: [AA, BB, CC, DD, EE, FF]) => R); - declare type CurriedFunction6 = __CurriedFunction6< - A, - B, - C, - D, - E, - F, - R, - *, - *, - *, - *, - *, - * - >; - - declare type Curry = (((...r: [A]) => R) => CurriedFunction1) & - (((...r: [A, B]) => R) => CurriedFunction2) & - (((...r: [A, B, C]) => R) => CurriedFunction3) & - (( - (...r: [A, B, C, D]) => R - ) => CurriedFunction4) & - (( - (...r: [A, B, C, D, E]) => R - ) => CurriedFunction5) & - (( - (...r: [A, B, C, D, E, F]) => R - ) => CurriedFunction6); - - declare type UnaryFn = (a: A) => R; - - declare type TemplateSettings = { - escape?: RegExp, - evaluate?: RegExp, - imports?: Object, - interpolate?: RegExp, - variable?: string - }; - - declare type TruncateOptions = { - length?: number, - omission?: string, - separator?: RegExp | string - }; - - declare type DebounceOptions = { - leading?: boolean, - maxWait?: number, - trailing?: boolean - }; - - declare type ThrottleOptions = { - leading?: boolean, - trailing?: boolean - }; - - declare type NestedArray = Array>; - - declare type matchesIterateeShorthand = {[string | number]: any}; - declare type matchesPropertyIterateeShorthand = [string, any]; - declare type propertyIterateeShorthand = string; - - declare type OPredicate = - | ((value: A) => any) - | matchesIterateeShorthand - | matchesPropertyIterateeShorthand - | propertyIterateeShorthand; - - declare type OIterateeWithResult = Object | string | ((value: V) => R); - declare type OIteratee = OIterateeWithResult; - declare type OFlatMapIteratee = OIterateeWithResult>; - - declare type Predicate = - | ((value: T) => any) - | matchesIterateeShorthand - | matchesPropertyIterateeShorthand - | propertyIterateeShorthand; - - declare type _ValueOnlyIteratee = (value: T) => mixed; - declare type ValueOnlyIteratee = _ValueOnlyIteratee | string; - declare type _Iteratee = (item: T) => mixed; - declare type Iteratee = _Iteratee | Object | string; - declare type FlatMapIteratee = - | ((item: T) => Array) - | Object - | string; - declare type Comparator = (item: T, item2: T) => boolean; - - declare type MapIterator = ((item: T) => U) | propertyIterateeShorthand; - - declare type OMapIterator = - | ((item: T) => U) - | propertyIterateeShorthand; - - declare class Lodash { - // Array - chunk(size: number): (array: Array) => Array>; - chunk(size: number, array: Array): Array>; - compact(array?: ?$ReadOnlyArray): Array; - concat | T, B: Array | U>( - base: A - ): (elements: B) => Array; - concat | T, B: Array | U>( - base: A, - elements: B - ): Array; - difference(values: $ReadOnlyArray): (array: $ReadOnlyArray) => T[]; - difference(values: $ReadOnlyArray, array: $ReadOnlyArray): T[]; - differenceBy( - iteratee: ValueOnlyIteratee - ): ((values: $ReadOnlyArray) => (array: $ReadOnlyArray) => T[]) & - ((values: $ReadOnlyArray, array: $ReadOnlyArray) => T[]); - differenceBy( - iteratee: ValueOnlyIteratee, - values: $ReadOnlyArray - ): (array: $ReadOnlyArray) => T[]; - differenceBy( - iteratee: ValueOnlyIteratee, - values: $ReadOnlyArray, - array: $ReadOnlyArray - ): T[]; - differenceWith( - comparator: Comparator - ): ((first: $ReadOnly) => (second: $ReadOnly) => T[]) & - ((first: $ReadOnly, second: $ReadOnly) => T[]); - differenceWith( - comparator: Comparator, - first: $ReadOnly - ): (second: $ReadOnly) => T[]; - differenceWith( - comparator: Comparator, - first: $ReadOnly, - second: $ReadOnly - ): T[]; - drop(n: number): (array: Array) => Array; - drop(n: number, array: Array): Array; - dropLast(n: number): (array: Array) => Array; - dropLast(n: number, array: Array): Array; - dropRight(n: number): (array: Array) => Array; - dropRight(n: number, array: Array): Array; - dropRightWhile(predicate: Predicate): (array: Array) => Array; - dropRightWhile(predicate: Predicate, array: Array): Array; - dropWhile(predicate: Predicate): (array: Array) => Array; - dropWhile(predicate: Predicate, array: Array): Array; - dropLastWhile(predicate: Predicate): (array: Array) => Array; - dropLastWhile(predicate: Predicate, array: Array): Array; - fill( - start: number - ): (( - end: number - ) => ((value: U) => (array: Array) => Array) & - ((value: U, array: Array) => Array)) & - ((end: number, value: U) => (array: Array) => Array) & - ((end: number, value: U, array: Array) => Array); - fill( - start: number, - end: number - ): ((value: U) => (array: Array) => Array) & - ((value: U, array: Array) => Array); - fill( - start: number, - end: number, - value: U - ): (array: Array) => Array; - fill( - start: number, - end: number, - value: U, - array: Array - ): Array; - findIndex(predicate: Predicate): (array: $ReadOnlyArray) => number; - findIndex(predicate: Predicate, array: $ReadOnlyArray): number; - findIndexFrom( - predicate: Predicate - ): ((fromIndex: number) => (array: $ReadOnlyArray) => number) & - ((fromIndex: number, array: $ReadOnlyArray) => number); - findIndexFrom( - predicate: Predicate, - fromIndex: number - ): (array: $ReadOnlyArray) => number; - findIndexFrom( - predicate: Predicate, - fromIndex: number, - array: $ReadOnlyArray - ): number; - findLastIndex( - predicate: Predicate - ): (array: $ReadOnlyArray) => number; - findLastIndex(predicate: Predicate, array: $ReadOnlyArray): number; - findLastIndexFrom( - predicate: Predicate - ): ((fromIndex: number) => (array: $ReadOnlyArray) => number) & - ((fromIndex: number, array: $ReadOnlyArray) => number); - findLastIndexFrom( - predicate: Predicate, - fromIndex: number - ): (array: $ReadOnlyArray) => number; - findLastIndexFrom( - predicate: Predicate, - fromIndex: number, - array: $ReadOnlyArray - ): number; - // alias of _.head - first(array: $ReadOnlyArray): T; - flatten(array: $ReadOnlyArray<$ReadOnlyArray | X>): Array; - unnest(array: Array | X>): Array; - flattenDeep(array: any[]): Array; - flattenDepth(depth: number): (array: any[]) => any[]; - flattenDepth(depth: number, array: any[]): any[]; - fromPairs(pairs: Array<[A, B]>): { [key: A]: B }; - head(array: $ReadOnlyArray): T; - indexOf(value: T): (array: $ReadOnlyArray) => number; - indexOf(value: T, array: $ReadOnlyArray): number; - indexOfFrom( - value: T - ): ((fromIndex: number) => (array: $ReadOnlyArray) => number) & - ((fromIndex: number, array: $ReadOnlyArray) => number); - indexOfFrom(value: T, fromIndex: number): (array: $ReadOnlyArray) => number; - indexOfFrom(value: T, fromIndex: number, array: $ReadOnlyArray): number; - initial(array: $ReadOnlyArray): Array; - init(array: Array): Array; - intersection(a1: $ReadOnlyArray): (a2: $ReadOnlyArray) => Array; - intersection(a1: $ReadOnlyArray, a2: $ReadOnlyArray): Array; - intersectionBy( - iteratee: ValueOnlyIteratee - ): ((a1: $ReadOnlyArray) => (a2: $ReadOnlyArray) => Array) & - ((a1: $ReadOnlyArray, a2: $ReadOnlyArray) => Array); - intersectionBy( - iteratee: ValueOnlyIteratee, - a1: $ReadOnlyArray - ): (a2: Array) => Array; - intersectionBy( - iteratee: ValueOnlyIteratee, - a1: $ReadOnlyArray, - a2: $ReadOnlyArray - ): Array; - intersectionWith( - comparator: Comparator - ): ((a1: $ReadOnlyArray) => (a2: $ReadOnlyArray) => Array) & - ((a1: $ReadOnlyArray, a2: $ReadOnlyArray) => Array); - intersectionWith( - comparator: Comparator, - a1: $ReadOnlyArray - ): (a2: $ReadOnlyArray) => Array; - intersectionWith( - comparator: Comparator, - a1: $ReadOnlyArray, - a2: $ReadOnlyArray - ): Array; - join(separator: string): (array: $ReadOnlyArray) => string; - join(separator: string, array: $ReadOnlyArray): string; - last(array: $ReadOnlyArray): T; - lastIndexOf(value: T): (array: $ReadOnlyArray) => number; - lastIndexOf(value: T, array: $ReadOnlyArray): number; - lastIndexOfFrom( - value: T - ): ((fromIndex: number) => (array: $ReadOnlyArray) => number) & - ((fromIndex: number, array: $ReadOnlyArray) => number); - lastIndexOfFrom( - value: T, - fromIndex: number - ): (array: $ReadOnlyArray) => number; - lastIndexOfFrom(value: T, fromIndex: number, array: $ReadOnlyArray): number; - nth(n: number): (array: T[]) => T; - nth(n: number, array: T[]): T; - pull(value: T): (array: Array) => Array; - pull(value: T, array: Array): Array; - pullAll(values: Array): (array: Array) => Array; - pullAll(values: Array, array: Array): Array; - pullAllBy( - iteratee: ValueOnlyIteratee - ): ((values: Array) => (array: Array) => Array) & - ((values: Array, array: Array) => Array); - pullAllBy( - iteratee: ValueOnlyIteratee, - values: Array - ): (array: Array) => Array; - pullAllBy( - iteratee: ValueOnlyIteratee, - values: Array, - array: Array - ): Array; - pullAllWith( - comparator: Function - ): ((values: T[]) => (array: T[]) => T[]) & - ((values: T[], array: T[]) => T[]); - pullAllWith(comparator: Function, values: T[]): (array: T[]) => T[]; - pullAllWith(comparator: Function, values: T[], array: T[]): T[]; - pullAt(indexed: Array): (array: Array) => Array; - pullAt(indexed: Array, array: Array): Array; - remove(predicate: Predicate): (array: Array) => Array; - remove(predicate: Predicate, array: Array): Array; - reverse(array: Array): Array; - slice( - start: number - ): ((end: number) => (array: $ReadOnlyArray) => Array) & - ((end: number, array: $ReadOnlyArray) => Array); - slice(start: number, end: number): (array: $ReadOnlyArray) => Array; - slice(start: number, end: number, array: $ReadOnlyArray): Array; - sortedIndex(value: T): (array: $ReadOnlyArray) => number; - sortedIndex(value: T, array: $ReadOnlyArray): number; - sortedIndexBy( - iteratee: ValueOnlyIteratee - ): ((value: T) => (array: $ReadOnlyArray) => number) & - ((value: T, array: Array) => number); - sortedIndexBy( - iteratee: ValueOnlyIteratee, - value: T - ): (array: $ReadOnlyArray) => number; - sortedIndexBy( - iteratee: ValueOnlyIteratee, - value: T, - array: $ReadOnlyArray - ): number; - sortedIndexOf(value: T): (array: $ReadOnlyArray) => number; - sortedIndexOf(value: T, array: $ReadOnlyArray): number; - sortedLastIndex(value: T): (array: $ReadOnlyArray) => number; - sortedLastIndex(value: T, array: $ReadOnlyArray): number; - sortedLastIndexBy( - iteratee: ValueOnlyIteratee - ): ((value: T) => (array: $ReadOnlyArray) => number) & - ((value: T, array: Array) => number); - sortedLastIndexBy( - iteratee: ValueOnlyIteratee, - value: T - ): (array: $ReadOnlyArray) => number; - sortedLastIndexBy( - iteratee: ValueOnlyIteratee, - value: T, - array: $ReadOnlyArray - ): number; - sortedLastIndexOf(value: T): (array: $ReadOnlyArray) => number; - sortedLastIndexOf(value: T, array: $ReadOnlyArray): number; - sortedUniq(array: $ReadOnlyArray): Array; - sortedUniqBy(iteratee: ValueOnlyIteratee, array: $ReadOnlyArray): Array; - tail(array: $ReadOnlyArray): Array; - take(n: number): (array: $ReadOnlyArray) => Array; - take(n: number, array: $ReadOnlyArray): Array; - takeRight(n: number): (array: $ReadOnlyArray) => Array; - takeRight(n: number, array: $ReadOnlyArray): Array; - takeLast(n: number): (array: $ReadOnlyArray) => Array; - takeLast(n: number, array: $ReadOnlyArray): Array; - takeRightWhile(predicate: Predicate): (array: Array) => Array; - takeRightWhile(predicate: Predicate, array: Array): Array; - takeLastWhile(predicate: Predicate): (array: Array) => Array; - takeLastWhile(predicate: Predicate, array: Array): Array; - takeWhile(predicate: Predicate): (array: Array) => Array; - takeWhile(predicate: Predicate, array: Array): Array; - union(a1: $ReadOnlyArray): (a2: Array) => Array; - union(a1: $ReadOnlyArray, a2: $ReadOnlyArray): Array; - unionBy( - iteratee: ValueOnlyIteratee - ): ((a1: $ReadOnlyArray) => (a2: $ReadOnlyArray) => Array) & - ((a1: $ReadOnlyArray, a2: $ReadOnlyArray) => Array); - unionBy( - iteratee: ValueOnlyIteratee, - a1: $ReadOnlyArray - ): (a2: $ReadOnlyArray) => Array; - unionBy( - iteratee: ValueOnlyIteratee, - a1: $ReadOnlyArray, - a2: $ReadOnlyArray - ): Array; - unionWith( - comparator: Comparator - ): ((a1: $ReadOnlyArray) => (a2: $ReadOnlyArray) => Array) & - ((a1: $ReadOnlyArray, a2: $ReadOnlyArray) => Array); - unionWith( - comparator: Comparator, - a1: $ReadOnlyArray - ): (a2: $ReadOnlyArray) => Array; - unionWith( - comparator: Comparator, - a1: $ReadOnlyArray, - a2: $ReadOnlyArray - ): Array; - uniq(array: $ReadOnlyArray): Array; - uniqBy(iteratee: ValueOnlyIteratee): (array: $ReadOnlyArray) => Array; - uniqBy(iteratee: ValueOnlyIteratee, array: $ReadOnlyArray): Array; - uniqWith(comparator: Comparator): (array: $ReadOnlyArray) => Array; - uniqWith(comparator: Comparator, array: $ReadOnlyArray): Array; - unzip(array: $ReadOnlyArray): Array; - unzipWith(iteratee: Iteratee): (array: Array) => Array; - unzipWith(iteratee: Iteratee, array: Array): Array; - without(values: $ReadOnlyArray): (array: $ReadOnlyArray) => Array; - without(values: $ReadOnlyArray, array: $ReadOnlyArray): Array; - xor(a1: $ReadOnlyArray): (a2: $ReadOnlyArray) => Array; - xor(a1: $ReadOnlyArray, a2: $ReadOnlyArray): Array; - symmetricDifference(a1: $ReadOnlyArray): (a2: $ReadOnlyArray) => Array; - symmetricDifference(a1: $ReadOnlyArray, a2: $ReadOnlyArray): Array; - xorBy( - iteratee: ValueOnlyIteratee - ): ((a1: $ReadOnlyArray) => (a2: $ReadOnlyArray) => Array) & - ((a1: $ReadOnlyArray, a2: $ReadOnlyArray) => Array); - xorBy( - iteratee: ValueOnlyIteratee, - a1: $ReadOnlyArray - ): (a2: $ReadOnlyArray) => Array; - xorBy( - iteratee: ValueOnlyIteratee, - a1: $ReadOnlyArray, - a2: $ReadOnlyArray - ): Array; - symmetricDifferenceBy( - iteratee: ValueOnlyIteratee - ): ((a1: $ReadOnlyArray) => (a2: $ReadOnlyArray) => Array) & - ((a1: $ReadOnlyArray, a2: $ReadOnlyArray) => Array); - symmetricDifferenceBy( - iteratee: ValueOnlyIteratee, - a1: $ReadOnlyArray - ): (a2: Array) => Array; - symmetricDifferenceBy( - iteratee: ValueOnlyIteratee, - a1: $ReadOnlyArray, - a2: $ReadOnlyArray - ): Array; - xorWith( - comparator: Comparator - ): ((a1: $ReadOnlyArray) => (a2: $ReadOnlyArray) => Array) & - ((a1: $ReadOnlyArray, a2: $ReadOnlyArray) => Array); - xorWith( - comparator: Comparator, - a1: $ReadOnlyArray - ): (a2: $ReadOnlyArray) => Array; - xorWith(comparator: Comparator, a1: $ReadOnlyArray, a2: $ReadOnlyArray): Array; - symmetricDifferenceWith( - comparator: Comparator - ): ((a1: $ReadOnlyArray) => (a2: $ReadOnlyArray) => Array) & - ((a1: $ReadOnlyArray, a2: $ReadOnlyArray) => Array); - symmetricDifferenceWith( - comparator: Comparator, - a1: $ReadOnlyArray - ): (a2: $ReadOnlyArray) => Array; - symmetricDifferenceWith( - comparator: Comparator, - a1: $ReadOnlyArray, - a2: $ReadOnlyArray - ): Array; - zip(a1: $ReadOnlyArray): (a2: $ReadOnlyArray) => Array<[A, B]>; - zip(a1: $ReadOnlyArray, a2: $ReadOnlyArray): Array<[A, B]>; - zipAll(arrays: $ReadOnlyArray<$ReadOnlyArray>): Array; - zipObject(props?: $ReadOnlyArray): (values?: $ReadOnlyArray) => { [key: K]: V }; - zipObject(props?: $ReadOnlyArray, values?: $ReadOnlyArray): { [key: K]: V }; - zipObj(props: Array): (values: Array) => Object; - zipObj(props: Array, values: Array): Object; - zipObjectDeep(props: any[]): (values: any) => Object; - zipObjectDeep(props: any[], values: any): Object; - zipWith( - iteratee: Iteratee - ): ((a1: NestedArray) => (a2: NestedArray) => Array) & - ((a1: NestedArray, a2: NestedArray) => Array); - zipWith( - iteratee: Iteratee, - a1: NestedArray - ): (a2: NestedArray) => Array; - zipWith( - iteratee: Iteratee, - a1: NestedArray, - a2: NestedArray - ): Array; - // Collection - countBy( - iteratee: ValueOnlyIteratee - ): (collection: $ReadOnlyArray | { [id: any]: T }) => { [string]: number }; - countBy( - iteratee: ValueOnlyIteratee, - collection: $ReadOnlyArray | { [id: any]: T } - ): { [string]: number }; - // alias of _.forEach - each( - iteratee: Iteratee | OIteratee - ): (collection: $ReadOnlyArray | { [id: any]: T }) => Array; - each( - iteratee: Iteratee | OIteratee, - collection: $ReadOnlyArray | { [id: any]: T } - ): Array; - // alias of _.forEachRight - eachRight( - iteratee: Iteratee | OIteratee - ): (collection: $ReadOnlyArray | { [id: any]: T }) => Array; - eachRight( - iteratee: Iteratee | OIteratee, - collection: $ReadOnlyArray | { [id: any]: T } - ): Array; - every( - iteratee: Iteratee | OIteratee - ): (collection: $ReadOnlyArray | { [id: any]: T }) => boolean; - every( - iteratee: Iteratee | OIteratee, - collection: $ReadOnlyArray | { [id: any]: T } - ): boolean; - all( - iteratee: Iteratee | OIteratee - ): (collection: Array | { [id: any]: T }) => boolean; - all( - iteratee: Iteratee | OIteratee, - collection: Array | { [id: any]: T } - ): boolean; - filter( - predicate: Predicate | OPredicate - ): (collection: $ReadOnlyArray | { [id: any]: T }) => Array; - filter( - predicate: Predicate | OPredicate, - collection: $ReadOnlyArray | { [id: any]: T } - ): Array; - find( - predicate: Predicate | OPredicate - ): (collection: $ReadOnlyArray | { [id: any]: T }) => T | void; - find( - predicate: Predicate | OPredicate, - collection: $ReadOnlyArray | { [id: any]: T } - ): T | void; - findFrom( - predicate: Predicate | OPredicate - ): (( - fromIndex: number - ) => (collection: $ReadOnlyArray | { [id: any]: T }) => T | void) & - (( - fromIndex: number, - collection: $ReadOnlyArray | { [id: any]: T } - ) => T | void); - findFrom( - predicate: Predicate | OPredicate, - fromIndex: number - ): (collection: Array | { [id: any]: T }) => T | void; - findFrom( - predicate: Predicate | OPredicate, - fromIndex: number, - collection: $ReadOnlyArray | { [id: any]: T } - ): T | void; - findLast( - predicate: Predicate | OPredicate - ): (collection: $ReadOnlyArray | { [id: any]: T }) => T | void; - findLast( - predicate: Predicate | OPredicate, - collection: $ReadOnlyArray | { [id: any]: T } - ): T | void; - findLastFrom( - predicate: Predicate | OPredicate - ): (( - fromIndex: number - ) => (collection: $ReadOnlyArray | { [id: any]: T }) => T | void) & - (( - fromIndex: number, - collection: $ReadOnlyArray | { [id: any]: T } - ) => T | void); - findLastFrom( - predicate: Predicate | OPredicate, - fromIndex: number - ): (collection: $ReadOnlyArray | { [id: any]: T }) => T | void; - findLastFrom( - predicate: Predicate | OPredicate, - fromIndex: number, - collection: $ReadOnlyArray | { [id: any]: T } - ): T | void; - flatMap( - iteratee: FlatMapIteratee | OFlatMapIteratee - ): (collection: Array | { [id: any]: T }) => Array; - flatMap( - iteratee: FlatMapIteratee | OFlatMapIteratee, - collection: Array | { [id: any]: T } - ): Array; - flatMapDeep( - iteratee: FlatMapIteratee | OFlatMapIteratee - ): (collection: Array | { [id: any]: T }) => Array; - flatMapDeep( - iteratee: FlatMapIteratee | OFlatMapIteratee, - collection: Array | { [id: any]: T } - ): Array; - flatMapDepth( - iteratee: FlatMapIteratee | OFlatMapIteratee - ): (( - depth: number - ) => (collection: Array | { [id: any]: T }) => Array) & - ((depth: number, collection: Array | { [id: any]: T }) => Array); - flatMapDepth( - iteratee: FlatMapIteratee | OFlatMapIteratee, - depth: number - ): (collection: Array | { [id: any]: T }) => Array; - flatMapDepth( - iteratee: FlatMapIteratee | OFlatMapIteratee, - depth: number, - collection: Array | { [id: any]: T } - ): Array; - forEach( - iteratee: Iteratee | OIteratee - ): (collection: $ReadOnlyArray | { [id: any]: T }) => Array; - forEach( - iteratee: Iteratee | OIteratee, - collection: $ReadOnlyArray | { [id: any]: T } - ): Array; - forEachRight( - iteratee: Iteratee | OIteratee - ): (collection: $ReadOnlyArray | { [id: any]: T }) => Array; - forEachRight( - iteratee: Iteratee | OIteratee, - collection: $ReadOnlyArray | { [id: any]: T } - ): Array; - groupBy( - iteratee: ValueOnlyIteratee - ): ( - collection: $ReadOnlyArray | { [id: any]: T } - ) => { [key: V]: Array }; - groupBy( - iteratee: ValueOnlyIteratee, - collection: $ReadOnlyArray | { [id: any]: T } - ): { [key: V]: Array }; - includes(value: T): (collection: Array | { [id: any]: T }) => boolean; - includes(value: T, collection: Array | { [id: any]: T }): boolean; - includes(value: string): (str: string) => boolean; - includes(value: string, str: string): boolean; - contains(value: string): (str: string) => boolean; - contains(value: string, str: string): boolean; - contains(value: T): (collection: Array | { [id: any]: T }) => boolean; - contains(value: T, collection: Array | { [id: any]: T }): boolean; - includesFrom( - value: string - ): ((fromIndex: number) => (str: string) => boolean) & - ((fromIndex: number, str: string) => boolean); - includesFrom(value: string, fromIndex: number): (str: string) => boolean; - includesFrom(value: string, fromIndex: number, str: string): boolean; - includesFrom( - value: T - ): ((fromIndex: number) => (collection: Array) => boolean) & - ((fromIndex: number, collection: Array) => boolean); - includesFrom( - value: T, - fromIndex: number - ): (collection: Array) => boolean; - includesFrom(value: T, fromIndex: number, collection: Array): boolean; - invokeMap( - path: ((value: T) => Path) | Path - ): (collection: Array | { [id: any]: T }) => Array; - invokeMap( - path: ((value: T) => Path) | Path, - collection: Array | { [id: any]: T } - ): Array; - invokeArgsMap( - path: ((value: T) => Path) | Path - ): (( - collection: Array | { [id: any]: T } - ) => (args: Array) => Array) & - (( - collection: Array | { [id: any]: T }, - args: Array - ) => Array); - invokeArgsMap( - path: ((value: T) => Path) | Path, - collection: Array | { [id: any]: T } - ): (args: Array) => Array; - invokeArgsMap( - path: ((value: T) => Path) | Path, - collection: Array | { [id: any]: T }, - args: Array - ): Array; - keyBy( - iteratee: ValueOnlyIteratee - ): (collection: $ReadOnlyArray | { [id: any]: T }) => { [key: V]: T }; - keyBy( - iteratee: ValueOnlyIteratee, - collection: $ReadOnlyArray | { [id: any]: T } - ): { [key: V]: T }; - indexBy( - iteratee: ValueOnlyIteratee - ): (collection: $ReadOnlyArray | { [id: any]: T }) => { [key: V]: T }; - indexBy( - iteratee: ValueOnlyIteratee, - collection: $ReadOnlyArray | { [id: any]: T } - ): { [key: V]: T }; - map( - iteratee: MapIterator | OMapIterator - ): (collection: $ReadOnlyArray | { [id: any]: T }) => Array; - map( - iteratee: MapIterator | OMapIterator, - collection: $ReadOnlyArray | { [id: any]: T } - ): Array; - map(iteratee: (char: string) => any): (str: string) => string; - map(iteratee: (char: string) => any, str: string): string; - pluck( - iteratee: MapIterator | OMapIterator - ): (collection: Array | { [id: any]: T }) => Array; - pluck( - iteratee: MapIterator | OMapIterator, - collection: Array | { [id: any]: T } - ): Array; - pluck(iteratee: (char: string) => any): (str: string) => string; - pluck(iteratee: (char: string) => any, str: string): string; - orderBy( - iteratees: $ReadOnlyArray | OIteratee<*>> | string - ): (( - orders: $ReadOnlyArray<"asc" | "desc"> | string - ) => (collection: $ReadOnlyArray | { [id: any]: T }) => Array) & - (( - orders: $ReadOnlyArray<"asc" | "desc"> | string, - collection: $ReadOnlyArray | { [id: any]: T } - ) => Array); - orderBy( - iteratees: $ReadOnlyArray | OIteratee<*>> | string, - orders: $ReadOnlyArray<"asc" | "desc"> | string - ): (collection: $ReadOnlyArray | { [id: any]: T }) => Array; - orderBy( - iteratees: $ReadOnlyArray | OIteratee<*>> | string, - orders: $ReadOnlyArray<"asc" | "desc"> | string, - collection: $ReadOnlyArray | { [id: any]: T } - ): Array; - partition( - predicate: Predicate | OPredicate - ): (collection: Array | { [id: any]: T }) => [Array, Array]; - partition( - predicate: Predicate | OPredicate, - collection: Array | { [id: any]: T } - ): [Array, Array]; - reduce( - iteratee: (accumulator: U, value: T) => U - ): ((accumulator: U) => (collection: Array | { [id: any]: T }) => U) & - ((accumulator: U, collection: Array | { [id: any]: T }) => U); - reduce( - iteratee: (accumulator: U, value: T) => U, - accumulator: U - ): (collection: Array | { [id: any]: T }) => U; - reduce( - iteratee: (accumulator: U, value: T) => U, - accumulator: U, - collection: Array | { [id: any]: T } - ): U; - reduceRight( - iteratee: (value: T, accumulator: U) => U - ): ((accumulator: U) => (collection: Array | { [id: any]: T }) => U) & - ((accumulator: U, collection: Array | { [id: any]: T }) => U); - reduceRight( - iteratee: (value: T, accumulator: U) => U, - accumulator: U - ): (collection: Array | { [id: any]: T }) => U; - reduceRight( - iteratee: (value: T, accumulator: U) => U, - accumulator: U, - collection: Array | { [id: any]: T } - ): U; - reject( - predicate: Predicate | OPredicate - ): (collection: Array | { [id: any]: T }) => Array; - reject( - predicate: Predicate | OPredicate, - collection: Array | { [id: any]: T } - ): Array; - sample(collection: Array | { [id: any]: T }): T; - sampleSize( - n: number - ): (collection: Array | { [id: any]: T }) => Array; - sampleSize(n: number, collection: Array | { [id: any]: T }): Array; - shuffle(collection: Array | { [id: any]: T }): Array; - size(collection: $ReadOnlyArray | Object | string): number; - some( - predicate: Predicate | OPredicate - ): (collection: $ReadOnlyArray | { [id: any]: T }) => boolean; - some( - predicate: Predicate | OPredicate, - collection: $ReadOnlyArray | { [id: any]: T } - ): boolean; - any( - predicate: Predicate | OPredicate - ): (collection: $ReadOnlyArray | { [id: any]: T }) => boolean; - any( - predicate: Predicate | OPredicate, - collection: $ReadOnlyArray | { [id: any]: T } - ): boolean; - sortBy( - iteratees: - | $ReadOnlyArray | OIteratee> - | Iteratee - | OIteratee - ): (collection: $ReadOnlyArray | { [id: any]: T }) => Array; - sortBy( - iteratees: - | $ReadOnlyArray | OIteratee> - | Iteratee - | OIteratee, - collection: $ReadOnlyArray | { [id: any]: T } - ): Array; - - // Date - now(): number; - - // Function - after(fn: Function): (n: number) => Function; - after(fn: Function, n: number): Function; - ary(func: Function): Function; - nAry(n: number): (func: Function) => Function; - nAry(n: number, func: Function): Function; - before(fn: Function): (n: number) => Function; - before(fn: Function, n: number): Function; - bind(func: Function): (thisArg: any) => Function; - bind(func: Function, thisArg: any): Function; - bindKey(obj: Object): (key: string) => Function; - bindKey(obj: Object, key: string): Function; - curry: Curry; - curryN(arity: number): (func: Function) => Function; - curryN(arity: number, func: Function): Function; - curryRight(func: Function): Function; - curryRightN(arity: number): (func: Function) => Function; - curryRightN(arity: number, func: Function): Function; - debounce(wait: number): (func: (...A) => R) => (...A) => R; - debounce(wait: number, func: (...A) => R): (...A) => R; - defer(func: (...any[]) => any): TimeoutID; - delay(wait: number): (func: Function) => TimeoutID; - delay(wait: number, func: Function): TimeoutID; - flip(func: Function): Function; - memoize(func: F): F; - negate(predicate: (...A) => R): (...A) => boolean; - complement(predicate: Function): Function; - once(func: Function): Function; - overArgs(func: Function): (transforms: Array) => Function; - overArgs(func: Function, transforms: Array): Function; - useWith(func: Function): (transforms: Array) => Function; - useWith(func: Function, transforms: Array): Function; - partial(func: Function): (partials: any[]) => Function; - partial(func: Function, partials: any[]): Function; - partialRight(func: Function): (partials: Array) => Function; - partialRight(func: Function, partials: Array): Function; - rearg(indexes: Array): (func: Function) => Function; - rearg(indexes: Array, func: Function): Function; - rest(func: Function): Function; - unapply(func: Function): Function; - restFrom(start: number): (func: Function) => Function; - restFrom(start: number, func: Function): Function; - spread(func: Function): Function; - apply(func: Function): Function; - spreadFrom(start: number): (func: Function) => Function; - spreadFrom(start: number, func: Function): Function; - throttle(wait: number): (func: (...A) => R) => (...A) => R; - throttle(wait: number, func: (...A) => R): (...A) => R; - unary(func: (T, ...any[]) => R): (T) => R; - wrap(wrapper: Function): (value: any) => Function; - wrap(wrapper: Function, value: any): Function; - - // Lang - castArray(value: *): any[]; - clone(value: T): T; - cloneDeep(value: T): T; - cloneDeepWith( - customizer: (value: T, key: number | string, object: T, stack: any) => U - ): (value: T) => U; - cloneDeepWith( - customizer: (value: T, key: number | string, object: T, stack: any) => U, - value: T - ): U; - cloneWith( - customizer: (value: T, key: number | string, object: T, stack: any) => U - ): (value: T) => U; - cloneWith( - customizer: (value: T, key: number | string, object: T, stack: any) => U, - value: T - ): U; - conformsTo( - predicates: T & { [key: string]: (x: any) => boolean } - ): (source: T) => boolean; - conformsTo( - predicates: T & { [key: string]: (x: any) => boolean }, - source: T - ): boolean; - where( - predicates: T & { [key: string]: (x: any) => boolean } - ): (source: T) => boolean; - where( - predicates: T & { [key: string]: (x: any) => boolean }, - source: T - ): boolean; - conforms( - predicates: T & { [key: string]: (x: any) => boolean } - ): (source: T) => boolean; - conforms( - predicates: T & { [key: string]: (x: any) => boolean }, - source: T - ): boolean; - eq(value: any): (other: any) => boolean; - eq(value: any, other: any): boolean; - identical(value: any): (other: any) => boolean; - identical(value: any, other: any): boolean; - gt(value: any): (other: any) => boolean; - gt(value: any, other: any): boolean; - gte(value: any): (other: any) => boolean; - gte(value: any, other: any): boolean; - isArguments(value: any): boolean; - isArray(value: any): boolean; - isArrayBuffer(value: any): boolean; - isArrayLike(value: any): boolean; - isArrayLikeObject(value: any): boolean; - isBoolean(value: any): boolean; - isBuffer(value: any): boolean; - isDate(value: any): boolean; - isElement(value: any): boolean; - isEmpty(value: any): boolean; - isEqual(value: any): (other: any) => boolean; - isEqual(value: any, other: any): boolean; - equals(value: any): (other: any) => boolean; - equals(value: any, other: any): boolean; - isEqualWith( - customizer: ( - objValue: any, - otherValue: any, - key: number | string, - object: T, - other: U, - stack: any - ) => boolean | void - ): ((value: T) => (other: U) => boolean) & - ((value: T, other: U) => boolean); - isEqualWith( - customizer: ( - objValue: any, - otherValue: any, - key: number | string, - object: T, - other: U, - stack: any - ) => boolean | void, - value: T - ): (other: U) => boolean; - isEqualWith( - customizer: ( - objValue: any, - otherValue: any, - key: number | string, - object: T, - other: U, - stack: any - ) => boolean | void, - value: T, - other: U - ): boolean; - isError(value: any): boolean; - isFinite(value: any): boolean; - isFunction(value: any): boolean; - isInteger(value: any): boolean; - isLength(value: any): boolean; - isMap(value: any): boolean; - isMatch(source: Object): (object: Object) => boolean; - isMatch(source: Object, object: Object): boolean; - whereEq(source: Object): (object: Object) => boolean; - whereEq(source: Object, object: Object): boolean; - isMatchWith( - customizer: ( - objValue: any, - srcValue: any, - key: number | string, - object: T, - source: U - ) => boolean | void - ): ((source: U) => (object: T) => boolean) & - ((source: U, object: T) => boolean); - isMatchWith( - customizer: ( - objValue: any, - srcValue: any, - key: number | string, - object: T, - source: U - ) => boolean | void, - source: U - ): (object: T) => boolean; - isMatchWith( - customizer: ( - objValue: any, - srcValue: any, - key: number | string, - object: T, - source: U - ) => boolean | void, - source: U, - object: T - ): boolean; - isNaN(value: any): boolean; - isNative(value: any): boolean; - isNil(value: any): boolean; - isNull(value: any): boolean; - isNumber(value: any): boolean; - isObject(value: any): boolean; - isObjectLike(value: any): boolean; - isPlainObject(value: any): boolean; - isRegExp(value: any): boolean; - isSafeInteger(value: any): boolean; - isSet(value: any): boolean; - isString(value: string): true; - isString(value: any): false; - isSymbol(value: any): boolean; - isTypedArray(value: any): boolean; - isUndefined(value: any): boolean; - isWeakMap(value: any): boolean; - isWeakSet(value: any): boolean; - lt(value: any): (other: any) => boolean; - lt(value: any, other: any): boolean; - lte(value: any): (other: any) => boolean; - lte(value: any, other: any): boolean; - toArray(value: any): Array; - toFinite(value: any): number; - toInteger(value: any): number; - toLength(value: any): number; - toNumber(value: any): number; - toPlainObject(value: any): Object; - toSafeInteger(value: any): number; - toString(value: any): string; - - // Math - add(augend: number): (addend: number) => number; - add(augend: number, addend: number): number; - ceil(number: number): number; - divide(dividend: number): (divisor: number) => number; - divide(dividend: number, divisor: number): number; - floor(number: number): number; - max(array: Array): T; - maxBy(iteratee: Iteratee): (array: Array) => T; - maxBy(iteratee: Iteratee, array: Array): T; - mean(array: Array<*>): number; - meanBy(iteratee: Iteratee): (array: Array) => number; - meanBy(iteratee: Iteratee, array: Array): number; - min(array: Array): T; - minBy(iteratee: Iteratee): (array: Array) => T; - minBy(iteratee: Iteratee, array: Array): T; - multiply(multiplier: number): (multiplicand: number) => number; - multiply(multiplier: number, multiplicand: number): number; - round(number: number): number; - subtract(minuend: number): (subtrahend: number) => number; - subtract(minuend: number, subtrahend: number): number; - sum(array: Array<*>): number; - sumBy(iteratee: Iteratee): (array: Array) => number; - sumBy(iteratee: Iteratee, array: Array): number; - - // number - clamp( - lower: number - ): ((upper: number) => (number: number) => number) & - ((upper: number, number: number) => number); - clamp(lower: number, upper: number): (number: number) => number; - clamp(lower: number, upper: number, number: number): number; - inRange( - start: number - ): ((end: number) => (number: number) => boolean) & - ((end: number, number: number) => boolean); - inRange(start: number, end: number): (number: number) => boolean; - inRange(start: number, end: number, number: number): boolean; - random(lower: number): (upper: number) => number; - random(lower: number, upper: number): number; - - // Object - assign(object: Object): (source: Object) => Object; - assign(object: Object, source: Object): Object; - assignAll(objects: Array): Object; - assignInAll(objects: Array): Object; - extendAll(objects: Array): Object; - assignIn(a: A): (b: B) => A & B; - assignIn(a: A, b: B): A & B; - assignInWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void - ): ((object: T) => (s1: A) => Object) & ((object: T, s1: A) => Object); - assignInWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void, - object: T - ): (s1: A) => Object; - assignInWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void, - object: T, - s1: A - ): Object; - assignWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void - ): ((object: T) => (s1: A) => Object) & ((object: T, s1: A) => Object); - assignWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void, - object: T - ): (s1: A) => Object; - assignWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void, - object: T, - s1: A - ): Object; - assignInAllWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: Object, - source: Object - ) => any | void - ): (objects: Array) => Object; - assignInAllWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: Object, - source: Object - ) => any | void, - objects: Array - ): Object; - extendAllWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: Object, - source: Object - ) => any | void - ): (objects: Array) => Object; - extendAllWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: Object, - source: Object - ) => any | void, - objects: Array - ): Object; - assignAllWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: Object, - source: Object - ) => any | void - ): (objects: Array) => Object; - assignAllWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: Object, - source: Object - ) => any | void, - objects: Array - ): Object; - at(paths: Array): (object: Object) => Array; - at(paths: Array, object: Object): Array; - props(paths: Array): (object: Object) => Array; - props(paths: Array, object: Object): Array; - paths(paths: Array): (object: Object) => Array; - paths(paths: Array, object: Object): Array; - create(prototype: T): T; - defaults(source: Object): (object: Object) => Object; - defaults(source: Object, object: Object): Object; - defaultsAll(objects: Array): Object; - defaultsDeep(source: Object): (object: Object) => Object; - defaultsDeep(source: Object, object: Object): Object; - defaultsDeepAll(objects: Array): Object; - // alias for _.toPairs - entries(object: Object): Array<[string, any]>; - // alias for _.toPairsIn - entriesIn(object: Object): Array<[string, any]>; - // alias for _.assignIn - extend(a: A): (b: B) => A & B; - extend(a: A, b: B): A & B; - // alias for _.assignInWith - extendWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void - ): ((object: T) => (s1: A) => Object) & ((object: T, s1: A) => Object); - extendWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void, - object: T - ): (s1: A) => Object; - extendWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void, - object: T, - s1: A - ): Object; - findKey( - predicate: OPredicate - ): (object: T) => string | void; - findKey( - predicate: OPredicate, - object: T - ): string | void; - findLastKey( - predicate: OPredicate - ): (object: T) => string | void; - findLastKey( - predicate: OPredicate, - object: T - ): string | void; - forIn(iteratee: OIteratee<*>): (object: Object) => Object; - forIn(iteratee: OIteratee<*>, object: Object): Object; - forInRight(iteratee: OIteratee<*>): (object: Object) => Object; - forInRight(iteratee: OIteratee<*>, object: Object): Object; - forOwn(iteratee: OIteratee<*>): (object: Object) => Object; - forOwn(iteratee: OIteratee<*>, object: Object): Object; - forOwnRight(iteratee: OIteratee<*>): (object: Object) => Object; - forOwnRight(iteratee: OIteratee<*>, object: Object): Object; - functions(object: Object): Array; - functionsIn(object: Object): Array; - get( - path: Path - ): (object: Object | $ReadOnlyArray | void | null) => any; - get( - path: Path, - object: Object | $ReadOnlyArray | void | null - ): any; - prop(path: Path): (object: Object | Array) => any; - prop(path: Path, object: Object | Array): any; - path(path: Path): (object: Object | Array) => any; - path(path: Path, object: Object | Array): any; - getOr( - defaultValue: any - ): (( - path: Path - ) => (object: Object | Array) => any) & - (( - path: Path, - object: Object | $ReadOnlyArray | void | null - ) => any); - getOr( - defaultValue: any, - path: Path - ): (object: Object | $ReadOnlyArray | void | null) => any; - getOr( - defaultValue: any, - path: Path, - object: Object | $ReadOnlyArray | void | null - ): any; - propOr( - defaultValue: any - ): (( - path: Path - ) => (object: Object | Array) => any) & - ((path: Path, object: Object | Array) => any); - propOr( - defaultValue: any, - path: Path - ): (object: Object | Array) => any; - propOr( - defaultValue: any, - path: Path, - object: Object | Array - ): any; - pathOr( - defaultValue: any - ): (( - path: Path - ) => (object: Object | Array) => any) & - ((path: Path, object: Object | Array) => any); - pathOr( - defaultValue: any, - path: Path - ): (object: Object | Array) => any; - pathOr( - defaultValue: any, - path: Path, - object: Object | Array - ): any; - has(path: Path): (object: Object) => boolean; - has(path: Path, object: Object): boolean; - hasIn(path: Path): (object: Object) => boolean; - hasIn(path: Path, object: Object): boolean; - invert(object: Object): Object; - invertObj(object: Object): Object; - invertBy(iteratee: Function): (object: Object) => Object; - invertBy(iteratee: Function, object: Object): Object; - invoke(path: Path): (object: Object) => any; - invoke(path: Path, object: Object): any; - invokeArgs( - path: Path - ): ((object: Object) => (args: Array) => any) & - ((object: Object, args: Array) => any); - invokeArgs( - path: Path, - object: Object - ): (args: Array) => any; - invokeArgs( - path: Path, - object: Object, - args: Array - ): any; - keys(object: { [key: K]: any }): Array; - keys(object: Object): Array; - keysIn(object: Object): Array; - mapKeys(iteratee: OIteratee<*>): (object: Object) => Object; - mapKeys(iteratee: OIteratee<*>, object: Object): Object; - mapValues(iteratee: OIteratee<*>): (object: Object) => Object; - mapValues(iteratee: OIteratee<*>, object: Object): Object; - merge(object: Object): (source: Object) => Object; - merge(object: Object, source: Object): Object; - mergeAll(objects: Array): Object; - mergeWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B - ) => any | void - ): ((object: T) => (s1: A) => Object) & ((object: T, s1: A) => Object); - mergeWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B - ) => any | void, - object: T - ): (s1: A) => Object; - mergeWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B - ) => any | void, - object: T, - s1: A - ): Object; - mergeAllWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: Object, - source: Object - ) => any | void - ): (objects: Array) => Object; - mergeAllWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: Object, - source: Object - ) => any | void, - objects: Array - ): Object; - omit(props: Array): (object: Object) => Object; - omit(props: Array, object: Object): Object; - omitAll(props: Array): (object: Object) => Object; - omitAll(props: Array, object: Object): Object; - omitBy( - predicate: OPredicate - ): (object: T) => Object; - omitBy(predicate: OPredicate, object: T): Object; - pick(...props: Array): Object; - pick(props: $ReadOnlyArray, object: Object): Object; - pick(...props: Array): (object: Object) => Object; - pick(props: $ReadOnlyArray): (object: Object) => Object; - pickAll(props: Array): (object: Object) => Object; - pickAll(props: Array, object: Object): Object; - pickBy( - predicate: OPredicate - ): (object: T) => Object; - pickBy(predicate: OPredicate, object: T): Object; - result(path: Path): (object: Object) => any; - result(path: Path, object: Object): any; - set( - path: Path - ): ((value: any) => (object: Object) => Object) & - ((value: any, object: Object) => Object); - set(path: Path, value: any): (object: Object) => Object; - set(path: Path, value: any, object: Object): Object; - assoc( - path: Path - ): ((value: any) => (object: Object) => Object) & - ((value: any, object: Object) => Object); - assoc(path: Path, value: any): (object: Object) => Object; - assoc(path: Path, value: any, object: Object): Object; - assocPath( - path: Path - ): ((value: any) => (object: Object) => Object) & - ((value: any, object: Object) => Object); - assocPath( - path: Path, - value: any - ): (object: Object) => Object; - assocPath(path: Path, value: any, object: Object): Object; - setWith( - customizer: (nsValue: any, key: string, nsObject: T) => any - ): (( - path: Path - ) => ((value: any) => (object: T) => Object) & - ((value: any, object: T) => Object)) & - ((path: Path, value: any) => (object: T) => Object) & - ((path: Path, value: any, object: T) => Object); - setWith( - customizer: (nsValue: any, key: string, nsObject: T) => any, - path: Path - ): ((value: any) => (object: T) => Object) & - ((value: any, object: T) => Object); - setWith( - customizer: (nsValue: any, key: string, nsObject: T) => any, - path: Path, - value: any - ): (object: T) => Object; - setWith( - customizer: (nsValue: any, key: string, nsObject: T) => any, - path: Path, - value: any, - object: T - ): Object; - toPairs(object: Object | Array<*>): Array<[string, any]>; - toPairsIn(object: Object): Array<[string, any]>; - transform( - iteratee: OIteratee<*> - ): (( - accumulator: any - ) => (collection: Object | $ReadOnlyArray) => any) & - ((accumulator: any, collection: Object | $ReadOnlyArray) => any); - transform( - iteratee: OIteratee<*>, - accumulator: any - ): (collection: Object | $ReadOnlyArray) => any; - transform( - iteratee: OIteratee<*>, - accumulator: any, - collection: Object | $ReadOnlyArray - ): any; - unset(path: Path): (object: Object) => Object; - unset(path: Path, object: Object): Object; - dissoc(path: Path): (object: Object) => Object; - dissoc(path: Path, object: Object): Object; - dissocPath(path: Path): (object: Object) => Object; - dissocPath(path: Path, object: Object): Object; - update( - path: Path - ): ((updater: Function) => (object: Object) => Object) & - ((updater: Function, object: Object) => Object); - update( - path: Path, - updater: Function - ): (object: Object) => Object; - update(path: Path, updater: Function, object: Object): Object; - updateWith( - customizer: Function - ): (( - path: Path - ) => ((updater: Function) => (object: Object) => Object) & - ((updater: Function, object: Object) => Object)) & - (( - path: Path, - updater: Function - ) => (object: Object) => Object) & - ((path: Path, updater: Function, object: Object) => Object); - updateWith( - customizer: Function, - path: Path - ): ((updater: Function) => (object: Object) => Object) & - ((updater: Function, object: Object) => Object); - updateWith( - customizer: Function, - path: Path, - updater: Function - ): (object: Object) => Object; - updateWith( - customizer: Function, - path: Path, - updater: Function, - object: Object - ): Object; - values(object: Object): Array; - valuesIn(object: Object): Array; - - tap(interceptor: (value: T) => any): (value: T) => T; - tap(interceptor: (value: T) => any, value: T): T; - thru(interceptor: (value: T1) => T2): (value: T1) => T2; - thru(interceptor: (value: T1) => T2, value: T1): T2; - - // String - camelCase(string: string): string; - capitalize(string: string): string; - deburr(string: string): string; - endsWith(target: string): (string: string) => boolean; - endsWith(target: string, string: string): boolean; - escape(string: string): string; - escapeRegExp(string: string): string; - kebabCase(string: string): string; - lowerCase(string: string): string; - lowerFirst(string: string): string; - pad(length: number): (string: string) => string; - pad(length: number, string: string): string; - padChars( - chars: string - ): ((length: number) => (string: string) => string) & - ((length: number, string: string) => string); - padChars(chars: string, length: number): (string: string) => string; - padChars(chars: string, length: number, string: string): string; - padEnd(length: number): (string: string) => string; - padEnd(length: number, string: string): string; - padCharsEnd( - chars: string - ): ((length: number) => (string: string) => string) & - ((length: number, string: string) => string); - padCharsEnd(chars: string, length: number): (string: string) => string; - padCharsEnd(chars: string, length: number, string: string): string; - padStart(length: number): (string: string) => string; - padStart(length: number, string: string): string; - padCharsStart( - chars: string - ): ((length: number) => (string: string) => string) & - ((length: number, string: string) => string); - padCharsStart(chars: string, length: number): (string: string) => string; - padCharsStart(chars: string, length: number, string: string): string; - parseInt(radix: number): (string: string) => number; - parseInt(radix: number, string: string): number; - repeat(n: number): (string: string) => string; - repeat(n: number, string: string): string; - replace( - pattern: RegExp | string - ): (( - replacement: ((string: string) => string) | string - ) => (string: string) => string) & - (( - replacement: ((string: string) => string) | string, - string: string - ) => string); - replace( - pattern: RegExp | string, - replacement: ((string: string) => string) | string - ): (string: string) => string; - replace( - pattern: RegExp | string, - replacement: ((string: string) => string) | string, - string: string - ): string; - snakeCase(string: string): string; - split(separator: RegExp | string): (string: string) => Array; - split(separator: RegExp | string, string: string): Array; - startCase(string: string): string; - startsWith(target: string): (string: string) => boolean; - startsWith(target: string, string: string): boolean; - template(string: string): Function; - toLower(string: string): string; - toUpper(string: string): string; - trim(string: string): string; - trimChars(chars: string): (string: string) => string; - trimChars(chars: string, string: string): string; - trimEnd(string: string): string; - trimCharsEnd(chars: string): (string: string) => string; - trimCharsEnd(chars: string, string: string): string; - trimStart(string: string): string; - trimCharsStart(chars: string): (string: string) => string; - trimCharsStart(chars: string, string: string): string; - truncate(options: TruncateOptions): (string: string) => string; - truncate(options: TruncateOptions, string: string): string; - unescape(string: string): string; - upperCase(string: string): string; - upperFirst(string: string): string; - words(string: string): Array; - - // Util - attempt(func: Function): any; - bindAll(methodNames: Array): (object: Object) => Object; - bindAll(methodNames: Array, object: Object): Object; - cond(pairs: NestedArray): Function; - constant(value: T): () => T; - always(value: T): () => T; - defaultTo(defaultValue: T2): (value: T1) => T2; - defaultTo(defaultValue: T2, value: T1): T2; - defaultTo( - defaultValue: T2 - ): (value: T1) => T1; - defaultTo( - defaultValue: T2, - value: T1 - ): T1; - // NaN is a number instead of its own type, otherwise it would behave like null/void - defaultTo(defaultValue: T2): (value: T1) => T1 | T2; - defaultTo(defaultValue: T2, value: T1): T1 | T2; - flow: $ComposeReverse & ((funcs: Array) => Function); - pipe: $ComposeReverse & ((funcs: Array) => Function); - flowRight: $Compose & ((funcs: Array) => Function); - compose: $Compose & ((funcs: Array) => Function); - compose(funcs: Array): Function; - identity(value: T): T; - iteratee(func: any): Function; - matches(source: Object): (object: Object) => boolean; - matches(source: Object, object: Object): boolean; - matchesProperty(path: Path): (srcValue: any) => Function; - matchesProperty(path: Path, srcValue: any): Function; - propEq(path: Path): (srcValue: any) => Function; - propEq(path: Path, srcValue: any): Function; - pathEq(path: Path): (srcValue: any) => Function; - pathEq(path: Path, srcValue: any): Function; - method(path: Path): Function; - methodOf(object: Object): Function; - mixin( - object: T - ): ((source: Object) => (options: { chain: boolean }) => T) & - ((source: Object, options: { chain: boolean }) => T); - mixin( - object: T, - source: Object - ): (options: { chain: boolean }) => T; - mixin( - object: T, - source: Object, - options: { chain: boolean } - ): T; - noConflict(): Lodash; - noop(...args: Array): void; - nthArg(n: number): Function; - over(iteratees: Array): Function; - juxt(iteratees: Array): Function; - overEvery(predicates: Array): Function; - allPass(predicates: Array): Function; - overSome(predicates: Array): Function; - anyPass(predicates: Array): Function; - property( - path: Path - ): (object: Object | Array) => any; - property(path: Path, object: Object | Array): any; - propertyOf(object: Object): (path: Path) => Function; - propertyOf(object: Object, path: Path): Function; - range(start: number): (end: number) => Array; - range(start: number, end: number): Array; - rangeStep( - step: number - ): ((start: number) => (end: number) => Array) & - ((start: number, end: number) => Array); - rangeStep(step: number, start: number): (end: number) => Array; - rangeStep(step: number, start: number, end: number): Array; - rangeRight(start: number): (end: number) => Array; - rangeRight(start: number, end: number): Array; - rangeStepRight( - step: number - ): ((start: number) => (end: number) => Array) & - ((start: number, end: number) => Array); - rangeStepRight(step: number, start: number): (end: number) => Array; - rangeStepRight(step: number, start: number, end: number): Array; - runInContext(context: Object): Function; - - stubArray(): Array<*>; - stubFalse(): false; - F(): false; - stubObject(): {}; - stubString(): ""; - stubTrue(): true; - T(): true; - times(iteratee: (i: number) => T): (n: number) => Array; - times(iteratee: (i: number) => T, n: number): Array; - toPath(value: any): Array; - uniqueId(prefix: string): string; - - __: any; - placeholder: any; - - convert(options: { - cap?: boolean, - curry?: boolean, - fixed?: boolean, - immutable?: boolean, - rearg?: boolean - }): void; - - // Properties - VERSION: string; - templateSettings: TemplateSettings; - } - - declare module.exports: Lodash; -} - -declare module "lodash/chunk" { - declare module.exports: $PropertyType<$Exports<"lodash">, "chunk">; -} - -declare module "lodash/compact" { - declare module.exports: $PropertyType<$Exports<"lodash">, "compact">; -} - -declare module "lodash/concat" { - declare module.exports: $PropertyType<$Exports<"lodash">, "concat">; -} - -declare module "lodash/difference" { - declare module.exports: $PropertyType<$Exports<"lodash">, "difference">; -} - -declare module "lodash/differenceBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "differenceBy">; -} - -declare module "lodash/differenceWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "differenceWith">; -} - -declare module "lodash/drop" { - declare module.exports: $PropertyType<$Exports<"lodash">, "drop">; -} - -declare module "lodash/dropRight" { - declare module.exports: $PropertyType<$Exports<"lodash">, "dropRight">; -} - -declare module "lodash/dropRightWhile" { - declare module.exports: $PropertyType<$Exports<"lodash">, "dropRightWhile">; -} - -declare module "lodash/dropWhile" { - declare module.exports: $PropertyType<$Exports<"lodash">, "dropWhile">; -} - -declare module "lodash/fill" { - declare module.exports: $PropertyType<$Exports<"lodash">, "fill">; -} - -declare module "lodash/findIndex" { - declare module.exports: $PropertyType<$Exports<"lodash">, "findIndex">; -} - -declare module "lodash/findLastIndex" { - declare module.exports: $PropertyType<$Exports<"lodash">, "findLastIndex">; -} - -declare module "lodash/first" { - declare module.exports: $PropertyType<$Exports<"lodash">, "first">; -} - -declare module "lodash/flatten" { - declare module.exports: $PropertyType<$Exports<"lodash">, "flatten">; -} - -declare module "lodash/flattenDeep" { - declare module.exports: $PropertyType<$Exports<"lodash">, "flattenDeep">; -} - -declare module "lodash/flattenDepth" { - declare module.exports: $PropertyType<$Exports<"lodash">, "flattenDepth">; -} - -declare module "lodash/fromPairs" { - declare module.exports: $PropertyType<$Exports<"lodash">, "fromPairs">; -} - -declare module "lodash/head" { - declare module.exports: $PropertyType<$Exports<"lodash">, "head">; -} - -declare module "lodash/indexOf" { - declare module.exports: $PropertyType<$Exports<"lodash">, "indexOf">; -} - -declare module "lodash/initial" { - declare module.exports: $PropertyType<$Exports<"lodash">, "initial">; -} - -declare module "lodash/intersection" { - declare module.exports: $PropertyType<$Exports<"lodash">, "intersection">; -} - -declare module "lodash/intersectionBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "intersectionBy">; -} - -declare module "lodash/intersectionWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "intersectionWith">; -} - -declare module "lodash/join" { - declare module.exports: $PropertyType<$Exports<"lodash">, "join">; -} - -declare module "lodash/last" { - declare module.exports: $PropertyType<$Exports<"lodash">, "last">; -} - -declare module "lodash/lastIndexOf" { - declare module.exports: $PropertyType<$Exports<"lodash">, "lastIndexOf">; -} - -declare module "lodash/nth" { - declare module.exports: $PropertyType<$Exports<"lodash">, "nth">; -} - -declare module "lodash/pull" { - declare module.exports: $PropertyType<$Exports<"lodash">, "pull">; -} - -declare module "lodash/pullAll" { - declare module.exports: $PropertyType<$Exports<"lodash">, "pullAll">; -} - -declare module "lodash/pullAllBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "pullAllBy">; -} - -declare module "lodash/pullAllWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "pullAllWith">; -} - -declare module "lodash/pullAt" { - declare module.exports: $PropertyType<$Exports<"lodash">, "pullAt">; -} - -declare module "lodash/remove" { - declare module.exports: $PropertyType<$Exports<"lodash">, "remove">; -} - -declare module "lodash/reverse" { - declare module.exports: $PropertyType<$Exports<"lodash">, "reverse">; -} - -declare module "lodash/slice" { - declare module.exports: $PropertyType<$Exports<"lodash">, "slice">; -} - -declare module "lodash/sortedIndex" { - declare module.exports: $PropertyType<$Exports<"lodash">, "sortedIndex">; -} - -declare module "lodash/sortedIndexBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "sortedIndexBy">; -} - -declare module "lodash/sortedIndexOf" { - declare module.exports: $PropertyType<$Exports<"lodash">, "sortedIndexOf">; -} - -declare module "lodash/sortedLastIndex" { - declare module.exports: $PropertyType<$Exports<"lodash">, "sortedLastIndex">; -} - -declare module "lodash/sortedLastIndexBy" { - declare module.exports: $PropertyType< - $Exports<"lodash">, - "sortedLastIndexBy" - >; -} - -declare module "lodash/sortedLastIndexOf" { - declare module.exports: $PropertyType< - $Exports<"lodash">, - "sortedLastIndexOf" - >; -} - -declare module "lodash/sortedUniq" { - declare module.exports: $PropertyType<$Exports<"lodash">, "sortedUniq">; -} - -declare module "lodash/sortedUniqBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "sortedUniqBy">; -} - -declare module "lodash/tail" { - declare module.exports: $PropertyType<$Exports<"lodash">, "tail">; -} - -declare module "lodash/take" { - declare module.exports: $PropertyType<$Exports<"lodash">, "take">; -} - -declare module "lodash/takeRight" { - declare module.exports: $PropertyType<$Exports<"lodash">, "takeRight">; -} - -declare module "lodash/takeRightWhile" { - declare module.exports: $PropertyType<$Exports<"lodash">, "takeRightWhile">; -} - -declare module "lodash/takeWhile" { - declare module.exports: $PropertyType<$Exports<"lodash">, "takeWhile">; -} - -declare module "lodash/union" { - declare module.exports: $PropertyType<$Exports<"lodash">, "union">; -} - -declare module "lodash/unionBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "unionBy">; -} - -declare module "lodash/unionWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "unionWith">; -} - -declare module "lodash/uniq" { - declare module.exports: $PropertyType<$Exports<"lodash">, "uniq">; -} - -declare module "lodash/uniqBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "uniqBy">; -} - -declare module "lodash/uniqWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "uniqWith">; -} - -declare module "lodash/unzip" { - declare module.exports: $PropertyType<$Exports<"lodash">, "unzip">; -} - -declare module "lodash/unzipWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "unzipWith">; -} - -declare module "lodash/without" { - declare module.exports: $PropertyType<$Exports<"lodash">, "without">; -} - -declare module "lodash/xor" { - declare module.exports: $PropertyType<$Exports<"lodash">, "xor">; -} - -declare module "lodash/xorBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "xorBy">; -} - -declare module "lodash/xorWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "xorWith">; -} - -declare module "lodash/zip" { - declare module.exports: $PropertyType<$Exports<"lodash">, "zip">; -} - -declare module "lodash/zipObject" { - declare module.exports: $PropertyType<$Exports<"lodash">, "zipObject">; -} - -declare module "lodash/zipObjectDeep" { - declare module.exports: $PropertyType<$Exports<"lodash">, "zipObjectDeep">; -} - -declare module "lodash/zipWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "zipWith">; -} - -declare module "lodash/countBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "countBy">; -} - -declare module "lodash/each" { - declare module.exports: $PropertyType<$Exports<"lodash">, "each">; -} - -declare module "lodash/eachRight" { - declare module.exports: $PropertyType<$Exports<"lodash">, "eachRight">; -} - -declare module "lodash/every" { - declare module.exports: $PropertyType<$Exports<"lodash">, "every">; -} - -declare module "lodash/filter" { - declare module.exports: $PropertyType<$Exports<"lodash">, "filter">; -} - -declare module "lodash/find" { - declare module.exports: $PropertyType<$Exports<"lodash">, "find">; -} - -declare module "lodash/findLast" { - declare module.exports: $PropertyType<$Exports<"lodash">, "findLast">; -} - -declare module "lodash/flatMap" { - declare module.exports: $PropertyType<$Exports<"lodash">, "flatMap">; -} - -declare module "lodash/flatMapDeep" { - declare module.exports: $PropertyType<$Exports<"lodash">, "flatMapDeep">; -} - -declare module "lodash/flatMapDepth" { - declare module.exports: $PropertyType<$Exports<"lodash">, "flatMapDepth">; -} - -declare module "lodash/forEach" { - declare module.exports: $PropertyType<$Exports<"lodash">, "forEach">; -} - -declare module "lodash/forEachRight" { - declare module.exports: $PropertyType<$Exports<"lodash">, "forEachRight">; -} - -declare module "lodash/groupBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "groupBy">; -} - -declare module "lodash/includes" { - declare module.exports: $PropertyType<$Exports<"lodash">, "includes">; -} - -declare module "lodash/invokeMap" { - declare module.exports: $PropertyType<$Exports<"lodash">, "invokeMap">; -} - -declare module "lodash/keyBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "keyBy">; -} - -declare module "lodash/map" { - declare module.exports: $PropertyType<$Exports<"lodash">, "map">; -} - -declare module "lodash/orderBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "orderBy">; -} - -declare module "lodash/partition" { - declare module.exports: $PropertyType<$Exports<"lodash">, "partition">; -} - -declare module "lodash/reduce" { - declare module.exports: $PropertyType<$Exports<"lodash">, "reduce">; -} - -declare module "lodash/reduceRight" { - declare module.exports: $PropertyType<$Exports<"lodash">, "reduceRight">; -} - -declare module "lodash/reject" { - declare module.exports: $PropertyType<$Exports<"lodash">, "reject">; -} - -declare module "lodash/sample" { - declare module.exports: $PropertyType<$Exports<"lodash">, "sample">; -} - -declare module "lodash/sampleSize" { - declare module.exports: $PropertyType<$Exports<"lodash">, "sampleSize">; -} - -declare module "lodash/shuffle" { - declare module.exports: $PropertyType<$Exports<"lodash">, "shuffle">; -} - -declare module "lodash/size" { - declare module.exports: $PropertyType<$Exports<"lodash">, "size">; -} - -declare module "lodash/some" { - declare module.exports: $PropertyType<$Exports<"lodash">, "some">; -} - -declare module "lodash/sortBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "sortBy">; -} - -declare module "lodash/now" { - declare module.exports: $PropertyType<$Exports<"lodash">, "now">; -} - -declare module "lodash/after" { - declare module.exports: $PropertyType<$Exports<"lodash">, "after">; -} - -declare module "lodash/ary" { - declare module.exports: $PropertyType<$Exports<"lodash">, "ary">; -} - -declare module "lodash/before" { - declare module.exports: $PropertyType<$Exports<"lodash">, "before">; -} - -declare module "lodash/bind" { - declare module.exports: $PropertyType<$Exports<"lodash">, "bind">; -} - -declare module "lodash/bindKey" { - declare module.exports: $PropertyType<$Exports<"lodash">, "bindKey">; -} - -declare module "lodash/curry" { - declare module.exports: $PropertyType<$Exports<"lodash">, "curry">; -} - -declare module "lodash/curryRight" { - declare module.exports: $PropertyType<$Exports<"lodash">, "curryRight">; -} - -declare module "lodash/debounce" { - declare module.exports: $PropertyType<$Exports<"lodash">, "debounce">; -} - -declare module "lodash/defer" { - declare module.exports: $PropertyType<$Exports<"lodash">, "defer">; -} - -declare module "lodash/delay" { - declare module.exports: $PropertyType<$Exports<"lodash">, "delay">; -} - -declare module "lodash/flip" { - declare module.exports: $PropertyType<$Exports<"lodash">, "flip">; -} - -declare module "lodash/memoize" { - declare module.exports: $PropertyType<$Exports<"lodash">, "memoize">; -} - -declare module "lodash/negate" { - declare module.exports: $PropertyType<$Exports<"lodash">, "negate">; -} - -declare module "lodash/once" { - declare module.exports: $PropertyType<$Exports<"lodash">, "once">; -} - -declare module "lodash/overArgs" { - declare module.exports: $PropertyType<$Exports<"lodash">, "overArgs">; -} - -declare module "lodash/partial" { - declare module.exports: $PropertyType<$Exports<"lodash">, "partial">; -} - -declare module "lodash/partialRight" { - declare module.exports: $PropertyType<$Exports<"lodash">, "partialRight">; -} - -declare module "lodash/rearg" { - declare module.exports: $PropertyType<$Exports<"lodash">, "rearg">; -} - -declare module "lodash/rest" { - declare module.exports: $PropertyType<$Exports<"lodash">, "rest">; -} - -declare module "lodash/spread" { - declare module.exports: $PropertyType<$Exports<"lodash">, "spread">; -} - -declare module "lodash/throttle" { - declare module.exports: $PropertyType<$Exports<"lodash">, "throttle">; -} - -declare module "lodash/unary" { - declare module.exports: $PropertyType<$Exports<"lodash">, "unary">; -} - -declare module "lodash/wrap" { - declare module.exports: $PropertyType<$Exports<"lodash">, "wrap">; -} - -declare module "lodash/castArray" { - declare module.exports: $PropertyType<$Exports<"lodash">, "castArray">; -} - -declare module "lodash/clone" { - declare module.exports: $PropertyType<$Exports<"lodash">, "clone">; -} - -declare module "lodash/cloneDeep" { - declare module.exports: $PropertyType<$Exports<"lodash">, "cloneDeep">; -} - -declare module "lodash/cloneDeepWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "cloneDeepWith">; -} - -declare module "lodash/cloneWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "cloneWith">; -} - -declare module "lodash/conformsTo" { - declare module.exports: $PropertyType<$Exports<"lodash">, "conformsTo">; -} - -declare module "lodash/eq" { - declare module.exports: $PropertyType<$Exports<"lodash">, "eq">; -} - -declare module "lodash/gt" { - declare module.exports: $PropertyType<$Exports<"lodash">, "gt">; -} - -declare module "lodash/gte" { - declare module.exports: $PropertyType<$Exports<"lodash">, "gte">; -} - -declare module "lodash/isArguments" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isArguments">; -} - -declare module "lodash/isArray" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isArray">; -} - -declare module "lodash/isArrayBuffer" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isArrayBuffer">; -} - -declare module "lodash/isArrayLike" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isArrayLike">; -} - -declare module "lodash/isArrayLikeObject" { - declare module.exports: $PropertyType< - $Exports<"lodash">, - "isArrayLikeObject" - >; -} - -declare module "lodash/isBoolean" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isBoolean">; -} - -declare module "lodash/isBuffer" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isBuffer">; -} - -declare module "lodash/isDate" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isDate">; -} - -declare module "lodash/isElement" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isElement">; -} - -declare module "lodash/isEmpty" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isEmpty">; -} - -declare module "lodash/isEqual" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isEqual">; -} - -declare module "lodash/isEqualWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isEqualWith">; -} - -declare module "lodash/isError" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isError">; -} - -declare module "lodash/isFinite" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isFinite">; -} - -declare module "lodash/isFunction" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isFunction">; -} - -declare module "lodash/isInteger" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isInteger">; -} - -declare module "lodash/isLength" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isLength">; -} - -declare module "lodash/isMap" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isMap">; -} - -declare module "lodash/isMatch" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isMatch">; -} - -declare module "lodash/isMatchWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isMatchWith">; -} - -declare module "lodash/isNaN" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isNaN">; -} - -declare module "lodash/isNative" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isNative">; -} - -declare module "lodash/isNil" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isNil">; -} - -declare module "lodash/isNull" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isNull">; -} - -declare module "lodash/isNumber" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isNumber">; -} - -declare module "lodash/isObject" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isObject">; -} - -declare module "lodash/isObjectLike" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isObjectLike">; -} - -declare module "lodash/isPlainObject" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isPlainObject">; -} - -declare module "lodash/isRegExp" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isRegExp">; -} - -declare module "lodash/isSafeInteger" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isSafeInteger">; -} - -declare module "lodash/isSet" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isSet">; -} - -declare module "lodash/isString" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isString">; -} - -declare module "lodash/isSymbol" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isSymbol">; -} - -declare module "lodash/isTypedArray" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isTypedArray">; -} - -declare module "lodash/isUndefined" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isUndefined">; -} - -declare module "lodash/isWeakMap" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isWeakMap">; -} - -declare module "lodash/isWeakSet" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isWeakSet">; -} - -declare module "lodash/lt" { - declare module.exports: $PropertyType<$Exports<"lodash">, "lt">; -} - -declare module "lodash/lte" { - declare module.exports: $PropertyType<$Exports<"lodash">, "lte">; -} - -declare module "lodash/toArray" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toArray">; -} - -declare module "lodash/toFinite" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toFinite">; -} - -declare module "lodash/toInteger" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toInteger">; -} - -declare module "lodash/toLength" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toLength">; -} - -declare module "lodash/toNumber" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toNumber">; -} - -declare module "lodash/toPlainObject" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toPlainObject">; -} - -declare module "lodash/toSafeInteger" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toSafeInteger">; -} - -declare module "lodash/toString" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toString">; -} - -declare module "lodash/add" { - declare module.exports: $PropertyType<$Exports<"lodash">, "add">; -} - -declare module "lodash/ceil" { - declare module.exports: $PropertyType<$Exports<"lodash">, "ceil">; -} - -declare module "lodash/divide" { - declare module.exports: $PropertyType<$Exports<"lodash">, "divide">; -} - -declare module "lodash/floor" { - declare module.exports: $PropertyType<$Exports<"lodash">, "floor">; -} - -declare module "lodash/max" { - declare module.exports: $PropertyType<$Exports<"lodash">, "max">; -} - -declare module "lodash/maxBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "maxBy">; -} - -declare module "lodash/mean" { - declare module.exports: $PropertyType<$Exports<"lodash">, "mean">; -} - -declare module "lodash/meanBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "meanBy">; -} - -declare module "lodash/min" { - declare module.exports: $PropertyType<$Exports<"lodash">, "min">; -} - -declare module "lodash/minBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "minBy">; -} - -declare module "lodash/multiply" { - declare module.exports: $PropertyType<$Exports<"lodash">, "multiply">; -} - -declare module "lodash/round" { - declare module.exports: $PropertyType<$Exports<"lodash">, "round">; -} - -declare module "lodash/subtract" { - declare module.exports: $PropertyType<$Exports<"lodash">, "subtract">; -} - -declare module "lodash/sum" { - declare module.exports: $PropertyType<$Exports<"lodash">, "sum">; -} - -declare module "lodash/sumBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "sumBy">; -} - -declare module "lodash/clamp" { - declare module.exports: $PropertyType<$Exports<"lodash">, "clamp">; -} - -declare module "lodash/inRange" { - declare module.exports: $PropertyType<$Exports<"lodash">, "inRange">; -} - -declare module "lodash/random" { - declare module.exports: $PropertyType<$Exports<"lodash">, "random">; -} - -declare module "lodash/assign" { - declare module.exports: $PropertyType<$Exports<"lodash">, "assign">; -} - -declare module "lodash/assignIn" { - declare module.exports: $PropertyType<$Exports<"lodash">, "assignIn">; -} - -declare module "lodash/assignInWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "assignInWith">; -} - -declare module "lodash/assignWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "assignWith">; -} - -declare module "lodash/at" { - declare module.exports: $PropertyType<$Exports<"lodash">, "at">; -} - -declare module "lodash/create" { - declare module.exports: $PropertyType<$Exports<"lodash">, "create">; -} - -declare module "lodash/defaults" { - declare module.exports: $PropertyType<$Exports<"lodash">, "defaults">; -} - -declare module "lodash/defaultsDeep" { - declare module.exports: $PropertyType<$Exports<"lodash">, "defaultsDeep">; -} - -declare module "lodash/entries" { - declare module.exports: $PropertyType<$Exports<"lodash">, "entries">; -} - -declare module "lodash/entriesIn" { - declare module.exports: $PropertyType<$Exports<"lodash">, "entriesIn">; -} - -declare module "lodash/extend" { - declare module.exports: $PropertyType<$Exports<"lodash">, "extend">; -} - -declare module "lodash/extendWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "extendWith">; -} - -declare module "lodash/findKey" { - declare module.exports: $PropertyType<$Exports<"lodash">, "findKey">; -} - -declare module "lodash/findLastKey" { - declare module.exports: $PropertyType<$Exports<"lodash">, "findLastKey">; -} - -declare module "lodash/forIn" { - declare module.exports: $PropertyType<$Exports<"lodash">, "forIn">; -} - -declare module "lodash/forInRight" { - declare module.exports: $PropertyType<$Exports<"lodash">, "forInRight">; -} - -declare module "lodash/forOwn" { - declare module.exports: $PropertyType<$Exports<"lodash">, "forOwn">; -} - -declare module "lodash/forOwnRight" { - declare module.exports: $PropertyType<$Exports<"lodash">, "forOwnRight">; -} - -declare module "lodash/functions" { - declare module.exports: $PropertyType<$Exports<"lodash">, "functions">; -} - -declare module "lodash/functionsIn" { - declare module.exports: $PropertyType<$Exports<"lodash">, "functionsIn">; -} - -declare module "lodash/get" { - declare module.exports: $PropertyType<$Exports<"lodash">, "get">; -} - -declare module "lodash/has" { - declare module.exports: $PropertyType<$Exports<"lodash">, "has">; -} - -declare module "lodash/hasIn" { - declare module.exports: $PropertyType<$Exports<"lodash">, "hasIn">; -} - -declare module "lodash/invert" { - declare module.exports: $PropertyType<$Exports<"lodash">, "invert">; -} - -declare module "lodash/invertBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "invertBy">; -} - -declare module "lodash/invoke" { - declare module.exports: $PropertyType<$Exports<"lodash">, "invoke">; -} - -declare module "lodash/keys" { - declare module.exports: $PropertyType<$Exports<"lodash">, "keys">; -} - -declare module "lodash/keysIn" { - declare module.exports: $PropertyType<$Exports<"lodash">, "keysIn">; -} - -declare module "lodash/mapKeys" { - declare module.exports: $PropertyType<$Exports<"lodash">, "mapKeys">; -} - -declare module "lodash/mapValues" { - declare module.exports: $PropertyType<$Exports<"lodash">, "mapValues">; -} - -declare module "lodash/merge" { - declare module.exports: $PropertyType<$Exports<"lodash">, "merge">; -} - -declare module "lodash/mergeWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "mergeWith">; -} - -declare module "lodash/omit" { - declare module.exports: $PropertyType<$Exports<"lodash">, "omit">; -} - -declare module "lodash/omitBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "omitBy">; -} - -declare module "lodash/pick" { - declare module.exports: $PropertyType<$Exports<"lodash">, "pick">; -} - -declare module "lodash/pickBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "pickBy">; -} - -declare module "lodash/result" { - declare module.exports: $PropertyType<$Exports<"lodash">, "result">; -} - -declare module "lodash/set" { - declare module.exports: $PropertyType<$Exports<"lodash">, "set">; -} - -declare module "lodash/setWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "setWith">; -} - -declare module "lodash/toPairs" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toPairs">; -} - -declare module "lodash/toPairsIn" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toPairsIn">; -} - -declare module "lodash/transform" { - declare module.exports: $PropertyType<$Exports<"lodash">, "transform">; -} - -declare module "lodash/unset" { - declare module.exports: $PropertyType<$Exports<"lodash">, "unset">; -} - -declare module "lodash/update" { - declare module.exports: $PropertyType<$Exports<"lodash">, "update">; -} - -declare module "lodash/updateWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "updateWith">; -} - -declare module "lodash/values" { - declare module.exports: $PropertyType<$Exports<"lodash">, "values">; -} - -declare module "lodash/valuesIn" { - declare module.exports: $PropertyType<$Exports<"lodash">, "valuesIn">; -} - -declare module "lodash/chain" { - declare module.exports: $PropertyType<$Exports<"lodash">, "chain">; -} - -declare module "lodash/tap" { - declare module.exports: $PropertyType<$Exports<"lodash">, "tap">; -} - -declare module "lodash/thru" { - declare module.exports: $PropertyType<$Exports<"lodash">, "thru">; -} - -declare module "lodash/camelCase" { - declare module.exports: $PropertyType<$Exports<"lodash">, "camelCase">; -} - -declare module "lodash/capitalize" { - declare module.exports: $PropertyType<$Exports<"lodash">, "capitalize">; -} - -declare module "lodash/deburr" { - declare module.exports: $PropertyType<$Exports<"lodash">, "deburr">; -} - -declare module "lodash/endsWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "endsWith">; -} - -declare module "lodash/escape" { - declare module.exports: $PropertyType<$Exports<"lodash">, "escape">; -} - -declare module "lodash/escapeRegExp" { - declare module.exports: $PropertyType<$Exports<"lodash">, "escapeRegExp">; -} - -declare module "lodash/kebabCase" { - declare module.exports: $PropertyType<$Exports<"lodash">, "kebabCase">; -} - -declare module "lodash/lowerCase" { - declare module.exports: $PropertyType<$Exports<"lodash">, "lowerCase">; -} - -declare module "lodash/lowerFirst" { - declare module.exports: $PropertyType<$Exports<"lodash">, "lowerFirst">; -} - -declare module "lodash/pad" { - declare module.exports: $PropertyType<$Exports<"lodash">, "pad">; -} - -declare module "lodash/padEnd" { - declare module.exports: $PropertyType<$Exports<"lodash">, "padEnd">; -} - -declare module "lodash/padStart" { - declare module.exports: $PropertyType<$Exports<"lodash">, "padStart">; -} - -declare module "lodash/parseInt" { - declare module.exports: $PropertyType<$Exports<"lodash">, "parseInt">; -} - -declare module "lodash/repeat" { - declare module.exports: $PropertyType<$Exports<"lodash">, "repeat">; -} - -declare module "lodash/replace" { - declare module.exports: $PropertyType<$Exports<"lodash">, "replace">; -} - -declare module "lodash/snakeCase" { - declare module.exports: $PropertyType<$Exports<"lodash">, "snakeCase">; -} - -declare module "lodash/split" { - declare module.exports: $PropertyType<$Exports<"lodash">, "split">; -} - -declare module "lodash/startCase" { - declare module.exports: $PropertyType<$Exports<"lodash">, "startCase">; -} - -declare module "lodash/startsWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "startsWith">; -} - -declare module "lodash/template" { - declare module.exports: $PropertyType<$Exports<"lodash">, "template">; -} - -declare module "lodash/toLower" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toLower">; -} - -declare module "lodash/toUpper" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toUpper">; -} - -declare module "lodash/trim" { - declare module.exports: $PropertyType<$Exports<"lodash">, "trim">; -} - -declare module "lodash/trimEnd" { - declare module.exports: $PropertyType<$Exports<"lodash">, "trimEnd">; -} - -declare module "lodash/trimStart" { - declare module.exports: $PropertyType<$Exports<"lodash">, "trimStart">; -} - -declare module "lodash/truncate" { - declare module.exports: $PropertyType<$Exports<"lodash">, "truncate">; -} - -declare module "lodash/unescape" { - declare module.exports: $PropertyType<$Exports<"lodash">, "unescape">; -} - -declare module "lodash/upperCase" { - declare module.exports: $PropertyType<$Exports<"lodash">, "upperCase">; -} - -declare module "lodash/upperFirst" { - declare module.exports: $PropertyType<$Exports<"lodash">, "upperFirst">; -} - -declare module "lodash/words" { - declare module.exports: $PropertyType<$Exports<"lodash">, "words">; -} - -declare module "lodash/attempt" { - declare module.exports: $PropertyType<$Exports<"lodash">, "attempt">; -} - -declare module "lodash/bindAll" { - declare module.exports: $PropertyType<$Exports<"lodash">, "bindAll">; -} - -declare module "lodash/cond" { - declare module.exports: $PropertyType<$Exports<"lodash">, "cond">; -} - -declare module "lodash/conforms" { - declare module.exports: $PropertyType<$Exports<"lodash">, "conforms">; -} - -declare module "lodash/constant" { - declare module.exports: $PropertyType<$Exports<"lodash">, "constant">; -} - -declare module "lodash/defaultTo" { - declare module.exports: $PropertyType<$Exports<"lodash">, "defaultTo">; -} - -declare module "lodash/flow" { - declare module.exports: $PropertyType<$Exports<"lodash">, "flow">; -} - -declare module "lodash/flowRight" { - declare module.exports: $PropertyType<$Exports<"lodash">, "flowRight">; -} - -declare module "lodash/identity" { - declare module.exports: $PropertyType<$Exports<"lodash">, "identity">; -} - -declare module "lodash/iteratee" { - declare module.exports: $PropertyType<$Exports<"lodash">, "iteratee">; -} - -declare module "lodash/matches" { - declare module.exports: $PropertyType<$Exports<"lodash">, "matches">; -} - -declare module "lodash/matchesProperty" { - declare module.exports: $PropertyType<$Exports<"lodash">, "matchesProperty">; -} - -declare module "lodash/method" { - declare module.exports: $PropertyType<$Exports<"lodash">, "method">; -} - -declare module "lodash/methodOf" { - declare module.exports: $PropertyType<$Exports<"lodash">, "methodOf">; -} - -declare module "lodash/mixin" { - declare module.exports: $PropertyType<$Exports<"lodash">, "mixin">; -} - -declare module "lodash/noConflict" { - declare module.exports: $PropertyType<$Exports<"lodash">, "noConflict">; -} - -declare module "lodash/noop" { - declare module.exports: $PropertyType<$Exports<"lodash">, "noop">; -} - -declare module "lodash/nthArg" { - declare module.exports: $PropertyType<$Exports<"lodash">, "nthArg">; -} - -declare module "lodash/over" { - declare module.exports: $PropertyType<$Exports<"lodash">, "over">; -} - -declare module "lodash/overEvery" { - declare module.exports: $PropertyType<$Exports<"lodash">, "overEvery">; -} - -declare module "lodash/overSome" { - declare module.exports: $PropertyType<$Exports<"lodash">, "overSome">; -} - -declare module "lodash/property" { - declare module.exports: $PropertyType<$Exports<"lodash">, "property">; -} - -declare module "lodash/propertyOf" { - declare module.exports: $PropertyType<$Exports<"lodash">, "propertyOf">; -} - -declare module "lodash/range" { - declare module.exports: $PropertyType<$Exports<"lodash">, "range">; -} - -declare module "lodash/rangeRight" { - declare module.exports: $PropertyType<$Exports<"lodash">, "rangeRight">; -} - -declare module "lodash/runInContext" { - declare module.exports: $PropertyType<$Exports<"lodash">, "runInContext">; -} - -declare module "lodash/stubArray" { - declare module.exports: $PropertyType<$Exports<"lodash">, "stubArray">; -} - -declare module "lodash/stubFalse" { - declare module.exports: $PropertyType<$Exports<"lodash">, "stubFalse">; -} - -declare module "lodash/stubObject" { - declare module.exports: $PropertyType<$Exports<"lodash">, "stubObject">; -} - -declare module "lodash/stubString" { - declare module.exports: $PropertyType<$Exports<"lodash">, "stubString">; -} - -declare module "lodash/stubTrue" { - declare module.exports: $PropertyType<$Exports<"lodash">, "stubTrue">; -} - -declare module "lodash/times" { - declare module.exports: $PropertyType<$Exports<"lodash">, "times">; -} - -declare module "lodash/toPath" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toPath">; -} - -declare module "lodash/uniqueId" { - declare module.exports: $PropertyType<$Exports<"lodash">, "uniqueId">; -} - -declare module "lodash/fp/chunk" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "chunk">; -} - -declare module "lodash/fp/compact" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "compact">; -} - -declare module "lodash/fp/concat" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "concat">; -} - -declare module "lodash/fp/difference" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "difference">; -} - -declare module "lodash/fp/differenceBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "differenceBy">; -} - -declare module "lodash/fp/differenceWith" { - declare module.exports: $PropertyType< - $Exports<"lodash/fp">, - "differenceWith" - >; -} - -declare module "lodash/fp/drop" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "drop">; -} - -declare module "lodash/fp/dropLast" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "dropLast">; -} - -declare module "lodash/fp/dropRight" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "dropRight">; -} - -declare module "lodash/fp/dropRightWhile" { - declare module.exports: $PropertyType< - $Exports<"lodash/fp">, - "dropRightWhile" - >; -} - -declare module "lodash/fp/dropWhile" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "dropWhile">; -} - -declare module "lodash/fp/dropLastWhile" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "dropLastWhile">; -} - -declare module "lodash/fp/fill" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "fill">; -} - -declare module "lodash/fp/findIndex" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findIndex">; -} - -declare module "lodash/fp/findIndexFrom" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findIndexFrom">; -} - -declare module "lodash/fp/findLastIndex" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findLastIndex">; -} - -declare module "lodash/fp/findLastIndexFrom" { - declare module.exports: $PropertyType< - $Exports<"lodash/fp">, - "findLastIndexFrom" - >; -} - -declare module "lodash/fp/first" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "first">; -} - -declare module "lodash/fp/flatten" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flatten">; -} - -declare module "lodash/fp/unnest" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unnest">; -} - -declare module "lodash/fp/flattenDeep" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flattenDeep">; -} - -declare module "lodash/fp/flattenDepth" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flattenDepth">; -} - -declare module "lodash/fp/fromPairs" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "fromPairs">; -} - -declare module "lodash/fp/head" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "head">; -} - -declare module "lodash/fp/indexOf" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "indexOf">; -} - -declare module "lodash/fp/indexOfFrom" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "indexOfFrom">; -} - -declare module "lodash/fp/initial" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "initial">; -} - -declare module "lodash/fp/init" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "init">; -} - -declare module "lodash/fp/intersection" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "intersection">; -} - -declare module "lodash/fp/intersectionBy" { - declare module.exports: $PropertyType< - $Exports<"lodash/fp">, - "intersectionBy" - >; -} - -declare module "lodash/fp/intersectionWith" { - declare module.exports: $PropertyType< - $Exports<"lodash/fp">, - "intersectionWith" - >; -} - -declare module "lodash/fp/join" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "join">; -} - -declare module "lodash/fp/last" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "last">; -} - -declare module "lodash/fp/lastIndexOf" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "lastIndexOf">; -} - -declare module "lodash/fp/lastIndexOfFrom" { - declare module.exports: $PropertyType< - $Exports<"lodash/fp">, - "lastIndexOfFrom" - >; -} - -declare module "lodash/fp/nth" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "nth">; -} - -declare module "lodash/fp/pull" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pull">; -} - -declare module "lodash/fp/pullAll" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pullAll">; -} - -declare module "lodash/fp/pullAllBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pullAllBy">; -} - -declare module "lodash/fp/pullAllWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pullAllWith">; -} - -declare module "lodash/fp/pullAt" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pullAt">; -} - -declare module "lodash/fp/remove" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "remove">; -} - -declare module "lodash/fp/reverse" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "reverse">; -} - -declare module "lodash/fp/slice" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "slice">; -} - -declare module "lodash/fp/sortedIndex" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sortedIndex">; -} - -declare module "lodash/fp/sortedIndexBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sortedIndexBy">; -} - -declare module "lodash/fp/sortedIndexOf" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sortedIndexOf">; -} - -declare module "lodash/fp/sortedLastIndex" { - declare module.exports: $PropertyType< - $Exports<"lodash/fp">, - "sortedLastIndex" - >; -} - -declare module "lodash/fp/sortedLastIndexBy" { - declare module.exports: $PropertyType< - $Exports<"lodash/fp">, - "sortedLastIndexBy" - >; -} - -declare module "lodash/fp/sortedLastIndexOf" { - declare module.exports: $PropertyType< - $Exports<"lodash/fp">, - "sortedLastIndexOf" - >; -} - -declare module "lodash/fp/sortedUniq" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sortedUniq">; -} - -declare module "lodash/fp/sortedUniqBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sortedUniqBy">; -} - -declare module "lodash/fp/tail" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "tail">; -} - -declare module "lodash/fp/take" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "take">; -} - -declare module "lodash/fp/takeRight" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "takeRight">; -} - -declare module "lodash/fp/takeLast" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "takeLast">; -} - -declare module "lodash/fp/takeRightWhile" { - declare module.exports: $PropertyType< - $Exports<"lodash/fp">, - "takeRightWhile" - >; -} - -declare module "lodash/fp/takeLastWhile" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "takeLastWhile">; -} - -declare module "lodash/fp/takeWhile" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "takeWhile">; -} - -declare module "lodash/fp/union" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "union">; -} - -declare module "lodash/fp/unionBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unionBy">; -} - -declare module "lodash/fp/unionWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unionWith">; -} - -declare module "lodash/fp/uniq" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "uniq">; -} - -declare module "lodash/fp/uniqBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "uniqBy">; -} - -declare module "lodash/fp/uniqWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "uniqWith">; -} - -declare module "lodash/fp/unzip" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unzip">; -} - -declare module "lodash/fp/unzipWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unzipWith">; -} - -declare module "lodash/fp/without" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "without">; -} - -declare module "lodash/fp/xor" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "xor">; -} - -declare module "lodash/fp/symmetricDifference" { - declare module.exports: $PropertyType< - $Exports<"lodash/fp">, - "symmetricDifference" - >; -} - -declare module "lodash/fp/xorBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "xorBy">; -} - -declare module "lodash/fp/symmetricDifferenceBy" { - declare module.exports: $PropertyType< - $Exports<"lodash/fp">, - "symmetricDifferenceBy" - >; -} - -declare module "lodash/fp/xorWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "xorWith">; -} - -declare module "lodash/fp/symmetricDifferenceWith" { - declare module.exports: $PropertyType< - $Exports<"lodash/fp">, - "symmetricDifferenceWith" - >; -} - -declare module "lodash/fp/zip" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "zip">; -} - -declare module "lodash/fp/zipAll" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "zipAll">; -} - -declare module "lodash/fp/zipObject" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "zipObject">; -} - -declare module "lodash/fp/zipObj" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "zipObj">; -} - -declare module "lodash/fp/zipObjectDeep" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "zipObjectDeep">; -} - -declare module "lodash/fp/zipWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "zipWith">; -} - -declare module "lodash/fp/countBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "countBy">; -} - -declare module "lodash/fp/each" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "each">; -} - -declare module "lodash/fp/eachRight" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "eachRight">; -} - -declare module "lodash/fp/every" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "every">; -} - -declare module "lodash/fp/all" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "all">; -} - -declare module "lodash/fp/filter" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "filter">; -} - -declare module "lodash/fp/find" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "find">; -} - -declare module "lodash/fp/findFrom" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findFrom">; -} - -declare module "lodash/fp/findLast" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findLast">; -} - -declare module "lodash/fp/findLastFrom" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findLastFrom">; -} - -declare module "lodash/fp/flatMap" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flatMap">; -} - -declare module "lodash/fp/flatMapDeep" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flatMapDeep">; -} - -declare module "lodash/fp/flatMapDepth" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flatMapDepth">; -} - -declare module "lodash/fp/forEach" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "forEach">; -} - -declare module "lodash/fp/forEachRight" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "forEachRight">; -} - -declare module "lodash/fp/groupBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "groupBy">; -} - -declare module "lodash/fp/includes" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "includes">; -} - -declare module "lodash/fp/contains" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "contains">; -} - -declare module "lodash/fp/includesFrom" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "includesFrom">; -} - -declare module "lodash/fp/invokeMap" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "invokeMap">; -} - -declare module "lodash/fp/invokeArgsMap" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "invokeArgsMap">; -} - -declare module "lodash/fp/keyBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "keyBy">; -} - -declare module "lodash/fp/indexBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "indexBy">; -} - -declare module "lodash/fp/map" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "map">; -} - -declare module "lodash/fp/pluck" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pluck">; -} - -declare module "lodash/fp/orderBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "orderBy">; -} - -declare module "lodash/fp/partition" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "partition">; -} - -declare module "lodash/fp/reduce" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "reduce">; -} - -declare module "lodash/fp/reduceRight" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "reduceRight">; -} - -declare module "lodash/fp/reject" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "reject">; -} - -declare module "lodash/fp/sample" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sample">; -} - -declare module "lodash/fp/sampleSize" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sampleSize">; -} - -declare module "lodash/fp/shuffle" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "shuffle">; -} - -declare module "lodash/fp/size" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "size">; -} - -declare module "lodash/fp/some" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "some">; -} - -declare module "lodash/fp/any" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "any">; -} - -declare module "lodash/fp/sortBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sortBy">; -} - -declare module "lodash/fp/now" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "now">; -} - -declare module "lodash/fp/after" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "after">; -} - -declare module "lodash/fp/ary" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "ary">; -} - -declare module "lodash/fp/nAry" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "nAry">; -} - -declare module "lodash/fp/before" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "before">; -} - -declare module "lodash/fp/bind" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "bind">; -} - -declare module "lodash/fp/bindKey" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "bindKey">; -} - -declare module "lodash/fp/curry" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "curry">; -} - -declare module "lodash/fp/curryN" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "curryN">; -} - -declare module "lodash/fp/curryRight" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "curryRight">; -} - -declare module "lodash/fp/curryRightN" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "curryRightN">; -} - -declare module "lodash/fp/debounce" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "debounce">; -} - -declare module "lodash/fp/defer" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "defer">; -} - -declare module "lodash/fp/delay" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "delay">; -} - -declare module "lodash/fp/flip" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flip">; -} - -declare module "lodash/fp/memoize" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "memoize">; -} - -declare module "lodash/fp/negate" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "negate">; -} - -declare module "lodash/fp/complement" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "complement">; -} - -declare module "lodash/fp/once" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "once">; -} - -declare module "lodash/fp/overArgs" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "overArgs">; -} - -declare module "lodash/fp/useWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "useWith">; -} - -declare module "lodash/fp/partial" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "partial">; -} - -declare module "lodash/fp/partialRight" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "partialRight">; -} - -declare module "lodash/fp/rearg" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "rearg">; -} - -declare module "lodash/fp/rest" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "rest">; -} - -declare module "lodash/fp/unapply" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unapply">; -} - -declare module "lodash/fp/restFrom" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "restFrom">; -} - -declare module "lodash/fp/spread" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "spread">; -} - -declare module "lodash/fp/apply" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "apply">; -} - -declare module "lodash/fp/spreadFrom" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "spreadFrom">; -} - -declare module "lodash/fp/throttle" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "throttle">; -} - -declare module "lodash/fp/unary" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unary">; -} - -declare module "lodash/fp/wrap" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "wrap">; -} - -declare module "lodash/fp/castArray" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "castArray">; -} - -declare module "lodash/fp/clone" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "clone">; -} - -declare module "lodash/fp/cloneDeep" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "cloneDeep">; -} - -declare module "lodash/fp/cloneDeepWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "cloneDeepWith">; -} - -declare module "lodash/fp/cloneWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "cloneWith">; -} - -declare module "lodash/fp/conformsTo" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "conformsTo">; -} - -declare module "lodash/fp/where" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "where">; -} - -declare module "lodash/fp/conforms" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "conforms">; -} - -declare module "lodash/fp/eq" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "eq">; -} - -declare module "lodash/fp/identical" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "identical">; -} - -declare module "lodash/fp/gt" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "gt">; -} - -declare module "lodash/fp/gte" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "gte">; -} - -declare module "lodash/fp/isArguments" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isArguments">; -} - -declare module "lodash/fp/isArray" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isArray">; -} - -declare module "lodash/fp/isArrayBuffer" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isArrayBuffer">; -} - -declare module "lodash/fp/isArrayLike" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isArrayLike">; -} - -declare module "lodash/fp/isArrayLikeObject" { - declare module.exports: $PropertyType< - $Exports<"lodash/fp">, - "isArrayLikeObject" - >; -} - -declare module "lodash/fp/isBoolean" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isBoolean">; -} - -declare module "lodash/fp/isBuffer" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isBuffer">; -} - -declare module "lodash/fp/isDate" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isDate">; -} - -declare module "lodash/fp/isElement" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isElement">; -} - -declare module "lodash/fp/isEmpty" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isEmpty">; -} - -declare module "lodash/fp/isEqual" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isEqual">; -} - -declare module "lodash/fp/equals" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "equals">; -} - -declare module "lodash/fp/isEqualWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isEqualWith">; -} - -declare module "lodash/fp/isError" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isError">; -} - -declare module "lodash/fp/isFinite" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isFinite">; -} - -declare module "lodash/fp/isFunction" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isFunction">; -} - -declare module "lodash/fp/isInteger" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isInteger">; -} - -declare module "lodash/fp/isLength" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isLength">; -} - -declare module "lodash/fp/isMap" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isMap">; -} - -declare module "lodash/fp/isMatch" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isMatch">; -} - -declare module "lodash/fp/whereEq" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "whereEq">; -} - -declare module "lodash/fp/isMatchWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isMatchWith">; -} - -declare module "lodash/fp/isNaN" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isNaN">; -} - -declare module "lodash/fp/isNative" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isNative">; -} - -declare module "lodash/fp/isNil" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isNil">; -} - -declare module "lodash/fp/isNull" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isNull">; -} - -declare module "lodash/fp/isNumber" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isNumber">; -} - -declare module "lodash/fp/isObject" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isObject">; -} - -declare module "lodash/fp/isObjectLike" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isObjectLike">; -} - -declare module "lodash/fp/isPlainObject" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isPlainObject">; -} - -declare module "lodash/fp/isRegExp" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isRegExp">; -} - -declare module "lodash/fp/isSafeInteger" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isSafeInteger">; -} - -declare module "lodash/fp/isSet" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isSet">; -} - -declare module "lodash/fp/isString" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isString">; -} - -declare module "lodash/fp/isSymbol" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isSymbol">; -} - -declare module "lodash/fp/isTypedArray" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isTypedArray">; -} - -declare module "lodash/fp/isUndefined" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isUndefined">; -} - -declare module "lodash/fp/isWeakMap" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isWeakMap">; -} - -declare module "lodash/fp/isWeakSet" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isWeakSet">; -} - -declare module "lodash/fp/lt" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "lt">; -} - -declare module "lodash/fp/lte" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "lte">; -} - -declare module "lodash/fp/toArray" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toArray">; -} - -declare module "lodash/fp/toFinite" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toFinite">; -} - -declare module "lodash/fp/toInteger" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toInteger">; -} - -declare module "lodash/fp/toLength" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toLength">; -} - -declare module "lodash/fp/toNumber" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toNumber">; -} - -declare module "lodash/fp/toPlainObject" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toPlainObject">; -} - -declare module "lodash/fp/toSafeInteger" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toSafeInteger">; -} - -declare module "lodash/fp/toString" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toString">; -} - -declare module "lodash/fp/add" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "add">; -} - -declare module "lodash/fp/ceil" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "ceil">; -} - -declare module "lodash/fp/divide" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "divide">; -} - -declare module "lodash/fp/floor" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "floor">; -} - -declare module "lodash/fp/max" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "max">; -} - -declare module "lodash/fp/maxBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "maxBy">; -} - -declare module "lodash/fp/mean" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "mean">; -} - -declare module "lodash/fp/meanBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "meanBy">; -} - -declare module "lodash/fp/min" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "min">; -} - -declare module "lodash/fp/minBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "minBy">; -} - -declare module "lodash/fp/multiply" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "multiply">; -} - -declare module "lodash/fp/round" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "round">; -} - -declare module "lodash/fp/subtract" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "subtract">; -} - -declare module "lodash/fp/sum" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sum">; -} - -declare module "lodash/fp/sumBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sumBy">; -} - -declare module "lodash/fp/clamp" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "clamp">; -} - -declare module "lodash/fp/inRange" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "inRange">; -} - -declare module "lodash/fp/random" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "random">; -} - -declare module "lodash/fp/assign" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assign">; -} - -declare module "lodash/fp/assignAll" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assignAll">; -} - -declare module "lodash/fp/assignInAll" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assignInAll">; -} - -declare module "lodash/fp/extendAll" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "extendAll">; -} - -declare module "lodash/fp/assignIn" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assignIn">; -} - -declare module "lodash/fp/assignInWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assignInWith">; -} - -declare module "lodash/fp/assignWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assignWith">; -} - -declare module "lodash/fp/assignInAllWith" { - declare module.exports: $PropertyType< - $Exports<"lodash/fp">, - "assignInAllWith" - >; -} - -declare module "lodash/fp/extendAllWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "extendAllWith">; -} - -declare module "lodash/fp/assignAllWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assignAllWith">; -} - -declare module "lodash/fp/at" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "at">; -} - -declare module "lodash/fp/props" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "props">; -} - -declare module "lodash/fp/paths" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "paths">; -} - -declare module "lodash/fp/create" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "create">; -} - -declare module "lodash/fp/defaults" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "defaults">; -} - -declare module "lodash/fp/defaultsAll" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "defaultsAll">; -} - -declare module "lodash/fp/defaultsDeep" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "defaultsDeep">; -} - -declare module "lodash/fp/defaultsDeepAll" { - declare module.exports: $PropertyType< - $Exports<"lodash/fp">, - "defaultsDeepAll" - >; -} - -declare module "lodash/fp/entries" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "entries">; -} - -declare module "lodash/fp/entriesIn" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "entriesIn">; -} - -declare module "lodash/fp/extend" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "extend">; -} - -declare module "lodash/fp/extendWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "extendWith">; -} - -declare module "lodash/fp/findKey" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findKey">; -} - -declare module "lodash/fp/findLastKey" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findLastKey">; -} - -declare module "lodash/fp/forIn" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "forIn">; -} - -declare module "lodash/fp/forInRight" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "forInRight">; -} - -declare module "lodash/fp/forOwn" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "forOwn">; -} - -declare module "lodash/fp/forOwnRight" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "forOwnRight">; -} - -declare module "lodash/fp/functions" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "functions">; -} - -declare module "lodash/fp/functionsIn" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "functionsIn">; -} - -declare module "lodash/fp/get" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "get">; -} - -declare module "lodash/fp/prop" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "prop">; -} - -declare module "lodash/fp/path" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "path">; -} - -declare module "lodash/fp/getOr" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "getOr">; -} - -declare module "lodash/fp/propOr" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "propOr">; -} - -declare module "lodash/fp/pathOr" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pathOr">; -} - -declare module "lodash/fp/has" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "has">; -} - -declare module "lodash/fp/hasIn" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "hasIn">; -} - -declare module "lodash/fp/invert" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "invert">; -} - -declare module "lodash/fp/invertObj" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "invertObj">; -} - -declare module "lodash/fp/invertBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "invertBy">; -} - -declare module "lodash/fp/invoke" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "invoke">; -} - -declare module "lodash/fp/invokeArgs" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "invokeArgs">; -} - -declare module "lodash/fp/keys" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "keys">; -} - -declare module "lodash/fp/keysIn" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "keysIn">; -} - -declare module "lodash/fp/mapKeys" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "mapKeys">; -} - -declare module "lodash/fp/mapValues" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "mapValues">; -} - -declare module "lodash/fp/merge" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "merge">; -} - -declare module "lodash/fp/mergeAll" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "mergeAll">; -} - -declare module "lodash/fp/mergeWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "mergeWith">; -} - -declare module "lodash/fp/mergeAllWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "mergeAllWith">; -} - -declare module "lodash/fp/omit" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "omit">; -} - -declare module "lodash/fp/omitAll" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "omitAll">; -} - -declare module "lodash/fp/omitBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "omitBy">; -} - -declare module "lodash/fp/pick" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pick">; -} - -declare module "lodash/fp/pickAll" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pickAll">; -} - -declare module "lodash/fp/pickBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pickBy">; -} - -declare module "lodash/fp/result" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "result">; -} - -declare module "lodash/fp/set" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "set">; -} - -declare module "lodash/fp/assoc" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assoc">; -} - -declare module "lodash/fp/assocPath" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assocPath">; -} - -declare module "lodash/fp/setWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "setWith">; -} - -declare module "lodash/fp/toPairs" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toPairs">; -} - -declare module "lodash/fp/toPairsIn" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toPairsIn">; -} - -declare module "lodash/fp/transform" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "transform">; -} - -declare module "lodash/fp/unset" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unset">; -} - -declare module "lodash/fp/dissoc" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "dissoc">; -} - -declare module "lodash/fp/dissocPath" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "dissocPath">; -} - -declare module "lodash/fp/update" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "update">; -} - -declare module "lodash/fp/updateWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "updateWith">; -} - -declare module "lodash/fp/values" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "values">; -} - -declare module "lodash/fp/valuesIn" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "valuesIn">; -} - -declare module "lodash/fp/tap" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "tap">; -} - -declare module "lodash/fp/thru" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "thru">; -} - -declare module "lodash/fp/camelCase" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "camelCase">; -} - -declare module "lodash/fp/capitalize" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "capitalize">; -} - -declare module "lodash/fp/deburr" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "deburr">; -} - -declare module "lodash/fp/endsWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "endsWith">; -} - -declare module "lodash/fp/escape" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "escape">; -} - -declare module "lodash/fp/escapeRegExp" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "escapeRegExp">; -} - -declare module "lodash/fp/kebabCase" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "kebabCase">; -} - -declare module "lodash/fp/lowerCase" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "lowerCase">; -} - -declare module "lodash/fp/lowerFirst" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "lowerFirst">; -} - -declare module "lodash/fp/pad" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pad">; -} - -declare module "lodash/fp/padChars" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "padChars">; -} - -declare module "lodash/fp/padEnd" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "padEnd">; -} - -declare module "lodash/fp/padCharsEnd" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "padCharsEnd">; -} - -declare module "lodash/fp/padStart" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "padStart">; -} - -declare module "lodash/fp/padCharsStart" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "padCharsStart">; -} - -declare module "lodash/fp/parseInt" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "parseInt">; -} - -declare module "lodash/fp/repeat" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "repeat">; -} - -declare module "lodash/fp/replace" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "replace">; -} - -declare module "lodash/fp/snakeCase" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "snakeCase">; -} - -declare module "lodash/fp/split" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "split">; -} - -declare module "lodash/fp/startCase" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "startCase">; -} - -declare module "lodash/fp/startsWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "startsWith">; -} - -declare module "lodash/fp/template" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "template">; -} - -declare module "lodash/fp/toLower" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toLower">; -} - -declare module "lodash/fp/toUpper" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toUpper">; -} - -declare module "lodash/fp/trim" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "trim">; -} - -declare module "lodash/fp/trimChars" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "trimChars">; -} - -declare module "lodash/fp/trimEnd" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "trimEnd">; -} - -declare module "lodash/fp/trimCharsEnd" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "trimCharsEnd">; -} - -declare module "lodash/fp/trimStart" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "trimStart">; -} - -declare module "lodash/fp/trimCharsStart" { - declare module.exports: $PropertyType< - $Exports<"lodash/fp">, - "trimCharsStart" - >; -} - -declare module "lodash/fp/truncate" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "truncate">; -} - -declare module "lodash/fp/unescape" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unescape">; -} - -declare module "lodash/fp/upperCase" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "upperCase">; -} - -declare module "lodash/fp/upperFirst" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "upperFirst">; -} - -declare module "lodash/fp/words" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "words">; -} - -declare module "lodash/fp/attempt" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "attempt">; -} - -declare module "lodash/fp/bindAll" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "bindAll">; -} - -declare module "lodash/fp/cond" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "cond">; -} - -declare module "lodash/fp/constant" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "constant">; -} - -declare module "lodash/fp/always" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "always">; -} - -declare module "lodash/fp/defaultTo" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "defaultTo">; -} - -declare module "lodash/fp/flow" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flow">; -} - -declare module "lodash/fp/pipe" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pipe">; -} - -declare module "lodash/fp/flowRight" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flowRight">; -} - -declare module "lodash/fp/compose" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "compose">; -} - -declare module "lodash/fp/identity" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "identity">; -} - -declare module "lodash/fp/iteratee" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "iteratee">; -} - -declare module "lodash/fp/matches" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "matches">; -} - -declare module "lodash/fp/matchesProperty" { - declare module.exports: $PropertyType< - $Exports<"lodash/fp">, - "matchesProperty" - >; -} - -declare module "lodash/fp/propEq" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "propEq">; -} - -declare module "lodash/fp/pathEq" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pathEq">; -} - -declare module "lodash/fp/method" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "method">; -} - -declare module "lodash/fp/methodOf" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "methodOf">; -} - -declare module "lodash/fp/mixin" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "mixin">; -} - -declare module "lodash/fp/noConflict" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "noConflict">; -} - -declare module "lodash/fp/noop" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "noop">; -} - -declare module "lodash/fp/nthArg" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "nthArg">; -} - -declare module "lodash/fp/over" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "over">; -} - -declare module "lodash/fp/juxt" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "juxt">; -} - -declare module "lodash/fp/overEvery" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "overEvery">; -} - -declare module "lodash/fp/allPass" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "allPass">; -} - -declare module "lodash/fp/overSome" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "overSome">; -} - -declare module "lodash/fp/anyPass" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "anyPass">; -} - -declare module "lodash/fp/property" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "property">; -} - -declare module "lodash/fp/propertyOf" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "propertyOf">; -} - -declare module "lodash/fp/range" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "range">; -} - -declare module "lodash/fp/rangeStep" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "rangeStep">; -} - -declare module "lodash/fp/rangeRight" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "rangeRight">; -} - -declare module "lodash/fp/rangeStepRight" { - declare module.exports: $PropertyType< - $Exports<"lodash/fp">, - "rangeStepRight" - >; -} - -declare module "lodash/fp/runInContext" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "runInContext">; -} - -declare module "lodash/fp/stubArray" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "stubArray">; -} - -declare module "lodash/fp/stubFalse" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "stubFalse">; -} - -declare module "lodash/fp/F" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "F">; -} - -declare module "lodash/fp/stubObject" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "stubObject">; -} - -declare module "lodash/fp/stubString" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "stubString">; -} - -declare module "lodash/fp/stubTrue" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "stubTrue">; -} - -declare module "lodash/fp/T" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "T">; -} - -declare module "lodash/fp/times" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "times">; -} - -declare module "lodash/fp/toPath" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toPath">; -} - -declare module "lodash/fp/uniqueId" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "uniqueId">; -} diff --git a/flow-typed/npm/minimist_v1.x.x.js b/flow-typed/npm/minimist_v1.x.x.js deleted file mode 100644 index 57aa439..0000000 --- a/flow-typed/npm/minimist_v1.x.x.js +++ /dev/null @@ -1,22 +0,0 @@ -// flow-typed signature: 4f1f9ccb55e99cfffea0ffa6566add59 -// flow-typed version: c6154227d1/minimist_v1.x.x/flow_>=v0.28.x <=v0.103.x - -declare module 'minimist' { - declare type minimistOptions = { - string?: string | Array, - boolean?: boolean | string | Array, - alias?: { [arg: string]: string | Array }, - default?: { [arg: string]: any }, - stopEarly?: boolean, - // TODO: Strings as keys don't work... - // '--'? boolean, - unknown?: (param: string) => boolean - }; - - declare type minimistOutput = { - _: Array, - [flag: string]: string | boolean - }; - - declare module.exports: (argv: Array, opts?: minimistOptions) => minimistOutput; -} diff --git a/flow-typed/npm/mqtt_vx.x.x.js b/flow-typed/npm/mqtt_vx.x.x.js deleted file mode 100644 index f7f0047..0000000 --- a/flow-typed/npm/mqtt_vx.x.x.js +++ /dev/null @@ -1,277 +0,0 @@ -// flow-typed signature: e67b8977cea44408699e9195ea66bac6 -// flow-typed version: <>/mqtt_v2.18.8/flow_v0.100.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'mqtt' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'mqtt' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'mqtt/bin/pub' { - declare module.exports: any; -} - -declare module 'mqtt/bin/sub' { - declare module.exports: any; -} - -declare module 'mqtt/dist/mqtt' { - declare module.exports: any; -} - -declare module 'mqtt/dist/mqtt.min' { - declare module.exports: any; -} - -declare module 'mqtt/examples/client/secure-client' { - declare module.exports: any; -} - -declare module 'mqtt/examples/client/simple-both' { - declare module.exports: any; -} - -declare module 'mqtt/examples/client/simple-publish' { - declare module.exports: any; -} - -declare module 'mqtt/examples/client/simple-subscribe' { - declare module.exports: any; -} - -declare module 'mqtt/examples/tls client/mqttclient' { - declare module.exports: any; -} - -declare module 'mqtt/examples/wss/client_with_proxy' { - declare module.exports: any; -} - -declare module 'mqtt/examples/wss/client' { - declare module.exports: any; -} - -declare module 'mqtt/lib/client' { - declare module.exports: any; -} - -declare module 'mqtt/lib/connect/index' { - declare module.exports: any; -} - -declare module 'mqtt/lib/connect/tcp' { - declare module.exports: any; -} - -declare module 'mqtt/lib/connect/tls' { - declare module.exports: any; -} - -declare module 'mqtt/lib/connect/ws' { - declare module.exports: any; -} - -declare module 'mqtt/lib/connect/wx' { - declare module.exports: any; -} - -declare module 'mqtt/lib/store' { - declare module.exports: any; -} - -declare module 'mqtt/lib/validations' { - declare module.exports: any; -} - -declare module 'mqtt/mqtt' { - declare module.exports: any; -} - -declare module 'mqtt/test/abstract_client' { - declare module.exports: any; -} - -declare module 'mqtt/test/abstract_store' { - declare module.exports: any; -} - -declare module 'mqtt/test/browser/server' { - declare module.exports: any; -} - -declare module 'mqtt/test/browser/test' { - declare module.exports: any; -} - -declare module 'mqtt/test/browser/wx' { - declare module.exports: any; -} - -declare module 'mqtt/test/client' { - declare module.exports: any; -} - -declare module 'mqtt/test/helpers/server_process' { - declare module.exports: any; -} - -declare module 'mqtt/test/helpers/server' { - declare module.exports: any; -} - -declare module 'mqtt/test/mqtt_store' { - declare module.exports: any; -} - -declare module 'mqtt/test/mqtt' { - declare module.exports: any; -} - -declare module 'mqtt/test/secure_client' { - declare module.exports: any; -} - -declare module 'mqtt/test/server' { - declare module.exports: any; -} - -declare module 'mqtt/test/store' { - declare module.exports: any; -} - -declare module 'mqtt/test/typescript/broker-connect-subscribe-and-publish' { - declare module.exports: any; -} - -declare module 'mqtt/test/util' { - declare module.exports: any; -} - -declare module 'mqtt/test/websocket_client' { - declare module.exports: any; -} - -// Filename aliases -declare module 'mqtt/bin/pub.js' { - declare module.exports: $Exports<'mqtt/bin/pub'>; -} -declare module 'mqtt/bin/sub.js' { - declare module.exports: $Exports<'mqtt/bin/sub'>; -} -declare module 'mqtt/dist/mqtt.js' { - declare module.exports: $Exports<'mqtt/dist/mqtt'>; -} -declare module 'mqtt/dist/mqtt.min.js' { - declare module.exports: $Exports<'mqtt/dist/mqtt.min'>; -} -declare module 'mqtt/examples/client/secure-client.js' { - declare module.exports: $Exports<'mqtt/examples/client/secure-client'>; -} -declare module 'mqtt/examples/client/simple-both.js' { - declare module.exports: $Exports<'mqtt/examples/client/simple-both'>; -} -declare module 'mqtt/examples/client/simple-publish.js' { - declare module.exports: $Exports<'mqtt/examples/client/simple-publish'>; -} -declare module 'mqtt/examples/client/simple-subscribe.js' { - declare module.exports: $Exports<'mqtt/examples/client/simple-subscribe'>; -} -declare module 'mqtt/examples/tls client/mqttclient.js' { - declare module.exports: $Exports<'mqtt/examples/tls client/mqttclient'>; -} -declare module 'mqtt/examples/wss/client_with_proxy.js' { - declare module.exports: $Exports<'mqtt/examples/wss/client_with_proxy'>; -} -declare module 'mqtt/examples/wss/client.js' { - declare module.exports: $Exports<'mqtt/examples/wss/client'>; -} -declare module 'mqtt/lib/client.js' { - declare module.exports: $Exports<'mqtt/lib/client'>; -} -declare module 'mqtt/lib/connect/index.js' { - declare module.exports: $Exports<'mqtt/lib/connect/index'>; -} -declare module 'mqtt/lib/connect/tcp.js' { - declare module.exports: $Exports<'mqtt/lib/connect/tcp'>; -} -declare module 'mqtt/lib/connect/tls.js' { - declare module.exports: $Exports<'mqtt/lib/connect/tls'>; -} -declare module 'mqtt/lib/connect/ws.js' { - declare module.exports: $Exports<'mqtt/lib/connect/ws'>; -} -declare module 'mqtt/lib/connect/wx.js' { - declare module.exports: $Exports<'mqtt/lib/connect/wx'>; -} -declare module 'mqtt/lib/store.js' { - declare module.exports: $Exports<'mqtt/lib/store'>; -} -declare module 'mqtt/lib/validations.js' { - declare module.exports: $Exports<'mqtt/lib/validations'>; -} -declare module 'mqtt/mqtt.js' { - declare module.exports: $Exports<'mqtt/mqtt'>; -} -declare module 'mqtt/test/abstract_client.js' { - declare module.exports: $Exports<'mqtt/test/abstract_client'>; -} -declare module 'mqtt/test/abstract_store.js' { - declare module.exports: $Exports<'mqtt/test/abstract_store'>; -} -declare module 'mqtt/test/browser/server.js' { - declare module.exports: $Exports<'mqtt/test/browser/server'>; -} -declare module 'mqtt/test/browser/test.js' { - declare module.exports: $Exports<'mqtt/test/browser/test'>; -} -declare module 'mqtt/test/browser/wx.js' { - declare module.exports: $Exports<'mqtt/test/browser/wx'>; -} -declare module 'mqtt/test/client.js' { - declare module.exports: $Exports<'mqtt/test/client'>; -} -declare module 'mqtt/test/helpers/server_process.js' { - declare module.exports: $Exports<'mqtt/test/helpers/server_process'>; -} -declare module 'mqtt/test/helpers/server.js' { - declare module.exports: $Exports<'mqtt/test/helpers/server'>; -} -declare module 'mqtt/test/mqtt_store.js' { - declare module.exports: $Exports<'mqtt/test/mqtt_store'>; -} -declare module 'mqtt/test/mqtt.js' { - declare module.exports: $Exports<'mqtt/test/mqtt'>; -} -declare module 'mqtt/test/secure_client.js' { - declare module.exports: $Exports<'mqtt/test/secure_client'>; -} -declare module 'mqtt/test/server.js' { - declare module.exports: $Exports<'mqtt/test/server'>; -} -declare module 'mqtt/test/store.js' { - declare module.exports: $Exports<'mqtt/test/store'>; -} -declare module 'mqtt/test/typescript/broker-connect-subscribe-and-publish.js' { - declare module.exports: $Exports<'mqtt/test/typescript/broker-connect-subscribe-and-publish'>; -} -declare module 'mqtt/test/util.js' { - declare module.exports: $Exports<'mqtt/test/util'>; -} -declare module 'mqtt/test/websocket_client.js' { - declare module.exports: $Exports<'mqtt/test/websocket_client'>; -} diff --git a/flow-typed/npm/rimraf_v2.x.x.js b/flow-typed/npm/rimraf_v2.x.x.js deleted file mode 100644 index 6de41ef..0000000 --- a/flow-typed/npm/rimraf_v2.x.x.js +++ /dev/null @@ -1,18 +0,0 @@ -// flow-typed signature: 0eb8a81288416e6790fe4ede6297aaf3 -// flow-typed version: c6154227d1/rimraf_v2.x.x/flow_>=v0.25.0 <=v0.103.x - -declare module 'rimraf' { - declare type Options = { - maxBusyTries?: number, - emfileWait?: number, - glob?: boolean, - disableGlob?: boolean - }; - - declare type Callback = (err: ?Error, path: ?string) => void; - - declare module.exports: { - (f: string, opts?: Options | Callback, callback?: Callback): void; - sync(path: string, opts?: Options): void; - }; -} diff --git a/flow-typed/npm/serve_vx.x.x.js b/flow-typed/npm/serve_vx.x.x.js deleted file mode 100644 index 4ab203c..0000000 --- a/flow-typed/npm/serve_vx.x.x.js +++ /dev/null @@ -1,32 +0,0 @@ -// flow-typed signature: ff902d6d0a120c7e53d702e49c7deef0 -// flow-typed version: <>/serve_v11.1.0/flow_v0.100.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'serve' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'serve' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'serve/bin/serve' { - declare module.exports: any; -} - -// Filename aliases -declare module 'serve/bin/serve.js' { - declare module.exports: $Exports<'serve/bin/serve'>; -} diff --git a/flow-typed/npm/source-map-support_vx.x.x.js b/flow-typed/npm/source-map-support_vx.x.x.js deleted file mode 100644 index 6720e10..0000000 --- a/flow-typed/npm/source-map-support_vx.x.x.js +++ /dev/null @@ -1,46 +0,0 @@ -// flow-typed signature: eb7fcb0c1e2a1bbecb15c30283a84ec1 -// flow-typed version: <>/source-map-support_v0.5.13/flow_v0.100.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'source-map-support' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'source-map-support' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'source-map-support/browser-source-map-support' { - declare module.exports: any; -} - -declare module 'source-map-support/register' { - declare module.exports: any; -} - -declare module 'source-map-support/source-map-support' { - declare module.exports: any; -} - -// Filename aliases -declare module 'source-map-support/browser-source-map-support.js' { - declare module.exports: $Exports<'source-map-support/browser-source-map-support'>; -} -declare module 'source-map-support/register.js' { - declare module.exports: $Exports<'source-map-support/register'>; -} -declare module 'source-map-support/source-map-support.js' { - declare module.exports: $Exports<'source-map-support/source-map-support'>; -} diff --git a/flow-typed/npm/stompjs_vx.x.x.js b/flow-typed/npm/stompjs_vx.x.x.js deleted file mode 100644 index 81c09df..0000000 --- a/flow-typed/npm/stompjs_vx.x.x.js +++ /dev/null @@ -1,178 +0,0 @@ -// flow-typed signature: 40526ed76913d68bd24c93682ca24a50 -// flow-typed version: <>/stompjs_vgit://github.com/gfoiani/stomp-websocket.git#2.4.0/flow_v0.100.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'stompjs' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'stompjs' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'stompjs/browsertests/integration/integration' { - declare module.exports: any; -} - -declare module 'stompjs/browsertests/qunit' { - declare module.exports: any; -} - -declare module 'stompjs/browsertests/unit/ack' { - declare module.exports: any; -} - -declare module 'stompjs/browsertests/unit/config' { - declare module.exports: any; -} - -declare module 'stompjs/browsertests/unit/connection' { - declare module.exports: any; -} - -declare module 'stompjs/browsertests/unit/frame' { - declare module.exports: any; -} - -declare module 'stompjs/browsertests/unit/message' { - declare module.exports: any; -} - -declare module 'stompjs/browsertests/unit/parse_connect' { - declare module.exports: any; -} - -declare module 'stompjs/browsertests/unit/subscription' { - declare module.exports: any; -} - -declare module 'stompjs/browsertests/unit/transaction' { - declare module.exports: any; -} - -declare module 'stompjs/browsertests/unit/websocket' { - declare module.exports: any; -} - -declare module 'stompjs/doc/j/doc' { - declare module.exports: any; -} - -declare module 'stompjs/example/server' { - declare module.exports: any; -} - -declare module 'stompjs/example/webworker/webworker' { - declare module.exports: any; -} - -declare module 'stompjs/lib/stomp-node' { - declare module.exports: any; -} - -declare module 'stompjs/lib/stomp' { - declare module.exports: any; -} - -declare module 'stompjs/lib/stomp.min' { - declare module.exports: any; -} - -declare module 'stompjs/spec/server.mock' { - declare module.exports: any; -} - -declare module 'stompjs/spec/stomp-node.spec' { - declare module.exports: any; -} - -declare module 'stompjs/spec/stomp.spec' { - declare module.exports: any; -} - -declare module 'stompjs/spec/websocket.mock' { - declare module.exports: any; -} - -// Filename aliases -declare module 'stompjs/browsertests/integration/integration.js' { - declare module.exports: $Exports<'stompjs/browsertests/integration/integration'>; -} -declare module 'stompjs/browsertests/qunit.js' { - declare module.exports: $Exports<'stompjs/browsertests/qunit'>; -} -declare module 'stompjs/browsertests/unit/ack.js' { - declare module.exports: $Exports<'stompjs/browsertests/unit/ack'>; -} -declare module 'stompjs/browsertests/unit/config.js' { - declare module.exports: $Exports<'stompjs/browsertests/unit/config'>; -} -declare module 'stompjs/browsertests/unit/connection.js' { - declare module.exports: $Exports<'stompjs/browsertests/unit/connection'>; -} -declare module 'stompjs/browsertests/unit/frame.js' { - declare module.exports: $Exports<'stompjs/browsertests/unit/frame'>; -} -declare module 'stompjs/browsertests/unit/message.js' { - declare module.exports: $Exports<'stompjs/browsertests/unit/message'>; -} -declare module 'stompjs/browsertests/unit/parse_connect.js' { - declare module.exports: $Exports<'stompjs/browsertests/unit/parse_connect'>; -} -declare module 'stompjs/browsertests/unit/subscription.js' { - declare module.exports: $Exports<'stompjs/browsertests/unit/subscription'>; -} -declare module 'stompjs/browsertests/unit/transaction.js' { - declare module.exports: $Exports<'stompjs/browsertests/unit/transaction'>; -} -declare module 'stompjs/browsertests/unit/websocket.js' { - declare module.exports: $Exports<'stompjs/browsertests/unit/websocket'>; -} -declare module 'stompjs/doc/j/doc.js' { - declare module.exports: $Exports<'stompjs/doc/j/doc'>; -} -declare module 'stompjs/example/server.js' { - declare module.exports: $Exports<'stompjs/example/server'>; -} -declare module 'stompjs/example/webworker/webworker.js' { - declare module.exports: $Exports<'stompjs/example/webworker/webworker'>; -} -declare module 'stompjs/index' { - declare module.exports: $Exports<'stompjs'>; -} -declare module 'stompjs/index.js' { - declare module.exports: $Exports<'stompjs'>; -} -declare module 'stompjs/lib/stomp-node.js' { - declare module.exports: $Exports<'stompjs/lib/stomp-node'>; -} -declare module 'stompjs/lib/stomp.js' { - declare module.exports: $Exports<'stompjs/lib/stomp'>; -} -declare module 'stompjs/lib/stomp.min.js' { - declare module.exports: $Exports<'stompjs/lib/stomp.min'>; -} -declare module 'stompjs/spec/server.mock.js' { - declare module.exports: $Exports<'stompjs/spec/server.mock'>; -} -declare module 'stompjs/spec/stomp-node.spec.js' { - declare module.exports: $Exports<'stompjs/spec/stomp-node.spec'>; -} -declare module 'stompjs/spec/stomp.spec.js' { - declare module.exports: $Exports<'stompjs/spec/stomp.spec'>; -} -declare module 'stompjs/spec/websocket.mock.js' { - declare module.exports: $Exports<'stompjs/spec/websocket.mock'>; -} diff --git a/flow-typed/npm/string-replace-loader_vx.x.x.js b/flow-typed/npm/string-replace-loader_vx.x.x.js deleted file mode 100644 index bd023f3..0000000 --- a/flow-typed/npm/string-replace-loader_vx.x.x.js +++ /dev/null @@ -1,52 +0,0 @@ -// flow-typed signature: a41832661c8c616b9d9c22699e4b6059 -// flow-typed version: <>/string-replace-loader_v2.2.0/flow_v0.100.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'string-replace-loader' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'string-replace-loader' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'string-replace-loader/lib/getOptionsArray' { - declare module.exports: any; -} - -declare module 'string-replace-loader/lib/processChunk' { - declare module.exports: any; -} - -declare module 'string-replace-loader/lib/replace' { - declare module.exports: any; -} - -// Filename aliases -declare module 'string-replace-loader/index' { - declare module.exports: $Exports<'string-replace-loader'>; -} -declare module 'string-replace-loader/index.js' { - declare module.exports: $Exports<'string-replace-loader'>; -} -declare module 'string-replace-loader/lib/getOptionsArray.js' { - declare module.exports: $Exports<'string-replace-loader/lib/getOptionsArray'>; -} -declare module 'string-replace-loader/lib/processChunk.js' { - declare module.exports: $Exports<'string-replace-loader/lib/processChunk'>; -} -declare module 'string-replace-loader/lib/replace.js' { - declare module.exports: $Exports<'string-replace-loader/lib/replace'>; -} diff --git a/flow-typed/npm/underscore_v1.x.x.js b/flow-typed/npm/underscore_v1.x.x.js deleted file mode 100644 index 98711f8..0000000 --- a/flow-typed/npm/underscore_v1.x.x.js +++ /dev/null @@ -1,700 +0,0 @@ -// flow-typed signature: 03ec14d22edd87ba3df9d3fab8224488 -// flow-typed version: c6154227d1/underscore_v1.x.x/flow_>=v0.75.x <=v0.103.x - -// @flow -/* eslint-disable */ - -// type definitions for (some of) underscore - -type FnIteratee = (t: T, index: number, array: Array) => boolean; - -declare module "underscore" { - declare type UnaryFn = (a: A) => R; - declare type Compose = - & (( - fg: UnaryFn, - ef: UnaryFn, - de: UnaryFn, - cd: UnaryFn, - bc: UnaryFn, - ab: UnaryFn, - ...rest: Array - ) => UnaryFn) - & (( - ef: UnaryFn, - de: UnaryFn, - cd: UnaryFn, - bc: UnaryFn, - ab: UnaryFn, - ...rest: Array - ) => UnaryFn) - & (( - de: UnaryFn, - cd: UnaryFn, - bc: UnaryFn, - ab: UnaryFn, - ...rest: Array - ) => UnaryFn) - & ((cd: UnaryFn, bc: UnaryFn, ab: UnaryFn, ...rest: Array) => UnaryFn) - & ((bc: UnaryFn, ab: UnaryFn, ...rest: Array) => UnaryFn) - & ((ab: UnaryFn, ...rest: Array) => UnaryFn) - - declare function $underscore$Extend(a: A, ...rest: Array): A; - declare function $underscore$Extend(a: A, b: B, ...rest: Array): A & B; - declare function $underscore$Extend(a: A, b: B, c: C, ...rest: Array): A & B & C; - declare function $underscore$Extend(a: A, b: B, c: C, d: D, ...rest: Array): A & B & C & D; - declare function $underscore$Extend(a: A, b: B, c: C, d: D, e: E, ...rest: Array): A & B & C & D & E; - - declare function $underscore$ExtendParameterized(...rest: Array): A; - declare function $underscore$ExtendParameterized(b: B, ...rest: Array): A & B; - declare function $underscore$ExtendParameterized(b: B, c: C, ...rest: Array): A & B & C; - declare function $underscore$ExtendParameterized(b: B, c: C, d: D, ...rest: Array): A & B & C & D; - declare function $underscore$ExtendParameterized(b: B, c: C, d: D, e: E, ...rest: Array): A & B & C & D & E; - - - declare var compose: Compose; - - // Handle underscore chainables things. - declare class UnderscoreWrappedList { - // Chain - chain(): UnderscoreChainedList; - - // Handle Collections functions - each(iteratee: (element: T, index?: number, list?: Array) => void): void; - each(iteratee: (val: mixed, key: mixed, list?: Object) => void): void; - map(iteratee: (value: T, index: number, list: Array) => U): Array; - reduce(iteratee: (memo: Object, value: T, index: number) => U, init: Object): Object; - reduce(iteratee: (memo: Array, value: T, index: number) => U, init: Array): Array; - reduce(iteratee: (memo: U, value: T, index: number) => U, init: U): U; - reduceRight(iteratee: (memo: Object, value: T, index: number) => U, init: Object): Object; - reduceRight(iteratee: (memo: Array, value: T, index: number) => U, init: Array): Array; - reduceRight(iteratee: (memo: U, value: T, index: number) => U, init: U): U; - find(predicate: (value: T) => boolean): T; - filter(predicate: (value: ?T) => boolean): Array; - where(properties: Object): Array; - findWhere(properties: $Shape): ?T; - reject(predicate: (value: T) => boolean, context?: mixed): Array; - every(predicate: (value: T) => boolean, context?: mixed): boolean; - some(predicate: (value: T) => boolean, context?: mixed): boolean; - contains(value: T, fromIndex?: number): boolean; - invoke(methodName: string, ...args: Array): Array; - pluck(propertyName: string): Array; - max(iteratee?: (value: T) => number, context?: mixed): U; - min(iteratee?: (value: T) => number, context?: mixed): U; - sortBy(iteratee: (value: T) => number): Array; - sortBy(iteratee: string): Array; - // TODO: UnderscoreWrapTheseObjects - groupBy(iteratee: (value: T) => U, context?: mixed): { [key: U]: T }; - groupBy(iteratee: string, context?: mixed): { [key: any]: T }; - indexBy(iteratee: (value: T) => U, context?: mixed): { [key: U]: T }; - indexBy(iteratee: string, context?: mixed): { [key: any]: T }; - countBy(iteratee: (value: T) => U, context?: mixed): { [key: U]: T }; - shuffle(): Array; - sample(n?: number): Array; - toArray(): Array; - size(): number; - partition(predicate: (value: T) => boolean): Array>; - - // Handle Array function - first(): T; - first(n: number): Array; - head(n?: number): Array; - take(n?: number): Array; - initial(n?: number): Array; - last(n?: number): Array; - rest(index?: number): Array; - tail(index?: number): Array; - drop(index?: number): Array; - compact(): Array; - flatten(shallow?: boolean): Array; - without(...values: Array): Array; - union(...arrays: Array): Array; - intersection(...arrays: Array): Array; - difference(...others: Array): Array; - uniq(): Array; - uniq(iteratee: FnIteratee): Array; - uniq(isSorted: boolean, iteratee?: FnIteratee): Array; - unique(): Array; - unique(iteratee: FnIteratee): Array; - unique(isSorted: boolean, iteratee?: FnIteratee): Array; - zip(...arrays: Array): Array; - unzip(): Array; - object(values?: Array): Object; - indexOf(value: T, isSorted?: boolean): number; - lastIndexOf(value: T, iteratee?: Function, context?: mixed): number; - sortedIndex(value: T, iteratee?: Function, context?: mixed): number; - findIndex(predicate: (value: T) => boolean, context?: mixed): number; - findLastIndex(predicate: (value: T) => boolean, context?: mixed): number; - range(stop: number, step?: number): Array; - range(): Array; - - // TODO _.propertyOf - // TODO _.matcher, _.matches - isEqual(b: Object): boolean; - isMatch(b: Object): boolean; - isEmpty(): boolean; - isElement(): boolean; - isArray(): boolean; - isObject(): boolean; - isArguments(): boolean; - isFunction(): boolean; - isString(): boolean; - isNumber(): boolean; - isFinite(): boolean; - isBoolean(): boolean; - isDate(): boolean; - isRegExp(): boolean; - isError(): boolean; - isNaN(): boolean; - isNull(): boolean; - isUndefined(): boolean; - } - - - // Handle underscore chainables things. - declare class UnderscoreChainedList { - // End a Chain - value(): Array; - - // Handle Collections functions - each(iteratee: (element: T, index: number, list: Array) => void): Array; - each(iteratee: (val: mixed, key: mixed, list: Object) => void): Object; - map(iteratee: (value: T, index: number, list: Array) => U): UnderscoreChainedList; - reduce(iteratee: (memo: Object, value: T, index: number) => U, init: Object): UnderscoreChainedValue; - reduce(iteratee: (memo: Array, value: T, index: number) => U, init: Array): UnderscoreChainedList; - reduce(iteratee: (memo: U, value: T, index: number) => U, init: U): UnderscoreChainedValue; - reduceRight(iteratee: (memo: Object, value: T, index: number) => U, init: Object): UnderscoreChainedValue; - reduceRight(iteratee: (memo: Array, value: T, index: number) => U, init: Array): UnderscoreChainedList; - reduceRight(iteratee: (memo: U, value: T, index: number) => U, init: U): UnderscoreChainedValue; - find(predicate: (value: T) => boolean): UnderscoreChainedValue; - filter(predicate: (value: T) => boolean): UnderscoreChainedList; - where(properties: Object): UnderscoreChainedList; - findWhere(properties: $Shape): ?UnderscoreChainedValue; - reject(predicate: (value: T) => boolean, context?: mixed): UnderscoreChainedList; - every(predicate: (value: T) => boolean, context?: mixed): UnderscoreChainedValue; - some(predicate: (value: T) => boolean, context?: mixed): UnderscoreChainedValue; - contains(value: T, fromIndex?: number): UnderscoreChainedValue; - invoke(methodName: string, ...args: Array): UnderscoreChainedList; - pluck(propertyName: string): UnderscoreChainedList; - max(iteratee?: (value: T) => number, context?: mixed): UnderscoreChainedValue; - min(iteratee?: (value: T) => number, context?: mixed): UnderscoreChainedValue; - sortBy(iteratee: (value: T) => number): UnderscoreChainedList; - sortBy(iteratee: string): UnderscoreChainedList; - // TODO: UnderscoreWrapTheseObjects - groupBy(iteratee: (value: T) => U, context?: mixed): UnderscoreChainedValue<{ [key: U]: T }>; - groupBy(iteratee: string, context?: mixed): UnderscoreChainedValue<{ [key: any]: T }>; - indexBy(iteratee: (value: T) => U, context?: mixed): UnderscoreChainedValue<{ [key: U]: T }>; - indexBy(iteratee: string, context?: mixed): UnderscoreChainedValue<{ [key: any]: T }>; - countBy(iteratee: (value: T) => U, context?: mixed): UnderscoreChainedValue<{ [key: U]: T }>; - shuffle(): UnderscoreChainedList; - sample(n?: number): UnderscoreChainedList; - toArray(): UnderscoreChainedList; - size(): UnderscoreChainedValue; - partition(predicate: (value: T) => boolean): UnderscoreChainedList>; - - // Handle Array function - first(n: number): UnderscoreChainedList; - first(): UnderscoreChainedValue; - head(n?: number): UnderscoreChainedList; - take(n?: number): UnderscoreChainedList; - initial(n?: number): UnderscoreChainedList; - last(n?: number): UnderscoreChainedList; - rest(index?: number): UnderscoreChainedList; - tail(index?: number): UnderscoreChainedList; - drop(index?: number): UnderscoreChainedList; - compact(): UnderscoreChainedList; - flatten(shallow?: boolean): UnderscoreChainedList; - without(...values: Array): UnderscoreChainedList; - union(...arrays: Array): UnderscoreChainedList; - intersection(...arrays: Array): UnderscoreChainedList; - difference(...others: Array): UnderscoreChainedList; - uniq(): UnderscoreChainedList; - uniq(iteratee: FnIteratee): UnderscoreChainedList; - uniq(isSorted: boolean, iteratee?: FnIteratee): UnderscoreChainedList; - unique(): UnderscoreChainedList; - unique(iteratee: FnIteratee): UnderscoreChainedList; - unique(isSorted: boolean, iteratee?: FnIteratee): UnderscoreChainedList; - zip(...arrays: Array): UnderscoreChainedList; - unzip(): UnderscoreChainedList; - object(values?: Array): UnderscoreChainedValue; - indexOf(value: T, isSorted?: boolean): UnderscoreChainedValue; - lastIndexOf(value: T, iteratee?: Function, context?: mixed): UnderscoreChainedValue; - sortedIndex(value: T, iteratee?: Function, context?: mixed): UnderscoreChainedValue; - findIndex(predicate: (value: T) => boolean, context?: mixed): UnderscoreChainedValue; - findLastIndex(predicate: (value: T) => boolean, context?: mixed): UnderscoreChainedValue; - range(stop: number, step?: number): UnderscoreChainedList; - range(): UnderscoreChainedList; - - isEqual(b: Object): UnderscoreChainedValue; - isMatch(b: Object): UnderscoreChainedValue; - isEmpty(): UnderscoreChainedValue; - isElement(): UnderscoreChainedValue; - isArray(): UnderscoreChainedValue; - isObject(): UnderscoreChainedValue; - isArguments(): UnderscoreChainedValue; - isFunction(): UnderscoreChainedValue; - isString(): UnderscoreChainedValue; - isNumber(): UnderscoreChainedValue; - isFinite(): UnderscoreChainedValue; - isBoolean(): UnderscoreChainedValue; - isDate(): UnderscoreChainedValue; - isRegExp(): UnderscoreChainedValue; - isError(): UnderscoreChainedValue; - isNaN(): UnderscoreChainedValue; - isNull(): UnderscoreChainedValue; - isUndefined(): UnderscoreChainedValue; - } - - declare class UnderscoreChainedValue { - value(): T; - } - - declare class UnderscoreWrappedValue { - chain(): UnderscoreChainedValue; - - escape(): string; - // TODO: Probably move this to UnderscoreWrappedNumber or something - range(): Array; - isEmpty(): boolean; - } - - // Handle regular things. - declare class UnderscoreList { - // Handle chaining - chain(a: Array): UnderscoreChainedList; - chain(v: T): UnderscoreChainedValue; - - // Handle Collections functions - - each(o: {[key:string]: T}, iteratee: (val: T, key: string)=>void): void; - each(a: T[], iteratee: (val: T, key: string)=>void): void; - each(list: Object, iteratee: (val: mixed, key: mixed, list: Object) => void): void; - forEach(o: {[key:string]: T}, iteratee: (val: T, key: string)=>void): void; - forEach(a: T[], iteratee: (val: T, key: string)=>void): void; - - map(a: T[], iteratee: (val: T, n: number)=>U): U[]; - map(a: {[key:K]: T}, iteratee: (val: T, k: K)=>U): U[]; - collect(a: T[], iteratee: (val: T, n: number)=>U): U[]; - collect(a: {[key:K]: T}, iteratee: (val: T, k: K)=>U): U[]; - - reduce(a: Array, iterator: (m: MemoT, o: T)=>MemoT, initialMemo?: MemoT): MemoT; - inject(a: Array, iterator: (m: MemoT, o: T)=>MemoT, initialMemo?: MemoT): MemoT; - foldl(a: Array, iterator: (m: MemoT, o: T)=>MemoT, initialMemo?: MemoT): MemoT; - - reduceRight(a: Array, iterator: (m: MemoT, o: T)=>MemoT, initialMemo?: MemoT): MemoT; - foldr(a: Array, iterator: (m: MemoT, o: T)=>MemoT, initialMemo?: MemoT): MemoT; - - find(list: T[], predicate: (val: T)=>boolean): ?T; - detect(list: T[], predicate: (val: T)=>boolean): ?T; - - filter(o: {[key:string]: T}, pred: (val: T, k: string, o: {[string]: T})=>boolean): T[]; - filter(a: T[], pred: (val: T, k: number, a: T[])=>boolean): T[]; - filter(o: {[string]: T}[], pred: {[string]: T}): T[]; - select(o: {[key:string]: T}, pred: (val: T, k: string, o: {[string]: T})=>boolean): T[]; - select(a: T[], pred: (val: T, k: number, a: T[])=>boolean): T[]; - select(o: {[string]: T}[], pred: {[string]: T}): T[]; - where(list: Array, properties: Object): Array; - findWhere(list: Array, properties: {[key:string]: any}): ?T; - - reject(o: {[key:string]: T}, pred: (val: T, k: string)=>boolean): T[]; - reject(a: T[], pred: (val: T, k: string)=>boolean): T[]; - - every(a: Array, pred?: (val: T)=>boolean): boolean; - all(a: Array, pred?: (val: T)=>boolean): boolean; - - some(a: Array, pred?: (val: T)=>boolean): boolean; - any(a: Array, pred?: (val: T)=>boolean): boolean; - - contains(list: T[], val: T, fromIndex?: number): boolean; - includes(list: T[], val: T, fromIndex?: number): boolean; - - invoke(list: Array, methodName: string, ...args?: Array): any; - - pluck(a: Array, propertyName: string): Array ; - - max(a: Array|{[key:any]: T}): T; - min(a: Array|{[key:any]: T}): T; - - sortBy(a: T[], property: any): T[]; - sortBy(a: T[], iteratee: (val: T)=>any): T[]; - groupBy(a: Array, iteratee: string | (val: T, index: number)=>any): {[key:string]: T[]}; - indexBy(a: Array, iteratee: string | (val: T, index: number)=>any): {[key:string]: T[]}; - countBy(a: Array, iteratee: (val: T, index: number)=>any): {[key:string]: T[]}; - shuffle(list: ?Array): Array; - sample(a: T[]): T; - - toArray(a: Iterable|{[key:any]: T}): Array; - - size(o: Object): number; - size(o: Array): number; - - partition(o: {[key:string]: T}, pred: (val: T, k: string)=>boolean): [T[], T[]]; - partition(o: Array, pred: (val: T)=>boolean): [T[], T[]]; - - // Handle Array function - - first(a: Array, n: number): Array; - first(a: Array): T; - head(a: Array, n: number): Array; - head(a: Array): T; - take(a: Array, n: number): Array; - take(a: Array): T; - - initial(a: Array, n?: number): Array; - - last(a: Array, n: number): Array; - last(a: Array): T; - - rest(a: Array, index?: number): Array; - tail(a: Array, index?: number): Array; - drop(a: Array, index?: number): Array; - - compact(a: Array): T[]; - - flatten(a: S[][]): S[]; - - without(a: T[], ...values: T[]): T[]; - - union(...arrays: Array>): Array; - intersection(...arrays: Array>): Array; - - difference(array: Array, ...others: Array>): Array; - - uniq(a: T[]): T[]; - uniq(list: Array, iteratee: Function): Array; - uniq(list: Array, isSorted: boolean, iteratee?: Function): Array; - unique(a: T[]): T[]; - unique(list: Array, iteratee: Function): Array; - unique(list: Array, isSorted: boolean, iteratee?: Function): Array; - - zip(a1: S[], a2: T[]): Array<[S, T]>; - unzip(array: Array>): Array>; - - object(a: Array<[string, T]>): {[key:string]: T}; - object(list: Array, values?: Array): {[key: string]: T}; - - indexOf(list: T[], val: T, isSorted?: boolean): number; - lastIndexOf(array: Array, value: T, fromIndex?: number): number; - sortedIndex(list: Array, value: T, iteratee?: (value: T) => mixed, context?: any): number; - findIndex(list: T[], predicate: (val: T)=>boolean): number; - findLastIndex(array: Array, predicate: any, context?: any): number; - range(a: number, b: number): Array; - - isEqual(object: Object, b: Object): boolean; - isMatch(object: Object, b: Object): boolean; - isEmpty(object: Object): boolean; - isElement(object: any): boolean; - isArray(value: any): boolean; - isObject(value: any): boolean; - isArguments(object: any): boolean; - isFunction(object: any): boolean; - isString(object: any): boolean; - isNumber(object: any): boolean; - isFinite(object: any): boolean; - isBoolean(object: any): boolean; - isDate(object: any): boolean; - isRegExp(object: any): boolean; - isError(object: any): boolean; - isNaN(object: any): boolean; - isNull(object: any): boolean; - isUndefined(object: any): boolean; - } - - declare class UnderscoreFunctions { - bind(func: Function, object: Object, ...arguments: Array): Function; - bindAll(object: ?Object, ...methodNames: Array): Object; - partial(func: Function, ...arguments: Array): Function; - memoize(func: Function, hashFunction?: Function): Function; - delay(func: Function, wait: number, ...arguments: Array): void; - defer(func: Function, ...arguments: Array): void; - throttle(func: Function, wait: number, options?: {leading: boolean, trailing: boolean}): Function; - debounce(func: Function, wait: number, immediate?: boolean): Function; - once(func: Function): Function; - after(count: number, func: Function): Function; - before(count: number, func: Function): Function; - wrap(func: Function, wrapper: Function): Function; - negate(predicate: (...args: any) => boolean): Function; - compose: Compose; - - isEqual(object: any, b: any): boolean; - isMatch(object: Object, b: Object): boolean; - isEmpty(object: Object): boolean; - isElement(object: Object): boolean; - isArray(value: any): boolean; - isObject(value: any): boolean; - isArguments(object: any): boolean; - isFunction(object: any): boolean; - isString(object: any): boolean; - isNumber(object: any): boolean; - isFinite(object: any): boolean; - isBoolean(object: any): boolean; - isDate(object: any): boolean; - isRegExp(object: any): boolean; - isError(object: any): boolean; - isNaN(object: any): boolean; - isNull(object: any): boolean; - isUndefined(object: any): boolean; - } - - declare class UnderscoreObject { - keys(object: {[keys: K]: V}): Array; - allKeys(object: {[keys: K]: V}): Array; - values(object: {[keys: K]: V}): Array; - mapObject( - object: Object, - iteratee: (val: any, key: string) => mixed, - context?: mixed - ): Object; - pairs(object: {[keys: K]: V}): Array<[K, V]>; - invert(object: {[keys: K]: V}): {[keys: V]: K}; - // TODO: _.create - functions(object: Object): Array; - findKey(object: {[keys: K]: V}, predicate: (V, K, {[keys: K]: V}) => boolean, context?: mixed): ?string; - extend: typeof $underscore$Extend; - extendOwn: typeof $underscore$Extend; - pick(object: {[keys: K]: V}, predicate?: K): {[keys: K]: V}; - omit(object: {[keys: K]: V}, predicate?: K): {[keys: K]: V}; - defaults(defaults: ?Object, ...mores?: Array): Object; - clone(object: O): O; - tap(object: O): O; - has(object: Object, key: string): boolean; - property(key: K): (obj: { [key: K]: V }) => V; - // TODO _.propertyOf - // TODO _.matcher, _.matches - isEqual(object: Object, b: Object): boolean; - isMatch(object: Object, b: Object): boolean; - isEmpty(object: Object): boolean; - isElement(object: any): boolean; - isArray(value: any): boolean; - isObject(value: any): boolean; - isArguments(object: any): boolean; - isFunction(object: any): boolean; - isString(object: any): boolean; - isNumber(object: any): boolean; - isFinite(object: any): boolean; - isBoolean(object: any): boolean; - isDate(object: any): boolean; - isRegExp(object: any): boolean; - isError(object: any): boolean; - isNaN(object: any): boolean; - isNull(object: any): boolean; - isUndefined(object: any): boolean; - } - - declare class UnderscoreChainedObject { - value(): WrappedObj; - keys(): UnderscoreChainedList<$Keys>; - allKeys(): UnderscoreChainedList<$Keys>; - // This call necessarily loses precision since we treat chained lists generics of a single type. - values(): UnderscoreChainedList; - - mapObject(v: V) => Ret>>( - iteratee: Function, - context?: mixed - ): UnderscoreChainedObject; - map(mapFn: (v: any, k: $Keys, obj: WrappedObj) => T): UnderscoreChainedList; - pairs(): UnderscoreChainedList<[any, any]>; - invert(): UnderscoreChainedObject; - // TODO: _.create - functions(): UnderscoreChainedList; - findKey(predicate: ($Values, $Keys, WrappedObj) => boolean, context?: mixed): UnderscoreChainedValue>; - // TODO: Reimplement these when you can get them to return UnderscoreChainedObject - // extend: ExtendParameterized<{[key: K]: V}>; - // extendOwn: ExtendParameterized<{[key: K]: V}>>; - pick(...rest: Array>): UnderscoreChainedObject; - pick(predicate: (v: any, k: any, object: WrappedObj) => boolean): UnderscoreChainedObject; - omit(...rest: Array>): UnderscoreChainedObject; - omit(predicate: (v: any, k: any, object: WrappedObj) => boolean): UnderscoreChainedObject; - defaults(more: $Shape): UnderscoreChainedObject; - clone(): UnderscoreChainedObject; - tap(): UnderscoreChainedObject; - has(key: string): UnderscoreChainedValue; - // TODO _.propertyOf - // TODO _.matcher, _.matches - isEqual(b: Object): UnderscoreChainedValue; - isMatch(b: Object): UnderscoreChainedValue; - isEmpty(): UnderscoreChainedValue; - isElement(): UnderscoreChainedValue; - isArray(): UnderscoreChainedValue; - isObject(): UnderscoreChainedValue; - isArguments(): UnderscoreChainedValue; - isFunction(): UnderscoreChainedValue; - isString(): UnderscoreChainedValue; - isNumber(): UnderscoreChainedValue; - isFinite(): UnderscoreChainedValue; - isBoolean(): UnderscoreChainedValue; - isDate(): UnderscoreChainedValue; - isRegExp(): UnderscoreChainedValue; - isError(): UnderscoreChainedValue; - isNaN(): UnderscoreChainedValue; - isNull(): UnderscoreChainedValue; - isUndefined(): UnderscoreChainedValue; - } - - declare class UnderscoreWrappedObject { - chain(): UnderscoreChainedObject; - - map(fn: (v: any, k: $Keys) => R): Array; - filter(fn: (v: any, k: $Keys, obj: any) => boolean): Array; - keys(): Array<$Keys>; - allKeys(): Array<$Keys>; - values(): Array; - mapObject(v: V) => Ret>>( - iteratee: Function, - context?: mixed - ): NewObj; - pairs(): Array<[K, V]>; - invert(): {[keys: V]: K}; - // TODO: _.create - functions(): Array; - find(predicate: (v: any, k: $Keys, obj: WrappedObj) => boolean): ?any; - findKey(predicate: ($Values, $Keys, WrappedObj) => boolean, context?: mixed): ?$Keys; - extend: typeof $underscore$ExtendParameterized; - extendOwn: typeof $underscore$ExtendParameterized; - // TODO make these actually remove properties - pick(...rest: Array>): WrappedObj; - pick(predicate: (v: any, k: $Keys, object: WrappedObj) => boolean): WrappedObj; - omit(...rest: Array>): WrappedObj; - omit(predicate: (v: any, k: $Keys, object: WrappedObj) => boolean): WrappedObj; - defaults(more: $Shape): WrappedObj; - clone(): WrappedObj; - tap(): WrappedObj; - has(key: string): boolean; - // TODO _.propertyOf - // TODO _.matcher, _.matches - isEqual(b: Object): boolean; - isMatch(b: Object): boolean; - isEmpty(): boolean; - isElement(): boolean; - isArray(): boolean; - isObject(): boolean; - isArguments(): boolean; - isFunction(): boolean; - isString(): boolean; - isNumber(): boolean; - isFinite(): boolean; - isBoolean(): boolean; - isDate(): boolean; - isRegExp(): boolean; - isError(): boolean; - isNaN(): boolean; - isNull(): boolean; - isUndefined(): boolean; - } - - declare class UnderscoreUtility { - noConflict(): Underscore; - identity(value: U): U; - constant(value: U): () => U; - noop(): void; - times(n: number, iteratee: (index: number) => T, context?: mixed): Array; - random(min: number, max: number): number; - // TODO: Is this right? - mixin(object: Object): Underscore & Object; - // TODO: _.iteratee - uniqueId(prefix?: string): string; - escape(string: string): string; - unescape(string: string): string; - // TODO: _.result - now(): number; - template(templateText: string): (values: {[key: string]: string}) => string; - } - - declare class UnderscoreWrappedList { - chain(): UnderscoreChainedList; - - // Handle Collections functions - each(iteratee: (element: T, index: number, list: Array) => void): Array; - each(iteratee: (val: mixed, key: mixed, list: Object) => void): Object; - map(iteratee: (value: T, index: number, list: Array) => U): Array; - reduce(iteratee: (memo: Object, value: T, index?: number) => U, init: Object): Object; - reduce(iteratee: (memo: Array, value: T, index?: number) => U, init: Array): Array; - reduce(iteratee: (memo: U, value: T, index?: number) => U, init: U): U; - reduceRight(iteratee: (memo: Object, value: T, index?: number) => U, init: Object): U; - reduceRight(iteratee: (memo: Array, value: T, index?: number) => U, init: Array): Array; - reduceRight(iteratee: (memo: U, value: T, index?: number) => U, init: U): U; - find(predicate: (value: T) => boolean): ?T; - filter(predicate: (value: T) => boolean): Array; - filter(predicate: {[string]: T}): Array; - where(properties: Object): Array; - findWhere(properties: $Shape): ?T; - reject(predicate: (value: T) => boolean, context?: mixed): Array; - every(predicate: (value: T) => boolean, context?: mixed): boolean; - some(predicate: (value: T) => boolean, context?: mixed): boolean; - contains(value: T, fromIndex?: number): boolean; - invoke(methodName: string, ...args: Array): Array; - pluck(propertyName: string): Array; - max(iteratee?: (value: T) => number, context?: mixed): U; - min(iteratee?: (value: T) => number, context?: mixed): U; - sortBy(iteratee: (value: T) => number): Array; - sortBy(iteratee: string): Array; - // TODO: UnderscoreWrapTheseObjects - groupBy(iteratee: (value: T) => U, context?: mixed): { [key: U]: T }; - groupBy(iteratee: string, context?: mixed): { [key: any]: T }; - indexBy(iteratee: (value: T) => U, context?: mixed): { [key: U]: T }; - indexBy(iteratee: string, context?: mixed): { [key: any]: T }; - countBy(iteratee: (value: T) => U, context?: mixed): { [key: U]: T }; - shuffle(): Array; - sample(n?: number): Array; - toArray(): Array; - size(): number; - partition(predicate: (value: T) => boolean): Array>; - - // Handle Array function - first(): T; - first(n: number): Array; - head(n?: number): Array; - take(n?: number): Array; - initial(n?: number): Array; - last(n?: number): Array; - rest(index?: number): Array; - tail(index?: number): Array; - drop(index?: number): Array; - compact(): Array; - flatten(shallow?: boolean): Array; - without(...values: Array): Array; - union(...arrays: Array): Array; - intersection(...arrays: Array): Array; - difference(...others: Array): Array; - uniq(): Array; - uniq(iteratee: Function): Array; - uniq(isSorted: boolean, iteratee?: Function): Array; - unique(): Array; - unique(iteratee: Function): Array; - unique(isSorted: boolean, iteratee?: Function): Array; - zip(...arrays: Array): Array; - unzip(): Array; - object(values?: Array): Object; - indexOf(value: T, isSorted?: boolean): number; - lastIndexOf(value: T, iteratee?: Function, context?: mixed): number; - sortedIndex(value: T, iteratee?: Function, context?: mixed): number; - findIndex(predicate: (value: T) => boolean, context?: mixed): number; - findLastIndex(predicate: (value: T) => boolean, context?: mixed): number; - range(stop: number, step?: number): Array; - range(): Array; - isEmpty(): boolean; - isEqual(other: Array): boolean; - } - - // Have to use a type with [[call]] instead of function type because otherwise this will cause us to lose type - // information. see: https://github.com/facebook/flow/issues/3781 - declare type WrappedExports = { - [[call]]: - // A type that can be an object or an array (usually 'any') should have both return types. - & ((arg: AnyType) => UnderscoreWrappedObject & UnderscoreWrappedList) - // It's important that UnderscoreWrappedObject, UnderscoreWrappedList takes precedence over UnderscoreWrappedValue - & ((arg: WrappedObj) => UnderscoreWrappedObject) - & ((arg: Array) => UnderscoreWrappedList) - & ((arg: [T]) => UnderscoreWrappedList) - & ((arg: T) => UnderscoreWrappedValue) - } - - declare type Underscore = - & UnderscoreList - & UnderscoreFunctions - & UnderscoreObject - & UnderscoreUtility - & WrappedExports; - - declare module.exports: Underscore; -} diff --git a/flow-typed/npm/url-join_v4.x.x.js b/flow-typed/npm/url-join_v4.x.x.js deleted file mode 100644 index 729df23..0000000 --- a/flow-typed/npm/url-join_v4.x.x.js +++ /dev/null @@ -1,6 +0,0 @@ -// flow-typed signature: 917037b5161c042d4034e58f069bf382 -// flow-typed version: c6154227d1/url-join_v4.x.x/flow_>=v0.25.x <=v0.103.x - -declare module "url-join" { - declare module.exports: (...parts: Array) => string; -} diff --git a/flow-typed/npm/url-join_vx.x.x.js b/flow-typed/npm/url-join_vx.x.x.js deleted file mode 100644 index 7fd984f..0000000 --- a/flow-typed/npm/url-join_vx.x.x.js +++ /dev/null @@ -1,39 +0,0 @@ -// flow-typed signature: 8ad2999f2c52c3b3b863170add87b2db -// flow-typed version: <>/url-join_v4.0.0/flow_v0.100.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'url-join' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'url-join' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'url-join/lib/url-join' { - declare module.exports: any; -} - -declare module 'url-join/test/tests' { - declare module.exports: any; -} - -// Filename aliases -declare module 'url-join/lib/url-join.js' { - declare module.exports: $Exports<'url-join/lib/url-join'>; -} -declare module 'url-join/test/tests.js' { - declare module.exports: $Exports<'url-join/test/tests'>; -} diff --git a/flow-typed/npm/uuid-v4_vx.x.x.js b/flow-typed/npm/uuid-v4_vx.x.x.js deleted file mode 100644 index 1fc90d7..0000000 --- a/flow-typed/npm/uuid-v4_vx.x.x.js +++ /dev/null @@ -1,33 +0,0 @@ -// flow-typed signature: 67ba8ec6097c3a317b648ec8222d5c6b -// flow-typed version: <>/uuid-v4_v0.1.0/flow_v0.100.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'uuid-v4' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'uuid-v4' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ - - -// Filename aliases -declare module 'uuid-v4/index' { - declare module.exports: $Exports<'uuid-v4'>; -} -declare module 'uuid-v4/index.js' { - declare module.exports: $Exports<'uuid-v4'>; -} diff --git a/flow-typed/npm/webpack-md5-hash_vx.x.x.js b/flow-typed/npm/webpack-md5-hash_vx.x.x.js deleted file mode 100644 index 8837f7b..0000000 --- a/flow-typed/npm/webpack-md5-hash_vx.x.x.js +++ /dev/null @@ -1,87 +0,0 @@ -// flow-typed signature: b209203646513cdfcc4eb8c3d8b549bc -// flow-typed version: <>/webpack-md5-hash_v0.0.6/flow_v0.100.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'webpack-md5-hash' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'webpack-md5-hash' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'webpack-md5-hash/example/js/app' { - declare module.exports: any; -} - -declare module 'webpack-md5-hash/example/js/module' { - declare module.exports: any; -} - -declare module 'webpack-md5-hash/example/webpack.config' { - declare module.exports: any; -} - -declare module 'webpack-md5-hash/plugin/webpack_md5_hash' { - declare module.exports: any; -} - -declare module 'webpack-md5-hash/spec/fixtures/entry' { - declare module.exports: any; -} - -declare module 'webpack-md5-hash/spec/fixtures/module1' { - declare module.exports: any; -} - -declare module 'webpack-md5-hash/spec/fixtures/module2' { - declare module.exports: any; -} - -declare module 'webpack-md5-hash/spec/WebpackMD5Spec' { - declare module.exports: any; -} - -// Filename aliases -declare module 'webpack-md5-hash/example/js/app.js' { - declare module.exports: $Exports<'webpack-md5-hash/example/js/app'>; -} -declare module 'webpack-md5-hash/example/js/module.js' { - declare module.exports: $Exports<'webpack-md5-hash/example/js/module'>; -} -declare module 'webpack-md5-hash/example/webpack.config.js' { - declare module.exports: $Exports<'webpack-md5-hash/example/webpack.config'>; -} -declare module 'webpack-md5-hash/index' { - declare module.exports: $Exports<'webpack-md5-hash'>; -} -declare module 'webpack-md5-hash/index.js' { - declare module.exports: $Exports<'webpack-md5-hash'>; -} -declare module 'webpack-md5-hash/plugin/webpack_md5_hash.js' { - declare module.exports: $Exports<'webpack-md5-hash/plugin/webpack_md5_hash'>; -} -declare module 'webpack-md5-hash/spec/fixtures/entry.js' { - declare module.exports: $Exports<'webpack-md5-hash/spec/fixtures/entry'>; -} -declare module 'webpack-md5-hash/spec/fixtures/module1.js' { - declare module.exports: $Exports<'webpack-md5-hash/spec/fixtures/module1'>; -} -declare module 'webpack-md5-hash/spec/fixtures/module2.js' { - declare module.exports: $Exports<'webpack-md5-hash/spec/fixtures/module2'>; -} -declare module 'webpack-md5-hash/spec/WebpackMD5Spec.js' { - declare module.exports: $Exports<'webpack-md5-hash/spec/WebpackMD5Spec'>; -} diff --git a/flow-typed/npm/webpack_v4.x.x.js b/flow-typed/npm/webpack_v4.x.x.js deleted file mode 100644 index 9210103..0000000 --- a/flow-typed/npm/webpack_v4.x.x.js +++ /dev/null @@ -1,603 +0,0 @@ -// flow-typed signature: 6461023a13da7fe15c4d76d0dbb26239 -// flow-typed version: c6154227d1/webpack_v4.x.x/flow_>=v0.71.x <=v0.103.x - -import * as http from 'http'; -import fs from 'fs'; - -declare module 'webpack' { - declare class WebpackError extends Error { - constructor(message: string): WebpackError; - inspect(): string; - } - - declare interface Stats { - hasErrors(): boolean; - hasWarnings(): boolean; - toJson(options?: StatsOptions): any; - toString(options?: StatsOptions & { colors?: boolean }): string; - } - - declare type Callback = (error: WebpackError, stats: Stats) => void; - declare type WatchHandler = (error: WebpackError, stats: Stats) => void; - - declare type Watching = { - close(): void, - invalidate(): void, - }; - - declare type WebpackCompiler = { - run(callback: Callback): void, - watch(options: WatchOptions, handler: WatchHandler): Watching, - }; - - declare type WebpackMultiCompiler = { - run(callback: Callback): void, - watch(options: WatchOptions, handler: WatchHandler): Watching, - }; - - declare class WebpackCompilation { - constructor(compiler: WebpackCompiler): WebpackCompilation; - // <...> - } - - declare class WebpackStats { - constructor(compilation: WebpackCompilation): WebpackStats; - // <...> - } - - declare type NonEmptyArrayOfUniqueStringValues = Array; - - declare type EntryObject = { - [k: string]: string | NonEmptyArrayOfUniqueStringValues, - }; - - declare type EntryItem = string | NonEmptyArrayOfUniqueStringValues; - - declare type EntryStatic = EntryObject | EntryItem; - - declare type EntryDynamic = () => EntryStatic | Promise; - - declare type Entry = EntryDynamic | EntryStatic; - - declare type ArrayOfStringValues = Array; - - declare type ExternalItem = - | string - | { - [k: string]: - | string - | { - [k: string]: any, - } - | ArrayOfStringValues - | boolean, - } - | RegExp; - - declare type Externals = - | (( - context: string, - request: string, - callback: (err?: Error, result?: string) => void - ) => void) - | ExternalItem - | Array< - | (( - context: string, - request: string, - callback: (err?: Error, result?: string) => void - ) => void) - | ExternalItem - >; - - declare type RuleSetCondition = - | RegExp - | string - | ((value: string) => boolean) - | RuleSetConditions - | { - and?: RuleSetConditions, - exclude?: RuleSetConditionOrConditions, - include?: RuleSetConditionOrConditions, - not?: RuleSetConditions, - or?: RuleSetConditions, - test?: RuleSetConditionOrConditions, - }; - - declare type RuleSetConditions = Array; - - declare type RuleSetConditionOrConditions = - | RuleSetCondition - | RuleSetConditions; - - declare type RuleSetLoader = string; - - declare type RuleSetQuery = { [k: string]: any } | string; - - declare type RuleSetUseItem = - | RuleSetLoader - | Function - | { - ident?: string, - loader?: RuleSetLoader, - options?: RuleSetQuery, - query?: RuleSetQuery, - }; - - declare type RuleSetUse = RuleSetUseItem | Function | Array; - - declare type RuleSetRule = { - compiler?: RuleSetConditionOrConditions, - enforce?: 'pre' | 'post', - exclude?: RuleSetConditionOrConditions, - include?: RuleSetConditionOrConditions, - issuer?: RuleSetConditionOrConditions, - loader?: RuleSetLoader | RuleSetUse, - loaders?: RuleSetUse, - oneOf?: RuleSetRules, - options?: RuleSetQuery, - parser?: { - [k: string]: any, - }, - query?: RuleSetQuery, - resolve?: ResolveOptions, - resource?: RuleSetConditionOrConditions, - resourceQuery?: RuleSetConditionOrConditions, - rules?: RuleSetRules, - sideEffects?: boolean, - test?: RuleSetConditionOrConditions, - type?: - | 'javascript/auto' - | 'javascript/dynamic' - | 'javascript/esm' - | 'json' - | 'webassembly/experimental', - use?: RuleSetUse, - }; - - declare type RuleSetRules = Array; - - declare type ModuleOptions = { - defaultRules?: RuleSetRules, - exprContextCritical?: boolean, - exprContextRecursive?: boolean, - exprContextRegExp?: boolean | RegExp, - exprContextRequest?: string, - noParse?: Array | RegExp | Function | Array | string, - rules?: RuleSetRules, - strictExportPresence?: boolean, - strictThisContextOnImports?: boolean, - unknownContextCritical?: boolean, - unknownContextRecursive?: boolean, - unknownContextRegExp?: boolean | RegExp, - unknownContextRequest?: string, - unsafeCache?: boolean | Function, - wrappedContextCritical?: boolean, - wrappedContextRecursive?: boolean, - wrappedContextRegExp?: RegExp, - }; - - declare type NodeOptions = { - Buffer?: false | true | 'mock', - __dirname?: false | true | 'mock', - __filename?: false | true | 'mock', - console?: false | true | 'mock', - global?: boolean, - process?: false | true | 'mock', - [k: string]: false | true | 'mock' | 'empty', - }; - - declare type WebpackPluginFunction = (compiler: WebpackCompiler) => void; - - declare type WebpackPluginInstance = { - apply: WebpackPluginFunction, - [k: string]: any, - }; - - declare type OptimizationSplitChunksOptions = { - automaticNameDelimiter?: string, - cacheGroups?: { - [k: string]: - | false - | Function - | string - | RegExp - | { - automaticNameDelimiter?: string, - automaticNamePrefix?: string, - chunks?: ('initial' | 'async' | 'all') | Function, - enforce?: boolean, - filename?: string, - maxAsyncRequests?: number, - maxInitialRequests?: number, - maxSize?: number, - minChunks?: number, - minSize?: number, - name?: boolean | Function | string, - priority?: number, - reuseExistingChunk?: boolean, - test?: Function | string | RegExp, - }, - }, - chunks?: ('initial' | 'async' | 'all') | Function, - fallbackCacheGroup?: { - automaticNameDelimiter?: string, - maxSize?: number, - minSize?: number, - }, - filename?: string, - hidePathInfo?: boolean, - maxAsyncRequests?: number, - maxInitialRequests?: number, - maxSize?: number, - minChunks?: number, - minSize?: number, - name?: boolean | Function | string, - }; - - declare type OptimizationOptions = { - checkWasmTypes?: boolean, - chunkIds?: 'natural' | 'named' | 'size' | 'total-size' | false, - concatenateModules?: boolean, - flagIncludedChunks?: boolean, - hashedModuleIds?: boolean, - mangleWasmImports?: boolean, - mergeDuplicateChunks?: boolean, - minimize?: boolean, - minimizer?: Array, - moduleIds?: 'natural' | 'named' | 'hashed' | 'size' | 'total-size' | false, - namedChunks?: boolean, - namedModules?: boolean, - noEmitOnErrors?: boolean, - nodeEnv?: false | string, - occurrenceOrder?: boolean, - portableRecords?: boolean, - providedExports?: boolean, - removeAvailableModules?: boolean, - removeEmptyChunks?: boolean, - runtimeChunk?: - | boolean - | ('single' | 'multiple') - | { - name?: string | Function, - }, - sideEffects?: boolean, - splitChunks?: false | OptimizationSplitChunksOptions, - usedExports?: boolean, - }; - - declare type LibraryCustomUmdObject = { - amd?: string, - commonjs?: string, - root?: string | ArrayOfStringValues, - }; - - declare type OutputOptions = { - auxiliaryComment?: - | string - | { - amd?: string, - commonjs?: string, - commonjs2?: string, - root?: string, - }, - chunkCallbackName?: string, - chunkFilename?: string, - chunkLoadTimeout?: number, - crossOriginLoading?: false | 'anonymous' | 'use-credentials', - devtoolFallbackModuleFilenameTemplate?: string | Function, - devtoolLineToLine?: boolean | { [k: string]: any }, - devtoolModuleFilenameTemplate?: string | Function, - devtoolNamespace?: string, - filename?: string | Function, - globalObject?: string, - hashDigest?: string, - hashDigestLength?: number, - hashFunction?: string | Function, - hashSalt?: string, - hotUpdateChunkFilename?: string | Function, - hotUpdateFunction?: string, - hotUpdateMainFilename?: string | Function, - jsonpFunction?: string, - jsonpScriptType?: false | 'text/javascript' | 'module', - library?: string | Array | LibraryCustomUmdObject, - libraryExport?: string | ArrayOfStringValues, - libraryTarget?: - | 'var' - | 'assign' - | 'this' - | 'window' - | 'self' - | 'global' - | 'commonjs' - | 'commonjs2' - | 'commonjs-module' - | 'amd' - | 'amd-require' - | 'umd' - | 'umd2' - | 'jsonp', - path?: string, - pathinfo?: boolean, - publicPath?: string | Function, - sourceMapFilename?: string, - sourcePrefix?: string, - strictModuleExceptionHandling?: boolean, - umdNamedDefine?: boolean, - webassemblyModuleFilename?: string, - }; - - declare type PerformanceOptions = { - assetFilter?: Function, - hints?: false | 'warning' | 'error', - maxAssetSize?: number, - maxEntrypointSize?: number, - }; - - declare type ArrayOfStringOrStringArrayValues = Array>; - - declare type ResolveOptions = { - alias?: - | { [k: string]: string } - | Array<{ - alias?: string, - name?: string, - onlyModule?: boolean, - }>, - aliasFields?: ArrayOfStringOrStringArrayValues, - cachePredicate?: Function, - cacheWithContext?: boolean, - concord?: boolean, - descriptionFiles?: ArrayOfStringValues, - enforceExtension?: boolean, - enforceModuleExtension?: boolean, - extensions?: ArrayOfStringValues, - fileSystem?: { [k: string]: any }, - mainFields?: ArrayOfStringOrStringArrayValues, - mainFiles?: ArrayOfStringValues, - moduleExtensions?: ArrayOfStringValues, - modules?: ArrayOfStringValues, - plugins?: Array, - resolver?: { [k: string]: any }, - symlinks?: boolean, - unsafeCache?: boolean | { [k: string]: any }, - useSyncFileSystemCalls?: boolean, - }; - - declare type FilterItemTypes = RegExp | string | Function; - - declare type FilterTypes = FilterItemTypes | Array; - - declare type StatsOptions = - | boolean - | ('none' | 'errors-only' | 'minimal' | 'normal' | 'detailed' | 'verbose') - | { - all?: boolean, - assets?: boolean, - assetsSort?: string, - builtAt?: boolean, - cached?: boolean, - cachedAssets?: boolean, - children?: boolean, - chunkGroups?: boolean, - chunkModules?: boolean, - chunkOrigins?: boolean, - chunks?: boolean, - chunksSort?: string, - colors?: - | boolean - | { - bold?: string, - cyan?: string, - green?: string, - magenta?: string, - red?: string, - yellow?: string, - }, - context?: string, - depth?: boolean, - entrypoints?: boolean, - env?: boolean, - errorDetails?: boolean, - errors?: boolean, - exclude?: FilterTypes | boolean, - excludeAssets?: FilterTypes, - excludeModules?: FilterTypes | boolean, - hash?: boolean, - maxModules?: number, - moduleAssets?: boolean, - moduleTrace?: boolean, - modules?: boolean, - modulesSort?: string, - nestedModules?: boolean, - optimizationBailout?: boolean, - outputPath?: boolean, - performance?: boolean, - providedExports?: boolean, - publicPath?: boolean, - reasons?: boolean, - source?: boolean, - timings?: boolean, - usedExports?: boolean, - version?: boolean, - warnings?: boolean, - warningsFilter?: FilterTypes, - }; - - declare type WatchOptions = { - aggregateTimeout?: number, - ignored?: { [k: string]: any }, - poll?: boolean | number, - stdin?: boolean, - }; - - declare type WebpackOptions = { - amd?: { [k: string]: any }, - bail?: boolean, - cache?: boolean | { [k: string]: any }, - context?: string, - dependencies?: Array, - devServer?: { - after?: (app: any, server: http.Server) => void, - allowedHosts?: string[], - before?: (app: any, server: http.Server) => void, - bonjour?: boolean, - clientLogLevel?: 'none' | 'info' | 'error' | 'warning', - compress?: boolean, - contentBase?: false | string | string[] | number, - disableHostCheck?: boolean, - filename?: string, - headers?: { [key: string]: string }, - historyApiFallback?: - | boolean - | { - rewrites?: Array<{ from: string, to: string }>, - disableDotRule?: boolean, - }, - host?: string, - hot?: boolean, - hotOnly?: boolean, - https?: - | boolean - | { - key: string, - cert: string, - ca?: string, - }, - index?: string, - inline?: boolean, - lazy?: boolean, - noInfo?: boolean, - open?: boolean | string, - openPage?: string, - overlay?: - | boolean - | { - errors?: boolean, - warnings?: boolean, - }, - pfx?: string, - pfxPassphrase?: string, - port?: number, - proxy?: Object | Array, - public?: string, - publicPath?: string, - quiet?: boolean, - socket?: string, - staticOptions?: { - dotfiles?: string, - etag?: boolean, - extensions?: false | string[], - fallthrough?: boolean, - immutable?: boolean, - index?: false | string, - lastModified?: boolean, - maxAge?: number, - redirect?: boolean, - setHeaders?: ( - res: http.OutgoingMessage, - path: string, - stat: fs.Stat - ) => void, - }, - stats?: StatsOptions, - useLocalIp?: boolean, - watchContentBase?: boolean, - watchOptions?: WatchOptions, - publicPath?: string, - }, - devtool?: - | '@cheap-eval-source-map' - | '@cheap-module-eval-source-map' - | '@cheap-module-source-map' - | '@cheap-source-map' - | '@eval-source-map' - | '@eval' - | '@hidden-source-map' - | '@inline-source-map' - | '@nosources-source-map' - | '@source-map' - | '#@cheap-eval-source-map' - | '#@cheap-module-eval-source-map' - | '#@cheap-module-source-map' - | '#@cheap-source-map' - | '#@eval-source-map' - | '#@eval' - | '#@hidden-source-map' - | '#@inline-source-map' - | '#@nosources-source-map' - | '#@source-map' - | '#cheap-eval-source-map' - | '#cheap-module-eval-source-map' - | '#cheap-module-source-map' - | '#cheap-source-map' - | '#eval-source-map' - | '#eval' - | '#hidden-source-map' - | '#inline-source-map' - | '#nosources-source-map' - | '#source-map' - | 'cheap-eval-source-map' - | 'cheap-module-eval-source-map' - | 'cheap-module-source-map' - | 'cheap-source-map' - | 'eval-source-map' - | 'eval' - | 'hidden-source-map' - | 'inline-source-map' - | 'nosources-source-map' - | 'source-map' - | false, - entry?: Entry, - externals?: Externals, - loader?: { [k: string]: any }, - mode?: 'development' | 'production' | 'none', - module?: ModuleOptions, - name?: string, - node?: false | NodeOptions, - optimization?: OptimizationOptions, - output?: OutputOptions, - parallelism?: number, - performance?: false | PerformanceOptions, - plugins?: Array, - profile?: boolean, - recordsInputPath?: string, - recordsOutputPath?: string, - recordsPath?: string, - resolve?: ResolveOptions, - resolveLoader?: ResolveOptions, - serve?: { [k: string]: any }, - stats?: StatsOptions, - target?: - | 'web' - | 'webworker' - | 'node' - | 'async-node' - | 'node-webkit' - | 'electron-main' - | 'electron-renderer' - | ((compiler: WebpackCompiler) => void), - watch?: boolean, - watchOptions?: WatchOptions, - }; - - declare class EnvironmentPlugin { - constructor(env: { [string]: mixed } | string[]): $ElementType< - $NonMaybeType<$PropertyType>, - number - >; - } - - declare function builder( - options: WebpackOptions, - callback?: Callback - ): WebpackCompiler; - declare function builder( - options: WebpackOptions[], - callback?: Callback - ): WebpackMultiCompiler; - - declare module.exports: typeof builder & { - EnvironmentPlugin: typeof EnvironmentPlugin, - }; -} diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..2a16112 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,8 @@ +module.exports = { + preset: 'ts-jest', + testEnvironment: 'node', + // testRegex: '(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$', + moduleFileExtensions: ['ts', 'js', 'json'], + setupFilesAfterEnv: ['./test/testHelper.ts'], + resetMocks: true +}; diff --git a/lib/index.d.ts b/lib/index.d.ts new file mode 100644 index 0000000..625a1af --- /dev/null +++ b/lib/index.d.ts @@ -0,0 +1,8 @@ +import AmqpClient from './protocols/amqpClient'; +import AmqpStreamClient from './protocols/amqpStreamClient'; +import MqttClient from './protocols/mqttClient'; +import MqttStreamClient from './protocols/mqttStreamClient'; +import StompClient from './protocols/stompClient'; +import StompStreamClient from './protocols/stompStreamClient'; +import { ISpaceBunnyParams } from './spacebunny'; +export { AmqpClient as Client, AmqpClient, MqttClient, StompClient, AmqpStreamClient, AmqpStreamClient as StreamClient, MqttStreamClient, StompStreamClient, ISpaceBunnyParams }; diff --git a/lib/indexWeb.d.ts b/lib/indexWeb.d.ts new file mode 100644 index 0000000..db79b19 --- /dev/null +++ b/lib/indexWeb.d.ts @@ -0,0 +1,3 @@ +import StompClient from './protocols/stompClient'; +import StompStreamClient from './protocols/stompStreamClient'; +export { StompClient as Client, StompClient, StompStreamClient as StreamClient, StompStreamClient }; diff --git a/lib/messages/amqpMessage.d.ts b/lib/messages/amqpMessage.d.ts new file mode 100644 index 0000000..6b7a2a5 --- /dev/null +++ b/lib/messages/amqpMessage.d.ts @@ -0,0 +1,50 @@ +import * as amqp from 'amqplib'; +import { ISpaceBunnySubscribeOptions } from '../spacebunny'; +declare class AmqpMessage { + private message; + private content; + private channel; + private senderId; + private channelName; + private receiverId; + private discardMine; + private discardFromApi; + private static FROM_API_HEADER; + /** + * @constructor + * @param {Object} message - the message received from the channel + * @param {String} receiverId - the receiver id + * @param {Object} opts - subscription options + */ + constructor(opts: { + message: amqp.ConsumeMessage | null; + receiverId: string; + channel: amqp.Channel | amqp.ConfirmChannel; + subscriptionOpts: ISpaceBunnySubscribeOptions; + }); + /** + * Check if a message should be accepted of rejected + * + * @return Boolean - true if should be not considered, false otherwise + */ + blackListed: () => boolean; + /** + * Check if a message comes from API + * Check if it contains 'x-from-sb-api' header + * + * @return Boolean - true if it comes from API, false otherwise + */ + fromApi: () => boolean; + ack: (opts?: { + allUpTo?: boolean; + }) => void; + nack: (opts?: { + allUpTo?: boolean; + requeue?: boolean; + }) => void; + getContent: () => Record | string; + getProperties: () => amqp.MessageProperties; + getFields: () => amqp.MessageFields; + getChannelName: () => string; +} +export default AmqpMessage; diff --git a/lib/messages/stompMessage.d.ts b/lib/messages/stompMessage.d.ts new file mode 100644 index 0000000..7a44c7b --- /dev/null +++ b/lib/messages/stompMessage.d.ts @@ -0,0 +1,44 @@ +/** +* A wrapper for the message object +* @module Message +*/ +import { IMessage } from '@stomp/stompjs'; +import { ISpaceBunnySubscribeOptions } from '../spacebunny'; +declare class StompMessage { + private message; + private content; + private headers; + private senderId; + private channelName; + private receiverId; + private discardMine; + private discardFromApi; + private static FROM_API_HEADER; + /** + * @constructor + * @param {Object} opts - subscription options + */ + constructor(opts: { + message: IMessage | null; + receiverId: string; + subscriptionOpts: ISpaceBunnySubscribeOptions; + }); + /** + * Check if a message should be accepted of rejected + * + * @return Boolean - true if should be not considered, false otherwise + */ + blackListed: () => boolean; + /** + * Check if a message comes from API + * Check if it contains 'x-from-sb-api' header + * + * @return Boolean - true if it comes from API, false otherwise + */ + private fromApi; + ack: () => void; + nack: () => void; + getChannelName: () => string; + getContent: () => Record | string; +} +export default StompMessage; diff --git a/lib/protocols/amqpClient.d.ts b/lib/protocols/amqpClient.d.ts new file mode 100644 index 0000000..f3f1582 --- /dev/null +++ b/lib/protocols/amqpClient.d.ts @@ -0,0 +1,128 @@ +/** + * A module that exports an AmqpClient client + * which inherits from the SpaceBunny base client + * @module AmqpClient + */ +import * as amqp from 'amqplib'; +import SpaceBunny, { ISpaceBunnyParams, ISpaceBunnySubscribeOptions } from '../spacebunny'; +export interface IAmqpConsumeOptions extends ISpaceBunnySubscribeOptions { + allUpTo?: boolean; + ack?: 'auto' | 'manual' | void; + requeue?: boolean; +} +export interface IRoutingKey { + channel?: string; + routingKey?: string; + topic?: string; + deviceId?: string; +} +export interface IAmqpPublishOptions { + routingKey?: string; + topic?: string; + withConfirm?: boolean; +} +export declare type IAmqpCallback = (message: Record | string, fields?: amqp.MessageFields, properties?: amqp.MessageProperties) => Promise | void; +export declare type IAmqpListener = { + callback: IAmqpCallback; + opts?: IAmqpConsumeOptions; + consumerTag?: string; +}; +declare class AmqpClient extends SpaceBunny { + private amqpConnection; + private amqpChannels; + private defaultConnectionOpts; + private ackTypes; + private connected; + private amqpListeners; + /** + * @constructor + * @param {Object} opts - options must contain Device-Key or connection options + * (deviceId and secret) for devices. + */ + constructor(opts?: ISpaceBunnyParams); + /** + * Subscribe to input channel + * + * @param {function} callback - function called every time a message is received + * passing the current message as argument + * @param {Object} options - subscription options + * @return promise containing the result of the subscription + */ + onMessage: (callback: IAmqpCallback, opts?: IAmqpConsumeOptions) => Promise; + /** + * Publish a message on a specific channel + * + * @param {String} channel - channel name on which you want to publish a message + * @param {Object} message - the message payload + * @param {Object} opts - publication options + * @return promise containing the result of the subscription + */ + publish: (channel: string, message: Record, opts?: IAmqpPublishOptions, publishOpts?: amqp.Options.Publish) => Promise; + /** + * Destroy the connection between the amqp client and broker + * + * @return a promise containing the result of the operation + */ + disconnect: () => Promise; + /** + * Establish an amqp connection with the broker + * using configurations retrieved from the endpoint. + * If the connnection already exists, returns the current connnection + * + * @return a promise containing current connection + */ + connect: (opts?: amqp.Options.Connect, socketOptions?: Record) => Promise; + isConnected: () => boolean; + removeAmqpListener: (name: string) => Promise; + /** + * Unsubscribe client from a topic + * + * @param {String} consumerTag - Consumer Tag + * @return a promise containing the result of the operation + */ + protected unsubscribe: (consumerTag: string) => Promise; + /** + * Creates a channel on current connection + * + * @private + * @param {String} channelName - indicates the channel name + * @param {Object} opts - channel options + * @return a promise containing the current channel + */ + protected createChannel: (channel: string, opts?: { + withConfirm?: boolean; + }) => Promise; + /** + * Close a channel on current connection + * + * @private + * @param {String} channelName - indicates if the channel is input or output + * @return a promise containing the result of the operation + */ + protected closeChannel: (channelName: string, opts?: { + withConfirm?: boolean; + }) => Promise; + protected consumeCallback: (ch: amqp.Channel | amqp.ConfirmChannel, callback: IAmqpCallback, opts: IAmqpConsumeOptions, message: amqp.ConsumeMessage) => void; + private clearConsumers; + private addAmqpListener; + private bindAmqpListeners; + private bindAmqpListener; + /** + * Generate the routing key for a specific channel + * + * @private + * @param {Object} params - params + * @return a string that represents the routing key for that channel + */ + private routingKeyFor; + /** + * Check if the SDK have to automatically ack messages + * + * @private + * @param {String} ack - the ack type, it should be 'manual' or 'auto' + * @return boolean - true if messages have to be autoacked, false otherwise + */ + protected autoAck: (ack: string | void) => boolean; + private publishCachedMessages; +} +export default AmqpClient; diff --git a/lib/protocols/amqpStreamClient.d.ts b/lib/protocols/amqpStreamClient.d.ts new file mode 100644 index 0000000..561d496 --- /dev/null +++ b/lib/protocols/amqpStreamClient.d.ts @@ -0,0 +1,69 @@ +/** + * A module that exports an AmqpStreamClient client + * which inherits from the Amqp base client + * @module AmqpStreamClient + */ +import { ILiveStreamHook, ISpaceBunnyParams } from '../spacebunny'; +import AmqpClient, { IAmqpCallback, IAmqpConsumeOptions } from './amqpClient'; +export interface IAmqpLiveStreamHook extends ILiveStreamHook { + callback: IAmqpCallback; +} +export declare type IAmqpStreamListener = { + streamHook: IAmqpLiveStreamHook; + opts?: IAmqpConsumeOptions; + consumerTag?: string; +}; +declare class AmqpStreamClient extends AmqpClient { + private defaultStreamRoutingKey; + private streamQueueArguments; + private amqpStreamListeners; + /** + * @constructor + * @param {ISpaceBunnyParams} opts - options must contain client and secret for access keys + */ + constructor(opts?: ISpaceBunnyParams); + /** + * Subscribe to multiple stream hooks + * + * @param {Array} streamHooks - Array of objects. Each objects containing + * { name: {string}, deviceId: {string}, channel: {string}, callback: {func} } + * @param {Object} options - subscription options + * @return promise containing the result of multiple subscriptions + */ + streamFrom: (streamHooks?: IAmqpLiveStreamHook | Array, opts?: IAmqpConsumeOptions) => Promise>; + removeAmqpStreamListener: (name: string) => Promise; + private clearStreamConsumers; + private addAmqpStreamListener; + private bindAmqpStreamListeners; + /** + * Start consuming messages from a device's channel + * It generates an auto delete queue from which consume + * and binds it to the channel exchange + * + * @private + * @param {Object} streamHook - Object containit hook info + * { stream: {String}, callback: {func}} + * or + * { deviceId: {String}, channel: {String}, callback: {func}} + * @param {Object} opts - connection options + * @return a promise containing current connection + */ + private bindAmqpStreamListener; + /** + * Generate the exchange name for a device's channel + * + * @private + * @param {String} streamName - stream name from which you want to stream + * @return a string that represents the stream queue + */ + private cachedStreamQueue; + /** + * Generate the exchange name for a device's channel + * + * @private + * @param {Object} opts - opts + * @return a string that represents the rounting key + */ + private streamRoutingKeyFor; +} +export default AmqpStreamClient; diff --git a/lib/protocols/mqttClient.d.ts b/lib/protocols/mqttClient.d.ts new file mode 100644 index 0000000..2ac1ef3 --- /dev/null +++ b/lib/protocols/mqttClient.d.ts @@ -0,0 +1,88 @@ +/** + * A module that exports an MqttClient client + * which inherits from the SpaceBunny base client + * @module MqttClient + */ +import { AsyncMqttClient, IClientOptions, IClientPublishOptions, IClientSubscribeOptions, QoS } from 'async-mqtt'; +import SpaceBunny, { ISpaceBunnyParams } from '../spacebunny'; +export declare type IMqttCallback = (topic?: string, message?: any) => Promise | void; +export declare type IMqttListener = { + callback: IMqttCallback; + topics?: string[]; +}; +export declare type IMqttConnectionOptions = { + qos?: QoS; + clean?: boolean; + reconnectPeriod?: number; + keepalive?: number; + connectTimeout?: number; +}; +declare class MqttClient extends SpaceBunny { + protected mqttClient: AsyncMqttClient; + protected mqttListeners: { + [name: string]: IMqttListener; + }; + protected topics: string[]; + protected connectionOpts: IMqttConnectionOptions; + /** + * @constructor + * @param {Object} opts - options must contain Device-Key or connection options + * (deviceId and secret) for devices. + */ + constructor(opts?: ISpaceBunnyParams); + /** + * Subscribe to input channel + * + * @param {function} callback - function called every time a message is received + * passing the current message as argument + * @param {Object} options - subscription options + * @return promise containing the result of the subscription + */ + onMessage: (callback: IMqttCallback, opts?: IClientSubscribeOptions) => Promise; + /** + * Publish a message on a specific channel + * + * @param {String} channel - channel name on which you want to publish a message + * @param {Object/String} message - the message payload + * @param {Object} opts - publication options + * @return a promise containing the result of the operation + */ + publish: (channel: string, message: Record, opts?: IClientPublishOptions) => Promise; + /** + * Destroy the connection between the mqtt client and broker + * + * @return a promise containing the result of the operation + */ + disconnect(): Promise; + /** + * Establish an mqtt connection with the broker. + * If a connection already exists, returns the current connection + * + * @param {Object} opts - connection options + * @return a promise containing current connection + */ + connect: (opts?: IClientOptions) => Promise; + isConnected: () => boolean; + protected addMqttListener: (name: string, callback: IMqttCallback, topics?: string | string[]) => void; + protected removeMqttListener: (name: string) => void; + protected subscribe: (topics: string | string[], opts?: IClientSubscribeOptions) => Promise; + /** + * Unsubscribe client from a list of topics + * + * @param {Object} topics - list of topics { topic: qos, ... } + * e.g. { topic_1: 1, topic_2: 0 } + * @return a promise containing the result of the operation + */ + protected unsubscribe(topics?: string | string[]): Promise; + /** + * Generate the topic for a specific channel + * + * @private + * @param {String} deviceId - device id + * @param {String} channel - channel name on which you want to publish a message + * @return a string that represents the topic name for that channel + */ + private topicFor; + private publishCachedMessages; +} +export default MqttClient; diff --git a/lib/protocols/mqttStreamClient.d.ts b/lib/protocols/mqttStreamClient.d.ts new file mode 100644 index 0000000..27e60f6 --- /dev/null +++ b/lib/protocols/mqttStreamClient.d.ts @@ -0,0 +1,62 @@ +/** + * A module that exports an MqttStreamClient client + * which inherits from the Mqtt base client + * @module MqttStreamClient + */ +import { IClientSubscribeOptions, QoS } from 'async-mqtt'; +import { ILiveStreamHook } from '../spacebunny'; +import MqttClient from './mqttClient'; +export declare type IMqttCallback = (topic?: string, message?: any) => Promise | void; +export interface IMqttLiveStreamHook extends ILiveStreamHook { + callback: IMqttCallback; + qos?: QoS; +} +declare class MqttStreamClient extends MqttClient { + private defaultStreamRoutingKey; + /** + * @constructor + * @param {Object} opts - options must contain client and secret for access keys + */ + constructor(opts?: any); + /** + * Subscribe to multiple stream hooks + * + * @param {Array} streamHooks - Array of objects. Each objects containing + * { deviceId: {string}, channel: {string}, callback: {func} } + * @param {Object} options - subscription options + * @return promise containing the result of multiple subscriptions + */ + streamFrom: (streamHooks?: IMqttLiveStreamHook | Array, opts?: IClientSubscribeOptions) => Promise>; + /** + * Start consuming messages from a device's channel + * It generates an auto delete queue from which consume + * and binds it to the channel exchange + * + * @private + * @param {Object} streamHook - Object containit hook info + * { stream: {String}, callback: {func}} + * or + * { deviceId: {String}, channel: {String}, callback: {func}} + * @param {Object} opts - connection options + * @return a promise containing current connection + */ + addStreamHook: (streamHook: IMqttLiveStreamHook, opts?: IClientSubscribeOptions) => Promise; + /** + * Generate the topic for a specific channel + * + * @private + * @param {String} deviceId - deviceId from which you want to stream + * @param {String} channel - channel name from which you want to stream + * @return a string that represents the topic name for that channel + */ + private streamChannelTopicFor; + /** + * Generate the topic for a specific stream + * + * @private + * @param {String} streamName - stream name from which you want to stream + * @return a string that represents the topic name for that stream + */ + streamTopicFor: (stream?: string) => string; +} +export default MqttStreamClient; diff --git a/lib/protocols/stompClient.d.ts b/lib/protocols/stompClient.d.ts new file mode 100644 index 0000000..9d0e997 --- /dev/null +++ b/lib/protocols/stompClient.d.ts @@ -0,0 +1,113 @@ +/** + * A module that exports an StompClient client + * which inherits from the SpaceBunny base client + * @module StompClient + */ +import Stomp, { Client, IMessage, StompHeaders } from '@stomp/stompjs'; +import StompMessage from '../messages/stompMessage'; +import SpaceBunny, { ISpaceBunnySubscribeOptions } from '../spacebunny'; +export interface IStompPublishOptions { + routingKey?: string; + topic?: string; +} +export interface IStompDestinationhOptions extends IStompPublishOptions { + type?: string; + channel?: string; +} +export interface IStompConsumeOptions extends ISpaceBunnySubscribeOptions { + ack?: 'client'; +} +export declare type IStompCallback = (message: StompMessage) => Promise | void; +export declare type IStompListener = { + callback: IStompCallback; + topic: string; + opts?: IStompConsumeOptions; + subscription?: Stomp.StompSubscription; +}; +declare class StompClient extends SpaceBunny { + protected stompClient: Stomp.Client; + protected stompListeners: { + [name: string]: IStompListener; + }; + protected connectionHeaders: StompHeaders; + protected connectionOpts: any; + protected existingQueuePrefix: string; + protected defaultResource: string; + protected ackTypes: string[]; + protected wsEndpoint: string; + protected topics: string[]; + /** + * @constructor + * @param {Object} opts - options must contain Device-Key or connection options + * (deviceId and secret) for devices. + */ + constructor(opts?: any); + /** + * Subscribe to input channel + * + * @param {function} callback - function called every time a message is received + * passing the current message as argument + * @param {Object} options - subscription options + * @return promise containing the result of the subscription + */ + onMessage: (callback: IStompCallback, opts?: IStompConsumeOptions) => Promise; + /** + * Publish a message on a specific channel + * + * @param {String} channel - channel name on which you want to publish a message + * @param {Object} message - the message payload + * @param {Object} opts - publication options + * @return a promise containing the result of the operation + */ + publish: (channel: string, message: Record, opts?: IStompPublishOptions) => Promise; + /** + * Destroy the connection between the stomp client and broker + * + * @return a promise containing the result of the operation + */ + disconnect: () => Promise; + /** + * Establish an stomp connection with the broker. + * If a connection already exists, returns the current connection + * + * @param {Object} opts - connection options + * @return a promise containing current connection + */ + connect: (opts?: Stomp.StompConfig) => Promise; + isConnected: () => boolean; + removeStompListener: (name: string) => void; + protected consumeCallback: (callback: IStompCallback, opts: IStompConsumeOptions, message: IMessage) => void; + private addStompListener; + private bindStompListners; + private bindStompListner; + /** + * Generate the subscription string for a specific channel + * + * @private + * @param {String} type - resource type on which subscribe or publish [exchange/queue] + * @param {String} channel - channel name on which you want to publish a message + * @return a string that represents the topic name for that channel + */ + subcriptionFor: (type: string, channel: string) => string; + /** + * Generate the destination string for a specific channel + * + * @private + * @param {String} type - resource type on which subscribe or publish [exchange/queue] + * @param {String} channel - channel name on which you want to publish a message + * @return a string that represents the topic name for that channel + */ + destinationFor: (params?: IStompDestinationhOptions) => string; + /** + * Check if the SDK have to automatically ack messages + * By default STOMP messages are acked by the server + * they need to be acked if client subscribes with { ack: 'client' } option + * + * @private + * @param {String} ack - the ack type, it should be 'client' or null + * @return boolean - true if messages have to be autoacked, false otherwise + */ + protected autoAck: (ack: string) => boolean; + private publishCachedMessages; +} +export default StompClient; diff --git a/lib/protocols/stompStreamClient.d.ts b/lib/protocols/stompStreamClient.d.ts new file mode 100644 index 0000000..682a9b0 --- /dev/null +++ b/lib/protocols/stompStreamClient.d.ts @@ -0,0 +1,99 @@ +/** + * A module that exports an StompStreamClient client + * which inherits from the Stomp base client + * @module StompStreamClient + */ +import Stomp from '@stomp/stompjs'; +import StompMessage from '../messages/stompMessage'; +import { ILiveStreamHook } from '../spacebunny'; +import StompClient, { IStompConsumeOptions } from './stompClient'; +export declare type IStompCallback = (message: StompMessage) => Promise; +export interface IStompLiveStreamHook extends ILiveStreamHook { + callback: IStompCallback; + ack?: 'client'; +} +export interface IStompLiveStreamDestination extends ILiveStreamHook { + type?: string; +} +export declare type IStompStreamListener = { + streamHook: IStompLiveStreamHook; + opts?: IStompConsumeOptions; + subscription?: Stomp.StompSubscription; +}; +declare class StompStreamClient extends StompClient { + private defaultPattern; + private stompStreamListeners; + /** + * @constructor + * @param {Object} opts - options must contain client and secret for access keys + */ + constructor(opts?: any); + /** + * Subscribe to multiple stream hooks + * + * @param {Array} streamHooks - Array of objects. Each objects containing + * { deviceId: {string}, channel: {string}, callback: {func} } + * @param {Object} options - subscription options + * @return promise containing the result of multiple subscriptions + */ + streamFrom: (streamHooks?: IStompLiveStreamHook | Array, opts?: any) => Promise>; + removeStompStreamListener: (name: string) => Promise; + /** + * Destroy the connection between the stomp client and broker + * + * @return a promise containing the result of the operation + */ + disconnect: () => Promise; + /** + * Unsubscribe client from a topic + * + * @param {String} subscriptionId - subscription ID + * @return a promise containing the result of the operation + */ + private unsubscribe; + private addStompStreamListener; + private bindStompStreamListeners; + /** + * Start consuming messages from a device's channel + * It generates an auto delete queue from which consume + * and binds it to the channel exchange + * + * @private + * @param {Object} streamHook - Object containit hook info + * { deviceId: {String}, channel: {String}, callback: {func}} + * @param {Object} opts - connection options + * @return a promise containing current connection + */ + bindStompStreamListener: (name: string) => Promise; + /** + * Generate the subscription string for a specific channel + * + * @private + * @param {String} deviceId - deviceId from which you want to stream from + * @param {String} channel - channel name from which you want to stream from + * @param {String} type - resource type on which subscribe or publish [exchange/queue] + * @param {String} routingKey - binding pattern + * @return a string that represents the topic name for that channel + */ + streamChannelTopicFor: (params?: IStompLiveStreamDestination) => string; + /** + * Generate the subscription string for cached live streams + * + * @private + * @param {String} stream - stream name from which you want to stream + * @param {String} type - resource type on which subscribe or publish [exchange/queue] + * @return a string that represents the topic name for that channel + */ + private cachedStreamTopicFor; + /** + * Generate the subscription for live streams without caching + * + * @private + * @param {String} stream - stream name from which you want to stream + * @param {String} type - resource type on which subscribe or publish [exchange/queue] + * @param {String} routingKey - binding pattern + * @return a string that represents the topic name for that channel + */ + streamTopicFor: (params?: IStompLiveStreamDestination) => string; +} +export default StompStreamClient; diff --git a/lib/spacebunny.d.ts b/lib/spacebunny.d.ts new file mode 100644 index 0000000..84a25bb --- /dev/null +++ b/lib/spacebunny.d.ts @@ -0,0 +1,200 @@ +/** + * A module that exports the base SpaceBunny client + * @module SpaceBunny + */ +/// +import { EventEmitter } from 'events'; +export interface ISpaceBunnyParams { + endpoint?: IEndpoint; + deviceKey?: string; + channels?: IChannel[]; + deviceId?: string; + client?: string; + secret?: string; + host?: string; + port?: number; + vhost?: string; + protocol?: string; + inboxTopic?: string; + cert?: string; + key?: string; + passphrase?: string; + ca?: string; + pfx?: string; + disableCertCheck?: boolean; + secureProtocol?: string; + tls?: boolean; + protocols?: { + [key: string]: IProtocol; + }; + autoReconnect?: boolean; + reconnectTimeout?: number; + verbose?: boolean; + caching?: boolean; + cacheSize?: number; + heartbeat?: number; + connectionTimeout?: number; + cachedMessagesPath?: string; +} +export interface IEndpointConfigs { + connection?: ISpaceBunnyParams; + liveStreams?: ILiveStream[]; + channels?: IChannel[]; +} +export interface ITlsOptions { + cert?: Buffer; + key?: Buffer; + passphrase?: string; + ca?: Buffer[]; + rejectUnauthorized?: boolean; + pfx?: Buffer; +} +export interface IProtocol { + port?: number; + tlsPort?: number; +} +export interface ILiveStream { + name: string; +} +export interface IChannel { + name: string; +} +export interface IEndpoint { + protocol: string; + secureProtocol: string; + host: string; + port: number; + securePort: number; + deviceConfigurationsPath: string; + liveStreamKeyConfigurationsPath: string; + url?: string; +} +export interface ILiveStreamHook { + stream?: string; + deviceId?: string; + channel?: string; + routingKey?: string; + topic?: string; + cache?: boolean; +} +export interface ISpaceBunnySubscribeOptions { + discardMine?: boolean; + discardFromApi?: boolean; +} +export interface ICachedMessage { + message: Record; + channel: string; + options?: Record; +} +/** + * @constructor + * @param {Object} opts - constructor options may contain Device-Key or connection options + */ +declare class SpaceBunny extends EventEmitter { + protected connectionParams: ISpaceBunnyParams; + protected endpointConfigs: IEndpointConfigs; + protected endpoint: IEndpoint; + protected deviceKey: string; + protected channels: IChannel[]; + protected deviceId: string; + protected client: string; + protected secret: string; + protected host: string; + protected port: number; + protected vhost: string; + protected protocol: string; + protected tlsProtocol: string; + protected inboxTopic: string; + protected liveStreamSuffix: string; + protected tempQueueSuffix: string; + protected liveStreams: ILiveStream[]; + protected tls: boolean; + protected tlsOpts: ITlsOptions; + protected autoReconnect: boolean; + protected reconnectTimeout: number; + protected verbose: boolean; + protected cacheSize: number; + protected connectionTimeout: number; + protected heartbeat: number; + protected manualConfigurations: boolean; + protected caching: boolean; + protected cachedMessagesPath: string; + protected cachedMessages: ICachedMessage[]; + protected static DEFAULT_CONNECTION_TIMEOUT: number; + protected static DEFAULT_RECONNECT_TIMEOUT: number; + protected static DEFAULT_HEARTBEAT: number; + protected static DEFAULT_CACHE_SIZE: number; + constructor(opts?: ISpaceBunnyParams); + /** + * Check if Device-Key or connection parameters have already been passed + * If at least Device-Key is passed ask the endpoint for the configurations + * else if also connection parameters are not passed raise an exception + * + * @return an Object containing the connection parameters + */ + protected getEndpointConfigs: () => Promise; + protected getClassName: () => string; + protected log: (level: string, message: string | Error, ...meta: any) => void; + isConnected: () => boolean; + isStreamClient: () => boolean; + /** + * @return all channels configured for the current device + */ + getChannels: () => IChannel[]; + /** + * @return the device ID for the current device + */ + getDeviceId: () => string; + /** + * @return the client for the current stream + */ + getClient: () => string; + /** + * @return the Inbox topic for the current device + */ + getInboxTopic: () => string; + /** + * Return a Stream ID from a stream name given in input + * + * @param {String} streamName - stream name + * @return the stream ID which corresponds to the input stream name + */ + protected liveStreamByName: (streamName: string) => string; + /** + * Check if a stream exists + * + * @param {String} streamName - stream name + * @return true if stream exists, false otherwise + */ + protected liveStreamExists: (streamName: string) => boolean; + /** + * Generate a temporary queue name + * + * @private + * @param {String} prefix - client id or stream name + * @param {String} suffix - channel name or defaul live stream suffix + * @param {Numeric} currentTime - current timestamp + * @return a string that represents the topic name for that channel + */ + protected tempQueue: (prefix: string, suffix: string, currentTime?: number | void) => string; + /** + * Generate the exchange name for a device's channel + * + * @private + * @param {String} prefix - It could be a device id or a stream name + * @param {String} suffix - It could be a channel name or a the default stream suffix (livestream) + * @return a string that represents the complete exchange name + */ + protected exchangeName: (prefix: string, suffix: string) => string; + /** + * Generate the complete hostname string for an endpoint + * + * @private + * @return the string representing the endpoint url + */ + private generateHostname; + private loadCachedMessages; + protected writeCachedMessagesFile: () => void; + protected cacheMessage: (channel: string, message: Record, options: Record) => void; +} +export default SpaceBunny; diff --git a/lib/spacebunny.js b/lib/spacebunny.js index a9f76d9..a70ec85 100644 --- a/lib/spacebunny.js +++ b/lib/spacebunny.js @@ -1,76186 +1,91 @@ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["spacebunny"] = factory(); - else - root["spacebunny"] = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 202); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -module.exports = require("util"); - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var es5 = __webpack_require__(31); -var canEvaluate = typeof navigator == "undefined"; - -var errorObj = {e: {}}; -var tryCatchTarget; -var globalObject = typeof self !== "undefined" ? self : - typeof window !== "undefined" ? window : - typeof global !== "undefined" ? global : - this !== undefined ? this : null; - -function tryCatcher() { - try { - var target = tryCatchTarget; - tryCatchTarget = null; - return target.apply(this, arguments); - } catch (e) { - errorObj.e = e; - return errorObj; - } -} -function tryCatch(fn) { - tryCatchTarget = fn; - return tryCatcher; -} - -var inherits = function(Child, Parent) { - var hasProp = {}.hasOwnProperty; - - function T() { - this.constructor = Child; - this.constructor$ = Parent; - for (var propertyName in Parent.prototype) { - if (hasProp.call(Parent.prototype, propertyName) && - propertyName.charAt(propertyName.length-1) !== "$" - ) { - this[propertyName + "$"] = Parent.prototype[propertyName]; - } - } - } - T.prototype = Parent.prototype; - Child.prototype = new T(); - return Child.prototype; -}; - - -function isPrimitive(val) { - return val == null || val === true || val === false || - typeof val === "string" || typeof val === "number"; - -} - -function isObject(value) { - return typeof value === "function" || - typeof value === "object" && value !== null; -} - -function maybeWrapAsError(maybeError) { - if (!isPrimitive(maybeError)) return maybeError; - - return new Error(safeToString(maybeError)); -} - -function withAppended(target, appendee) { - var len = target.length; - var ret = new Array(len + 1); - var i; - for (i = 0; i < len; ++i) { - ret[i] = target[i]; - } - ret[i] = appendee; - return ret; -} - -function getDataPropertyOrDefault(obj, key, defaultValue) { - if (es5.isES5) { - var desc = Object.getOwnPropertyDescriptor(obj, key); - - if (desc != null) { - return desc.get == null && desc.set == null - ? desc.value - : defaultValue; - } - } else { - return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined; - } -} - -function notEnumerableProp(obj, name, value) { - if (isPrimitive(obj)) return obj; - var descriptor = { - value: value, - configurable: true, - enumerable: false, - writable: true - }; - es5.defineProperty(obj, name, descriptor); - return obj; -} - -function thrower(r) { - throw r; -} - -var inheritedDataKeys = (function() { - var excludedPrototypes = [ - Array.prototype, - Object.prototype, - Function.prototype - ]; - - var isExcludedProto = function(val) { - for (var i = 0; i < excludedPrototypes.length; ++i) { - if (excludedPrototypes[i] === val) { - return true; - } - } - return false; - }; - - if (es5.isES5) { - var getKeys = Object.getOwnPropertyNames; - return function(obj) { - var ret = []; - var visitedKeys = Object.create(null); - while (obj != null && !isExcludedProto(obj)) { - var keys; - try { - keys = getKeys(obj); - } catch (e) { - return ret; - } - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (visitedKeys[key]) continue; - visitedKeys[key] = true; - var desc = Object.getOwnPropertyDescriptor(obj, key); - if (desc != null && desc.get == null && desc.set == null) { - ret.push(key); - } - } - obj = es5.getPrototypeOf(obj); - } - return ret; - }; - } else { - var hasProp = {}.hasOwnProperty; - return function(obj) { - if (isExcludedProto(obj)) return []; - var ret = []; - - /*jshint forin:false */ - enumeration: for (var key in obj) { - if (hasProp.call(obj, key)) { - ret.push(key); - } else { - for (var i = 0; i < excludedPrototypes.length; ++i) { - if (hasProp.call(excludedPrototypes[i], key)) { - continue enumeration; - } - } - ret.push(key); - } - } - return ret; - }; - } - -})(); - -var thisAssignmentPattern = /this\s*\.\s*\S+\s*=/; -function isClass(fn) { - try { - if (typeof fn === "function") { - var keys = es5.names(fn.prototype); - - var hasMethods = es5.isES5 && keys.length > 1; - var hasMethodsOtherThanConstructor = keys.length > 0 && - !(keys.length === 1 && keys[0] === "constructor"); - var hasThisAssignmentAndStaticMethods = - thisAssignmentPattern.test(fn + "") && es5.names(fn).length > 0; - - if (hasMethods || hasMethodsOtherThanConstructor || - hasThisAssignmentAndStaticMethods) { - return true; - } - } - return false; - } catch (e) { - return false; - } -} - -function toFastProperties(obj) { - /*jshint -W027,-W055,-W031*/ - function FakeConstructor() {} - FakeConstructor.prototype = obj; - var receiver = new FakeConstructor(); - function ic() { - return typeof receiver.foo; - } - ic(); - ic(); - return obj; - eval(obj); -} - -var rident = /^[a-z$_][a-z$_0-9]*$/i; -function isIdentifier(str) { - return rident.test(str); -} - -function filledRange(count, prefix, suffix) { - var ret = new Array(count); - for(var i = 0; i < count; ++i) { - ret[i] = prefix + i + suffix; - } - return ret; -} - -function safeToString(obj) { - try { - return obj + ""; - } catch (e) { - return "[no string representation]"; - } -} - -function isError(obj) { - return obj instanceof Error || - (obj !== null && - typeof obj === "object" && - typeof obj.message === "string" && - typeof obj.name === "string"); -} - -function markAsOriginatingFromRejection(e) { - try { - notEnumerableProp(e, "isOperational", true); - } - catch(ignore) {} -} - -function originatesFromRejection(e) { - if (e == null) return false; - return ((e instanceof Error["__BluebirdErrorTypes__"].OperationalError) || - e["isOperational"] === true); -} - -function canAttachTrace(obj) { - return isError(obj) && es5.propertyIsWritable(obj, "stack"); -} - -var ensureErrorObject = (function() { - if (!("stack" in new Error())) { - return function(value) { - if (canAttachTrace(value)) return value; - try {throw new Error(safeToString(value));} - catch(err) {return err;} - }; - } else { - return function(value) { - if (canAttachTrace(value)) return value; - return new Error(safeToString(value)); - }; - } -})(); - -function classString(obj) { - return {}.toString.call(obj); -} - -function copyDescriptors(from, to, filter) { - var keys = es5.names(from); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (filter(key)) { - try { - es5.defineProperty(to, key, es5.getDescriptor(from, key)); - } catch (ignore) {} - } - } -} - -var asArray = function(v) { - if (es5.isArray(v)) { - return v; - } - return null; -}; - -if (typeof Symbol !== "undefined" && Symbol.iterator) { - var ArrayFrom = typeof Array.from === "function" ? function(v) { - return Array.from(v); - } : function(v) { - var ret = []; - var it = v[Symbol.iterator](); - var itResult; - while (!((itResult = it.next()).done)) { - ret.push(itResult.value); - } - return ret; - }; - - asArray = function(v) { - if (es5.isArray(v)) { - return v; - } else if (v != null && typeof v[Symbol.iterator] === "function") { - return ArrayFrom(v); - } - return null; - }; -} - -var isNode = typeof process !== "undefined" && - classString(process).toLowerCase() === "[object process]"; - -var hasEnvVariables = typeof process !== "undefined" && - typeof process.env !== "undefined"; - -function env(key) { - return hasEnvVariables ? process.env[key] : undefined; -} - -function getNativePromise() { - if (typeof Promise === "function") { - try { - var promise = new Promise(function(){}); - if ({}.toString.call(promise) === "[object Promise]") { - return Promise; - } - } catch (e) {} - } -} - -function domainBind(self, cb) { - return self.bind(cb); -} - -var ret = { - isClass: isClass, - isIdentifier: isIdentifier, - inheritedDataKeys: inheritedDataKeys, - getDataPropertyOrDefault: getDataPropertyOrDefault, - thrower: thrower, - isArray: es5.isArray, - asArray: asArray, - notEnumerableProp: notEnumerableProp, - isPrimitive: isPrimitive, - isObject: isObject, - isError: isError, - canEvaluate: canEvaluate, - errorObj: errorObj, - tryCatch: tryCatch, - inherits: inherits, - withAppended: withAppended, - maybeWrapAsError: maybeWrapAsError, - toFastProperties: toFastProperties, - filledRange: filledRange, - toString: safeToString, - canAttachTrace: canAttachTrace, - ensureErrorObject: ensureErrorObject, - originatesFromRejection: originatesFromRejection, - markAsOriginatingFromRejection: markAsOriginatingFromRejection, - classString: classString, - copyDescriptors: copyDescriptors, - hasDevTools: typeof chrome !== "undefined" && chrome && - typeof chrome.loadTimes === "function", - isNode: isNode, - hasEnvVariables: hasEnvVariables, - env: env, - global: globalObject, - getNativePromise: getNativePromise, - domainBind: domainBind -}; -ret.isRecentNode = ret.isNode && (function() { - var version; - if (process.versions && process.versions.node) { - version = process.versions.node.split(".").map(Number); - } else if (process.version) { - version = process.version.split(".").map(Number); - } - return (version[0] === 0 && version[1] > 10) || (version[0] > 0); -})(); - -if (ret.isNode) ret.toFastProperties(process); - -try {throw new Error(); } catch (e) {ret.lastLineError = e;} -module.exports = ret; - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var es5 = __webpack_require__(30); -var canEvaluate = typeof navigator == "undefined"; - -var errorObj = {e: {}}; -var tryCatchTarget; -var globalObject = typeof self !== "undefined" ? self : - typeof window !== "undefined" ? window : - typeof global !== "undefined" ? global : - this !== undefined ? this : null; - -function tryCatcher() { - try { - var target = tryCatchTarget; - tryCatchTarget = null; - return target.apply(this, arguments); - } catch (e) { - errorObj.e = e; - return errorObj; - } -} -function tryCatch(fn) { - tryCatchTarget = fn; - return tryCatcher; -} - -var inherits = function(Child, Parent) { - var hasProp = {}.hasOwnProperty; - - function T() { - this.constructor = Child; - this.constructor$ = Parent; - for (var propertyName in Parent.prototype) { - if (hasProp.call(Parent.prototype, propertyName) && - propertyName.charAt(propertyName.length-1) !== "$" - ) { - this[propertyName + "$"] = Parent.prototype[propertyName]; - } - } - } - T.prototype = Parent.prototype; - Child.prototype = new T(); - return Child.prototype; -}; - - -function isPrimitive(val) { - return val == null || val === true || val === false || - typeof val === "string" || typeof val === "number"; - -} - -function isObject(value) { - return typeof value === "function" || - typeof value === "object" && value !== null; -} - -function maybeWrapAsError(maybeError) { - if (!isPrimitive(maybeError)) return maybeError; - - return new Error(safeToString(maybeError)); -} - -function withAppended(target, appendee) { - var len = target.length; - var ret = new Array(len + 1); - var i; - for (i = 0; i < len; ++i) { - ret[i] = target[i]; - } - ret[i] = appendee; - return ret; -} - -function getDataPropertyOrDefault(obj, key, defaultValue) { - if (es5.isES5) { - var desc = Object.getOwnPropertyDescriptor(obj, key); - - if (desc != null) { - return desc.get == null && desc.set == null - ? desc.value - : defaultValue; - } - } else { - return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined; - } -} - -function notEnumerableProp(obj, name, value) { - if (isPrimitive(obj)) return obj; - var descriptor = { - value: value, - configurable: true, - enumerable: false, - writable: true - }; - es5.defineProperty(obj, name, descriptor); - return obj; -} - -function thrower(r) { - throw r; -} - -var inheritedDataKeys = (function() { - var excludedPrototypes = [ - Array.prototype, - Object.prototype, - Function.prototype - ]; - - var isExcludedProto = function(val) { - for (var i = 0; i < excludedPrototypes.length; ++i) { - if (excludedPrototypes[i] === val) { - return true; - } - } - return false; - }; - - if (es5.isES5) { - var getKeys = Object.getOwnPropertyNames; - return function(obj) { - var ret = []; - var visitedKeys = Object.create(null); - while (obj != null && !isExcludedProto(obj)) { - var keys; - try { - keys = getKeys(obj); - } catch (e) { - return ret; - } - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (visitedKeys[key]) continue; - visitedKeys[key] = true; - var desc = Object.getOwnPropertyDescriptor(obj, key); - if (desc != null && desc.get == null && desc.set == null) { - ret.push(key); - } - } - obj = es5.getPrototypeOf(obj); - } - return ret; - }; - } else { - var hasProp = {}.hasOwnProperty; - return function(obj) { - if (isExcludedProto(obj)) return []; - var ret = []; - - /*jshint forin:false */ - enumeration: for (var key in obj) { - if (hasProp.call(obj, key)) { - ret.push(key); - } else { - for (var i = 0; i < excludedPrototypes.length; ++i) { - if (hasProp.call(excludedPrototypes[i], key)) { - continue enumeration; - } - } - ret.push(key); - } - } - return ret; - }; - } - -})(); - -var thisAssignmentPattern = /this\s*\.\s*\S+\s*=/; -function isClass(fn) { - try { - if (typeof fn === "function") { - var keys = es5.names(fn.prototype); - - var hasMethods = es5.isES5 && keys.length > 1; - var hasMethodsOtherThanConstructor = keys.length > 0 && - !(keys.length === 1 && keys[0] === "constructor"); - var hasThisAssignmentAndStaticMethods = - thisAssignmentPattern.test(fn + "") && es5.names(fn).length > 0; - - if (hasMethods || hasMethodsOtherThanConstructor || - hasThisAssignmentAndStaticMethods) { - return true; - } - } - return false; - } catch (e) { - return false; - } -} - -function toFastProperties(obj) { - /*jshint -W027,-W055,-W031*/ - function FakeConstructor() {} - FakeConstructor.prototype = obj; - var receiver = new FakeConstructor(); - function ic() { - return typeof receiver.foo; - } - ic(); - ic(); - return obj; - eval(obj); -} - -var rident = /^[a-z$_][a-z$_0-9]*$/i; -function isIdentifier(str) { - return rident.test(str); -} - -function filledRange(count, prefix, suffix) { - var ret = new Array(count); - for(var i = 0; i < count; ++i) { - ret[i] = prefix + i + suffix; - } - return ret; -} - -function safeToString(obj) { - try { - return obj + ""; - } catch (e) { - return "[no string representation]"; - } -} - -function isError(obj) { - return obj instanceof Error || - (obj !== null && - typeof obj === "object" && - typeof obj.message === "string" && - typeof obj.name === "string"); -} - -function markAsOriginatingFromRejection(e) { - try { - notEnumerableProp(e, "isOperational", true); - } - catch(ignore) {} -} - -function originatesFromRejection(e) { - if (e == null) return false; - return ((e instanceof Error["__BluebirdErrorTypes__"].OperationalError) || - e["isOperational"] === true); -} - -function canAttachTrace(obj) { - return isError(obj) && es5.propertyIsWritable(obj, "stack"); -} - -var ensureErrorObject = (function() { - if (!("stack" in new Error())) { - return function(value) { - if (canAttachTrace(value)) return value; - try {throw new Error(safeToString(value));} - catch(err) {return err;} - }; - } else { - return function(value) { - if (canAttachTrace(value)) return value; - return new Error(safeToString(value)); - }; - } -})(); - -function classString(obj) { - return {}.toString.call(obj); -} - -function copyDescriptors(from, to, filter) { - var keys = es5.names(from); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (filter(key)) { - try { - es5.defineProperty(to, key, es5.getDescriptor(from, key)); - } catch (ignore) {} - } - } -} - -var asArray = function(v) { - if (es5.isArray(v)) { - return v; - } - return null; -}; - -if (typeof Symbol !== "undefined" && Symbol.iterator) { - var ArrayFrom = typeof Array.from === "function" ? function(v) { - return Array.from(v); - } : function(v) { - var ret = []; - var it = v[Symbol.iterator](); - var itResult; - while (!((itResult = it.next()).done)) { - ret.push(itResult.value); - } - return ret; - }; - - asArray = function(v) { - if (es5.isArray(v)) { - return v; - } else if (v != null && typeof v[Symbol.iterator] === "function") { - return ArrayFrom(v); - } - return null; - }; -} - -var isNode = typeof process !== "undefined" && - classString(process).toLowerCase() === "[object process]"; - -var hasEnvVariables = typeof process !== "undefined" && - typeof process.env !== "undefined"; - -function env(key) { - return hasEnvVariables ? process.env[key] : undefined; -} - -function getNativePromise() { - if (typeof Promise === "function") { - try { - var promise = new Promise(function(){}); - if (classString(promise) === "[object Promise]") { - return Promise; - } - } catch (e) {} - } -} - -var reflectHandler; -function contextBind(ctx, cb) { - if (ctx === null || - typeof cb !== "function" || - cb === reflectHandler) { - return cb; - } - - if (ctx.domain !== null) { - cb = ctx.domain.bind(cb); - } - - var async = ctx.async; - if (async !== null) { - var old = cb; - cb = function() { - var $_len = arguments.length + 2;var args = new Array($_len); for(var $_i = 2; $_i < $_len ; ++$_i) {args[$_i] = arguments[$_i - 2];}; - args[0] = old; - args[1] = this; - return async.runInAsyncScope.apply(async, args); - }; - } - return cb; -} - -var ret = { - setReflectHandler: function(fn) { - reflectHandler = fn; - }, - isClass: isClass, - isIdentifier: isIdentifier, - inheritedDataKeys: inheritedDataKeys, - getDataPropertyOrDefault: getDataPropertyOrDefault, - thrower: thrower, - isArray: es5.isArray, - asArray: asArray, - notEnumerableProp: notEnumerableProp, - isPrimitive: isPrimitive, - isObject: isObject, - isError: isError, - canEvaluate: canEvaluate, - errorObj: errorObj, - tryCatch: tryCatch, - inherits: inherits, - withAppended: withAppended, - maybeWrapAsError: maybeWrapAsError, - toFastProperties: toFastProperties, - filledRange: filledRange, - toString: safeToString, - canAttachTrace: canAttachTrace, - ensureErrorObject: ensureErrorObject, - originatesFromRejection: originatesFromRejection, - markAsOriginatingFromRejection: markAsOriginatingFromRejection, - classString: classString, - copyDescriptors: copyDescriptors, - isNode: isNode, - hasEnvVariables: hasEnvVariables, - env: env, - global: globalObject, - getNativePromise: getNativePromise, - contextBind: contextBind -}; -ret.isRecentNode = ret.isNode && (function() { - var version; - if (process.versions && process.versions.node) { - version = process.versions.node.split(".").map(Number); - } else if (process.version) { - version = process.version.split(".").map(Number); - } - return (version[0] === 0 && version[1] > 10) || (version[0] > 0); -})(); -ret.nodeSupportsAsyncResource = ret.isNode && (function() { - var supportsAsync = false; - try { - var res = __webpack_require__(120).AsyncResource; - supportsAsync = typeof res.prototype.runInAsyncScope === "function"; - } catch (e) { - supportsAsync = false; - } - return supportsAsync; -})(); - -if (ret.isNode) ret.toFastProperties(process); - -try {throw new Error(); } catch (e) {ret.lastLineError = e;} -module.exports = ret; - - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - -try { - var util = __webpack_require__(0); - if (typeof util.inherits !== 'function') throw ''; - module.exports = util.inherits; -} catch (e) { - module.exports = __webpack_require__(280); -} - - -/***/ }), -/* 4 */ -/***/ (function(module, exports) { - -module.exports = require("events"); - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - -/* eslint-disable node/no-deprecated-api */ -var buffer = __webpack_require__(21) -var Buffer = buffer.Buffer - -// alternative to using Object.keys for old browsers -function copyProps (src, dst) { - for (var key in src) { - dst[key] = src[key] - } -} -if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer -} else { - // Copy properties from require('buffer') - copyProps(buffer, exports) - exports.Buffer = SafeBuffer -} - -function SafeBuffer (arg, encodingOrOffset, length) { - return Buffer(arg, encodingOrOffset, length) -} - -// Copy static methods from Buffer -copyProps(Buffer, SafeBuffer) - -SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg === 'number') { - throw new TypeError('Argument must not be a number') - } - return Buffer(arg, encodingOrOffset, length) -} - -SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - var buf = Buffer(size) - if (fill !== undefined) { - if (typeof encoding === 'string') { - buf.fill(fill, encoding) - } else { - buf.fill(fill) - } - } else { - buf.fill(0) - } - return buf -} - -SafeBuffer.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return Buffer(size) -} - -SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return buffer.SlowBuffer(size) -} - - -/***/ }), -/* 6 */ -/***/ (function(module, exports) { - -var core = module.exports = { version: '2.6.5' }; -if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef - - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var bind = __webpack_require__(135); - -/*global toString:true*/ - -// utils is a library of generic helper functions non-specific to axios - -var toString = Object.prototype.toString; - -/** - * Determine if a value is an Array - * - * @param {Object} val The value to test - * @returns {boolean} True if value is an Array, otherwise false - */ -function isArray(val) { - return toString.call(val) === '[object Array]'; -} - -/** - * Determine if a value is undefined - * - * @param {Object} val The value to test - * @returns {boolean} True if the value is undefined, otherwise false - */ -function isUndefined(val) { - return typeof val === 'undefined'; -} - -/** - * Determine if a value is a Buffer - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a Buffer, otherwise false - */ -function isBuffer(val) { - return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) - && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val); -} - -/** - * Determine if a value is an ArrayBuffer - * - * @param {Object} val The value to test - * @returns {boolean} True if value is an ArrayBuffer, otherwise false - */ -function isArrayBuffer(val) { - return toString.call(val) === '[object ArrayBuffer]'; -} - -/** - * Determine if a value is a FormData - * - * @param {Object} val The value to test - * @returns {boolean} True if value is an FormData, otherwise false - */ -function isFormData(val) { - return (typeof FormData !== 'undefined') && (val instanceof FormData); -} - -/** - * Determine if a value is a view on an ArrayBuffer - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false - */ -function isArrayBufferView(val) { - var result; - if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { - result = ArrayBuffer.isView(val); - } else { - result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer); - } - return result; -} - -/** - * Determine if a value is a String - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a String, otherwise false - */ -function isString(val) { - return typeof val === 'string'; -} - -/** - * Determine if a value is a Number - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a Number, otherwise false - */ -function isNumber(val) { - return typeof val === 'number'; -} - -/** - * Determine if a value is an Object - * - * @param {Object} val The value to test - * @returns {boolean} True if value is an Object, otherwise false - */ -function isObject(val) { - return val !== null && typeof val === 'object'; -} - -/** - * Determine if a value is a Date - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a Date, otherwise false - */ -function isDate(val) { - return toString.call(val) === '[object Date]'; -} - -/** - * Determine if a value is a File - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a File, otherwise false - */ -function isFile(val) { - return toString.call(val) === '[object File]'; -} - -/** - * Determine if a value is a Blob - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a Blob, otherwise false - */ -function isBlob(val) { - return toString.call(val) === '[object Blob]'; -} - -/** - * Determine if a value is a Function - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a Function, otherwise false - */ -function isFunction(val) { - return toString.call(val) === '[object Function]'; -} - -/** - * Determine if a value is a Stream - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a Stream, otherwise false - */ -function isStream(val) { - return isObject(val) && isFunction(val.pipe); -} - -/** - * Determine if a value is a URLSearchParams object - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a URLSearchParams object, otherwise false - */ -function isURLSearchParams(val) { - return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams; -} - -/** - * Trim excess whitespace off the beginning and end of a string - * - * @param {String} str The String to trim - * @returns {String} The String freed of excess whitespace - */ -function trim(str) { - return str.replace(/^\s*/, '').replace(/\s*$/, ''); -} - -/** - * Determine if we're running in a standard browser environment - * - * This allows axios to run in a web worker, and react-native. - * Both environments support XMLHttpRequest, but not fully standard globals. - * - * web workers: - * typeof window -> undefined - * typeof document -> undefined - * - * react-native: - * navigator.product -> 'ReactNative' - * nativescript - * navigator.product -> 'NativeScript' or 'NS' - */ -function isStandardBrowserEnv() { - if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || - navigator.product === 'NativeScript' || - navigator.product === 'NS')) { - return false; - } - return ( - typeof window !== 'undefined' && - typeof document !== 'undefined' - ); -} - -/** - * Iterate over an Array or an Object invoking a function for each item. - * - * If `obj` is an Array callback will be called passing - * the value, index, and complete array for each item. - * - * If 'obj' is an Object callback will be called passing - * the value, key, and complete object for each property. - * - * @param {Object|Array} obj The object to iterate - * @param {Function} fn The callback to invoke for each item - */ -function forEach(obj, fn) { - // Don't bother if no value provided - if (obj === null || typeof obj === 'undefined') { - return; - } - - // Force an array if not already something iterable - if (typeof obj !== 'object') { - /*eslint no-param-reassign:0*/ - obj = [obj]; - } - - if (isArray(obj)) { - // Iterate over array values - for (var i = 0, l = obj.length; i < l; i++) { - fn.call(null, obj[i], i, obj); - } - } else { - // Iterate over object keys - for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) { - fn.call(null, obj[key], key, obj); - } - } - } -} - -/** - * Accepts varargs expecting each argument to be an object, then - * immutably merges the properties of each object and returns result. - * - * When multiple objects contain the same key the later object in - * the arguments list will take precedence. - * - * Example: - * - * ```js - * var result = merge({foo: 123}, {foo: 456}); - * console.log(result.foo); // outputs 456 - * ``` - * - * @param {Object} obj1 Object to merge - * @returns {Object} Result of all merge properties - */ -function merge(/* obj1, obj2, obj3, ... */) { - var result = {}; - function assignValue(val, key) { - if (typeof result[key] === 'object' && typeof val === 'object') { - result[key] = merge(result[key], val); - } else { - result[key] = val; - } - } - - for (var i = 0, l = arguments.length; i < l; i++) { - forEach(arguments[i], assignValue); - } - return result; -} - -/** - * Function equal to merge with the difference being that no reference - * to original objects is kept. - * - * @see merge - * @param {Object} obj1 Object to merge - * @returns {Object} Result of all merge properties - */ -function deepMerge(/* obj1, obj2, obj3, ... */) { - var result = {}; - function assignValue(val, key) { - if (typeof result[key] === 'object' && typeof val === 'object') { - result[key] = deepMerge(result[key], val); - } else if (typeof val === 'object') { - result[key] = deepMerge({}, val); - } else { - result[key] = val; - } - } - - for (var i = 0, l = arguments.length; i < l; i++) { - forEach(arguments[i], assignValue); - } - return result; -} - -/** - * Extends object a by mutably adding to it the properties of object b. - * - * @param {Object} a The object to be extended - * @param {Object} b The object to copy properties from - * @param {Object} thisArg The object to bind function to - * @return {Object} The resulting value of object a - */ -function extend(a, b, thisArg) { - forEach(b, function assignValue(val, key) { - if (thisArg && typeof val === 'function') { - a[key] = bind(val, thisArg); - } else { - a[key] = val; - } - }); - return a; -} - -module.exports = { - isArray: isArray, - isArrayBuffer: isArrayBuffer, - isBuffer: isBuffer, - isFormData: isFormData, - isArrayBufferView: isArrayBufferView, - isString: isString, - isNumber: isNumber, - isObject: isObject, - isUndefined: isUndefined, - isDate: isDate, - isFile: isFile, - isBlob: isBlob, - isFunction: isFunction, - isStream: isStream, - isURLSearchParams: isURLSearchParams, - isStandardBrowserEnv: isStandardBrowserEnv, - forEach: forEach, - merge: merge, - deepMerge: deepMerge, - extend: extend, - trim: trim -}; - - -/***/ }), -/* 8 */ -/***/ (function(module, exports) { - -module.exports = require("fs"); - -/***/ }), -/* 9 */ -/***/ (function(module, exports) { - -module.exports = require("path"); - -/***/ }), -/* 10 */ -/***/ (function(module, exports) { - -module.exports = require("stream"); - -/***/ }), -/* 11 */ -/***/ (function(module, exports) { - -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. - -function isArray(arg) { - if (Array.isArray) { - return Array.isArray(arg); - } - return objectToString(arg) === '[object Array]'; -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -exports.isBuffer = Buffer.isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} - - -/***/ }), -/* 12 */ -/***/ (function(module, exports, __webpack_require__) { - -var Stream = __webpack_require__(10); -if (process.env.READABLE_STREAM === 'disable' && Stream) { - module.exports = Stream; - exports = module.exports = Stream.Readable; - exports.Readable = Stream.Readable; - exports.Writable = Stream.Writable; - exports.Duplex = Stream.Duplex; - exports.Transform = Stream.Transform; - exports.PassThrough = Stream.PassThrough; - exports.Stream = Stream; -} else { - exports = module.exports = __webpack_require__(153); - exports.Stream = Stream || exports; - exports.Readable = exports; - exports.Writable = __webpack_require__(156); - exports.Duplex = __webpack_require__(46); - exports.Transform = __webpack_require__(159); - exports.PassThrough = __webpack_require__(366); -} - - -/***/ }), -/* 13 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var isValue = __webpack_require__(47); - -module.exports = function (value) { - if (!isValue(value)) throw new TypeError("Cannot use null or undefined"); - return value; -}; - - -/***/ }), -/* 14 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -exports.default = function (instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } -}; - -/***/ }), -/* 15 */ -/***/ (function(module, exports, __webpack_require__) { - -var store = __webpack_require__(77)('wks'); -var uid = __webpack_require__(64); -var Symbol = __webpack_require__(19).Symbol; -var USE_SYMBOL = typeof Symbol == 'function'; - -var $exports = module.exports = function (name) { - return store[name] || (store[name] = - USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); -}; - -$exports.store = store; - - -/***/ }), -/* 16 */ -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(module) {var __WEBPACK_AMD_DEFINE_RESULT__;/** - * @license - * Lodash - * Copyright OpenJS Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ -;(function() { - - /** Used as a safe reference for `undefined` in pre-ES5 environments. */ - var undefined; - - /** Used as the semantic version number. */ - var VERSION = '4.17.15'; - - /** Used as the size to enable large array optimizations. */ - var LARGE_ARRAY_SIZE = 200; - - /** Error message constants. */ - var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.', - FUNC_ERROR_TEXT = 'Expected a function'; - - /** Used to stand-in for `undefined` hash values. */ - var HASH_UNDEFINED = '__lodash_hash_undefined__'; - - /** Used as the maximum memoize cache size. */ - var MAX_MEMOIZE_SIZE = 500; - - /** Used as the internal argument placeholder. */ - var PLACEHOLDER = '__lodash_placeholder__'; - - /** Used to compose bitmasks for cloning. */ - var CLONE_DEEP_FLAG = 1, - CLONE_FLAT_FLAG = 2, - CLONE_SYMBOLS_FLAG = 4; - - /** Used to compose bitmasks for value comparisons. */ - var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; - - /** Used to compose bitmasks for function metadata. */ - var WRAP_BIND_FLAG = 1, - WRAP_BIND_KEY_FLAG = 2, - WRAP_CURRY_BOUND_FLAG = 4, - WRAP_CURRY_FLAG = 8, - WRAP_CURRY_RIGHT_FLAG = 16, - WRAP_PARTIAL_FLAG = 32, - WRAP_PARTIAL_RIGHT_FLAG = 64, - WRAP_ARY_FLAG = 128, - WRAP_REARG_FLAG = 256, - WRAP_FLIP_FLAG = 512; - - /** Used as default options for `_.truncate`. */ - var DEFAULT_TRUNC_LENGTH = 30, - DEFAULT_TRUNC_OMISSION = '...'; - - /** Used to detect hot functions by number of calls within a span of milliseconds. */ - var HOT_COUNT = 800, - HOT_SPAN = 16; - - /** Used to indicate the type of lazy iteratees. */ - var LAZY_FILTER_FLAG = 1, - LAZY_MAP_FLAG = 2, - LAZY_WHILE_FLAG = 3; - - /** Used as references for various `Number` constants. */ - var INFINITY = 1 / 0, - MAX_SAFE_INTEGER = 9007199254740991, - MAX_INTEGER = 1.7976931348623157e+308, - NAN = 0 / 0; - - /** Used as references for the maximum length and index of an array. */ - var MAX_ARRAY_LENGTH = 4294967295, - MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, - HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; - - /** Used to associate wrap methods with their bit flags. */ - var wrapFlags = [ - ['ary', WRAP_ARY_FLAG], - ['bind', WRAP_BIND_FLAG], - ['bindKey', WRAP_BIND_KEY_FLAG], - ['curry', WRAP_CURRY_FLAG], - ['curryRight', WRAP_CURRY_RIGHT_FLAG], - ['flip', WRAP_FLIP_FLAG], - ['partial', WRAP_PARTIAL_FLAG], - ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], - ['rearg', WRAP_REARG_FLAG] - ]; - - /** `Object#toString` result references. */ - var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - asyncTag = '[object AsyncFunction]', - boolTag = '[object Boolean]', - dateTag = '[object Date]', - domExcTag = '[object DOMException]', - errorTag = '[object Error]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - mapTag = '[object Map]', - numberTag = '[object Number]', - nullTag = '[object Null]', - objectTag = '[object Object]', - promiseTag = '[object Promise]', - proxyTag = '[object Proxy]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - symbolTag = '[object Symbol]', - undefinedTag = '[object Undefined]', - weakMapTag = '[object WeakMap]', - weakSetTag = '[object WeakSet]'; - - var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; - - /** Used to match empty string literals in compiled template source. */ - var reEmptyStringLeading = /\b__p \+= '';/g, - reEmptyStringMiddle = /\b(__p \+=) '' \+/g, - reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; - - /** Used to match HTML entities and HTML characters. */ - var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, - reUnescapedHtml = /[&<>"']/g, - reHasEscapedHtml = RegExp(reEscapedHtml.source), - reHasUnescapedHtml = RegExp(reUnescapedHtml.source); - - /** Used to match template delimiters. */ - var reEscape = /<%-([\s\S]+?)%>/g, - reEvaluate = /<%([\s\S]+?)%>/g, - reInterpolate = /<%=([\s\S]+?)%>/g; - - /** Used to match property names within property paths. */ - var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, - reIsPlainProp = /^\w*$/, - rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; - - /** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ - var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, - reHasRegExpChar = RegExp(reRegExpChar.source); - - /** Used to match leading and trailing whitespace. */ - var reTrim = /^\s+|\s+$/g, - reTrimStart = /^\s+/, - reTrimEnd = /\s+$/; - - /** Used to match wrap detail comments. */ - var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, - reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, - reSplitDetails = /,? & /; - - /** Used to match words composed of alphanumeric characters. */ - var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; - - /** Used to match backslashes in property paths. */ - var reEscapeChar = /\\(\\)?/g; - - /** - * Used to match - * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components). - */ - var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; - - /** Used to match `RegExp` flags from their coerced string values. */ - var reFlags = /\w*$/; - - /** Used to detect bad signed hexadecimal string values. */ - var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; - - /** Used to detect binary string values. */ - var reIsBinary = /^0b[01]+$/i; - - /** Used to detect host constructors (Safari). */ - var reIsHostCtor = /^\[object .+?Constructor\]$/; - - /** Used to detect octal string values. */ - var reIsOctal = /^0o[0-7]+$/i; - - /** Used to detect unsigned integer values. */ - var reIsUint = /^(?:0|[1-9]\d*)$/; - - /** Used to match Latin Unicode letters (excluding mathematical operators). */ - var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; - - /** Used to ensure capturing order of template delimiters. */ - var reNoMatch = /($^)/; - - /** Used to match unescaped characters in compiled string literals. */ - var reUnescapedString = /['\n\r\u2028\u2029\\]/g; - - /** Used to compose unicode character classes. */ - var rsAstralRange = '\\ud800-\\udfff', - rsComboMarksRange = '\\u0300-\\u036f', - reComboHalfMarksRange = '\\ufe20-\\ufe2f', - rsComboSymbolsRange = '\\u20d0-\\u20ff', - rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, - rsDingbatRange = '\\u2700-\\u27bf', - rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', - rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', - rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', - rsPunctuationRange = '\\u2000-\\u206f', - rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', - rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', - rsVarRange = '\\ufe0e\\ufe0f', - rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; - - /** Used to compose unicode capture groups. */ - var rsApos = "['\u2019]", - rsAstral = '[' + rsAstralRange + ']', - rsBreak = '[' + rsBreakRange + ']', - rsCombo = '[' + rsComboRange + ']', - rsDigits = '\\d+', - rsDingbat = '[' + rsDingbatRange + ']', - rsLower = '[' + rsLowerRange + ']', - rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', - rsFitz = '\\ud83c[\\udffb-\\udfff]', - rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', - rsNonAstral = '[^' + rsAstralRange + ']', - rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', - rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', - rsUpper = '[' + rsUpperRange + ']', - rsZWJ = '\\u200d'; - - /** Used to compose unicode regexes. */ - var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')', - rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')', - rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', - rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', - reOptMod = rsModifier + '?', - rsOptVar = '[' + rsVarRange + ']?', - rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', - rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])', - rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])', - rsSeq = rsOptVar + reOptMod + rsOptJoin, - rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq, - rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; - - /** Used to match apostrophes. */ - var reApos = RegExp(rsApos, 'g'); - - /** - * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and - * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). - */ - var reComboMark = RegExp(rsCombo, 'g'); - - /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ - var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); - - /** Used to match complex or compound words. */ - var reUnicodeWord = RegExp([ - rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', - rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', - rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, - rsUpper + '+' + rsOptContrUpper, - rsOrdUpper, - rsOrdLower, - rsDigits, - rsEmoji - ].join('|'), 'g'); - - /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ - var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); - - /** Used to detect strings that need a more robust regexp to match words. */ - var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; - - /** Used to assign default `context` object properties. */ - var contextProps = [ - 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array', - 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object', - 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array', - 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', - '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout' - ]; - - /** Used to make template sourceURLs easier to identify. */ - var templateCounter = -1; - - /** Used to identify `toStringTag` values of typed arrays. */ - var typedArrayTags = {}; - typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = - typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = - typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = - typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = - typedArrayTags[uint32Tag] = true; - typedArrayTags[argsTag] = typedArrayTags[arrayTag] = - typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = - typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = - typedArrayTags[errorTag] = typedArrayTags[funcTag] = - typedArrayTags[mapTag] = typedArrayTags[numberTag] = - typedArrayTags[objectTag] = typedArrayTags[regexpTag] = - typedArrayTags[setTag] = typedArrayTags[stringTag] = - typedArrayTags[weakMapTag] = false; - - /** Used to identify `toStringTag` values supported by `_.clone`. */ - var cloneableTags = {}; - cloneableTags[argsTag] = cloneableTags[arrayTag] = - cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = - cloneableTags[boolTag] = cloneableTags[dateTag] = - cloneableTags[float32Tag] = cloneableTags[float64Tag] = - cloneableTags[int8Tag] = cloneableTags[int16Tag] = - cloneableTags[int32Tag] = cloneableTags[mapTag] = - cloneableTags[numberTag] = cloneableTags[objectTag] = - cloneableTags[regexpTag] = cloneableTags[setTag] = - cloneableTags[stringTag] = cloneableTags[symbolTag] = - cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = - cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; - cloneableTags[errorTag] = cloneableTags[funcTag] = - cloneableTags[weakMapTag] = false; - - /** Used to map Latin Unicode letters to basic Latin letters. */ - var deburredLetters = { - // Latin-1 Supplement block. - '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', - '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', - '\xc7': 'C', '\xe7': 'c', - '\xd0': 'D', '\xf0': 'd', - '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', - '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', - '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', - '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', - '\xd1': 'N', '\xf1': 'n', - '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', - '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', - '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', - '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', - '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', - '\xc6': 'Ae', '\xe6': 'ae', - '\xde': 'Th', '\xfe': 'th', - '\xdf': 'ss', - // Latin Extended-A block. - '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', - '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', - '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', - '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', - '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', - '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', - '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', - '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', - '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', - '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', - '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', - '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', - '\u0134': 'J', '\u0135': 'j', - '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', - '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', - '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', - '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', - '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', - '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', - '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', - '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', - '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', - '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', - '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', - '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', - '\u0163': 't', '\u0165': 't', '\u0167': 't', - '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', - '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', - '\u0174': 'W', '\u0175': 'w', - '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', - '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', - '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', - '\u0132': 'IJ', '\u0133': 'ij', - '\u0152': 'Oe', '\u0153': 'oe', - '\u0149': "'n", '\u017f': 's' - }; - - /** Used to map characters to HTML entities. */ - var htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''' - }; - - /** Used to map HTML entities to characters. */ - var htmlUnescapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - ''': "'" - }; - - /** Used to escape characters for inclusion in compiled string literals. */ - var stringEscapes = { - '\\': '\\', - "'": "'", - '\n': 'n', - '\r': 'r', - '\u2028': 'u2028', - '\u2029': 'u2029' - }; - - /** Built-in method references without a dependency on `root`. */ - var freeParseFloat = parseFloat, - freeParseInt = parseInt; - - /** Detect free variable `global` from Node.js. */ - var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; - - /** Detect free variable `self`. */ - var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - - /** Used as a reference to the global object. */ - var root = freeGlobal || freeSelf || Function('return this')(); - - /** Detect free variable `exports`. */ - var freeExports = true && exports && !exports.nodeType && exports; - - /** Detect free variable `module`. */ - var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; - - /** Detect the popular CommonJS extension `module.exports`. */ - var moduleExports = freeModule && freeModule.exports === freeExports; - - /** Detect free variable `process` from Node.js. */ - var freeProcess = moduleExports && freeGlobal.process; - - /** Used to access faster Node.js helpers. */ - var nodeUtil = (function() { - try { - // Use `util.types` for Node.js 10+. - var types = freeModule && freeModule.require && freeModule.require('util').types; - - if (types) { - return types; - } - - // Legacy `process.binding('util')` for Node.js < 10. - return freeProcess && freeProcess.binding && freeProcess.binding('util'); - } catch (e) {} - }()); - - /* Node.js helper references. */ - var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, - nodeIsDate = nodeUtil && nodeUtil.isDate, - nodeIsMap = nodeUtil && nodeUtil.isMap, - nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, - nodeIsSet = nodeUtil && nodeUtil.isSet, - nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; - - /*--------------------------------------------------------------------------*/ - - /** - * A faster alternative to `Function#apply`, this function invokes `func` - * with the `this` binding of `thisArg` and the arguments of `args`. - * - * @private - * @param {Function} func The function to invoke. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} args The arguments to invoke `func` with. - * @returns {*} Returns the result of `func`. - */ - function apply(func, thisArg, args) { - switch (args.length) { - case 0: return func.call(thisArg); - case 1: return func.call(thisArg, args[0]); - case 2: return func.call(thisArg, args[0], args[1]); - case 3: return func.call(thisArg, args[0], args[1], args[2]); - } - return func.apply(thisArg, args); - } - - /** - * A specialized version of `baseAggregator` for arrays. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform keys. - * @param {Object} accumulator The initial aggregated object. - * @returns {Function} Returns `accumulator`. - */ - function arrayAggregator(array, setter, iteratee, accumulator) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - var value = array[index]; - setter(accumulator, value, iteratee(value), array); - } - return accumulator; - } - - /** - * A specialized version of `_.forEach` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ - function arrayEach(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (iteratee(array[index], index, array) === false) { - break; - } - } - return array; - } - - /** - * A specialized version of `_.forEachRight` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ - function arrayEachRight(array, iteratee) { - var length = array == null ? 0 : array.length; - - while (length--) { - if (iteratee(array[length], length, array) === false) { - break; - } - } - return array; - } - - /** - * A specialized version of `_.every` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false`. - */ - function arrayEvery(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (!predicate(array[index], index, array)) { - return false; - } - } - return true; - } - - /** - * A specialized version of `_.filter` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ - function arrayFilter(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result[resIndex++] = value; - } - } - return result; - } - - /** - * A specialized version of `_.includes` for arrays without support for - * specifying an index to search from. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ - function arrayIncludes(array, value) { - var length = array == null ? 0 : array.length; - return !!length && baseIndexOf(array, value, 0) > -1; - } - - /** - * This function is like `arrayIncludes` except that it accepts a comparator. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @param {Function} comparator The comparator invoked per element. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ - function arrayIncludesWith(array, value, comparator) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (comparator(value, array[index])) { - return true; - } - } - return false; - } - - /** - * A specialized version of `_.map` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ - function arrayMap(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length, - result = Array(length); - - while (++index < length) { - result[index] = iteratee(array[index], index, array); - } - return result; - } - - /** - * Appends the elements of `values` to `array`. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to append. - * @returns {Array} Returns `array`. - */ - function arrayPush(array, values) { - var index = -1, - length = values.length, - offset = array.length; - - while (++index < length) { - array[offset + index] = values[index]; - } - return array; - } - - /** - * A specialized version of `_.reduce` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initAccum] Specify using the first element of `array` as - * the initial value. - * @returns {*} Returns the accumulated value. - */ - function arrayReduce(array, iteratee, accumulator, initAccum) { - var index = -1, - length = array == null ? 0 : array.length; - - if (initAccum && length) { - accumulator = array[++index]; - } - while (++index < length) { - accumulator = iteratee(accumulator, array[index], index, array); - } - return accumulator; - } - - /** - * A specialized version of `_.reduceRight` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initAccum] Specify using the last element of `array` as - * the initial value. - * @returns {*} Returns the accumulated value. - */ - function arrayReduceRight(array, iteratee, accumulator, initAccum) { - var length = array == null ? 0 : array.length; - if (initAccum && length) { - accumulator = array[--length]; - } - while (length--) { - accumulator = iteratee(accumulator, array[length], length, array); - } - return accumulator; - } - - /** - * A specialized version of `_.some` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ - function arraySome(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (predicate(array[index], index, array)) { - return true; - } - } - return false; - } - - /** - * Gets the size of an ASCII `string`. - * - * @private - * @param {string} string The string inspect. - * @returns {number} Returns the string size. - */ - var asciiSize = baseProperty('length'); - - /** - * Converts an ASCII `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function asciiToArray(string) { - return string.split(''); - } - - /** - * Splits an ASCII `string` into an array of its words. - * - * @private - * @param {string} The string to inspect. - * @returns {Array} Returns the words of `string`. - */ - function asciiWords(string) { - return string.match(reAsciiWord) || []; - } - - /** - * The base implementation of methods like `_.findKey` and `_.findLastKey`, - * without support for iteratee shorthands, which iterates over `collection` - * using `eachFunc`. - * - * @private - * @param {Array|Object} collection The collection to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the found element or its key, else `undefined`. - */ - function baseFindKey(collection, predicate, eachFunc) { - var result; - eachFunc(collection, function(value, key, collection) { - if (predicate(value, key, collection)) { - result = key; - return false; - } - }); - return result; - } - - /** - * The base implementation of `_.findIndex` and `_.findLastIndex` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {number} fromIndex The index to search from. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseFindIndex(array, predicate, fromIndex, fromRight) { - var length = array.length, - index = fromIndex + (fromRight ? 1 : -1); - - while ((fromRight ? index-- : ++index < length)) { - if (predicate(array[index], index, array)) { - return index; - } - } - return -1; - } - - /** - * The base implementation of `_.indexOf` without `fromIndex` bounds checks. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseIndexOf(array, value, fromIndex) { - return value === value - ? strictIndexOf(array, value, fromIndex) - : baseFindIndex(array, baseIsNaN, fromIndex); - } - - /** - * This function is like `baseIndexOf` except that it accepts a comparator. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @param {Function} comparator The comparator invoked per element. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseIndexOfWith(array, value, fromIndex, comparator) { - var index = fromIndex - 1, - length = array.length; - - while (++index < length) { - if (comparator(array[index], value)) { - return index; - } - } - return -1; - } - - /** - * The base implementation of `_.isNaN` without support for number objects. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - */ - function baseIsNaN(value) { - return value !== value; - } - - /** - * The base implementation of `_.mean` and `_.meanBy` without support for - * iteratee shorthands. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {number} Returns the mean. - */ - function baseMean(array, iteratee) { - var length = array == null ? 0 : array.length; - return length ? (baseSum(array, iteratee) / length) : NAN; - } - - /** - * The base implementation of `_.property` without support for deep paths. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new accessor function. - */ - function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; - } - - /** - * The base implementation of `_.propertyOf` without support for deep paths. - * - * @private - * @param {Object} object The object to query. - * @returns {Function} Returns the new accessor function. - */ - function basePropertyOf(object) { - return function(key) { - return object == null ? undefined : object[key]; - }; - } - - /** - * The base implementation of `_.reduce` and `_.reduceRight`, without support - * for iteratee shorthands, which iterates over `collection` using `eachFunc`. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} accumulator The initial value. - * @param {boolean} initAccum Specify using the first or last element of - * `collection` as the initial value. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the accumulated value. - */ - function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { - eachFunc(collection, function(value, index, collection) { - accumulator = initAccum - ? (initAccum = false, value) - : iteratee(accumulator, value, index, collection); - }); - return accumulator; - } - - /** - * The base implementation of `_.sortBy` which uses `comparer` to define the - * sort order of `array` and replaces criteria objects with their corresponding - * values. - * - * @private - * @param {Array} array The array to sort. - * @param {Function} comparer The function to define sort order. - * @returns {Array} Returns `array`. - */ - function baseSortBy(array, comparer) { - var length = array.length; - - array.sort(comparer); - while (length--) { - array[length] = array[length].value; - } - return array; - } - - /** - * The base implementation of `_.sum` and `_.sumBy` without support for - * iteratee shorthands. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {number} Returns the sum. - */ - function baseSum(array, iteratee) { - var result, - index = -1, - length = array.length; - - while (++index < length) { - var current = iteratee(array[index]); - if (current !== undefined) { - result = result === undefined ? current : (result + current); - } - } - return result; - } - - /** - * The base implementation of `_.times` without support for iteratee shorthands - * or max array length checks. - * - * @private - * @param {number} n The number of times to invoke `iteratee`. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the array of results. - */ - function baseTimes(n, iteratee) { - var index = -1, - result = Array(n); - - while (++index < n) { - result[index] = iteratee(index); - } - return result; - } - - /** - * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array - * of key-value pairs for `object` corresponding to the property names of `props`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the key-value pairs. - */ - function baseToPairs(object, props) { - return arrayMap(props, function(key) { - return [key, object[key]]; - }); - } - - /** - * The base implementation of `_.unary` without support for storing metadata. - * - * @private - * @param {Function} func The function to cap arguments for. - * @returns {Function} Returns the new capped function. - */ - function baseUnary(func) { - return function(value) { - return func(value); - }; - } - - /** - * The base implementation of `_.values` and `_.valuesIn` which creates an - * array of `object` property values corresponding to the property names - * of `props`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the array of property values. - */ - function baseValues(object, props) { - return arrayMap(props, function(key) { - return object[key]; - }); - } - - /** - * Checks if a `cache` value for `key` exists. - * - * @private - * @param {Object} cache The cache to query. - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function cacheHas(cache, key) { - return cache.has(key); - } - - /** - * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol - * that is not found in the character symbols. - * - * @private - * @param {Array} strSymbols The string symbols to inspect. - * @param {Array} chrSymbols The character symbols to find. - * @returns {number} Returns the index of the first unmatched string symbol. - */ - function charsStartIndex(strSymbols, chrSymbols) { - var index = -1, - length = strSymbols.length; - - while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} - return index; - } - - /** - * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol - * that is not found in the character symbols. - * - * @private - * @param {Array} strSymbols The string symbols to inspect. - * @param {Array} chrSymbols The character symbols to find. - * @returns {number} Returns the index of the last unmatched string symbol. - */ - function charsEndIndex(strSymbols, chrSymbols) { - var index = strSymbols.length; - - while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} - return index; - } - - /** - * Gets the number of `placeholder` occurrences in `array`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} placeholder The placeholder to search for. - * @returns {number} Returns the placeholder count. - */ - function countHolders(array, placeholder) { - var length = array.length, - result = 0; - - while (length--) { - if (array[length] === placeholder) { - ++result; - } - } - return result; - } - - /** - * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A - * letters to basic Latin letters. - * - * @private - * @param {string} letter The matched letter to deburr. - * @returns {string} Returns the deburred letter. - */ - var deburrLetter = basePropertyOf(deburredLetters); - - /** - * Used by `_.escape` to convert characters to HTML entities. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ - var escapeHtmlChar = basePropertyOf(htmlEscapes); - - /** - * Used by `_.template` to escape characters for inclusion in compiled string literals. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ - function escapeStringChar(chr) { - return '\\' + stringEscapes[chr]; - } - - /** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ - function getValue(object, key) { - return object == null ? undefined : object[key]; - } - - /** - * Checks if `string` contains Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a symbol is found, else `false`. - */ - function hasUnicode(string) { - return reHasUnicode.test(string); - } - - /** - * Checks if `string` contains a word composed of Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a word is found, else `false`. - */ - function hasUnicodeWord(string) { - return reHasUnicodeWord.test(string); - } - - /** - * Converts `iterator` to an array. - * - * @private - * @param {Object} iterator The iterator to convert. - * @returns {Array} Returns the converted array. - */ - function iteratorToArray(iterator) { - var data, - result = []; - - while (!(data = iterator.next()).done) { - result.push(data.value); - } - return result; - } - - /** - * Converts `map` to its key-value pairs. - * - * @private - * @param {Object} map The map to convert. - * @returns {Array} Returns the key-value pairs. - */ - function mapToArray(map) { - var index = -1, - result = Array(map.size); - - map.forEach(function(value, key) { - result[++index] = [key, value]; - }); - return result; - } - - /** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ - function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; - } - - /** - * Replaces all `placeholder` elements in `array` with an internal placeholder - * and returns an array of their indexes. - * - * @private - * @param {Array} array The array to modify. - * @param {*} placeholder The placeholder to replace. - * @returns {Array} Returns the new array of placeholder indexes. - */ - function replaceHolders(array, placeholder) { - var index = -1, - length = array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (value === placeholder || value === PLACEHOLDER) { - array[index] = PLACEHOLDER; - result[resIndex++] = index; - } - } - return result; - } - - /** - * Converts `set` to an array of its values. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the values. - */ - function setToArray(set) { - var index = -1, - result = Array(set.size); - - set.forEach(function(value) { - result[++index] = value; - }); - return result; - } - - /** - * Converts `set` to its value-value pairs. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the value-value pairs. - */ - function setToPairs(set) { - var index = -1, - result = Array(set.size); - - set.forEach(function(value) { - result[++index] = [value, value]; - }); - return result; - } - - /** - * A specialized version of `_.indexOf` which performs strict equality - * comparisons of values, i.e. `===`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function strictIndexOf(array, value, fromIndex) { - var index = fromIndex - 1, - length = array.length; - - while (++index < length) { - if (array[index] === value) { - return index; - } - } - return -1; - } - - /** - * A specialized version of `_.lastIndexOf` which performs strict equality - * comparisons of values, i.e. `===`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function strictLastIndexOf(array, value, fromIndex) { - var index = fromIndex + 1; - while (index--) { - if (array[index] === value) { - return index; - } - } - return index; - } - - /** - * Gets the number of symbols in `string`. - * - * @private - * @param {string} string The string to inspect. - * @returns {number} Returns the string size. - */ - function stringSize(string) { - return hasUnicode(string) - ? unicodeSize(string) - : asciiSize(string); - } - - /** - * Converts `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function stringToArray(string) { - return hasUnicode(string) - ? unicodeToArray(string) - : asciiToArray(string); - } - - /** - * Used by `_.unescape` to convert HTML entities to characters. - * - * @private - * @param {string} chr The matched character to unescape. - * @returns {string} Returns the unescaped character. - */ - var unescapeHtmlChar = basePropertyOf(htmlUnescapes); - - /** - * Gets the size of a Unicode `string`. - * - * @private - * @param {string} string The string inspect. - * @returns {number} Returns the string size. - */ - function unicodeSize(string) { - var result = reUnicode.lastIndex = 0; - while (reUnicode.test(string)) { - ++result; - } - return result; - } - - /** - * Converts a Unicode `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function unicodeToArray(string) { - return string.match(reUnicode) || []; - } - - /** - * Splits a Unicode `string` into an array of its words. - * - * @private - * @param {string} The string to inspect. - * @returns {Array} Returns the words of `string`. - */ - function unicodeWords(string) { - return string.match(reUnicodeWord) || []; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Create a new pristine `lodash` function using the `context` object. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Util - * @param {Object} [context=root] The context object. - * @returns {Function} Returns a new `lodash` function. - * @example - * - * _.mixin({ 'foo': _.constant('foo') }); - * - * var lodash = _.runInContext(); - * lodash.mixin({ 'bar': lodash.constant('bar') }); - * - * _.isFunction(_.foo); - * // => true - * _.isFunction(_.bar); - * // => false - * - * lodash.isFunction(lodash.foo); - * // => false - * lodash.isFunction(lodash.bar); - * // => true - * - * // Create a suped-up `defer` in Node.js. - * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; - */ - var runInContext = (function runInContext(context) { - context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps)); - - /** Built-in constructor references. */ - var Array = context.Array, - Date = context.Date, - Error = context.Error, - Function = context.Function, - Math = context.Math, - Object = context.Object, - RegExp = context.RegExp, - String = context.String, - TypeError = context.TypeError; - - /** Used for built-in method references. */ - var arrayProto = Array.prototype, - funcProto = Function.prototype, - objectProto = Object.prototype; - - /** Used to detect overreaching core-js shims. */ - var coreJsData = context['__core-js_shared__']; - - /** Used to resolve the decompiled source of functions. */ - var funcToString = funcProto.toString; - - /** Used to check objects for own properties. */ - var hasOwnProperty = objectProto.hasOwnProperty; - - /** Used to generate unique IDs. */ - var idCounter = 0; - - /** Used to detect methods masquerading as native. */ - var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; - }()); - - /** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ - var nativeObjectToString = objectProto.toString; - - /** Used to infer the `Object` constructor. */ - var objectCtorString = funcToString.call(Object); - - /** Used to restore the original `_` reference in `_.noConflict`. */ - var oldDash = root._; - - /** Used to detect if a method is native. */ - var reIsNative = RegExp('^' + - funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' - ); - - /** Built-in value references. */ - var Buffer = moduleExports ? context.Buffer : undefined, - Symbol = context.Symbol, - Uint8Array = context.Uint8Array, - allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined, - getPrototype = overArg(Object.getPrototypeOf, Object), - objectCreate = Object.create, - propertyIsEnumerable = objectProto.propertyIsEnumerable, - splice = arrayProto.splice, - spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined, - symIterator = Symbol ? Symbol.iterator : undefined, - symToStringTag = Symbol ? Symbol.toStringTag : undefined; - - var defineProperty = (function() { - try { - var func = getNative(Object, 'defineProperty'); - func({}, '', {}); - return func; - } catch (e) {} - }()); - - /** Mocked built-ins. */ - var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, - ctxNow = Date && Date.now !== root.Date.now && Date.now, - ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; - - /* Built-in method references for those with the same name as other `lodash` methods. */ - var nativeCeil = Math.ceil, - nativeFloor = Math.floor, - nativeGetSymbols = Object.getOwnPropertySymbols, - nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, - nativeIsFinite = context.isFinite, - nativeJoin = arrayProto.join, - nativeKeys = overArg(Object.keys, Object), - nativeMax = Math.max, - nativeMin = Math.min, - nativeNow = Date.now, - nativeParseInt = context.parseInt, - nativeRandom = Math.random, - nativeReverse = arrayProto.reverse; - - /* Built-in method references that are verified to be native. */ - var DataView = getNative(context, 'DataView'), - Map = getNative(context, 'Map'), - Promise = getNative(context, 'Promise'), - Set = getNative(context, 'Set'), - WeakMap = getNative(context, 'WeakMap'), - nativeCreate = getNative(Object, 'create'); - - /** Used to store function metadata. */ - var metaMap = WeakMap && new WeakMap; - - /** Used to lookup unminified function names. */ - var realNames = {}; - - /** Used to detect maps, sets, and weakmaps. */ - var dataViewCtorString = toSource(DataView), - mapCtorString = toSource(Map), - promiseCtorString = toSource(Promise), - setCtorString = toSource(Set), - weakMapCtorString = toSource(WeakMap); - - /** Used to convert symbols to primitives and strings. */ - var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolValueOf = symbolProto ? symbolProto.valueOf : undefined, - symbolToString = symbolProto ? symbolProto.toString : undefined; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a `lodash` object which wraps `value` to enable implicit method - * chain sequences. Methods that operate on and return arrays, collections, - * and functions can be chained together. Methods that retrieve a single value - * or may return a primitive value will automatically end the chain sequence - * and return the unwrapped value. Otherwise, the value must be unwrapped - * with `_#value`. - * - * Explicit chain sequences, which must be unwrapped with `_#value`, may be - * enabled using `_.chain`. - * - * The execution of chained methods is lazy, that is, it's deferred until - * `_#value` is implicitly or explicitly called. - * - * Lazy evaluation allows several methods to support shortcut fusion. - * Shortcut fusion is an optimization to merge iteratee calls; this avoids - * the creation of intermediate arrays and can greatly reduce the number of - * iteratee executions. Sections of a chain sequence qualify for shortcut - * fusion if the section is applied to an array and iteratees accept only - * one argument. The heuristic for whether a section qualifies for shortcut - * fusion is subject to change. - * - * Chaining is supported in custom builds as long as the `_#value` method is - * directly or indirectly included in the build. - * - * In addition to lodash methods, wrappers have `Array` and `String` methods. - * - * The wrapper `Array` methods are: - * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift` - * - * The wrapper `String` methods are: - * `replace` and `split` - * - * The wrapper methods that support shortcut fusion are: - * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`, - * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`, - * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray` - * - * The chainable wrapper methods are: - * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`, - * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`, - * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, - * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, - * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`, - * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`, - * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`, - * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`, - * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`, - * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`, - * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`, - * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`, - * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`, - * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`, - * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`, - * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`, - * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`, - * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`, - * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`, - * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`, - * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`, - * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`, - * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, - * `zipObject`, `zipObjectDeep`, and `zipWith` - * - * The wrapper methods that are **not** chainable by default are: - * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, - * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`, - * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`, - * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`, - * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`, - * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, - * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, - * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, - * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, - * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, - * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, - * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, - * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`, - * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`, - * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, - * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`, - * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, - * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`, - * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, - * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`, - * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`, - * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`, - * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, - * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, - * `upperFirst`, `value`, and `words` - * - * @name _ - * @constructor - * @category Seq - * @param {*} value The value to wrap in a `lodash` instance. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * function square(n) { - * return n * n; - * } - * - * var wrapped = _([1, 2, 3]); - * - * // Returns an unwrapped value. - * wrapped.reduce(_.add); - * // => 6 - * - * // Returns a wrapped value. - * var squares = wrapped.map(square); - * - * _.isArray(squares); - * // => false - * - * _.isArray(squares.value()); - * // => true - */ - function lodash(value) { - if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { - if (value instanceof LodashWrapper) { - return value; - } - if (hasOwnProperty.call(value, '__wrapped__')) { - return wrapperClone(value); - } - } - return new LodashWrapper(value); - } - - /** - * The base implementation of `_.create` without support for assigning - * properties to the created object. - * - * @private - * @param {Object} proto The object to inherit from. - * @returns {Object} Returns the new object. - */ - var baseCreate = (function() { - function object() {} - return function(proto) { - if (!isObject(proto)) { - return {}; - } - if (objectCreate) { - return objectCreate(proto); - } - object.prototype = proto; - var result = new object; - object.prototype = undefined; - return result; - }; - }()); - - /** - * The function whose prototype chain sequence wrappers inherit from. - * - * @private - */ - function baseLodash() { - // No operation performed. - } - - /** - * The base constructor for creating `lodash` wrapper objects. - * - * @private - * @param {*} value The value to wrap. - * @param {boolean} [chainAll] Enable explicit method chain sequences. - */ - function LodashWrapper(value, chainAll) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__chain__ = !!chainAll; - this.__index__ = 0; - this.__values__ = undefined; - } - - /** - * By default, the template delimiters used by lodash are like those in - * embedded Ruby (ERB) as well as ES2015 template strings. Change the - * following template settings to use alternative delimiters. - * - * @static - * @memberOf _ - * @type {Object} - */ - lodash.templateSettings = { - - /** - * Used to detect `data` property values to be HTML-escaped. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - 'escape': reEscape, - - /** - * Used to detect code to be evaluated. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - 'evaluate': reEvaluate, - - /** - * Used to detect `data` property values to inject. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - 'interpolate': reInterpolate, - - /** - * Used to reference the data object in the template text. - * - * @memberOf _.templateSettings - * @type {string} - */ - 'variable': '', - - /** - * Used to import variables into the compiled template. - * - * @memberOf _.templateSettings - * @type {Object} - */ - 'imports': { - - /** - * A reference to the `lodash` function. - * - * @memberOf _.templateSettings.imports - * @type {Function} - */ - '_': lodash - } - }; - - // Ensure wrappers are instances of `baseLodash`. - lodash.prototype = baseLodash.prototype; - lodash.prototype.constructor = lodash; - - LodashWrapper.prototype = baseCreate(baseLodash.prototype); - LodashWrapper.prototype.constructor = LodashWrapper; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. - * - * @private - * @constructor - * @param {*} value The value to wrap. - */ - function LazyWrapper(value) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__dir__ = 1; - this.__filtered__ = false; - this.__iteratees__ = []; - this.__takeCount__ = MAX_ARRAY_LENGTH; - this.__views__ = []; - } - - /** - * Creates a clone of the lazy wrapper object. - * - * @private - * @name clone - * @memberOf LazyWrapper - * @returns {Object} Returns the cloned `LazyWrapper` object. - */ - function lazyClone() { - var result = new LazyWrapper(this.__wrapped__); - result.__actions__ = copyArray(this.__actions__); - result.__dir__ = this.__dir__; - result.__filtered__ = this.__filtered__; - result.__iteratees__ = copyArray(this.__iteratees__); - result.__takeCount__ = this.__takeCount__; - result.__views__ = copyArray(this.__views__); - return result; - } - - /** - * Reverses the direction of lazy iteration. - * - * @private - * @name reverse - * @memberOf LazyWrapper - * @returns {Object} Returns the new reversed `LazyWrapper` object. - */ - function lazyReverse() { - if (this.__filtered__) { - var result = new LazyWrapper(this); - result.__dir__ = -1; - result.__filtered__ = true; - } else { - result = this.clone(); - result.__dir__ *= -1; - } - return result; - } - - /** - * Extracts the unwrapped value from its lazy wrapper. - * - * @private - * @name value - * @memberOf LazyWrapper - * @returns {*} Returns the unwrapped value. - */ - function lazyValue() { - var array = this.__wrapped__.value(), - dir = this.__dir__, - isArr = isArray(array), - isRight = dir < 0, - arrLength = isArr ? array.length : 0, - view = getView(0, arrLength, this.__views__), - start = view.start, - end = view.end, - length = end - start, - index = isRight ? end : (start - 1), - iteratees = this.__iteratees__, - iterLength = iteratees.length, - resIndex = 0, - takeCount = nativeMin(length, this.__takeCount__); - - if (!isArr || (!isRight && arrLength == length && takeCount == length)) { - return baseWrapperValue(array, this.__actions__); - } - var result = []; - - outer: - while (length-- && resIndex < takeCount) { - index += dir; - - var iterIndex = -1, - value = array[index]; - - while (++iterIndex < iterLength) { - var data = iteratees[iterIndex], - iteratee = data.iteratee, - type = data.type, - computed = iteratee(value); - - if (type == LAZY_MAP_FLAG) { - value = computed; - } else if (!computed) { - if (type == LAZY_FILTER_FLAG) { - continue outer; - } else { - break outer; - } - } - } - result[resIndex++] = value; - } - return result; - } - - // Ensure `LazyWrapper` is an instance of `baseLodash`. - LazyWrapper.prototype = baseCreate(baseLodash.prototype); - LazyWrapper.prototype.constructor = LazyWrapper; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a hash object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function Hash(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - /** - * Removes all key-value entries from the hash. - * - * @private - * @name clear - * @memberOf Hash - */ - function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; - this.size = 0; - } - - /** - * Removes `key` and its value from the hash. - * - * @private - * @name delete - * @memberOf Hash - * @param {Object} hash The hash to modify. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function hashDelete(key) { - var result = this.has(key) && delete this.__data__[key]; - this.size -= result ? 1 : 0; - return result; - } - - /** - * Gets the hash value for `key`. - * - * @private - * @name get - * @memberOf Hash - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED ? undefined : result; - } - return hasOwnProperty.call(data, key) ? data[key] : undefined; - } - - /** - * Checks if a hash value for `key` exists. - * - * @private - * @name has - * @memberOf Hash - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function hashHas(key) { - var data = this.__data__; - return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); - } - - /** - * Sets the hash `key` to `value`. - * - * @private - * @name set - * @memberOf Hash - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the hash instance. - */ - function hashSet(key, value) { - var data = this.__data__; - this.size += this.has(key) ? 0 : 1; - data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; - return this; - } - - // Add methods to `Hash`. - Hash.prototype.clear = hashClear; - Hash.prototype['delete'] = hashDelete; - Hash.prototype.get = hashGet; - Hash.prototype.has = hashHas; - Hash.prototype.set = hashSet; - - /*------------------------------------------------------------------------*/ - - /** - * Creates an list cache object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function ListCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - /** - * Removes all key-value entries from the list cache. - * - * @private - * @name clear - * @memberOf ListCache - */ - function listCacheClear() { - this.__data__ = []; - this.size = 0; - } - - /** - * Removes `key` and its value from the list cache. - * - * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function listCacheDelete(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - --this.size; - return true; - } - - /** - * Gets the list cache value for `key`. - * - * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function listCacheGet(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - return index < 0 ? undefined : data[index][1]; - } - - /** - * Checks if a list cache value for `key` exists. - * - * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; - } - - /** - * Sets the list cache `key` to `value`. - * - * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. - */ - function listCacheSet(key, value) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - ++this.size; - data.push([key, value]); - } else { - data[index][1] = value; - } - return this; - } - - // Add methods to `ListCache`. - ListCache.prototype.clear = listCacheClear; - ListCache.prototype['delete'] = listCacheDelete; - ListCache.prototype.get = listCacheGet; - ListCache.prototype.has = listCacheHas; - ListCache.prototype.set = listCacheSet; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a map cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function MapCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - /** - * Removes all key-value entries from the map. - * - * @private - * @name clear - * @memberOf MapCache - */ - function mapCacheClear() { - this.size = 0; - this.__data__ = { - 'hash': new Hash, - 'map': new (Map || ListCache), - 'string': new Hash - }; - } - - /** - * Removes `key` and its value from the map. - * - * @private - * @name delete - * @memberOf MapCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function mapCacheDelete(key) { - var result = getMapData(this, key)['delete'](key); - this.size -= result ? 1 : 0; - return result; - } - - /** - * Gets the map value for `key`. - * - * @private - * @name get - * @memberOf MapCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function mapCacheGet(key) { - return getMapData(this, key).get(key); - } - - /** - * Checks if a map value for `key` exists. - * - * @private - * @name has - * @memberOf MapCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function mapCacheHas(key) { - return getMapData(this, key).has(key); - } - - /** - * Sets the map `key` to `value`. - * - * @private - * @name set - * @memberOf MapCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the map cache instance. - */ - function mapCacheSet(key, value) { - var data = getMapData(this, key), - size = data.size; - - data.set(key, value); - this.size += data.size == size ? 0 : 1; - return this; - } - - // Add methods to `MapCache`. - MapCache.prototype.clear = mapCacheClear; - MapCache.prototype['delete'] = mapCacheDelete; - MapCache.prototype.get = mapCacheGet; - MapCache.prototype.has = mapCacheHas; - MapCache.prototype.set = mapCacheSet; - - /*------------------------------------------------------------------------*/ - - /** - * - * Creates an array cache object to store unique values. - * - * @private - * @constructor - * @param {Array} [values] The values to cache. - */ - function SetCache(values) { - var index = -1, - length = values == null ? 0 : values.length; - - this.__data__ = new MapCache; - while (++index < length) { - this.add(values[index]); - } - } - - /** - * Adds `value` to the array cache. - * - * @private - * @name add - * @memberOf SetCache - * @alias push - * @param {*} value The value to cache. - * @returns {Object} Returns the cache instance. - */ - function setCacheAdd(value) { - this.__data__.set(value, HASH_UNDEFINED); - return this; - } - - /** - * Checks if `value` is in the array cache. - * - * @private - * @name has - * @memberOf SetCache - * @param {*} value The value to search for. - * @returns {number} Returns `true` if `value` is found, else `false`. - */ - function setCacheHas(value) { - return this.__data__.has(value); - } - - // Add methods to `SetCache`. - SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; - SetCache.prototype.has = setCacheHas; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a stack cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function Stack(entries) { - var data = this.__data__ = new ListCache(entries); - this.size = data.size; - } - - /** - * Removes all key-value entries from the stack. - * - * @private - * @name clear - * @memberOf Stack - */ - function stackClear() { - this.__data__ = new ListCache; - this.size = 0; - } - - /** - * Removes `key` and its value from the stack. - * - * @private - * @name delete - * @memberOf Stack - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function stackDelete(key) { - var data = this.__data__, - result = data['delete'](key); - - this.size = data.size; - return result; - } - - /** - * Gets the stack value for `key`. - * - * @private - * @name get - * @memberOf Stack - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function stackGet(key) { - return this.__data__.get(key); - } - - /** - * Checks if a stack value for `key` exists. - * - * @private - * @name has - * @memberOf Stack - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function stackHas(key) { - return this.__data__.has(key); - } - - /** - * Sets the stack `key` to `value`. - * - * @private - * @name set - * @memberOf Stack - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the stack cache instance. - */ - function stackSet(key, value) { - var data = this.__data__; - if (data instanceof ListCache) { - var pairs = data.__data__; - if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { - pairs.push([key, value]); - this.size = ++data.size; - return this; - } - data = this.__data__ = new MapCache(pairs); - } - data.set(key, value); - this.size = data.size; - return this; - } - - // Add methods to `Stack`. - Stack.prototype.clear = stackClear; - Stack.prototype['delete'] = stackDelete; - Stack.prototype.get = stackGet; - Stack.prototype.has = stackHas; - Stack.prototype.set = stackSet; - - /*------------------------------------------------------------------------*/ - - /** - * Creates an array of the enumerable property names of the array-like `value`. - * - * @private - * @param {*} value The value to query. - * @param {boolean} inherited Specify returning inherited property names. - * @returns {Array} Returns the array of property names. - */ - function arrayLikeKeys(value, inherited) { - var isArr = isArray(value), - isArg = !isArr && isArguments(value), - isBuff = !isArr && !isArg && isBuffer(value), - isType = !isArr && !isArg && !isBuff && isTypedArray(value), - skipIndexes = isArr || isArg || isBuff || isType, - result = skipIndexes ? baseTimes(value.length, String) : [], - length = result.length; - - for (var key in value) { - if ((inherited || hasOwnProperty.call(value, key)) && - !(skipIndexes && ( - // Safari 9 has enumerable `arguments.length` in strict mode. - key == 'length' || - // Node.js 0.10 has enumerable non-index properties on buffers. - (isBuff && (key == 'offset' || key == 'parent')) || - // PhantomJS 2 has enumerable non-index properties on typed arrays. - (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || - // Skip index properties. - isIndex(key, length) - ))) { - result.push(key); - } - } - return result; - } - - /** - * A specialized version of `_.sample` for arrays. - * - * @private - * @param {Array} array The array to sample. - * @returns {*} Returns the random element. - */ - function arraySample(array) { - var length = array.length; - return length ? array[baseRandom(0, length - 1)] : undefined; - } - - /** - * A specialized version of `_.sampleSize` for arrays. - * - * @private - * @param {Array} array The array to sample. - * @param {number} n The number of elements to sample. - * @returns {Array} Returns the random elements. - */ - function arraySampleSize(array, n) { - return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length)); - } - - /** - * A specialized version of `_.shuffle` for arrays. - * - * @private - * @param {Array} array The array to shuffle. - * @returns {Array} Returns the new shuffled array. - */ - function arrayShuffle(array) { - return shuffleSelf(copyArray(array)); - } - - /** - * This function is like `assignValue` except that it doesn't assign - * `undefined` values. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ - function assignMergeValue(object, key, value) { - if ((value !== undefined && !eq(object[key], value)) || - (value === undefined && !(key in object))) { - baseAssignValue(object, key, value); - } - } - - /** - * Assigns `value` to `key` of `object` if the existing value is not equivalent - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ - function assignValue(object, key, value) { - var objValue = object[key]; - if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || - (value === undefined && !(key in object))) { - baseAssignValue(object, key, value); - } - } - - /** - * Gets the index at which the `key` is found in `array` of key-value pairs. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} key The key to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; - } - } - return -1; - } - - /** - * Aggregates elements of `collection` on `accumulator` with keys transformed - * by `iteratee` and values set by `setter`. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform keys. - * @param {Object} accumulator The initial aggregated object. - * @returns {Function} Returns `accumulator`. - */ - function baseAggregator(collection, setter, iteratee, accumulator) { - baseEach(collection, function(value, key, collection) { - setter(accumulator, value, iteratee(value), collection); - }); - return accumulator; - } - - /** - * The base implementation of `_.assign` without support for multiple sources - * or `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. - */ - function baseAssign(object, source) { - return object && copyObject(source, keys(source), object); - } - - /** - * The base implementation of `_.assignIn` without support for multiple sources - * or `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. - */ - function baseAssignIn(object, source) { - return object && copyObject(source, keysIn(source), object); - } - - /** - * The base implementation of `assignValue` and `assignMergeValue` without - * value checks. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ - function baseAssignValue(object, key, value) { - if (key == '__proto__' && defineProperty) { - defineProperty(object, key, { - 'configurable': true, - 'enumerable': true, - 'value': value, - 'writable': true - }); - } else { - object[key] = value; - } - } - - /** - * The base implementation of `_.at` without support for individual paths. - * - * @private - * @param {Object} object The object to iterate over. - * @param {string[]} paths The property paths to pick. - * @returns {Array} Returns the picked elements. - */ - function baseAt(object, paths) { - var index = -1, - length = paths.length, - result = Array(length), - skip = object == null; - - while (++index < length) { - result[index] = skip ? undefined : get(object, paths[index]); - } - return result; - } - - /** - * The base implementation of `_.clamp` which doesn't coerce arguments. - * - * @private - * @param {number} number The number to clamp. - * @param {number} [lower] The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the clamped number. - */ - function baseClamp(number, lower, upper) { - if (number === number) { - if (upper !== undefined) { - number = number <= upper ? number : upper; - } - if (lower !== undefined) { - number = number >= lower ? number : lower; - } - } - return number; - } - - /** - * The base implementation of `_.clone` and `_.cloneDeep` which tracks - * traversed objects. - * - * @private - * @param {*} value The value to clone. - * @param {boolean} bitmask The bitmask flags. - * 1 - Deep clone - * 2 - Flatten inherited properties - * 4 - Clone symbols - * @param {Function} [customizer] The function to customize cloning. - * @param {string} [key] The key of `value`. - * @param {Object} [object] The parent object of `value`. - * @param {Object} [stack] Tracks traversed objects and their clone counterparts. - * @returns {*} Returns the cloned value. - */ - function baseClone(value, bitmask, customizer, key, object, stack) { - var result, - isDeep = bitmask & CLONE_DEEP_FLAG, - isFlat = bitmask & CLONE_FLAT_FLAG, - isFull = bitmask & CLONE_SYMBOLS_FLAG; - - if (customizer) { - result = object ? customizer(value, key, object, stack) : customizer(value); - } - if (result !== undefined) { - return result; - } - if (!isObject(value)) { - return value; - } - var isArr = isArray(value); - if (isArr) { - result = initCloneArray(value); - if (!isDeep) { - return copyArray(value, result); - } - } else { - var tag = getTag(value), - isFunc = tag == funcTag || tag == genTag; - - if (isBuffer(value)) { - return cloneBuffer(value, isDeep); - } - if (tag == objectTag || tag == argsTag || (isFunc && !object)) { - result = (isFlat || isFunc) ? {} : initCloneObject(value); - if (!isDeep) { - return isFlat - ? copySymbolsIn(value, baseAssignIn(result, value)) - : copySymbols(value, baseAssign(result, value)); - } - } else { - if (!cloneableTags[tag]) { - return object ? value : {}; - } - result = initCloneByTag(value, tag, isDeep); - } - } - // Check for circular references and return its corresponding clone. - stack || (stack = new Stack); - var stacked = stack.get(value); - if (stacked) { - return stacked; - } - stack.set(value, result); - - if (isSet(value)) { - value.forEach(function(subValue) { - result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); - }); - } else if (isMap(value)) { - value.forEach(function(subValue, key) { - result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); - }); - } - - var keysFunc = isFull - ? (isFlat ? getAllKeysIn : getAllKeys) - : (isFlat ? keysIn : keys); - - var props = isArr ? undefined : keysFunc(value); - arrayEach(props || value, function(subValue, key) { - if (props) { - key = subValue; - subValue = value[key]; - } - // Recursively populate clone (susceptible to call stack limits). - assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); - }); - return result; - } - - /** - * The base implementation of `_.conforms` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property predicates to conform to. - * @returns {Function} Returns the new spec function. - */ - function baseConforms(source) { - var props = keys(source); - return function(object) { - return baseConformsTo(object, source, props); - }; - } - - /** - * The base implementation of `_.conformsTo` which accepts `props` to check. - * - * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property predicates to conform to. - * @returns {boolean} Returns `true` if `object` conforms, else `false`. - */ - function baseConformsTo(object, source, props) { - var length = props.length; - if (object == null) { - return !length; - } - object = Object(object); - while (length--) { - var key = props[length], - predicate = source[key], - value = object[key]; - - if ((value === undefined && !(key in object)) || !predicate(value)) { - return false; - } - } - return true; - } - - /** - * The base implementation of `_.delay` and `_.defer` which accepts `args` - * to provide to `func`. - * - * @private - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {Array} args The arguments to provide to `func`. - * @returns {number|Object} Returns the timer id or timeout object. - */ - function baseDelay(func, wait, args) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return setTimeout(function() { func.apply(undefined, args); }, wait); - } - - /** - * The base implementation of methods like `_.difference` without support - * for excluding multiple arrays or iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Array} values The values to exclude. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of filtered values. - */ - function baseDifference(array, values, iteratee, comparator) { - var index = -1, - includes = arrayIncludes, - isCommon = true, - length = array.length, - result = [], - valuesLength = values.length; - - if (!length) { - return result; - } - if (iteratee) { - values = arrayMap(values, baseUnary(iteratee)); - } - if (comparator) { - includes = arrayIncludesWith; - isCommon = false; - } - else if (values.length >= LARGE_ARRAY_SIZE) { - includes = cacheHas; - isCommon = false; - values = new SetCache(values); - } - outer: - while (++index < length) { - var value = array[index], - computed = iteratee == null ? value : iteratee(value); - - value = (comparator || value !== 0) ? value : 0; - if (isCommon && computed === computed) { - var valuesIndex = valuesLength; - while (valuesIndex--) { - if (values[valuesIndex] === computed) { - continue outer; - } - } - result.push(value); - } - else if (!includes(values, computed, comparator)) { - result.push(value); - } - } - return result; - } - - /** - * The base implementation of `_.forEach` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - */ - var baseEach = createBaseEach(baseForOwn); - - /** - * The base implementation of `_.forEachRight` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - */ - var baseEachRight = createBaseEach(baseForOwnRight, true); - - /** - * The base implementation of `_.every` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false` - */ - function baseEvery(collection, predicate) { - var result = true; - baseEach(collection, function(value, index, collection) { - result = !!predicate(value, index, collection); - return result; - }); - return result; - } - - /** - * The base implementation of methods like `_.max` and `_.min` which accepts a - * `comparator` to determine the extremum value. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The iteratee invoked per iteration. - * @param {Function} comparator The comparator used to compare values. - * @returns {*} Returns the extremum value. - */ - function baseExtremum(array, iteratee, comparator) { - var index = -1, - length = array.length; - - while (++index < length) { - var value = array[index], - current = iteratee(value); - - if (current != null && (computed === undefined - ? (current === current && !isSymbol(current)) - : comparator(current, computed) - )) { - var computed = current, - result = value; - } - } - return result; - } - - /** - * The base implementation of `_.fill` without an iteratee call guard. - * - * @private - * @param {Array} array The array to fill. - * @param {*} value The value to fill `array` with. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns `array`. - */ - function baseFill(array, value, start, end) { - var length = array.length; - - start = toInteger(start); - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = (end === undefined || end > length) ? length : toInteger(end); - if (end < 0) { - end += length; - } - end = start > end ? 0 : toLength(end); - while (start < end) { - array[start++] = value; - } - return array; - } - - /** - * The base implementation of `_.filter` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ - function baseFilter(collection, predicate) { - var result = []; - baseEach(collection, function(value, index, collection) { - if (predicate(value, index, collection)) { - result.push(value); - } - }); - return result; - } - - /** - * The base implementation of `_.flatten` with support for restricting flattening. - * - * @private - * @param {Array} array The array to flatten. - * @param {number} depth The maximum recursion depth. - * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. - * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. - * @param {Array} [result=[]] The initial result value. - * @returns {Array} Returns the new flattened array. - */ - function baseFlatten(array, depth, predicate, isStrict, result) { - var index = -1, - length = array.length; - - predicate || (predicate = isFlattenable); - result || (result = []); - - while (++index < length) { - var value = array[index]; - if (depth > 0 && predicate(value)) { - if (depth > 1) { - // Recursively flatten arrays (susceptible to call stack limits). - baseFlatten(value, depth - 1, predicate, isStrict, result); - } else { - arrayPush(result, value); - } - } else if (!isStrict) { - result[result.length] = value; - } - } - return result; - } - - /** - * The base implementation of `baseForOwn` which iterates over `object` - * properties returned by `keysFunc` and invokes `iteratee` for each property. - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ - var baseFor = createBaseFor(); - - /** - * This function is like `baseFor` except that it iterates over properties - * in the opposite order. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ - var baseForRight = createBaseFor(true); - - /** - * The base implementation of `_.forOwn` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ - function baseForOwn(object, iteratee) { - return object && baseFor(object, iteratee, keys); - } - - /** - * The base implementation of `_.forOwnRight` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ - function baseForOwnRight(object, iteratee) { - return object && baseForRight(object, iteratee, keys); - } - - /** - * The base implementation of `_.functions` which creates an array of - * `object` function property names filtered from `props`. - * - * @private - * @param {Object} object The object to inspect. - * @param {Array} props The property names to filter. - * @returns {Array} Returns the function names. - */ - function baseFunctions(object, props) { - return arrayFilter(props, function(key) { - return isFunction(object[key]); - }); - } - - /** - * The base implementation of `_.get` without support for default values. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @returns {*} Returns the resolved value. - */ - function baseGet(object, path) { - path = castPath(path, object); - - var index = 0, - length = path.length; - - while (object != null && index < length) { - object = object[toKey(path[index++])]; - } - return (index && index == length) ? object : undefined; - } - - /** - * The base implementation of `getAllKeys` and `getAllKeysIn` which uses - * `keysFunc` and `symbolsFunc` to get the enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Function} keysFunc The function to get the keys of `object`. - * @param {Function} symbolsFunc The function to get the symbols of `object`. - * @returns {Array} Returns the array of property names and symbols. - */ - function baseGetAllKeys(object, keysFunc, symbolsFunc) { - var result = keysFunc(object); - return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); - } - - /** - * The base implementation of `getTag` without fallbacks for buggy environments. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ - function baseGetTag(value) { - if (value == null) { - return value === undefined ? undefinedTag : nullTag; - } - return (symToStringTag && symToStringTag in Object(value)) - ? getRawTag(value) - : objectToString(value); - } - - /** - * The base implementation of `_.gt` which doesn't coerce arguments. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than `other`, - * else `false`. - */ - function baseGt(value, other) { - return value > other; - } - - /** - * The base implementation of `_.has` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ - function baseHas(object, key) { - return object != null && hasOwnProperty.call(object, key); - } - - /** - * The base implementation of `_.hasIn` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ - function baseHasIn(object, key) { - return object != null && key in Object(object); - } - - /** - * The base implementation of `_.inRange` which doesn't coerce arguments. - * - * @private - * @param {number} number The number to check. - * @param {number} start The start of the range. - * @param {number} end The end of the range. - * @returns {boolean} Returns `true` if `number` is in the range, else `false`. - */ - function baseInRange(number, start, end) { - return number >= nativeMin(start, end) && number < nativeMax(start, end); - } - - /** - * The base implementation of methods like `_.intersection`, without support - * for iteratee shorthands, that accepts an array of arrays to inspect. - * - * @private - * @param {Array} arrays The arrays to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of shared values. - */ - function baseIntersection(arrays, iteratee, comparator) { - var includes = comparator ? arrayIncludesWith : arrayIncludes, - length = arrays[0].length, - othLength = arrays.length, - othIndex = othLength, - caches = Array(othLength), - maxLength = Infinity, - result = []; - - while (othIndex--) { - var array = arrays[othIndex]; - if (othIndex && iteratee) { - array = arrayMap(array, baseUnary(iteratee)); - } - maxLength = nativeMin(array.length, maxLength); - caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) - ? new SetCache(othIndex && array) - : undefined; - } - array = arrays[0]; - - var index = -1, - seen = caches[0]; - - outer: - while (++index < length && result.length < maxLength) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - value = (comparator || value !== 0) ? value : 0; - if (!(seen - ? cacheHas(seen, computed) - : includes(result, computed, comparator) - )) { - othIndex = othLength; - while (--othIndex) { - var cache = caches[othIndex]; - if (!(cache - ? cacheHas(cache, computed) - : includes(arrays[othIndex], computed, comparator)) - ) { - continue outer; - } - } - if (seen) { - seen.push(computed); - } - result.push(value); - } - } - return result; - } - - /** - * The base implementation of `_.invert` and `_.invertBy` which inverts - * `object` with values transformed by `iteratee` and set by `setter`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform values. - * @param {Object} accumulator The initial inverted object. - * @returns {Function} Returns `accumulator`. - */ - function baseInverter(object, setter, iteratee, accumulator) { - baseForOwn(object, function(value, key, object) { - setter(accumulator, iteratee(value), key, object); - }); - return accumulator; - } - - /** - * The base implementation of `_.invoke` without support for individual - * method arguments. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the method to invoke. - * @param {Array} args The arguments to invoke the method with. - * @returns {*} Returns the result of the invoked method. - */ - function baseInvoke(object, path, args) { - path = castPath(path, object); - object = parent(object, path); - var func = object == null ? object : object[toKey(last(path))]; - return func == null ? undefined : apply(func, object, args); - } - - /** - * The base implementation of `_.isArguments`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - */ - function baseIsArguments(value) { - return isObjectLike(value) && baseGetTag(value) == argsTag; - } - - /** - * The base implementation of `_.isArrayBuffer` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. - */ - function baseIsArrayBuffer(value) { - return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; - } - - /** - * The base implementation of `_.isDate` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a date object, else `false`. - */ - function baseIsDate(value) { - return isObjectLike(value) && baseGetTag(value) == dateTag; - } - - /** - * The base implementation of `_.isEqual` which supports partial comparisons - * and tracks traversed objects. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {boolean} bitmask The bitmask flags. - * 1 - Unordered comparison - * 2 - Partial comparison - * @param {Function} [customizer] The function to customize comparisons. - * @param {Object} [stack] Tracks traversed `value` and `other` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ - function baseIsEqual(value, other, bitmask, customizer, stack) { - if (value === other) { - return true; - } - if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { - return value !== value && other !== other; - } - return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); - } - - /** - * A specialized version of `baseIsEqual` for arrays and objects which performs - * deep comparisons and tracks traversed objects enabling objects with circular - * references to be compared. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} [stack] Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { - var objIsArr = isArray(object), - othIsArr = isArray(other), - objTag = objIsArr ? arrayTag : getTag(object), - othTag = othIsArr ? arrayTag : getTag(other); - - objTag = objTag == argsTag ? objectTag : objTag; - othTag = othTag == argsTag ? objectTag : othTag; - - var objIsObj = objTag == objectTag, - othIsObj = othTag == objectTag, - isSameTag = objTag == othTag; - - if (isSameTag && isBuffer(object)) { - if (!isBuffer(other)) { - return false; - } - objIsArr = true; - objIsObj = false; - } - if (isSameTag && !objIsObj) { - stack || (stack = new Stack); - return (objIsArr || isTypedArray(object)) - ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) - : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); - } - if (!(bitmask & COMPARE_PARTIAL_FLAG)) { - var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), - othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); - - if (objIsWrapped || othIsWrapped) { - var objUnwrapped = objIsWrapped ? object.value() : object, - othUnwrapped = othIsWrapped ? other.value() : other; - - stack || (stack = new Stack); - return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); - } - } - if (!isSameTag) { - return false; - } - stack || (stack = new Stack); - return equalObjects(object, other, bitmask, customizer, equalFunc, stack); - } - - /** - * The base implementation of `_.isMap` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a map, else `false`. - */ - function baseIsMap(value) { - return isObjectLike(value) && getTag(value) == mapTag; - } - - /** - * The base implementation of `_.isMatch` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Array} matchData The property names, values, and compare flags to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - */ - function baseIsMatch(object, source, matchData, customizer) { - var index = matchData.length, - length = index, - noCustomizer = !customizer; - - if (object == null) { - return !length; - } - object = Object(object); - while (index--) { - var data = matchData[index]; - if ((noCustomizer && data[2]) - ? data[1] !== object[data[0]] - : !(data[0] in object) - ) { - return false; - } - } - while (++index < length) { - data = matchData[index]; - var key = data[0], - objValue = object[key], - srcValue = data[1]; - - if (noCustomizer && data[2]) { - if (objValue === undefined && !(key in object)) { - return false; - } - } else { - var stack = new Stack; - if (customizer) { - var result = customizer(objValue, srcValue, key, object, source, stack); - } - if (!(result === undefined - ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) - : result - )) { - return false; - } - } - } - return true; - } - - /** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ - function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; - } - var pattern = isFunction(value) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); - } - - /** - * The base implementation of `_.isRegExp` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. - */ - function baseIsRegExp(value) { - return isObjectLike(value) && baseGetTag(value) == regexpTag; - } - - /** - * The base implementation of `_.isSet` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a set, else `false`. - */ - function baseIsSet(value) { - return isObjectLike(value) && getTag(value) == setTag; - } - - /** - * The base implementation of `_.isTypedArray` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - */ - function baseIsTypedArray(value) { - return isObjectLike(value) && - isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; - } - - /** - * The base implementation of `_.iteratee`. - * - * @private - * @param {*} [value=_.identity] The value to convert to an iteratee. - * @returns {Function} Returns the iteratee. - */ - function baseIteratee(value) { - // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. - // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. - if (typeof value == 'function') { - return value; - } - if (value == null) { - return identity; - } - if (typeof value == 'object') { - return isArray(value) - ? baseMatchesProperty(value[0], value[1]) - : baseMatches(value); - } - return property(value); - } - - /** - * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function baseKeys(object) { - if (!isPrototype(object)) { - return nativeKeys(object); - } - var result = []; - for (var key in Object(object)) { - if (hasOwnProperty.call(object, key) && key != 'constructor') { - result.push(key); - } - } - return result; - } - - /** - * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function baseKeysIn(object) { - if (!isObject(object)) { - return nativeKeysIn(object); - } - var isProto = isPrototype(object), - result = []; - - for (var key in object) { - if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { - result.push(key); - } - } - return result; - } - - /** - * The base implementation of `_.lt` which doesn't coerce arguments. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than `other`, - * else `false`. - */ - function baseLt(value, other) { - return value < other; - } - - /** - * The base implementation of `_.map` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ - function baseMap(collection, iteratee) { - var index = -1, - result = isArrayLike(collection) ? Array(collection.length) : []; - - baseEach(collection, function(value, key, collection) { - result[++index] = iteratee(value, key, collection); - }); - return result; - } - - /** - * The base implementation of `_.matches` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property values to match. - * @returns {Function} Returns the new spec function. - */ - function baseMatches(source) { - var matchData = getMatchData(source); - if (matchData.length == 1 && matchData[0][2]) { - return matchesStrictComparable(matchData[0][0], matchData[0][1]); - } - return function(object) { - return object === source || baseIsMatch(object, source, matchData); - }; - } - - /** - * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. - * - * @private - * @param {string} path The path of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ - function baseMatchesProperty(path, srcValue) { - if (isKey(path) && isStrictComparable(srcValue)) { - return matchesStrictComparable(toKey(path), srcValue); - } - return function(object) { - var objValue = get(object, path); - return (objValue === undefined && objValue === srcValue) - ? hasIn(object, path) - : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); - }; - } - - /** - * The base implementation of `_.merge` without support for multiple sources. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {number} srcIndex The index of `source`. - * @param {Function} [customizer] The function to customize merged values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ - function baseMerge(object, source, srcIndex, customizer, stack) { - if (object === source) { - return; - } - baseFor(source, function(srcValue, key) { - stack || (stack = new Stack); - if (isObject(srcValue)) { - baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); - } - else { - var newValue = customizer - ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) - : undefined; - - if (newValue === undefined) { - newValue = srcValue; - } - assignMergeValue(object, key, newValue); - } - }, keysIn); - } - - /** - * A specialized version of `baseMerge` for arrays and objects which performs - * deep merges and tracks traversed objects enabling objects with circular - * references to be merged. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {string} key The key of the value to merge. - * @param {number} srcIndex The index of `source`. - * @param {Function} mergeFunc The function to merge values. - * @param {Function} [customizer] The function to customize assigned values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ - function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { - var objValue = safeGet(object, key), - srcValue = safeGet(source, key), - stacked = stack.get(srcValue); - - if (stacked) { - assignMergeValue(object, key, stacked); - return; - } - var newValue = customizer - ? customizer(objValue, srcValue, (key + ''), object, source, stack) - : undefined; - - var isCommon = newValue === undefined; - - if (isCommon) { - var isArr = isArray(srcValue), - isBuff = !isArr && isBuffer(srcValue), - isTyped = !isArr && !isBuff && isTypedArray(srcValue); - - newValue = srcValue; - if (isArr || isBuff || isTyped) { - if (isArray(objValue)) { - newValue = objValue; - } - else if (isArrayLikeObject(objValue)) { - newValue = copyArray(objValue); - } - else if (isBuff) { - isCommon = false; - newValue = cloneBuffer(srcValue, true); - } - else if (isTyped) { - isCommon = false; - newValue = cloneTypedArray(srcValue, true); - } - else { - newValue = []; - } - } - else if (isPlainObject(srcValue) || isArguments(srcValue)) { - newValue = objValue; - if (isArguments(objValue)) { - newValue = toPlainObject(objValue); - } - else if (!isObject(objValue) || isFunction(objValue)) { - newValue = initCloneObject(srcValue); - } - } - else { - isCommon = false; - } - } - if (isCommon) { - // Recursively merge objects and arrays (susceptible to call stack limits). - stack.set(srcValue, newValue); - mergeFunc(newValue, srcValue, srcIndex, customizer, stack); - stack['delete'](srcValue); - } - assignMergeValue(object, key, newValue); - } - - /** - * The base implementation of `_.nth` which doesn't coerce arguments. - * - * @private - * @param {Array} array The array to query. - * @param {number} n The index of the element to return. - * @returns {*} Returns the nth element of `array`. - */ - function baseNth(array, n) { - var length = array.length; - if (!length) { - return; - } - n += n < 0 ? length : 0; - return isIndex(n, length) ? array[n] : undefined; - } - - /** - * The base implementation of `_.orderBy` without param guards. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. - * @param {string[]} orders The sort orders of `iteratees`. - * @returns {Array} Returns the new sorted array. - */ - function baseOrderBy(collection, iteratees, orders) { - var index = -1; - iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee())); - - var result = baseMap(collection, function(value, key, collection) { - var criteria = arrayMap(iteratees, function(iteratee) { - return iteratee(value); - }); - return { 'criteria': criteria, 'index': ++index, 'value': value }; - }); - - return baseSortBy(result, function(object, other) { - return compareMultiple(object, other, orders); - }); - } - - /** - * The base implementation of `_.pick` without support for individual - * property identifiers. - * - * @private - * @param {Object} object The source object. - * @param {string[]} paths The property paths to pick. - * @returns {Object} Returns the new object. - */ - function basePick(object, paths) { - return basePickBy(object, paths, function(value, path) { - return hasIn(object, path); - }); - } - - /** - * The base implementation of `_.pickBy` without support for iteratee shorthands. - * - * @private - * @param {Object} object The source object. - * @param {string[]} paths The property paths to pick. - * @param {Function} predicate The function invoked per property. - * @returns {Object} Returns the new object. - */ - function basePickBy(object, paths, predicate) { - var index = -1, - length = paths.length, - result = {}; - - while (++index < length) { - var path = paths[index], - value = baseGet(object, path); - - if (predicate(value, path)) { - baseSet(result, castPath(path, object), value); - } - } - return result; - } - - /** - * A specialized version of `baseProperty` which supports deep paths. - * - * @private - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new accessor function. - */ - function basePropertyDeep(path) { - return function(object) { - return baseGet(object, path); - }; - } - - /** - * The base implementation of `_.pullAllBy` without support for iteratee - * shorthands. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns `array`. - */ - function basePullAll(array, values, iteratee, comparator) { - var indexOf = comparator ? baseIndexOfWith : baseIndexOf, - index = -1, - length = values.length, - seen = array; - - if (array === values) { - values = copyArray(values); - } - if (iteratee) { - seen = arrayMap(array, baseUnary(iteratee)); - } - while (++index < length) { - var fromIndex = 0, - value = values[index], - computed = iteratee ? iteratee(value) : value; - - while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) { - if (seen !== array) { - splice.call(seen, fromIndex, 1); - } - splice.call(array, fromIndex, 1); - } - } - return array; - } - - /** - * The base implementation of `_.pullAt` without support for individual - * indexes or capturing the removed elements. - * - * @private - * @param {Array} array The array to modify. - * @param {number[]} indexes The indexes of elements to remove. - * @returns {Array} Returns `array`. - */ - function basePullAt(array, indexes) { - var length = array ? indexes.length : 0, - lastIndex = length - 1; - - while (length--) { - var index = indexes[length]; - if (length == lastIndex || index !== previous) { - var previous = index; - if (isIndex(index)) { - splice.call(array, index, 1); - } else { - baseUnset(array, index); - } - } - } - return array; - } - - /** - * The base implementation of `_.random` without support for returning - * floating-point numbers. - * - * @private - * @param {number} lower The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the random number. - */ - function baseRandom(lower, upper) { - return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); - } - - /** - * The base implementation of `_.range` and `_.rangeRight` which doesn't - * coerce arguments. - * - * @private - * @param {number} start The start of the range. - * @param {number} end The end of the range. - * @param {number} step The value to increment or decrement by. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Array} Returns the range of numbers. - */ - function baseRange(start, end, step, fromRight) { - var index = -1, - length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), - result = Array(length); - - while (length--) { - result[fromRight ? length : ++index] = start; - start += step; - } - return result; - } - - /** - * The base implementation of `_.repeat` which doesn't coerce arguments. - * - * @private - * @param {string} string The string to repeat. - * @param {number} n The number of times to repeat the string. - * @returns {string} Returns the repeated string. - */ - function baseRepeat(string, n) { - var result = ''; - if (!string || n < 1 || n > MAX_SAFE_INTEGER) { - return result; - } - // Leverage the exponentiation by squaring algorithm for a faster repeat. - // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. - do { - if (n % 2) { - result += string; - } - n = nativeFloor(n / 2); - if (n) { - string += string; - } - } while (n); - - return result; - } - - /** - * The base implementation of `_.rest` which doesn't validate or coerce arguments. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. - */ - function baseRest(func, start) { - return setToString(overRest(func, start, identity), func + ''); - } - - /** - * The base implementation of `_.sample`. - * - * @private - * @param {Array|Object} collection The collection to sample. - * @returns {*} Returns the random element. - */ - function baseSample(collection) { - return arraySample(values(collection)); - } - - /** - * The base implementation of `_.sampleSize` without param guards. - * - * @private - * @param {Array|Object} collection The collection to sample. - * @param {number} n The number of elements to sample. - * @returns {Array} Returns the random elements. - */ - function baseSampleSize(collection, n) { - var array = values(collection); - return shuffleSelf(array, baseClamp(n, 0, array.length)); - } - - /** - * The base implementation of `_.set`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @param {Function} [customizer] The function to customize path creation. - * @returns {Object} Returns `object`. - */ - function baseSet(object, path, value, customizer) { - if (!isObject(object)) { - return object; - } - path = castPath(path, object); - - var index = -1, - length = path.length, - lastIndex = length - 1, - nested = object; - - while (nested != null && ++index < length) { - var key = toKey(path[index]), - newValue = value; - - if (index != lastIndex) { - var objValue = nested[key]; - newValue = customizer ? customizer(objValue, key, nested) : undefined; - if (newValue === undefined) { - newValue = isObject(objValue) - ? objValue - : (isIndex(path[index + 1]) ? [] : {}); - } - } - assignValue(nested, key, newValue); - nested = nested[key]; - } - return object; - } - - /** - * The base implementation of `setData` without support for hot loop shorting. - * - * @private - * @param {Function} func The function to associate metadata with. - * @param {*} data The metadata. - * @returns {Function} Returns `func`. - */ - var baseSetData = !metaMap ? identity : function(func, data) { - metaMap.set(func, data); - return func; - }; - - /** - * The base implementation of `setToString` without support for hot loop shorting. - * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ - var baseSetToString = !defineProperty ? identity : function(func, string) { - return defineProperty(func, 'toString', { - 'configurable': true, - 'enumerable': false, - 'value': constant(string), - 'writable': true - }); - }; - - /** - * The base implementation of `_.shuffle`. - * - * @private - * @param {Array|Object} collection The collection to shuffle. - * @returns {Array} Returns the new shuffled array. - */ - function baseShuffle(collection) { - return shuffleSelf(values(collection)); - } - - /** - * The base implementation of `_.slice` without an iteratee call guard. - * - * @private - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ - function baseSlice(array, start, end) { - var index = -1, - length = array.length; - - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = end > length ? length : end; - if (end < 0) { - end += length; - } - length = start > end ? 0 : ((end - start) >>> 0); - start >>>= 0; - - var result = Array(length); - while (++index < length) { - result[index] = array[index + start]; - } - return result; - } - - /** - * The base implementation of `_.some` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ - function baseSome(collection, predicate) { - var result; - - baseEach(collection, function(value, index, collection) { - result = predicate(value, index, collection); - return !result; - }); - return !!result; - } - - /** - * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which - * performs a binary search of `array` to determine the index at which `value` - * should be inserted into `array` in order to maintain its sort order. - * - * @private - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {boolean} [retHighest] Specify returning the highest qualified index. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - */ - function baseSortedIndex(array, value, retHighest) { - var low = 0, - high = array == null ? low : array.length; - - if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { - while (low < high) { - var mid = (low + high) >>> 1, - computed = array[mid]; - - if (computed !== null && !isSymbol(computed) && - (retHighest ? (computed <= value) : (computed < value))) { - low = mid + 1; - } else { - high = mid; - } - } - return high; - } - return baseSortedIndexBy(array, value, identity, retHighest); - } - - /** - * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy` - * which invokes `iteratee` for `value` and each element of `array` to compute - * their sort ranking. The iteratee is invoked with one argument; (value). - * - * @private - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function} iteratee The iteratee invoked per element. - * @param {boolean} [retHighest] Specify returning the highest qualified index. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - */ - function baseSortedIndexBy(array, value, iteratee, retHighest) { - value = iteratee(value); - - var low = 0, - high = array == null ? 0 : array.length, - valIsNaN = value !== value, - valIsNull = value === null, - valIsSymbol = isSymbol(value), - valIsUndefined = value === undefined; - - while (low < high) { - var mid = nativeFloor((low + high) / 2), - computed = iteratee(array[mid]), - othIsDefined = computed !== undefined, - othIsNull = computed === null, - othIsReflexive = computed === computed, - othIsSymbol = isSymbol(computed); - - if (valIsNaN) { - var setLow = retHighest || othIsReflexive; - } else if (valIsUndefined) { - setLow = othIsReflexive && (retHighest || othIsDefined); - } else if (valIsNull) { - setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); - } else if (valIsSymbol) { - setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); - } else if (othIsNull || othIsSymbol) { - setLow = false; - } else { - setLow = retHighest ? (computed <= value) : (computed < value); - } - if (setLow) { - low = mid + 1; - } else { - high = mid; - } - } - return nativeMin(high, MAX_ARRAY_INDEX); - } - - /** - * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. - */ - function baseSortedUniq(array, iteratee) { - var index = -1, - length = array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - if (!index || !eq(computed, seen)) { - var seen = computed; - result[resIndex++] = value === 0 ? 0 : value; - } - } - return result; - } - - /** - * The base implementation of `_.toNumber` which doesn't ensure correct - * conversions of binary, hexadecimal, or octal string values. - * - * @private - * @param {*} value The value to process. - * @returns {number} Returns the number. - */ - function baseToNumber(value) { - if (typeof value == 'number') { - return value; - } - if (isSymbol(value)) { - return NAN; - } - return +value; - } - - /** - * The base implementation of `_.toString` which doesn't convert nullish - * values to empty strings. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ - function baseToString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (isArray(value)) { - // Recursively convert values (susceptible to call stack limits). - return arrayMap(value, baseToString) + ''; - } - if (isSymbol(value)) { - return symbolToString ? symbolToString.call(value) : ''; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; - } - - /** - * The base implementation of `_.uniqBy` without support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new duplicate free array. - */ - function baseUniq(array, iteratee, comparator) { - var index = -1, - includes = arrayIncludes, - length = array.length, - isCommon = true, - result = [], - seen = result; - - if (comparator) { - isCommon = false; - includes = arrayIncludesWith; - } - else if (length >= LARGE_ARRAY_SIZE) { - var set = iteratee ? null : createSet(array); - if (set) { - return setToArray(set); - } - isCommon = false; - includes = cacheHas; - seen = new SetCache; - } - else { - seen = iteratee ? [] : result; - } - outer: - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - value = (comparator || value !== 0) ? value : 0; - if (isCommon && computed === computed) { - var seenIndex = seen.length; - while (seenIndex--) { - if (seen[seenIndex] === computed) { - continue outer; - } - } - if (iteratee) { - seen.push(computed); - } - result.push(value); - } - else if (!includes(seen, computed, comparator)) { - if (seen !== result) { - seen.push(computed); - } - result.push(value); - } - } - return result; - } - - /** - * The base implementation of `_.unset`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The property path to unset. - * @returns {boolean} Returns `true` if the property is deleted, else `false`. - */ - function baseUnset(object, path) { - path = castPath(path, object); - object = parent(object, path); - return object == null || delete object[toKey(last(path))]; - } - - /** - * The base implementation of `_.update`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to update. - * @param {Function} updater The function to produce the updated value. - * @param {Function} [customizer] The function to customize path creation. - * @returns {Object} Returns `object`. - */ - function baseUpdate(object, path, updater, customizer) { - return baseSet(object, path, updater(baseGet(object, path)), customizer); - } - - /** - * The base implementation of methods like `_.dropWhile` and `_.takeWhile` - * without support for iteratee shorthands. - * - * @private - * @param {Array} array The array to query. - * @param {Function} predicate The function invoked per iteration. - * @param {boolean} [isDrop] Specify dropping elements instead of taking them. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Array} Returns the slice of `array`. - */ - function baseWhile(array, predicate, isDrop, fromRight) { - var length = array.length, - index = fromRight ? length : -1; - - while ((fromRight ? index-- : ++index < length) && - predicate(array[index], index, array)) {} - - return isDrop - ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length)) - : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index)); - } - - /** - * The base implementation of `wrapperValue` which returns the result of - * performing a sequence of actions on the unwrapped `value`, where each - * successive action is supplied the return value of the previous. - * - * @private - * @param {*} value The unwrapped value. - * @param {Array} actions Actions to perform to resolve the unwrapped value. - * @returns {*} Returns the resolved value. - */ - function baseWrapperValue(value, actions) { - var result = value; - if (result instanceof LazyWrapper) { - result = result.value(); - } - return arrayReduce(actions, function(result, action) { - return action.func.apply(action.thisArg, arrayPush([result], action.args)); - }, result); - } - - /** - * The base implementation of methods like `_.xor`, without support for - * iteratee shorthands, that accepts an array of arrays to inspect. - * - * @private - * @param {Array} arrays The arrays to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of values. - */ - function baseXor(arrays, iteratee, comparator) { - var length = arrays.length; - if (length < 2) { - return length ? baseUniq(arrays[0]) : []; - } - var index = -1, - result = Array(length); - - while (++index < length) { - var array = arrays[index], - othIndex = -1; - - while (++othIndex < length) { - if (othIndex != index) { - result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator); - } - } - } - return baseUniq(baseFlatten(result, 1), iteratee, comparator); - } - - /** - * This base implementation of `_.zipObject` which assigns values using `assignFunc`. - * - * @private - * @param {Array} props The property identifiers. - * @param {Array} values The property values. - * @param {Function} assignFunc The function to assign values. - * @returns {Object} Returns the new object. - */ - function baseZipObject(props, values, assignFunc) { - var index = -1, - length = props.length, - valsLength = values.length, - result = {}; - - while (++index < length) { - var value = index < valsLength ? values[index] : undefined; - assignFunc(result, props[index], value); - } - return result; - } - - /** - * Casts `value` to an empty array if it's not an array like object. - * - * @private - * @param {*} value The value to inspect. - * @returns {Array|Object} Returns the cast array-like object. - */ - function castArrayLikeObject(value) { - return isArrayLikeObject(value) ? value : []; - } - - /** - * Casts `value` to `identity` if it's not a function. - * - * @private - * @param {*} value The value to inspect. - * @returns {Function} Returns cast function. - */ - function castFunction(value) { - return typeof value == 'function' ? value : identity; - } - - /** - * Casts `value` to a path array if it's not one. - * - * @private - * @param {*} value The value to inspect. - * @param {Object} [object] The object to query keys on. - * @returns {Array} Returns the cast property path array. - */ - function castPath(value, object) { - if (isArray(value)) { - return value; - } - return isKey(value, object) ? [value] : stringToPath(toString(value)); - } - - /** - * A `baseRest` alias which can be replaced with `identity` by module - * replacement plugins. - * - * @private - * @type {Function} - * @param {Function} func The function to apply a rest parameter to. - * @returns {Function} Returns the new function. - */ - var castRest = baseRest; - - /** - * Casts `array` to a slice if it's needed. - * - * @private - * @param {Array} array The array to inspect. - * @param {number} start The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the cast slice. - */ - function castSlice(array, start, end) { - var length = array.length; - end = end === undefined ? length : end; - return (!start && end >= length) ? array : baseSlice(array, start, end); - } - - /** - * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout). - * - * @private - * @param {number|Object} id The timer id or timeout object of the timer to clear. - */ - var clearTimeout = ctxClearTimeout || function(id) { - return root.clearTimeout(id); - }; - - /** - * Creates a clone of `buffer`. - * - * @private - * @param {Buffer} buffer The buffer to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Buffer} Returns the cloned buffer. - */ - function cloneBuffer(buffer, isDeep) { - if (isDeep) { - return buffer.slice(); - } - var length = buffer.length, - result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); - - buffer.copy(result); - return result; - } - - /** - * Creates a clone of `arrayBuffer`. - * - * @private - * @param {ArrayBuffer} arrayBuffer The array buffer to clone. - * @returns {ArrayBuffer} Returns the cloned array buffer. - */ - function cloneArrayBuffer(arrayBuffer) { - var result = new arrayBuffer.constructor(arrayBuffer.byteLength); - new Uint8Array(result).set(new Uint8Array(arrayBuffer)); - return result; - } - - /** - * Creates a clone of `dataView`. - * - * @private - * @param {Object} dataView The data view to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned data view. - */ - function cloneDataView(dataView, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; - return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); - } - - /** - * Creates a clone of `regexp`. - * - * @private - * @param {Object} regexp The regexp to clone. - * @returns {Object} Returns the cloned regexp. - */ - function cloneRegExp(regexp) { - var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); - result.lastIndex = regexp.lastIndex; - return result; - } - - /** - * Creates a clone of the `symbol` object. - * - * @private - * @param {Object} symbol The symbol object to clone. - * @returns {Object} Returns the cloned symbol object. - */ - function cloneSymbol(symbol) { - return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; - } - - /** - * Creates a clone of `typedArray`. - * - * @private - * @param {Object} typedArray The typed array to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned typed array. - */ - function cloneTypedArray(typedArray, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; - return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); - } - - /** - * Compares values to sort them in ascending order. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {number} Returns the sort order indicator for `value`. - */ - function compareAscending(value, other) { - if (value !== other) { - var valIsDefined = value !== undefined, - valIsNull = value === null, - valIsReflexive = value === value, - valIsSymbol = isSymbol(value); - - var othIsDefined = other !== undefined, - othIsNull = other === null, - othIsReflexive = other === other, - othIsSymbol = isSymbol(other); - - if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || - (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || - (valIsNull && othIsDefined && othIsReflexive) || - (!valIsDefined && othIsReflexive) || - !valIsReflexive) { - return 1; - } - if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || - (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || - (othIsNull && valIsDefined && valIsReflexive) || - (!othIsDefined && valIsReflexive) || - !othIsReflexive) { - return -1; - } - } - return 0; - } - - /** - * Used by `_.orderBy` to compare multiple properties of a value to another - * and stable sort them. - * - * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, - * specify an order of "desc" for descending or "asc" for ascending sort order - * of corresponding values. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {boolean[]|string[]} orders The order to sort by for each property. - * @returns {number} Returns the sort order indicator for `object`. - */ - function compareMultiple(object, other, orders) { - var index = -1, - objCriteria = object.criteria, - othCriteria = other.criteria, - length = objCriteria.length, - ordersLength = orders.length; - - while (++index < length) { - var result = compareAscending(objCriteria[index], othCriteria[index]); - if (result) { - if (index >= ordersLength) { - return result; - } - var order = orders[index]; - return result * (order == 'desc' ? -1 : 1); - } - } - // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications - // that causes it, under certain circumstances, to provide the same value for - // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 - // for more details. - // - // This also ensures a stable sort in V8 and other engines. - // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. - return object.index - other.index; - } - - /** - * Creates an array that is the composition of partially applied arguments, - * placeholders, and provided arguments into a single array of arguments. - * - * @private - * @param {Array} args The provided arguments. - * @param {Array} partials The arguments to prepend to those provided. - * @param {Array} holders The `partials` placeholder indexes. - * @params {boolean} [isCurried] Specify composing for a curried function. - * @returns {Array} Returns the new array of composed arguments. - */ - function composeArgs(args, partials, holders, isCurried) { - var argsIndex = -1, - argsLength = args.length, - holdersLength = holders.length, - leftIndex = -1, - leftLength = partials.length, - rangeLength = nativeMax(argsLength - holdersLength, 0), - result = Array(leftLength + rangeLength), - isUncurried = !isCurried; - - while (++leftIndex < leftLength) { - result[leftIndex] = partials[leftIndex]; - } - while (++argsIndex < holdersLength) { - if (isUncurried || argsIndex < argsLength) { - result[holders[argsIndex]] = args[argsIndex]; - } - } - while (rangeLength--) { - result[leftIndex++] = args[argsIndex++]; - } - return result; - } - - /** - * This function is like `composeArgs` except that the arguments composition - * is tailored for `_.partialRight`. - * - * @private - * @param {Array} args The provided arguments. - * @param {Array} partials The arguments to append to those provided. - * @param {Array} holders The `partials` placeholder indexes. - * @params {boolean} [isCurried] Specify composing for a curried function. - * @returns {Array} Returns the new array of composed arguments. - */ - function composeArgsRight(args, partials, holders, isCurried) { - var argsIndex = -1, - argsLength = args.length, - holdersIndex = -1, - holdersLength = holders.length, - rightIndex = -1, - rightLength = partials.length, - rangeLength = nativeMax(argsLength - holdersLength, 0), - result = Array(rangeLength + rightLength), - isUncurried = !isCurried; - - while (++argsIndex < rangeLength) { - result[argsIndex] = args[argsIndex]; - } - var offset = argsIndex; - while (++rightIndex < rightLength) { - result[offset + rightIndex] = partials[rightIndex]; - } - while (++holdersIndex < holdersLength) { - if (isUncurried || argsIndex < argsLength) { - result[offset + holders[holdersIndex]] = args[argsIndex++]; - } - } - return result; - } - - /** - * Copies the values of `source` to `array`. - * - * @private - * @param {Array} source The array to copy values from. - * @param {Array} [array=[]] The array to copy values to. - * @returns {Array} Returns `array`. - */ - function copyArray(source, array) { - var index = -1, - length = source.length; - - array || (array = Array(length)); - while (++index < length) { - array[index] = source[index]; - } - return array; - } - - /** - * Copies properties of `source` to `object`. - * - * @private - * @param {Object} source The object to copy properties from. - * @param {Array} props The property identifiers to copy. - * @param {Object} [object={}] The object to copy properties to. - * @param {Function} [customizer] The function to customize copied values. - * @returns {Object} Returns `object`. - */ - function copyObject(source, props, object, customizer) { - var isNew = !object; - object || (object = {}); - - var index = -1, - length = props.length; - - while (++index < length) { - var key = props[index]; - - var newValue = customizer - ? customizer(object[key], source[key], key, object, source) - : undefined; - - if (newValue === undefined) { - newValue = source[key]; - } - if (isNew) { - baseAssignValue(object, key, newValue); - } else { - assignValue(object, key, newValue); - } - } - return object; - } - - /** - * Copies own symbols of `source` to `object`. - * - * @private - * @param {Object} source The object to copy symbols from. - * @param {Object} [object={}] The object to copy symbols to. - * @returns {Object} Returns `object`. - */ - function copySymbols(source, object) { - return copyObject(source, getSymbols(source), object); - } - - /** - * Copies own and inherited symbols of `source` to `object`. - * - * @private - * @param {Object} source The object to copy symbols from. - * @param {Object} [object={}] The object to copy symbols to. - * @returns {Object} Returns `object`. - */ - function copySymbolsIn(source, object) { - return copyObject(source, getSymbolsIn(source), object); - } - - /** - * Creates a function like `_.groupBy`. - * - * @private - * @param {Function} setter The function to set accumulator values. - * @param {Function} [initializer] The accumulator object initializer. - * @returns {Function} Returns the new aggregator function. - */ - function createAggregator(setter, initializer) { - return function(collection, iteratee) { - var func = isArray(collection) ? arrayAggregator : baseAggregator, - accumulator = initializer ? initializer() : {}; - - return func(collection, setter, getIteratee(iteratee, 2), accumulator); - }; - } - - /** - * Creates a function like `_.assign`. - * - * @private - * @param {Function} assigner The function to assign values. - * @returns {Function} Returns the new assigner function. - */ - function createAssigner(assigner) { - return baseRest(function(object, sources) { - var index = -1, - length = sources.length, - customizer = length > 1 ? sources[length - 1] : undefined, - guard = length > 2 ? sources[2] : undefined; - - customizer = (assigner.length > 3 && typeof customizer == 'function') - ? (length--, customizer) - : undefined; - - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - customizer = length < 3 ? undefined : customizer; - length = 1; - } - object = Object(object); - while (++index < length) { - var source = sources[index]; - if (source) { - assigner(object, source, index, customizer); - } - } - return object; - }); - } - - /** - * Creates a `baseEach` or `baseEachRight` function. - * - * @private - * @param {Function} eachFunc The function to iterate over a collection. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ - function createBaseEach(eachFunc, fromRight) { - return function(collection, iteratee) { - if (collection == null) { - return collection; - } - if (!isArrayLike(collection)) { - return eachFunc(collection, iteratee); - } - var length = collection.length, - index = fromRight ? length : -1, - iterable = Object(collection); - - while ((fromRight ? index-- : ++index < length)) { - if (iteratee(iterable[index], index, iterable) === false) { - break; - } - } - return collection; - }; - } - - /** - * Creates a base function for methods like `_.forIn` and `_.forOwn`. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ - function createBaseFor(fromRight) { - return function(object, iteratee, keysFunc) { - var index = -1, - iterable = Object(object), - props = keysFunc(object), - length = props.length; - - while (length--) { - var key = props[fromRight ? length : ++index]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; - }; - } - - /** - * Creates a function that wraps `func` to invoke it with the optional `this` - * binding of `thisArg`. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} [thisArg] The `this` binding of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createBind(func, bitmask, thisArg) { - var isBind = bitmask & WRAP_BIND_FLAG, - Ctor = createCtor(func); - - function wrapper() { - var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - return fn.apply(isBind ? thisArg : this, arguments); - } - return wrapper; - } - - /** - * Creates a function like `_.lowerFirst`. - * - * @private - * @param {string} methodName The name of the `String` case method to use. - * @returns {Function} Returns the new case function. - */ - function createCaseFirst(methodName) { - return function(string) { - string = toString(string); - - var strSymbols = hasUnicode(string) - ? stringToArray(string) - : undefined; - - var chr = strSymbols - ? strSymbols[0] - : string.charAt(0); - - var trailing = strSymbols - ? castSlice(strSymbols, 1).join('') - : string.slice(1); - - return chr[methodName]() + trailing; - }; - } - - /** - * Creates a function like `_.camelCase`. - * - * @private - * @param {Function} callback The function to combine each word. - * @returns {Function} Returns the new compounder function. - */ - function createCompounder(callback) { - return function(string) { - return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); - }; - } - - /** - * Creates a function that produces an instance of `Ctor` regardless of - * whether it was invoked as part of a `new` expression or by `call` or `apply`. - * - * @private - * @param {Function} Ctor The constructor to wrap. - * @returns {Function} Returns the new wrapped function. - */ - function createCtor(Ctor) { - return function() { - // Use a `switch` statement to work with class constructors. See - // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist - // for more details. - var args = arguments; - switch (args.length) { - case 0: return new Ctor; - case 1: return new Ctor(args[0]); - case 2: return new Ctor(args[0], args[1]); - case 3: return new Ctor(args[0], args[1], args[2]); - case 4: return new Ctor(args[0], args[1], args[2], args[3]); - case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); - case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); - case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); - } - var thisBinding = baseCreate(Ctor.prototype), - result = Ctor.apply(thisBinding, args); - - // Mimic the constructor's `return` behavior. - // See https://es5.github.io/#x13.2.2 for more details. - return isObject(result) ? result : thisBinding; - }; - } - - /** - * Creates a function that wraps `func` to enable currying. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {number} arity The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createCurry(func, bitmask, arity) { - var Ctor = createCtor(func); - - function wrapper() { - var length = arguments.length, - args = Array(length), - index = length, - placeholder = getHolder(wrapper); - - while (index--) { - args[index] = arguments[index]; - } - var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder) - ? [] - : replaceHolders(args, placeholder); - - length -= holders.length; - if (length < arity) { - return createRecurry( - func, bitmask, createHybrid, wrapper.placeholder, undefined, - args, holders, undefined, undefined, arity - length); - } - var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - return apply(fn, this, args); - } - return wrapper; - } - - /** - * Creates a `_.find` or `_.findLast` function. - * - * @private - * @param {Function} findIndexFunc The function to find the collection index. - * @returns {Function} Returns the new find function. - */ - function createFind(findIndexFunc) { - return function(collection, predicate, fromIndex) { - var iterable = Object(collection); - if (!isArrayLike(collection)) { - var iteratee = getIteratee(predicate, 3); - collection = keys(collection); - predicate = function(key) { return iteratee(iterable[key], key, iterable); }; - } - var index = findIndexFunc(collection, predicate, fromIndex); - return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; - }; - } - - /** - * Creates a `_.flow` or `_.flowRight` function. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new flow function. - */ - function createFlow(fromRight) { - return flatRest(function(funcs) { - var length = funcs.length, - index = length, - prereq = LodashWrapper.prototype.thru; - - if (fromRight) { - funcs.reverse(); - } - while (index--) { - var func = funcs[index]; - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - if (prereq && !wrapper && getFuncName(func) == 'wrapper') { - var wrapper = new LodashWrapper([], true); - } - } - index = wrapper ? index : length; - while (++index < length) { - func = funcs[index]; - - var funcName = getFuncName(func), - data = funcName == 'wrapper' ? getData(func) : undefined; - - if (data && isLaziable(data[0]) && - data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && - !data[4].length && data[9] == 1 - ) { - wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); - } else { - wrapper = (func.length == 1 && isLaziable(func)) - ? wrapper[funcName]() - : wrapper.thru(func); - } - } - return function() { - var args = arguments, - value = args[0]; - - if (wrapper && args.length == 1 && isArray(value)) { - return wrapper.plant(value).value(); - } - var index = 0, - result = length ? funcs[index].apply(this, args) : value; - - while (++index < length) { - result = funcs[index].call(this, result); - } - return result; - }; - }); - } - - /** - * Creates a function that wraps `func` to invoke it with optional `this` - * binding of `thisArg`, partial application, and currying. - * - * @private - * @param {Function|string} func The function or method name to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to prepend to those provided to - * the new function. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [partialsRight] The arguments to append to those provided - * to the new function. - * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { - var isAry = bitmask & WRAP_ARY_FLAG, - isBind = bitmask & WRAP_BIND_FLAG, - isBindKey = bitmask & WRAP_BIND_KEY_FLAG, - isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), - isFlip = bitmask & WRAP_FLIP_FLAG, - Ctor = isBindKey ? undefined : createCtor(func); - - function wrapper() { - var length = arguments.length, - args = Array(length), - index = length; - - while (index--) { - args[index] = arguments[index]; - } - if (isCurried) { - var placeholder = getHolder(wrapper), - holdersCount = countHolders(args, placeholder); - } - if (partials) { - args = composeArgs(args, partials, holders, isCurried); - } - if (partialsRight) { - args = composeArgsRight(args, partialsRight, holdersRight, isCurried); - } - length -= holdersCount; - if (isCurried && length < arity) { - var newHolders = replaceHolders(args, placeholder); - return createRecurry( - func, bitmask, createHybrid, wrapper.placeholder, thisArg, - args, newHolders, argPos, ary, arity - length - ); - } - var thisBinding = isBind ? thisArg : this, - fn = isBindKey ? thisBinding[func] : func; - - length = args.length; - if (argPos) { - args = reorder(args, argPos); - } else if (isFlip && length > 1) { - args.reverse(); - } - if (isAry && ary < length) { - args.length = ary; - } - if (this && this !== root && this instanceof wrapper) { - fn = Ctor || createCtor(fn); - } - return fn.apply(thisBinding, args); - } - return wrapper; - } - - /** - * Creates a function like `_.invertBy`. - * - * @private - * @param {Function} setter The function to set accumulator values. - * @param {Function} toIteratee The function to resolve iteratees. - * @returns {Function} Returns the new inverter function. - */ - function createInverter(setter, toIteratee) { - return function(object, iteratee) { - return baseInverter(object, setter, toIteratee(iteratee), {}); - }; - } - - /** - * Creates a function that performs a mathematical operation on two values. - * - * @private - * @param {Function} operator The function to perform the operation. - * @param {number} [defaultValue] The value used for `undefined` arguments. - * @returns {Function} Returns the new mathematical operation function. - */ - function createMathOperation(operator, defaultValue) { - return function(value, other) { - var result; - if (value === undefined && other === undefined) { - return defaultValue; - } - if (value !== undefined) { - result = value; - } - if (other !== undefined) { - if (result === undefined) { - return other; - } - if (typeof value == 'string' || typeof other == 'string') { - value = baseToString(value); - other = baseToString(other); - } else { - value = baseToNumber(value); - other = baseToNumber(other); - } - result = operator(value, other); - } - return result; - }; - } - - /** - * Creates a function like `_.over`. - * - * @private - * @param {Function} arrayFunc The function to iterate over iteratees. - * @returns {Function} Returns the new over function. - */ - function createOver(arrayFunc) { - return flatRest(function(iteratees) { - iteratees = arrayMap(iteratees, baseUnary(getIteratee())); - return baseRest(function(args) { - var thisArg = this; - return arrayFunc(iteratees, function(iteratee) { - return apply(iteratee, thisArg, args); - }); - }); - }); - } - - /** - * Creates the padding for `string` based on `length`. The `chars` string - * is truncated if the number of characters exceeds `length`. - * - * @private - * @param {number} length The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padding for `string`. - */ - function createPadding(length, chars) { - chars = chars === undefined ? ' ' : baseToString(chars); - - var charsLength = chars.length; - if (charsLength < 2) { - return charsLength ? baseRepeat(chars, length) : chars; - } - var result = baseRepeat(chars, nativeCeil(length / stringSize(chars))); - return hasUnicode(chars) - ? castSlice(stringToArray(result), 0, length).join('') - : result.slice(0, length); - } - - /** - * Creates a function that wraps `func` to invoke it with the `this` binding - * of `thisArg` and `partials` prepended to the arguments it receives. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} partials The arguments to prepend to those provided to - * the new function. - * @returns {Function} Returns the new wrapped function. - */ - function createPartial(func, bitmask, thisArg, partials) { - var isBind = bitmask & WRAP_BIND_FLAG, - Ctor = createCtor(func); - - function wrapper() { - var argsIndex = -1, - argsLength = arguments.length, - leftIndex = -1, - leftLength = partials.length, - args = Array(leftLength + argsLength), - fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - - while (++leftIndex < leftLength) { - args[leftIndex] = partials[leftIndex]; - } - while (argsLength--) { - args[leftIndex++] = arguments[++argsIndex]; - } - return apply(fn, isBind ? thisArg : this, args); - } - return wrapper; - } - - /** - * Creates a `_.range` or `_.rangeRight` function. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new range function. - */ - function createRange(fromRight) { - return function(start, end, step) { - if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { - end = step = undefined; - } - // Ensure the sign of `-0` is preserved. - start = toFinite(start); - if (end === undefined) { - end = start; - start = 0; - } else { - end = toFinite(end); - } - step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); - return baseRange(start, end, step, fromRight); - }; - } - - /** - * Creates a function that performs a relational operation on two values. - * - * @private - * @param {Function} operator The function to perform the operation. - * @returns {Function} Returns the new relational operation function. - */ - function createRelationalOperation(operator) { - return function(value, other) { - if (!(typeof value == 'string' && typeof other == 'string')) { - value = toNumber(value); - other = toNumber(other); - } - return operator(value, other); - }; - } - - /** - * Creates a function that wraps `func` to continue currying. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {Function} wrapFunc The function to create the `func` wrapper. - * @param {*} placeholder The placeholder value. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to prepend to those provided to - * the new function. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) { - var isCurry = bitmask & WRAP_CURRY_FLAG, - newHolders = isCurry ? holders : undefined, - newHoldersRight = isCurry ? undefined : holders, - newPartials = isCurry ? partials : undefined, - newPartialsRight = isCurry ? undefined : partials; - - bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG); - bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); - - if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { - bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); - } - var newData = [ - func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, - newHoldersRight, argPos, ary, arity - ]; - - var result = wrapFunc.apply(undefined, newData); - if (isLaziable(func)) { - setData(result, newData); - } - result.placeholder = placeholder; - return setWrapToString(result, func, bitmask); - } - - /** - * Creates a function like `_.round`. - * - * @private - * @param {string} methodName The name of the `Math` method to use when rounding. - * @returns {Function} Returns the new round function. - */ - function createRound(methodName) { - var func = Math[methodName]; - return function(number, precision) { - number = toNumber(number); - precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); - if (precision && nativeIsFinite(number)) { - // Shift with exponential notation to avoid floating-point issues. - // See [MDN](https://mdn.io/round#Examples) for more details. - var pair = (toString(number) + 'e').split('e'), - value = func(pair[0] + 'e' + (+pair[1] + precision)); - - pair = (toString(value) + 'e').split('e'); - return +(pair[0] + 'e' + (+pair[1] - precision)); - } - return func(number); - }; - } - - /** - * Creates a set object of `values`. - * - * @private - * @param {Array} values The values to add to the set. - * @returns {Object} Returns the new set. - */ - var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { - return new Set(values); - }; - - /** - * Creates a `_.toPairs` or `_.toPairsIn` function. - * - * @private - * @param {Function} keysFunc The function to get the keys of a given object. - * @returns {Function} Returns the new pairs function. - */ - function createToPairs(keysFunc) { - return function(object) { - var tag = getTag(object); - if (tag == mapTag) { - return mapToArray(object); - } - if (tag == setTag) { - return setToPairs(object); - } - return baseToPairs(object, keysFunc(object)); - }; - } - - /** - * Creates a function that either curries or invokes `func` with optional - * `this` binding and partially applied arguments. - * - * @private - * @param {Function|string} func The function or method name to wrap. - * @param {number} bitmask The bitmask flags. - * 1 - `_.bind` - * 2 - `_.bindKey` - * 4 - `_.curry` or `_.curryRight` of a bound function - * 8 - `_.curry` - * 16 - `_.curryRight` - * 32 - `_.partial` - * 64 - `_.partialRight` - * 128 - `_.rearg` - * 256 - `_.ary` - * 512 - `_.flip` - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to be partially applied. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { - var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; - if (!isBindKey && typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - var length = partials ? partials.length : 0; - if (!length) { - bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); - partials = holders = undefined; - } - ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0); - arity = arity === undefined ? arity : toInteger(arity); - length -= holders ? holders.length : 0; - - if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { - var partialsRight = partials, - holdersRight = holders; - - partials = holders = undefined; - } - var data = isBindKey ? undefined : getData(func); - - var newData = [ - func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, - argPos, ary, arity - ]; - - if (data) { - mergeData(newData, data); - } - func = newData[0]; - bitmask = newData[1]; - thisArg = newData[2]; - partials = newData[3]; - holders = newData[4]; - arity = newData[9] = newData[9] === undefined - ? (isBindKey ? 0 : func.length) - : nativeMax(newData[9] - length, 0); - - if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { - bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); - } - if (!bitmask || bitmask == WRAP_BIND_FLAG) { - var result = createBind(func, bitmask, thisArg); - } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { - result = createCurry(func, bitmask, arity); - } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { - result = createPartial(func, bitmask, thisArg, partials); - } else { - result = createHybrid.apply(undefined, newData); - } - var setter = data ? baseSetData : setData; - return setWrapToString(setter(result, newData), func, bitmask); - } - - /** - * Used by `_.defaults` to customize its `_.assignIn` use to assign properties - * of source objects to the destination object for all destination properties - * that resolve to `undefined`. - * - * @private - * @param {*} objValue The destination value. - * @param {*} srcValue The source value. - * @param {string} key The key of the property to assign. - * @param {Object} object The parent object of `objValue`. - * @returns {*} Returns the value to assign. - */ - function customDefaultsAssignIn(objValue, srcValue, key, object) { - if (objValue === undefined || - (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) { - return srcValue; - } - return objValue; - } - - /** - * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source - * objects into destination objects that are passed thru. - * - * @private - * @param {*} objValue The destination value. - * @param {*} srcValue The source value. - * @param {string} key The key of the property to merge. - * @param {Object} object The parent object of `objValue`. - * @param {Object} source The parent object of `srcValue`. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - * @returns {*} Returns the value to assign. - */ - function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { - if (isObject(objValue) && isObject(srcValue)) { - // Recursively merge objects and arrays (susceptible to call stack limits). - stack.set(srcValue, objValue); - baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack); - stack['delete'](srcValue); - } - return objValue; - } - - /** - * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain - * objects. - * - * @private - * @param {*} value The value to inspect. - * @param {string} key The key of the property to inspect. - * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`. - */ - function customOmitClone(value) { - return isPlainObject(value) ? undefined : value; - } - - /** - * A specialized version of `baseIsEqualDeep` for arrays with support for - * partial deep comparisons. - * - * @private - * @param {Array} array The array to compare. - * @param {Array} other The other array to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `array` and `other` objects. - * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. - */ - function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, - arrLength = array.length, - othLength = other.length; - - if (arrLength != othLength && !(isPartial && othLength > arrLength)) { - return false; - } - // Assume cyclic values are equal. - var stacked = stack.get(array); - if (stacked && stack.get(other)) { - return stacked == other; - } - var index = -1, - result = true, - seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; - - stack.set(array, other); - stack.set(other, array); - - // Ignore non-index properties. - while (++index < arrLength) { - var arrValue = array[index], - othValue = other[index]; - - if (customizer) { - var compared = isPartial - ? customizer(othValue, arrValue, index, other, array, stack) - : customizer(arrValue, othValue, index, array, other, stack); - } - if (compared !== undefined) { - if (compared) { - continue; - } - result = false; - break; - } - // Recursively compare arrays (susceptible to call stack limits). - if (seen) { - if (!arraySome(other, function(othValue, othIndex) { - if (!cacheHas(seen, othIndex) && - (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { - return seen.push(othIndex); - } - })) { - result = false; - break; - } - } else if (!( - arrValue === othValue || - equalFunc(arrValue, othValue, bitmask, customizer, stack) - )) { - result = false; - break; - } - } - stack['delete'](array); - stack['delete'](other); - return result; - } - - /** - * A specialized version of `baseIsEqualDeep` for comparing objects of - * the same `toStringTag`. - * - * **Note:** This function only supports comparing values with tags of - * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {string} tag The `toStringTag` of the objects to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { - switch (tag) { - case dataViewTag: - if ((object.byteLength != other.byteLength) || - (object.byteOffset != other.byteOffset)) { - return false; - } - object = object.buffer; - other = other.buffer; - - case arrayBufferTag: - if ((object.byteLength != other.byteLength) || - !equalFunc(new Uint8Array(object), new Uint8Array(other))) { - return false; - } - return true; - - case boolTag: - case dateTag: - case numberTag: - // Coerce booleans to `1` or `0` and dates to milliseconds. - // Invalid dates are coerced to `NaN`. - return eq(+object, +other); - - case errorTag: - return object.name == other.name && object.message == other.message; - - case regexpTag: - case stringTag: - // Coerce regexes to strings and treat strings, primitives and objects, - // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring - // for more details. - return object == (other + ''); - - case mapTag: - var convert = mapToArray; - - case setTag: - var isPartial = bitmask & COMPARE_PARTIAL_FLAG; - convert || (convert = setToArray); - - if (object.size != other.size && !isPartial) { - return false; - } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked) { - return stacked == other; - } - bitmask |= COMPARE_UNORDERED_FLAG; - - // Recursively compare objects (susceptible to call stack limits). - stack.set(object, other); - var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); - stack['delete'](object); - return result; - - case symbolTag: - if (symbolValueOf) { - return symbolValueOf.call(object) == symbolValueOf.call(other); - } - } - return false; - } - - /** - * A specialized version of `baseIsEqualDeep` for objects with support for - * partial deep comparisons. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, - objProps = getAllKeys(object), - objLength = objProps.length, - othProps = getAllKeys(other), - othLength = othProps.length; - - if (objLength != othLength && !isPartial) { - return false; - } - var index = objLength; - while (index--) { - var key = objProps[index]; - if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { - return false; - } - } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked && stack.get(other)) { - return stacked == other; - } - var result = true; - stack.set(object, other); - stack.set(other, object); - - var skipCtor = isPartial; - while (++index < objLength) { - key = objProps[index]; - var objValue = object[key], - othValue = other[key]; - - if (customizer) { - var compared = isPartial - ? customizer(othValue, objValue, key, other, object, stack) - : customizer(objValue, othValue, key, object, other, stack); - } - // Recursively compare objects (susceptible to call stack limits). - if (!(compared === undefined - ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) - : compared - )) { - result = false; - break; - } - skipCtor || (skipCtor = key == 'constructor'); - } - if (result && !skipCtor) { - var objCtor = object.constructor, - othCtor = other.constructor; - - // Non `Object` object instances with different constructors are not equal. - if (objCtor != othCtor && - ('constructor' in object && 'constructor' in other) && - !(typeof objCtor == 'function' && objCtor instanceof objCtor && - typeof othCtor == 'function' && othCtor instanceof othCtor)) { - result = false; - } - } - stack['delete'](object); - stack['delete'](other); - return result; - } - - /** - * A specialized version of `baseRest` which flattens the rest array. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @returns {Function} Returns the new function. - */ - function flatRest(func) { - return setToString(overRest(func, undefined, flatten), func + ''); - } - - /** - * Creates an array of own enumerable property names and symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ - function getAllKeys(object) { - return baseGetAllKeys(object, keys, getSymbols); - } - - /** - * Creates an array of own and inherited enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ - function getAllKeysIn(object) { - return baseGetAllKeys(object, keysIn, getSymbolsIn); - } - - /** - * Gets metadata for `func`. - * - * @private - * @param {Function} func The function to query. - * @returns {*} Returns the metadata for `func`. - */ - var getData = !metaMap ? noop : function(func) { - return metaMap.get(func); - }; - - /** - * Gets the name of `func`. - * - * @private - * @param {Function} func The function to query. - * @returns {string} Returns the function name. - */ - function getFuncName(func) { - var result = (func.name + ''), - array = realNames[result], - length = hasOwnProperty.call(realNames, result) ? array.length : 0; - - while (length--) { - var data = array[length], - otherFunc = data.func; - if (otherFunc == null || otherFunc == func) { - return data.name; - } - } - return result; - } - - /** - * Gets the argument placeholder value for `func`. - * - * @private - * @param {Function} func The function to inspect. - * @returns {*} Returns the placeholder value. - */ - function getHolder(func) { - var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func; - return object.placeholder; - } - - /** - * Gets the appropriate "iteratee" function. If `_.iteratee` is customized, - * this function returns the custom method, otherwise it returns `baseIteratee`. - * If arguments are provided, the chosen function is invoked with them and - * its result is returned. - * - * @private - * @param {*} [value] The value to convert to an iteratee. - * @param {number} [arity] The arity of the created iteratee. - * @returns {Function} Returns the chosen function or its result. - */ - function getIteratee() { - var result = lodash.iteratee || iteratee; - result = result === iteratee ? baseIteratee : result; - return arguments.length ? result(arguments[0], arguments[1]) : result; - } - - /** - * Gets the data for `map`. - * - * @private - * @param {Object} map The map to query. - * @param {string} key The reference key. - * @returns {*} Returns the map data. - */ - function getMapData(map, key) { - var data = map.__data__; - return isKeyable(key) - ? data[typeof key == 'string' ? 'string' : 'hash'] - : data.map; - } - - /** - * Gets the property names, values, and compare flags of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the match data of `object`. - */ - function getMatchData(object) { - var result = keys(object), - length = result.length; - - while (length--) { - var key = result[length], - value = object[key]; - - result[length] = [key, value, isStrictComparable(value)]; - } - return result; - } - - /** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ - function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined; - } - - /** - * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the raw `toStringTag`. - */ - function getRawTag(value) { - var isOwn = hasOwnProperty.call(value, symToStringTag), - tag = value[symToStringTag]; - - try { - value[symToStringTag] = undefined; - var unmasked = true; - } catch (e) {} - - var result = nativeObjectToString.call(value); - if (unmasked) { - if (isOwn) { - value[symToStringTag] = tag; - } else { - delete value[symToStringTag]; - } - } - return result; - } - - /** - * Creates an array of the own enumerable symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ - var getSymbols = !nativeGetSymbols ? stubArray : function(object) { - if (object == null) { - return []; - } - object = Object(object); - return arrayFilter(nativeGetSymbols(object), function(symbol) { - return propertyIsEnumerable.call(object, symbol); - }); - }; - - /** - * Creates an array of the own and inherited enumerable symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ - var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { - var result = []; - while (object) { - arrayPush(result, getSymbols(object)); - object = getPrototype(object); - } - return result; - }; - - /** - * Gets the `toStringTag` of `value`. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ - var getTag = baseGetTag; - - // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. - if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || - (Map && getTag(new Map) != mapTag) || - (Promise && getTag(Promise.resolve()) != promiseTag) || - (Set && getTag(new Set) != setTag) || - (WeakMap && getTag(new WeakMap) != weakMapTag)) { - getTag = function(value) { - var result = baseGetTag(value), - Ctor = result == objectTag ? value.constructor : undefined, - ctorString = Ctor ? toSource(Ctor) : ''; - - if (ctorString) { - switch (ctorString) { - case dataViewCtorString: return dataViewTag; - case mapCtorString: return mapTag; - case promiseCtorString: return promiseTag; - case setCtorString: return setTag; - case weakMapCtorString: return weakMapTag; - } - } - return result; - }; - } - - /** - * Gets the view, applying any `transforms` to the `start` and `end` positions. - * - * @private - * @param {number} start The start of the view. - * @param {number} end The end of the view. - * @param {Array} transforms The transformations to apply to the view. - * @returns {Object} Returns an object containing the `start` and `end` - * positions of the view. - */ - function getView(start, end, transforms) { - var index = -1, - length = transforms.length; - - while (++index < length) { - var data = transforms[index], - size = data.size; - - switch (data.type) { - case 'drop': start += size; break; - case 'dropRight': end -= size; break; - case 'take': end = nativeMin(end, start + size); break; - case 'takeRight': start = nativeMax(start, end - size); break; - } - } - return { 'start': start, 'end': end }; - } - - /** - * Extracts wrapper details from the `source` body comment. - * - * @private - * @param {string} source The source to inspect. - * @returns {Array} Returns the wrapper details. - */ - function getWrapDetails(source) { - var match = source.match(reWrapDetails); - return match ? match[1].split(reSplitDetails) : []; - } - - /** - * Checks if `path` exists on `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @param {Function} hasFunc The function to check properties. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - */ - function hasPath(object, path, hasFunc) { - path = castPath(path, object); - - var index = -1, - length = path.length, - result = false; - - while (++index < length) { - var key = toKey(path[index]); - if (!(result = object != null && hasFunc(object, key))) { - break; - } - object = object[key]; - } - if (result || ++index != length) { - return result; - } - length = object == null ? 0 : object.length; - return !!length && isLength(length) && isIndex(key, length) && - (isArray(object) || isArguments(object)); - } - - /** - * Initializes an array clone. - * - * @private - * @param {Array} array The array to clone. - * @returns {Array} Returns the initialized clone. - */ - function initCloneArray(array) { - var length = array.length, - result = new array.constructor(length); - - // Add properties assigned by `RegExp#exec`. - if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { - result.index = array.index; - result.input = array.input; - } - return result; - } - - /** - * Initializes an object clone. - * - * @private - * @param {Object} object The object to clone. - * @returns {Object} Returns the initialized clone. - */ - function initCloneObject(object) { - return (typeof object.constructor == 'function' && !isPrototype(object)) - ? baseCreate(getPrototype(object)) - : {}; - } - - /** - * Initializes an object clone based on its `toStringTag`. - * - * **Note:** This function only supports cloning values with tags of - * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. - * - * @private - * @param {Object} object The object to clone. - * @param {string} tag The `toStringTag` of the object to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the initialized clone. - */ - function initCloneByTag(object, tag, isDeep) { - var Ctor = object.constructor; - switch (tag) { - case arrayBufferTag: - return cloneArrayBuffer(object); - - case boolTag: - case dateTag: - return new Ctor(+object); - - case dataViewTag: - return cloneDataView(object, isDeep); - - case float32Tag: case float64Tag: - case int8Tag: case int16Tag: case int32Tag: - case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: - return cloneTypedArray(object, isDeep); - - case mapTag: - return new Ctor; - - case numberTag: - case stringTag: - return new Ctor(object); - - case regexpTag: - return cloneRegExp(object); - - case setTag: - return new Ctor; - - case symbolTag: - return cloneSymbol(object); - } - } - - /** - * Inserts wrapper `details` in a comment at the top of the `source` body. - * - * @private - * @param {string} source The source to modify. - * @returns {Array} details The details to insert. - * @returns {string} Returns the modified source. - */ - function insertWrapDetails(source, details) { - var length = details.length; - if (!length) { - return source; - } - var lastIndex = length - 1; - details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex]; - details = details.join(length > 2 ? ', ' : ' '); - return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n'); - } - - /** - * Checks if `value` is a flattenable `arguments` object or array. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. - */ - function isFlattenable(value) { - return isArray(value) || isArguments(value) || - !!(spreadableSymbol && value && value[spreadableSymbol]); - } - - /** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ - function isIndex(value, length) { - var type = typeof value; - length = length == null ? MAX_SAFE_INTEGER : length; - - return !!length && - (type == 'number' || - (type != 'symbol' && reIsUint.test(value))) && - (value > -1 && value % 1 == 0 && value < length); - } - - /** - * Checks if the given arguments are from an iteratee call. - * - * @private - * @param {*} value The potential iteratee value argument. - * @param {*} index The potential iteratee index or key argument. - * @param {*} object The potential iteratee object argument. - * @returns {boolean} Returns `true` if the arguments are from an iteratee call, - * else `false`. - */ - function isIterateeCall(value, index, object) { - if (!isObject(object)) { - return false; - } - var type = typeof index; - if (type == 'number' - ? (isArrayLike(object) && isIndex(index, object.length)) - : (type == 'string' && index in object) - ) { - return eq(object[index], value); - } - return false; - } - - /** - * Checks if `value` is a property name and not a property path. - * - * @private - * @param {*} value The value to check. - * @param {Object} [object] The object to query keys on. - * @returns {boolean} Returns `true` if `value` is a property name, else `false`. - */ - function isKey(value, object) { - if (isArray(value)) { - return false; - } - var type = typeof value; - if (type == 'number' || type == 'symbol' || type == 'boolean' || - value == null || isSymbol(value)) { - return true; - } - return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || - (object != null && value in Object(object)); - } - - /** - * Checks if `value` is suitable for use as unique object key. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. - */ - function isKeyable(value) { - var type = typeof value; - return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') - ? (value !== '__proto__') - : (value === null); - } - - /** - * Checks if `func` has a lazy counterpart. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` has a lazy counterpart, - * else `false`. - */ - function isLaziable(func) { - var funcName = getFuncName(func), - other = lodash[funcName]; - - if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { - return false; - } - if (func === other) { - return true; - } - var data = getData(other); - return !!data && func === data[0]; - } - - /** - * Checks if `func` has its source masked. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. - */ - function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); - } - - /** - * Checks if `func` is capable of being masked. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `func` is maskable, else `false`. - */ - var isMaskable = coreJsData ? isFunction : stubFalse; - - /** - * Checks if `value` is likely a prototype object. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. - */ - function isPrototype(value) { - var Ctor = value && value.constructor, - proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; - - return value === proto; - } - - /** - * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` if suitable for strict - * equality comparisons, else `false`. - */ - function isStrictComparable(value) { - return value === value && !isObject(value); - } - - /** - * A specialized version of `matchesProperty` for source values suitable - * for strict equality comparisons, i.e. `===`. - * - * @private - * @param {string} key The key of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ - function matchesStrictComparable(key, srcValue) { - return function(object) { - if (object == null) { - return false; - } - return object[key] === srcValue && - (srcValue !== undefined || (key in Object(object))); - }; - } - - /** - * A specialized version of `_.memoize` which clears the memoized function's - * cache when it exceeds `MAX_MEMOIZE_SIZE`. - * - * @private - * @param {Function} func The function to have its output memoized. - * @returns {Function} Returns the new memoized function. - */ - function memoizeCapped(func) { - var result = memoize(func, function(key) { - if (cache.size === MAX_MEMOIZE_SIZE) { - cache.clear(); - } - return key; - }); - - var cache = result.cache; - return result; - } - - /** - * Merges the function metadata of `source` into `data`. - * - * Merging metadata reduces the number of wrappers used to invoke a function. - * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` - * may be applied regardless of execution order. Methods like `_.ary` and - * `_.rearg` modify function arguments, making the order in which they are - * executed important, preventing the merging of metadata. However, we make - * an exception for a safe combined case where curried functions have `_.ary` - * and or `_.rearg` applied. - * - * @private - * @param {Array} data The destination metadata. - * @param {Array} source The source metadata. - * @returns {Array} Returns `data`. - */ - function mergeData(data, source) { - var bitmask = data[1], - srcBitmask = source[1], - newBitmask = bitmask | srcBitmask, - isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); - - var isCombo = - ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) || - ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) || - ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG)); - - // Exit early if metadata can't be merged. - if (!(isCommon || isCombo)) { - return data; - } - // Use source `thisArg` if available. - if (srcBitmask & WRAP_BIND_FLAG) { - data[2] = source[2]; - // Set when currying a bound function. - newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; - } - // Compose partial arguments. - var value = source[3]; - if (value) { - var partials = data[3]; - data[3] = partials ? composeArgs(partials, value, source[4]) : value; - data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; - } - // Compose partial right arguments. - value = source[5]; - if (value) { - partials = data[5]; - data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; - data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; - } - // Use source `argPos` if available. - value = source[7]; - if (value) { - data[7] = value; - } - // Use source `ary` if it's smaller. - if (srcBitmask & WRAP_ARY_FLAG) { - data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); - } - // Use source `arity` if one is not provided. - if (data[9] == null) { - data[9] = source[9]; - } - // Use source `func` and merge bitmasks. - data[0] = source[0]; - data[1] = newBitmask; - - return data; - } - - /** - * This function is like - * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * except that it includes inherited enumerable properties. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function nativeKeysIn(object) { - var result = []; - if (object != null) { - for (var key in Object(object)) { - result.push(key); - } - } - return result; - } - - /** - * Converts `value` to a string using `Object.prototype.toString`. - * - * @private - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - */ - function objectToString(value) { - return nativeObjectToString.call(value); - } - - /** - * A specialized version of `baseRest` which transforms the rest array. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @param {Function} transform The rest array transform. - * @returns {Function} Returns the new function. - */ - function overRest(func, start, transform) { - start = nativeMax(start === undefined ? (func.length - 1) : start, 0); - return function() { - var args = arguments, - index = -1, - length = nativeMax(args.length - start, 0), - array = Array(length); - - while (++index < length) { - array[index] = args[start + index]; - } - index = -1; - var otherArgs = Array(start + 1); - while (++index < start) { - otherArgs[index] = args[index]; - } - otherArgs[start] = transform(array); - return apply(func, this, otherArgs); - }; - } - - /** - * Gets the parent value at `path` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} path The path to get the parent value of. - * @returns {*} Returns the parent value. - */ - function parent(object, path) { - return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); - } - - /** - * Reorder `array` according to the specified indexes where the element at - * the first index is assigned as the first element, the element at - * the second index is assigned as the second element, and so on. - * - * @private - * @param {Array} array The array to reorder. - * @param {Array} indexes The arranged array indexes. - * @returns {Array} Returns `array`. - */ - function reorder(array, indexes) { - var arrLength = array.length, - length = nativeMin(indexes.length, arrLength), - oldArray = copyArray(array); - - while (length--) { - var index = indexes[length]; - array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; - } - return array; - } - - /** - * Gets the value at `key`, unless `key` is "__proto__" or "constructor". - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ - function safeGet(object, key) { - if (key === 'constructor' && typeof object[key] === 'function') { - return; - } - - if (key == '__proto__') { - return; - } - - return object[key]; - } - - /** - * Sets metadata for `func`. - * - * **Note:** If this function becomes hot, i.e. is invoked a lot in a short - * period of time, it will trip its breaker and transition to an identity - * function to avoid garbage collection pauses in V8. See - * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070) - * for more details. - * - * @private - * @param {Function} func The function to associate metadata with. - * @param {*} data The metadata. - * @returns {Function} Returns `func`. - */ - var setData = shortOut(baseSetData); - - /** - * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout). - * - * @private - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @returns {number|Object} Returns the timer id or timeout object. - */ - var setTimeout = ctxSetTimeout || function(func, wait) { - return root.setTimeout(func, wait); - }; - - /** - * Sets the `toString` method of `func` to return `string`. - * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ - var setToString = shortOut(baseSetToString); - - /** - * Sets the `toString` method of `wrapper` to mimic the source of `reference` - * with wrapper details in a comment at the top of the source body. - * - * @private - * @param {Function} wrapper The function to modify. - * @param {Function} reference The reference function. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @returns {Function} Returns `wrapper`. - */ - function setWrapToString(wrapper, reference, bitmask) { - var source = (reference + ''); - return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); - } - - /** - * Creates a function that'll short out and invoke `identity` instead - * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` - * milliseconds. - * - * @private - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new shortable function. - */ - function shortOut(func) { - var count = 0, - lastCalled = 0; - - return function() { - var stamp = nativeNow(), - remaining = HOT_SPAN - (stamp - lastCalled); - - lastCalled = stamp; - if (remaining > 0) { - if (++count >= HOT_COUNT) { - return arguments[0]; - } - } else { - count = 0; - } - return func.apply(undefined, arguments); - }; - } - - /** - * A specialized version of `_.shuffle` which mutates and sets the size of `array`. - * - * @private - * @param {Array} array The array to shuffle. - * @param {number} [size=array.length] The size of `array`. - * @returns {Array} Returns `array`. - */ - function shuffleSelf(array, size) { - var index = -1, - length = array.length, - lastIndex = length - 1; - - size = size === undefined ? length : size; - while (++index < size) { - var rand = baseRandom(index, lastIndex), - value = array[rand]; - - array[rand] = array[index]; - array[index] = value; - } - array.length = size; - return array; - } - - /** - * Converts `string` to a property path array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the property path array. - */ - var stringToPath = memoizeCapped(function(string) { - var result = []; - if (string.charCodeAt(0) === 46 /* . */) { - result.push(''); - } - string.replace(rePropName, function(match, number, quote, subString) { - result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); - }); - return result; - }); - - /** - * Converts `value` to a string key if it's not a string or symbol. - * - * @private - * @param {*} value The value to inspect. - * @returns {string|symbol} Returns the key. - */ - function toKey(value) { - if (typeof value == 'string' || isSymbol(value)) { - return value; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; - } - - /** - * Converts `func` to its source code. - * - * @private - * @param {Function} func The function to convert. - * @returns {string} Returns the source code. - */ - function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} - } - return ''; - } - - /** - * Updates wrapper `details` based on `bitmask` flags. - * - * @private - * @returns {Array} details The details to modify. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @returns {Array} Returns `details`. - */ - function updateWrapDetails(details, bitmask) { - arrayEach(wrapFlags, function(pair) { - var value = '_.' + pair[0]; - if ((bitmask & pair[1]) && !arrayIncludes(details, value)) { - details.push(value); - } - }); - return details.sort(); - } - - /** - * Creates a clone of `wrapper`. - * - * @private - * @param {Object} wrapper The wrapper to clone. - * @returns {Object} Returns the cloned wrapper. - */ - function wrapperClone(wrapper) { - if (wrapper instanceof LazyWrapper) { - return wrapper.clone(); - } - var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); - result.__actions__ = copyArray(wrapper.__actions__); - result.__index__ = wrapper.__index__; - result.__values__ = wrapper.__values__; - return result; - } - - /*------------------------------------------------------------------------*/ - - /** - * Creates an array of elements split into groups the length of `size`. - * If `array` can't be split evenly, the final chunk will be the remaining - * elements. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to process. - * @param {number} [size=1] The length of each chunk - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the new array of chunks. - * @example - * - * _.chunk(['a', 'b', 'c', 'd'], 2); - * // => [['a', 'b'], ['c', 'd']] - * - * _.chunk(['a', 'b', 'c', 'd'], 3); - * // => [['a', 'b', 'c'], ['d']] - */ - function chunk(array, size, guard) { - if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) { - size = 1; - } else { - size = nativeMax(toInteger(size), 0); - } - var length = array == null ? 0 : array.length; - if (!length || size < 1) { - return []; - } - var index = 0, - resIndex = 0, - result = Array(nativeCeil(length / size)); - - while (index < length) { - result[resIndex++] = baseSlice(array, index, (index += size)); - } - return result; - } - - /** - * Creates an array with all falsey values removed. The values `false`, `null`, - * `0`, `""`, `undefined`, and `NaN` are falsey. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to compact. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.compact([0, 1, false, 2, '', 3]); - * // => [1, 2, 3] - */ - function compact(array) { - var index = -1, - length = array == null ? 0 : array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (value) { - result[resIndex++] = value; - } - } - return result; - } - - /** - * Creates a new array concatenating `array` with any additional arrays - * and/or values. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to concatenate. - * @param {...*} [values] The values to concatenate. - * @returns {Array} Returns the new concatenated array. - * @example - * - * var array = [1]; - * var other = _.concat(array, 2, [3], [[4]]); - * - * console.log(other); - * // => [1, 2, 3, [4]] - * - * console.log(array); - * // => [1] - */ - function concat() { - var length = arguments.length; - if (!length) { - return []; - } - var args = Array(length - 1), - array = arguments[0], - index = length; - - while (index--) { - args[index - 1] = arguments[index]; - } - return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)); - } - - /** - * Creates an array of `array` values not included in the other given arrays - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. The order and references of result values are - * determined by the first array. - * - * **Note:** Unlike `_.pullAll`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @returns {Array} Returns the new array of filtered values. - * @see _.without, _.xor - * @example - * - * _.difference([2, 1], [2, 3]); - * // => [1] - */ - var difference = baseRest(function(array, values) { - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) - : []; - }); - - /** - * This method is like `_.difference` except that it accepts `iteratee` which - * is invoked for each element of `array` and `values` to generate the criterion - * by which they're compared. The order and references of result values are - * determined by the first array. The iteratee is invoked with one argument: - * (value). - * - * **Note:** Unlike `_.pullAllBy`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [1.2] - * - * // The `_.property` iteratee shorthand. - * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); - * // => [{ 'x': 2 }] - */ - var differenceBy = baseRest(function(array, values) { - var iteratee = last(values); - if (isArrayLikeObject(iteratee)) { - iteratee = undefined; - } - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)) - : []; - }); - - /** - * This method is like `_.difference` except that it accepts `comparator` - * which is invoked to compare elements of `array` to `values`. The order and - * references of result values are determined by the first array. The comparator - * is invoked with two arguments: (arrVal, othVal). - * - * **Note:** Unlike `_.pullAllWith`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * - * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); - * // => [{ 'x': 2, 'y': 1 }] - */ - var differenceWith = baseRest(function(array, values) { - var comparator = last(values); - if (isArrayLikeObject(comparator)) { - comparator = undefined; - } - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator) - : []; - }); - - /** - * Creates a slice of `array` with `n` elements dropped from the beginning. - * - * @static - * @memberOf _ - * @since 0.5.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to drop. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.drop([1, 2, 3]); - * // => [2, 3] - * - * _.drop([1, 2, 3], 2); - * // => [3] - * - * _.drop([1, 2, 3], 5); - * // => [] - * - * _.drop([1, 2, 3], 0); - * // => [1, 2, 3] - */ - function drop(array, n, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - return baseSlice(array, n < 0 ? 0 : n, length); - } - - /** - * Creates a slice of `array` with `n` elements dropped from the end. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to drop. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.dropRight([1, 2, 3]); - * // => [1, 2] - * - * _.dropRight([1, 2, 3], 2); - * // => [1] - * - * _.dropRight([1, 2, 3], 5); - * // => [] - * - * _.dropRight([1, 2, 3], 0); - * // => [1, 2, 3] - */ - function dropRight(array, n, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - n = length - n; - return baseSlice(array, 0, n < 0 ? 0 : n); - } - - /** - * Creates a slice of `array` excluding elements dropped from the end. - * Elements are dropped until `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.dropRightWhile(users, function(o) { return !o.active; }); - * // => objects for ['barney'] - * - * // The `_.matches` iteratee shorthand. - * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false }); - * // => objects for ['barney', 'fred'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.dropRightWhile(users, ['active', false]); - * // => objects for ['barney'] - * - * // The `_.property` iteratee shorthand. - * _.dropRightWhile(users, 'active'); - * // => objects for ['barney', 'fred', 'pebbles'] - */ - function dropRightWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3), true, true) - : []; - } - - /** - * Creates a slice of `array` excluding elements dropped from the beginning. - * Elements are dropped until `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.dropWhile(users, function(o) { return !o.active; }); - * // => objects for ['pebbles'] - * - * // The `_.matches` iteratee shorthand. - * _.dropWhile(users, { 'user': 'barney', 'active': false }); - * // => objects for ['fred', 'pebbles'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.dropWhile(users, ['active', false]); - * // => objects for ['pebbles'] - * - * // The `_.property` iteratee shorthand. - * _.dropWhile(users, 'active'); - * // => objects for ['barney', 'fred', 'pebbles'] - */ - function dropWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3), true) - : []; - } - - /** - * Fills elements of `array` with `value` from `start` up to, but not - * including, `end`. - * - * **Note:** This method mutates `array`. - * - * @static - * @memberOf _ - * @since 3.2.0 - * @category Array - * @param {Array} array The array to fill. - * @param {*} value The value to fill `array` with. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns `array`. - * @example - * - * var array = [1, 2, 3]; - * - * _.fill(array, 'a'); - * console.log(array); - * // => ['a', 'a', 'a'] - * - * _.fill(Array(3), 2); - * // => [2, 2, 2] - * - * _.fill([4, 6, 8, 10], '*', 1, 3); - * // => [4, '*', '*', 10] - */ - function fill(array, value, start, end) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { - start = 0; - end = length; - } - return baseFill(array, value, start, end); - } - - /** - * This method is like `_.find` except that it returns the index of the first - * element `predicate` returns truthy for instead of the element itself. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.findIndex(users, function(o) { return o.user == 'barney'; }); - * // => 0 - * - * // The `_.matches` iteratee shorthand. - * _.findIndex(users, { 'user': 'fred', 'active': false }); - * // => 1 - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findIndex(users, ['active', false]); - * // => 0 - * - * // The `_.property` iteratee shorthand. - * _.findIndex(users, 'active'); - * // => 2 - */ - function findIndex(array, predicate, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = fromIndex == null ? 0 : toInteger(fromIndex); - if (index < 0) { - index = nativeMax(length + index, 0); - } - return baseFindIndex(array, getIteratee(predicate, 3), index); - } - - /** - * This method is like `_.findIndex` except that it iterates over elements - * of `collection` from right to left. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=array.length-1] The index to search from. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); - * // => 2 - * - * // The `_.matches` iteratee shorthand. - * _.findLastIndex(users, { 'user': 'barney', 'active': true }); - * // => 0 - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findLastIndex(users, ['active', false]); - * // => 2 - * - * // The `_.property` iteratee shorthand. - * _.findLastIndex(users, 'active'); - * // => 0 - */ - function findLastIndex(array, predicate, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = length - 1; - if (fromIndex !== undefined) { - index = toInteger(fromIndex); - index = fromIndex < 0 - ? nativeMax(length + index, 0) - : nativeMin(index, length - 1); - } - return baseFindIndex(array, getIteratee(predicate, 3), index, true); - } - - /** - * Flattens `array` a single level deep. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to flatten. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flatten([1, [2, [3, [4]], 5]]); - * // => [1, 2, [3, [4]], 5] - */ - function flatten(array) { - var length = array == null ? 0 : array.length; - return length ? baseFlatten(array, 1) : []; - } - - /** - * Recursively flattens `array`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to flatten. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flattenDeep([1, [2, [3, [4]], 5]]); - * // => [1, 2, 3, 4, 5] - */ - function flattenDeep(array) { - var length = array == null ? 0 : array.length; - return length ? baseFlatten(array, INFINITY) : []; - } - - /** - * Recursively flatten `array` up to `depth` times. - * - * @static - * @memberOf _ - * @since 4.4.0 - * @category Array - * @param {Array} array The array to flatten. - * @param {number} [depth=1] The maximum recursion depth. - * @returns {Array} Returns the new flattened array. - * @example - * - * var array = [1, [2, [3, [4]], 5]]; - * - * _.flattenDepth(array, 1); - * // => [1, 2, [3, [4]], 5] - * - * _.flattenDepth(array, 2); - * // => [1, 2, 3, [4], 5] - */ - function flattenDepth(array, depth) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - depth = depth === undefined ? 1 : toInteger(depth); - return baseFlatten(array, depth); - } - - /** - * The inverse of `_.toPairs`; this method returns an object composed - * from key-value `pairs`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} pairs The key-value pairs. - * @returns {Object} Returns the new object. - * @example - * - * _.fromPairs([['a', 1], ['b', 2]]); - * // => { 'a': 1, 'b': 2 } - */ - function fromPairs(pairs) { - var index = -1, - length = pairs == null ? 0 : pairs.length, - result = {}; - - while (++index < length) { - var pair = pairs[index]; - result[pair[0]] = pair[1]; - } - return result; - } - - /** - * Gets the first element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @alias first - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the first element of `array`. - * @example - * - * _.head([1, 2, 3]); - * // => 1 - * - * _.head([]); - * // => undefined - */ - function head(array) { - return (array && array.length) ? array[0] : undefined; - } - - /** - * Gets the index at which the first occurrence of `value` is found in `array` - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. If `fromIndex` is negative, it's used as the - * offset from the end of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.indexOf([1, 2, 1, 2], 2); - * // => 1 - * - * // Search from the `fromIndex`. - * _.indexOf([1, 2, 1, 2], 2, 2); - * // => 3 - */ - function indexOf(array, value, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = fromIndex == null ? 0 : toInteger(fromIndex); - if (index < 0) { - index = nativeMax(length + index, 0); - } - return baseIndexOf(array, value, index); - } - - /** - * Gets all but the last element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.initial([1, 2, 3]); - * // => [1, 2] - */ - function initial(array) { - var length = array == null ? 0 : array.length; - return length ? baseSlice(array, 0, -1) : []; - } - - /** - * Creates an array of unique values that are included in all given arrays - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. The order and references of result values are - * determined by the first array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of intersecting values. - * @example - * - * _.intersection([2, 1], [2, 3]); - * // => [2] - */ - var intersection = baseRest(function(arrays) { - var mapped = arrayMap(arrays, castArrayLikeObject); - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped) - : []; - }); - - /** - * This method is like `_.intersection` except that it accepts `iteratee` - * which is invoked for each element of each `arrays` to generate the criterion - * by which they're compared. The order and references of result values are - * determined by the first array. The iteratee is invoked with one argument: - * (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of intersecting values. - * @example - * - * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [2.1] - * - * // The `_.property` iteratee shorthand. - * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }] - */ - var intersectionBy = baseRest(function(arrays) { - var iteratee = last(arrays), - mapped = arrayMap(arrays, castArrayLikeObject); - - if (iteratee === last(mapped)) { - iteratee = undefined; - } else { - mapped.pop(); - } - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped, getIteratee(iteratee, 2)) - : []; - }); - - /** - * This method is like `_.intersection` except that it accepts `comparator` - * which is invoked to compare elements of `arrays`. The order and references - * of result values are determined by the first array. The comparator is - * invoked with two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of intersecting values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.intersectionWith(objects, others, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }] - */ - var intersectionWith = baseRest(function(arrays) { - var comparator = last(arrays), - mapped = arrayMap(arrays, castArrayLikeObject); - - comparator = typeof comparator == 'function' ? comparator : undefined; - if (comparator) { - mapped.pop(); - } - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped, undefined, comparator) - : []; - }); - - /** - * Converts all elements in `array` into a string separated by `separator`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to convert. - * @param {string} [separator=','] The element separator. - * @returns {string} Returns the joined string. - * @example - * - * _.join(['a', 'b', 'c'], '~'); - * // => 'a~b~c' - */ - function join(array, separator) { - return array == null ? '' : nativeJoin.call(array, separator); - } - - /** - * Gets the last element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the last element of `array`. - * @example - * - * _.last([1, 2, 3]); - * // => 3 - */ - function last(array) { - var length = array == null ? 0 : array.length; - return length ? array[length - 1] : undefined; - } - - /** - * This method is like `_.indexOf` except that it iterates over elements of - * `array` from right to left. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=array.length-1] The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.lastIndexOf([1, 2, 1, 2], 2); - * // => 3 - * - * // Search from the `fromIndex`. - * _.lastIndexOf([1, 2, 1, 2], 2, 2); - * // => 1 - */ - function lastIndexOf(array, value, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = length; - if (fromIndex !== undefined) { - index = toInteger(fromIndex); - index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); - } - return value === value - ? strictLastIndexOf(array, value, index) - : baseFindIndex(array, baseIsNaN, index, true); - } - - /** - * Gets the element at index `n` of `array`. If `n` is negative, the nth - * element from the end is returned. - * - * @static - * @memberOf _ - * @since 4.11.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=0] The index of the element to return. - * @returns {*} Returns the nth element of `array`. - * @example - * - * var array = ['a', 'b', 'c', 'd']; - * - * _.nth(array, 1); - * // => 'b' - * - * _.nth(array, -2); - * // => 'c'; - */ - function nth(array, n) { - return (array && array.length) ? baseNth(array, toInteger(n)) : undefined; - } - - /** - * Removes all given values from `array` using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove` - * to remove elements from an array by predicate. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {...*} [values] The values to remove. - * @returns {Array} Returns `array`. - * @example - * - * var array = ['a', 'b', 'c', 'a', 'b', 'c']; - * - * _.pull(array, 'a', 'c'); - * console.log(array); - * // => ['b', 'b'] - */ - var pull = baseRest(pullAll); - - /** - * This method is like `_.pull` except that it accepts an array of values to remove. - * - * **Note:** Unlike `_.difference`, this method mutates `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @returns {Array} Returns `array`. - * @example - * - * var array = ['a', 'b', 'c', 'a', 'b', 'c']; - * - * _.pullAll(array, ['a', 'c']); - * console.log(array); - * // => ['b', 'b'] - */ - function pullAll(array, values) { - return (array && array.length && values && values.length) - ? basePullAll(array, values) - : array; - } - - /** - * This method is like `_.pullAll` except that it accepts `iteratee` which is - * invoked for each element of `array` and `values` to generate the criterion - * by which they're compared. The iteratee is invoked with one argument: (value). - * - * **Note:** Unlike `_.differenceBy`, this method mutates `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns `array`. - * @example - * - * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; - * - * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); - * console.log(array); - * // => [{ 'x': 2 }] - */ - function pullAllBy(array, values, iteratee) { - return (array && array.length && values && values.length) - ? basePullAll(array, values, getIteratee(iteratee, 2)) - : array; - } - - /** - * This method is like `_.pullAll` except that it accepts `comparator` which - * is invoked to compare elements of `array` to `values`. The comparator is - * invoked with two arguments: (arrVal, othVal). - * - * **Note:** Unlike `_.differenceWith`, this method mutates `array`. - * - * @static - * @memberOf _ - * @since 4.6.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns `array`. - * @example - * - * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; - * - * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); - * console.log(array); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] - */ - function pullAllWith(array, values, comparator) { - return (array && array.length && values && values.length) - ? basePullAll(array, values, undefined, comparator) - : array; - } - - /** - * Removes elements from `array` corresponding to `indexes` and returns an - * array of removed elements. - * - * **Note:** Unlike `_.at`, this method mutates `array`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {...(number|number[])} [indexes] The indexes of elements to remove. - * @returns {Array} Returns the new array of removed elements. - * @example - * - * var array = ['a', 'b', 'c', 'd']; - * var pulled = _.pullAt(array, [1, 3]); - * - * console.log(array); - * // => ['a', 'c'] - * - * console.log(pulled); - * // => ['b', 'd'] - */ - var pullAt = flatRest(function(array, indexes) { - var length = array == null ? 0 : array.length, - result = baseAt(array, indexes); - - basePullAt(array, arrayMap(indexes, function(index) { - return isIndex(index, length) ? +index : index; - }).sort(compareAscending)); - - return result; - }); - - /** - * Removes all elements from `array` that `predicate` returns truthy for - * and returns an array of the removed elements. The predicate is invoked - * with three arguments: (value, index, array). - * - * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull` - * to pull elements from an array by value. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new array of removed elements. - * @example - * - * var array = [1, 2, 3, 4]; - * var evens = _.remove(array, function(n) { - * return n % 2 == 0; - * }); - * - * console.log(array); - * // => [1, 3] - * - * console.log(evens); - * // => [2, 4] - */ - function remove(array, predicate) { - var result = []; - if (!(array && array.length)) { - return result; - } - var index = -1, - indexes = [], - length = array.length; - - predicate = getIteratee(predicate, 3); - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result.push(value); - indexes.push(index); - } - } - basePullAt(array, indexes); - return result; - } - - /** - * Reverses `array` so that the first element becomes the last, the second - * element becomes the second to last, and so on. - * - * **Note:** This method mutates `array` and is based on - * [`Array#reverse`](https://mdn.io/Array/reverse). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to modify. - * @returns {Array} Returns `array`. - * @example - * - * var array = [1, 2, 3]; - * - * _.reverse(array); - * // => [3, 2, 1] - * - * console.log(array); - * // => [3, 2, 1] - */ - function reverse(array) { - return array == null ? array : nativeReverse.call(array); - } - - /** - * Creates a slice of `array` from `start` up to, but not including, `end`. - * - * **Note:** This method is used instead of - * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are - * returned. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ - function slice(array, start, end) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { - start = 0; - end = length; - } - else { - start = start == null ? 0 : toInteger(start); - end = end === undefined ? length : toInteger(end); - } - return baseSlice(array, start, end); - } - - /** - * Uses a binary search to determine the lowest index at which `value` - * should be inserted into `array` in order to maintain its sort order. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * _.sortedIndex([30, 50], 40); - * // => 1 - */ - function sortedIndex(array, value) { - return baseSortedIndex(array, value); - } - - /** - * This method is like `_.sortedIndex` except that it accepts `iteratee` - * which is invoked for `value` and each element of `array` to compute their - * sort ranking. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * var objects = [{ 'x': 4 }, { 'x': 5 }]; - * - * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); - * // => 0 - * - * // The `_.property` iteratee shorthand. - * _.sortedIndexBy(objects, { 'x': 4 }, 'x'); - * // => 0 - */ - function sortedIndexBy(array, value, iteratee) { - return baseSortedIndexBy(array, value, getIteratee(iteratee, 2)); - } - - /** - * This method is like `_.indexOf` except that it performs a binary - * search on a sorted `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.sortedIndexOf([4, 5, 5, 5, 6], 5); - * // => 1 - */ - function sortedIndexOf(array, value) { - var length = array == null ? 0 : array.length; - if (length) { - var index = baseSortedIndex(array, value); - if (index < length && eq(array[index], value)) { - return index; - } - } - return -1; - } - - /** - * This method is like `_.sortedIndex` except that it returns the highest - * index at which `value` should be inserted into `array` in order to - * maintain its sort order. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * _.sortedLastIndex([4, 5, 5, 5, 6], 5); - * // => 4 - */ - function sortedLastIndex(array, value) { - return baseSortedIndex(array, value, true); - } - - /** - * This method is like `_.sortedLastIndex` except that it accepts `iteratee` - * which is invoked for `value` and each element of `array` to compute their - * sort ranking. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * var objects = [{ 'x': 4 }, { 'x': 5 }]; - * - * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); - * // => 1 - * - * // The `_.property` iteratee shorthand. - * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x'); - * // => 1 - */ - function sortedLastIndexBy(array, value, iteratee) { - return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true); - } - - /** - * This method is like `_.lastIndexOf` except that it performs a binary - * search on a sorted `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5); - * // => 3 - */ - function sortedLastIndexOf(array, value) { - var length = array == null ? 0 : array.length; - if (length) { - var index = baseSortedIndex(array, value, true) - 1; - if (eq(array[index], value)) { - return index; - } - } - return -1; - } - - /** - * This method is like `_.uniq` except that it's designed and optimized - * for sorted arrays. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.sortedUniq([1, 1, 2]); - * // => [1, 2] - */ - function sortedUniq(array) { - return (array && array.length) - ? baseSortedUniq(array) - : []; - } - - /** - * This method is like `_.uniqBy` except that it's designed and optimized - * for sorted arrays. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); - * // => [1.1, 2.3] - */ - function sortedUniqBy(array, iteratee) { - return (array && array.length) - ? baseSortedUniq(array, getIteratee(iteratee, 2)) - : []; - } - - /** - * Gets all but the first element of `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to query. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.tail([1, 2, 3]); - * // => [2, 3] - */ - function tail(array) { - var length = array == null ? 0 : array.length; - return length ? baseSlice(array, 1, length) : []; - } - - /** - * Creates a slice of `array` with `n` elements taken from the beginning. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to take. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.take([1, 2, 3]); - * // => [1] - * - * _.take([1, 2, 3], 2); - * // => [1, 2] - * - * _.take([1, 2, 3], 5); - * // => [1, 2, 3] - * - * _.take([1, 2, 3], 0); - * // => [] - */ - function take(array, n, guard) { - if (!(array && array.length)) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - return baseSlice(array, 0, n < 0 ? 0 : n); - } - - /** - * Creates a slice of `array` with `n` elements taken from the end. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to take. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.takeRight([1, 2, 3]); - * // => [3] - * - * _.takeRight([1, 2, 3], 2); - * // => [2, 3] - * - * _.takeRight([1, 2, 3], 5); - * // => [1, 2, 3] - * - * _.takeRight([1, 2, 3], 0); - * // => [] - */ - function takeRight(array, n, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - n = length - n; - return baseSlice(array, n < 0 ? 0 : n, length); - } - - /** - * Creates a slice of `array` with elements taken from the end. Elements are - * taken until `predicate` returns falsey. The predicate is invoked with - * three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.takeRightWhile(users, function(o) { return !o.active; }); - * // => objects for ['fred', 'pebbles'] - * - * // The `_.matches` iteratee shorthand. - * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false }); - * // => objects for ['pebbles'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.takeRightWhile(users, ['active', false]); - * // => objects for ['fred', 'pebbles'] - * - * // The `_.property` iteratee shorthand. - * _.takeRightWhile(users, 'active'); - * // => [] - */ - function takeRightWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3), false, true) - : []; - } - - /** - * Creates a slice of `array` with elements taken from the beginning. Elements - * are taken until `predicate` returns falsey. The predicate is invoked with - * three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.takeWhile(users, function(o) { return !o.active; }); - * // => objects for ['barney', 'fred'] - * - * // The `_.matches` iteratee shorthand. - * _.takeWhile(users, { 'user': 'barney', 'active': false }); - * // => objects for ['barney'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.takeWhile(users, ['active', false]); - * // => objects for ['barney', 'fred'] - * - * // The `_.property` iteratee shorthand. - * _.takeWhile(users, 'active'); - * // => [] - */ - function takeWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3)) - : []; - } - - /** - * Creates an array of unique values, in order, from all given arrays using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of combined values. - * @example - * - * _.union([2], [1, 2]); - * // => [2, 1] - */ - var union = baseRest(function(arrays) { - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); - }); - - /** - * This method is like `_.union` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by - * which uniqueness is computed. Result values are chosen from the first - * array in which the value occurs. The iteratee is invoked with one argument: - * (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of combined values. - * @example - * - * _.unionBy([2.1], [1.2, 2.3], Math.floor); - * // => [2.1, 1.2] - * - * // The `_.property` iteratee shorthand. - * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] - */ - var unionBy = baseRest(function(arrays) { - var iteratee = last(arrays); - if (isArrayLikeObject(iteratee)) { - iteratee = undefined; - } - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)); - }); - - /** - * This method is like `_.union` except that it accepts `comparator` which - * is invoked to compare elements of `arrays`. Result values are chosen from - * the first array in which the value occurs. The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of combined values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.unionWith(objects, others, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] - */ - var unionWith = baseRest(function(arrays) { - var comparator = last(arrays); - comparator = typeof comparator == 'function' ? comparator : undefined; - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator); - }); - - /** - * Creates a duplicate-free version of an array, using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons, in which only the first occurrence of each element - * is kept. The order of result values is determined by the order they occur - * in the array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.uniq([2, 1, 2]); - * // => [2, 1] - */ - function uniq(array) { - return (array && array.length) ? baseUniq(array) : []; - } - - /** - * This method is like `_.uniq` except that it accepts `iteratee` which is - * invoked for each element in `array` to generate the criterion by which - * uniqueness is computed. The order of result values is determined by the - * order they occur in the array. The iteratee is invoked with one argument: - * (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.uniqBy([2.1, 1.2, 2.3], Math.floor); - * // => [2.1, 1.2] - * - * // The `_.property` iteratee shorthand. - * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] - */ - function uniqBy(array, iteratee) { - return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : []; - } - - /** - * This method is like `_.uniq` except that it accepts `comparator` which - * is invoked to compare elements of `array`. The order of result values is - * determined by the order they occur in the array.The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.uniqWith(objects, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }] - */ - function uniqWith(array, comparator) { - comparator = typeof comparator == 'function' ? comparator : undefined; - return (array && array.length) ? baseUniq(array, undefined, comparator) : []; - } - - /** - * This method is like `_.zip` except that it accepts an array of grouped - * elements and creates an array regrouping the elements to their pre-zip - * configuration. - * - * @static - * @memberOf _ - * @since 1.2.0 - * @category Array - * @param {Array} array The array of grouped elements to process. - * @returns {Array} Returns the new array of regrouped elements. - * @example - * - * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]); - * // => [['a', 1, true], ['b', 2, false]] - * - * _.unzip(zipped); - * // => [['a', 'b'], [1, 2], [true, false]] - */ - function unzip(array) { - if (!(array && array.length)) { - return []; - } - var length = 0; - array = arrayFilter(array, function(group) { - if (isArrayLikeObject(group)) { - length = nativeMax(group.length, length); - return true; - } - }); - return baseTimes(length, function(index) { - return arrayMap(array, baseProperty(index)); - }); - } - - /** - * This method is like `_.unzip` except that it accepts `iteratee` to specify - * how regrouped values should be combined. The iteratee is invoked with the - * elements of each group: (...group). - * - * @static - * @memberOf _ - * @since 3.8.0 - * @category Array - * @param {Array} array The array of grouped elements to process. - * @param {Function} [iteratee=_.identity] The function to combine - * regrouped values. - * @returns {Array} Returns the new array of regrouped elements. - * @example - * - * var zipped = _.zip([1, 2], [10, 20], [100, 200]); - * // => [[1, 10, 100], [2, 20, 200]] - * - * _.unzipWith(zipped, _.add); - * // => [3, 30, 300] - */ - function unzipWith(array, iteratee) { - if (!(array && array.length)) { - return []; - } - var result = unzip(array); - if (iteratee == null) { - return result; - } - return arrayMap(result, function(group) { - return apply(iteratee, undefined, group); - }); - } - - /** - * Creates an array excluding all given values using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * **Note:** Unlike `_.pull`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...*} [values] The values to exclude. - * @returns {Array} Returns the new array of filtered values. - * @see _.difference, _.xor - * @example - * - * _.without([2, 1, 2, 3], 1, 2); - * // => [3] - */ - var without = baseRest(function(array, values) { - return isArrayLikeObject(array) - ? baseDifference(array, values) - : []; - }); - - /** - * Creates an array of unique values that is the - * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) - * of the given arrays. The order of result values is determined by the order - * they occur in the arrays. - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of filtered values. - * @see _.difference, _.without - * @example - * - * _.xor([2, 1], [2, 3]); - * // => [1, 3] - */ - var xor = baseRest(function(arrays) { - return baseXor(arrayFilter(arrays, isArrayLikeObject)); - }); - - /** - * This method is like `_.xor` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by - * which by which they're compared. The order of result values is determined - * by the order they occur in the arrays. The iteratee is invoked with one - * argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [1.2, 3.4] - * - * // The `_.property` iteratee shorthand. - * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 2 }] - */ - var xorBy = baseRest(function(arrays) { - var iteratee = last(arrays); - if (isArrayLikeObject(iteratee)) { - iteratee = undefined; - } - return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2)); - }); - - /** - * This method is like `_.xor` except that it accepts `comparator` which is - * invoked to compare elements of `arrays`. The order of result values is - * determined by the order they occur in the arrays. The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.xorWith(objects, others, _.isEqual); - * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] - */ - var xorWith = baseRest(function(arrays) { - var comparator = last(arrays); - comparator = typeof comparator == 'function' ? comparator : undefined; - return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator); - }); - - /** - * Creates an array of grouped elements, the first of which contains the - * first elements of the given arrays, the second of which contains the - * second elements of the given arrays, and so on. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to process. - * @returns {Array} Returns the new array of grouped elements. - * @example - * - * _.zip(['a', 'b'], [1, 2], [true, false]); - * // => [['a', 1, true], ['b', 2, false]] - */ - var zip = baseRest(unzip); - - /** - * This method is like `_.fromPairs` except that it accepts two arrays, - * one of property identifiers and one of corresponding values. - * - * @static - * @memberOf _ - * @since 0.4.0 - * @category Array - * @param {Array} [props=[]] The property identifiers. - * @param {Array} [values=[]] The property values. - * @returns {Object} Returns the new object. - * @example - * - * _.zipObject(['a', 'b'], [1, 2]); - * // => { 'a': 1, 'b': 2 } - */ - function zipObject(props, values) { - return baseZipObject(props || [], values || [], assignValue); - } - - /** - * This method is like `_.zipObject` except that it supports property paths. - * - * @static - * @memberOf _ - * @since 4.1.0 - * @category Array - * @param {Array} [props=[]] The property identifiers. - * @param {Array} [values=[]] The property values. - * @returns {Object} Returns the new object. - * @example - * - * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]); - * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } } - */ - function zipObjectDeep(props, values) { - return baseZipObject(props || [], values || [], baseSet); - } - - /** - * This method is like `_.zip` except that it accepts `iteratee` to specify - * how grouped values should be combined. The iteratee is invoked with the - * elements of each group: (...group). - * - * @static - * @memberOf _ - * @since 3.8.0 - * @category Array - * @param {...Array} [arrays] The arrays to process. - * @param {Function} [iteratee=_.identity] The function to combine - * grouped values. - * @returns {Array} Returns the new array of grouped elements. - * @example - * - * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) { - * return a + b + c; - * }); - * // => [111, 222] - */ - var zipWith = baseRest(function(arrays) { - var length = arrays.length, - iteratee = length > 1 ? arrays[length - 1] : undefined; - - iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined; - return unzipWith(arrays, iteratee); - }); - - /*------------------------------------------------------------------------*/ - - /** - * Creates a `lodash` wrapper instance that wraps `value` with explicit method - * chain sequences enabled. The result of such sequences must be unwrapped - * with `_#value`. - * - * @static - * @memberOf _ - * @since 1.3.0 - * @category Seq - * @param {*} value The value to wrap. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'pebbles', 'age': 1 } - * ]; - * - * var youngest = _ - * .chain(users) - * .sortBy('age') - * .map(function(o) { - * return o.user + ' is ' + o.age; - * }) - * .head() - * .value(); - * // => 'pebbles is 1' - */ - function chain(value) { - var result = lodash(value); - result.__chain__ = true; - return result; - } - - /** - * This method invokes `interceptor` and returns `value`. The interceptor - * is invoked with one argument; (value). The purpose of this method is to - * "tap into" a method chain sequence in order to modify intermediate results. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Seq - * @param {*} value The value to provide to `interceptor`. - * @param {Function} interceptor The function to invoke. - * @returns {*} Returns `value`. - * @example - * - * _([1, 2, 3]) - * .tap(function(array) { - * // Mutate input array. - * array.pop(); - * }) - * .reverse() - * .value(); - * // => [2, 1] - */ - function tap(value, interceptor) { - interceptor(value); - return value; - } - - /** - * This method is like `_.tap` except that it returns the result of `interceptor`. - * The purpose of this method is to "pass thru" values replacing intermediate - * results in a method chain sequence. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Seq - * @param {*} value The value to provide to `interceptor`. - * @param {Function} interceptor The function to invoke. - * @returns {*} Returns the result of `interceptor`. - * @example - * - * _(' abc ') - * .chain() - * .trim() - * .thru(function(value) { - * return [value]; - * }) - * .value(); - * // => ['abc'] - */ - function thru(value, interceptor) { - return interceptor(value); - } - - /** - * This method is the wrapper version of `_.at`. - * - * @name at - * @memberOf _ - * @since 1.0.0 - * @category Seq - * @param {...(string|string[])} [paths] The property paths to pick. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; - * - * _(object).at(['a[0].b.c', 'a[1]']).value(); - * // => [3, 4] - */ - var wrapperAt = flatRest(function(paths) { - var length = paths.length, - start = length ? paths[0] : 0, - value = this.__wrapped__, - interceptor = function(object) { return baseAt(object, paths); }; - - if (length > 1 || this.__actions__.length || - !(value instanceof LazyWrapper) || !isIndex(start)) { - return this.thru(interceptor); - } - value = value.slice(start, +start + (length ? 1 : 0)); - value.__actions__.push({ - 'func': thru, - 'args': [interceptor], - 'thisArg': undefined - }); - return new LodashWrapper(value, this.__chain__).thru(function(array) { - if (length && !array.length) { - array.push(undefined); - } - return array; - }); - }); - - /** - * Creates a `lodash` wrapper instance with explicit method chain sequences enabled. - * - * @name chain - * @memberOf _ - * @since 0.1.0 - * @category Seq - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 } - * ]; - * - * // A sequence without explicit chaining. - * _(users).head(); - * // => { 'user': 'barney', 'age': 36 } - * - * // A sequence with explicit chaining. - * _(users) - * .chain() - * .head() - * .pick('user') - * .value(); - * // => { 'user': 'barney' } - */ - function wrapperChain() { - return chain(this); - } - - /** - * Executes the chain sequence and returns the wrapped result. - * - * @name commit - * @memberOf _ - * @since 3.2.0 - * @category Seq - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var array = [1, 2]; - * var wrapped = _(array).push(3); - * - * console.log(array); - * // => [1, 2] - * - * wrapped = wrapped.commit(); - * console.log(array); - * // => [1, 2, 3] - * - * wrapped.last(); - * // => 3 - * - * console.log(array); - * // => [1, 2, 3] - */ - function wrapperCommit() { - return new LodashWrapper(this.value(), this.__chain__); - } - - /** - * Gets the next value on a wrapped object following the - * [iterator protocol](https://mdn.io/iteration_protocols#iterator). - * - * @name next - * @memberOf _ - * @since 4.0.0 - * @category Seq - * @returns {Object} Returns the next iterator value. - * @example - * - * var wrapped = _([1, 2]); - * - * wrapped.next(); - * // => { 'done': false, 'value': 1 } - * - * wrapped.next(); - * // => { 'done': false, 'value': 2 } - * - * wrapped.next(); - * // => { 'done': true, 'value': undefined } - */ - function wrapperNext() { - if (this.__values__ === undefined) { - this.__values__ = toArray(this.value()); - } - var done = this.__index__ >= this.__values__.length, - value = done ? undefined : this.__values__[this.__index__++]; - - return { 'done': done, 'value': value }; - } - - /** - * Enables the wrapper to be iterable. - * - * @name Symbol.iterator - * @memberOf _ - * @since 4.0.0 - * @category Seq - * @returns {Object} Returns the wrapper object. - * @example - * - * var wrapped = _([1, 2]); - * - * wrapped[Symbol.iterator]() === wrapped; - * // => true - * - * Array.from(wrapped); - * // => [1, 2] - */ - function wrapperToIterator() { - return this; - } - - /** - * Creates a clone of the chain sequence planting `value` as the wrapped value. - * - * @name plant - * @memberOf _ - * @since 3.2.0 - * @category Seq - * @param {*} value The value to plant. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * function square(n) { - * return n * n; - * } - * - * var wrapped = _([1, 2]).map(square); - * var other = wrapped.plant([3, 4]); - * - * other.value(); - * // => [9, 16] - * - * wrapped.value(); - * // => [1, 4] - */ - function wrapperPlant(value) { - var result, - parent = this; - - while (parent instanceof baseLodash) { - var clone = wrapperClone(parent); - clone.__index__ = 0; - clone.__values__ = undefined; - if (result) { - previous.__wrapped__ = clone; - } else { - result = clone; - } - var previous = clone; - parent = parent.__wrapped__; - } - previous.__wrapped__ = value; - return result; - } - - /** - * This method is the wrapper version of `_.reverse`. - * - * **Note:** This method mutates the wrapped array. - * - * @name reverse - * @memberOf _ - * @since 0.1.0 - * @category Seq - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var array = [1, 2, 3]; - * - * _(array).reverse().value() - * // => [3, 2, 1] - * - * console.log(array); - * // => [3, 2, 1] - */ - function wrapperReverse() { - var value = this.__wrapped__; - if (value instanceof LazyWrapper) { - var wrapped = value; - if (this.__actions__.length) { - wrapped = new LazyWrapper(this); - } - wrapped = wrapped.reverse(); - wrapped.__actions__.push({ - 'func': thru, - 'args': [reverse], - 'thisArg': undefined - }); - return new LodashWrapper(wrapped, this.__chain__); - } - return this.thru(reverse); - } - - /** - * Executes the chain sequence to resolve the unwrapped value. - * - * @name value - * @memberOf _ - * @since 0.1.0 - * @alias toJSON, valueOf - * @category Seq - * @returns {*} Returns the resolved unwrapped value. - * @example - * - * _([1, 2, 3]).value(); - * // => [1, 2, 3] - */ - function wrapperValue() { - return baseWrapperValue(this.__wrapped__, this.__actions__); - } - - /*------------------------------------------------------------------------*/ - - /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The corresponding value of - * each key is the number of times the key was returned by `iteratee`. The - * iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.5.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.countBy([6.1, 4.2, 6.3], Math.floor); - * // => { '4': 1, '6': 2 } - * - * // The `_.property` iteratee shorthand. - * _.countBy(['one', 'two', 'three'], 'length'); - * // => { '3': 2, '5': 1 } - */ - var countBy = createAggregator(function(result, value, key) { - if (hasOwnProperty.call(result, key)) { - ++result[key]; - } else { - baseAssignValue(result, key, 1); - } - }); - - /** - * Checks if `predicate` returns truthy for **all** elements of `collection`. - * Iteration is stopped once `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index|key, collection). - * - * **Note:** This method returns `true` for - * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because - * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of - * elements of empty collections. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false`. - * @example - * - * _.every([true, 1, null, 'yes'], Boolean); - * // => false - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * // The `_.matches` iteratee shorthand. - * _.every(users, { 'user': 'barney', 'active': false }); - * // => false - * - * // The `_.matchesProperty` iteratee shorthand. - * _.every(users, ['active', false]); - * // => true - * - * // The `_.property` iteratee shorthand. - * _.every(users, 'active'); - * // => false - */ - function every(collection, predicate, guard) { - var func = isArray(collection) ? arrayEvery : baseEvery; - if (guard && isIterateeCall(collection, predicate, guard)) { - predicate = undefined; - } - return func(collection, getIteratee(predicate, 3)); - } - - /** - * Iterates over elements of `collection`, returning an array of all elements - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). - * - * **Note:** Unlike `_.remove`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - * @see _.reject - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * _.filter(users, function(o) { return !o.active; }); - * // => objects for ['fred'] - * - * // The `_.matches` iteratee shorthand. - * _.filter(users, { 'age': 36, 'active': true }); - * // => objects for ['barney'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.filter(users, ['active', false]); - * // => objects for ['fred'] - * - * // The `_.property` iteratee shorthand. - * _.filter(users, 'active'); - * // => objects for ['barney'] - */ - function filter(collection, predicate) { - var func = isArray(collection) ? arrayFilter : baseFilter; - return func(collection, getIteratee(predicate, 3)); - } - - /** - * Iterates over elements of `collection`, returning the first element - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false }, - * { 'user': 'pebbles', 'age': 1, 'active': true } - * ]; - * - * _.find(users, function(o) { return o.age < 40; }); - * // => object for 'barney' - * - * // The `_.matches` iteratee shorthand. - * _.find(users, { 'age': 1, 'active': true }); - * // => object for 'pebbles' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.find(users, ['active', false]); - * // => object for 'fred' - * - * // The `_.property` iteratee shorthand. - * _.find(users, 'active'); - * // => object for 'barney' - */ - var find = createFind(findIndex); - - /** - * This method is like `_.find` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Collection - * @param {Array|Object} collection The collection to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=collection.length-1] The index to search from. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * _.findLast([1, 2, 3, 4], function(n) { - * return n % 2 == 1; - * }); - * // => 3 - */ - var findLast = createFind(findLastIndex); - - /** - * Creates a flattened array of values by running each element in `collection` - * thru `iteratee` and flattening the mapped results. The iteratee is invoked - * with three arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new flattened array. - * @example - * - * function duplicate(n) { - * return [n, n]; - * } - * - * _.flatMap([1, 2], duplicate); - * // => [1, 1, 2, 2] - */ - function flatMap(collection, iteratee) { - return baseFlatten(map(collection, iteratee), 1); - } - - /** - * This method is like `_.flatMap` except that it recursively flattens the - * mapped results. - * - * @static - * @memberOf _ - * @since 4.7.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new flattened array. - * @example - * - * function duplicate(n) { - * return [[[n, n]]]; - * } - * - * _.flatMapDeep([1, 2], duplicate); - * // => [1, 1, 2, 2] - */ - function flatMapDeep(collection, iteratee) { - return baseFlatten(map(collection, iteratee), INFINITY); - } - - /** - * This method is like `_.flatMap` except that it recursively flattens the - * mapped results up to `depth` times. - * - * @static - * @memberOf _ - * @since 4.7.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {number} [depth=1] The maximum recursion depth. - * @returns {Array} Returns the new flattened array. - * @example - * - * function duplicate(n) { - * return [[[n, n]]]; - * } - * - * _.flatMapDepth([1, 2], duplicate, 2); - * // => [[1, 1], [2, 2]] - */ - function flatMapDepth(collection, iteratee, depth) { - depth = depth === undefined ? 1 : toInteger(depth); - return baseFlatten(map(collection, iteratee), depth); - } - - /** - * Iterates over elements of `collection` and invokes `iteratee` for each element. - * The iteratee is invoked with three arguments: (value, index|key, collection). - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * **Note:** As with other "Collections" methods, objects with a "length" - * property are iterated like arrays. To avoid this behavior use `_.forIn` - * or `_.forOwn` for object iteration. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @alias each - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - * @see _.forEachRight - * @example - * - * _.forEach([1, 2], function(value) { - * console.log(value); - * }); - * // => Logs `1` then `2`. - * - * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). - */ - function forEach(collection, iteratee) { - var func = isArray(collection) ? arrayEach : baseEach; - return func(collection, getIteratee(iteratee, 3)); - } - - /** - * This method is like `_.forEach` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @alias eachRight - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - * @see _.forEach - * @example - * - * _.forEachRight([1, 2], function(value) { - * console.log(value); - * }); - * // => Logs `2` then `1`. - */ - function forEachRight(collection, iteratee) { - var func = isArray(collection) ? arrayEachRight : baseEachRight; - return func(collection, getIteratee(iteratee, 3)); - } - - /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The order of grouped values - * is determined by the order they occur in `collection`. The corresponding - * value of each key is an array of elements responsible for generating the - * key. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.groupBy([6.1, 4.2, 6.3], Math.floor); - * // => { '4': [4.2], '6': [6.1, 6.3] } - * - * // The `_.property` iteratee shorthand. - * _.groupBy(['one', 'two', 'three'], 'length'); - * // => { '3': ['one', 'two'], '5': ['three'] } - */ - var groupBy = createAggregator(function(result, value, key) { - if (hasOwnProperty.call(result, key)) { - result[key].push(value); - } else { - baseAssignValue(result, key, [value]); - } - }); - - /** - * Checks if `value` is in `collection`. If `collection` is a string, it's - * checked for a substring of `value`, otherwise - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * is used for equality comparisons. If `fromIndex` is negative, it's used as - * the offset from the end of `collection`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object|string} collection The collection to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. - * @returns {boolean} Returns `true` if `value` is found, else `false`. - * @example - * - * _.includes([1, 2, 3], 1); - * // => true - * - * _.includes([1, 2, 3], 1, 2); - * // => false - * - * _.includes({ 'a': 1, 'b': 2 }, 1); - * // => true - * - * _.includes('abcd', 'bc'); - * // => true - */ - function includes(collection, value, fromIndex, guard) { - collection = isArrayLike(collection) ? collection : values(collection); - fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0; - - var length = collection.length; - if (fromIndex < 0) { - fromIndex = nativeMax(length + fromIndex, 0); - } - return isString(collection) - ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1) - : (!!length && baseIndexOf(collection, value, fromIndex) > -1); - } - - /** - * Invokes the method at `path` of each element in `collection`, returning - * an array of the results of each invoked method. Any additional arguments - * are provided to each invoked method. If `path` is a function, it's invoked - * for, and `this` bound to, each element in `collection`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Array|Function|string} path The path of the method to invoke or - * the function invoked per iteration. - * @param {...*} [args] The arguments to invoke each method with. - * @returns {Array} Returns the array of results. - * @example - * - * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); - * // => [[1, 5, 7], [1, 2, 3]] - * - * _.invokeMap([123, 456], String.prototype.split, ''); - * // => [['1', '2', '3'], ['4', '5', '6']] - */ - var invokeMap = baseRest(function(collection, path, args) { - var index = -1, - isFunc = typeof path == 'function', - result = isArrayLike(collection) ? Array(collection.length) : []; - - baseEach(collection, function(value) { - result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args); - }); - return result; - }); - - /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The corresponding value of - * each key is the last element responsible for generating the key. The - * iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * var array = [ - * { 'dir': 'left', 'code': 97 }, - * { 'dir': 'right', 'code': 100 } - * ]; - * - * _.keyBy(array, function(o) { - * return String.fromCharCode(o.code); - * }); - * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } - * - * _.keyBy(array, 'dir'); - * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } - */ - var keyBy = createAggregator(function(result, value, key) { - baseAssignValue(result, key, value); - }); - - /** - * Creates an array of values by running each element in `collection` thru - * `iteratee`. The iteratee is invoked with three arguments: - * (value, index|key, collection). - * - * Many lodash methods are guarded to work as iteratees for methods like - * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. - * - * The guarded methods are: - * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, - * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, - * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, - * `template`, `trim`, `trimEnd`, `trimStart`, and `words` - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - * @example - * - * function square(n) { - * return n * n; - * } - * - * _.map([4, 8], square); - * // => [16, 64] - * - * _.map({ 'a': 4, 'b': 8 }, square); - * // => [16, 64] (iteration order is not guaranteed) - * - * var users = [ - * { 'user': 'barney' }, - * { 'user': 'fred' } - * ]; - * - * // The `_.property` iteratee shorthand. - * _.map(users, 'user'); - * // => ['barney', 'fred'] - */ - function map(collection, iteratee) { - var func = isArray(collection) ? arrayMap : baseMap; - return func(collection, getIteratee(iteratee, 3)); - } - - /** - * This method is like `_.sortBy` except that it allows specifying the sort - * orders of the iteratees to sort by. If `orders` is unspecified, all values - * are sorted in ascending order. Otherwise, specify an order of "desc" for - * descending or "asc" for ascending sort order of corresponding values. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]] - * The iteratees to sort by. - * @param {string[]} [orders] The sort orders of `iteratees`. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. - * @returns {Array} Returns the new sorted array. - * @example - * - * var users = [ - * { 'user': 'fred', 'age': 48 }, - * { 'user': 'barney', 'age': 34 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'barney', 'age': 36 } - * ]; - * - * // Sort by `user` in ascending order and by `age` in descending order. - * _.orderBy(users, ['user', 'age'], ['asc', 'desc']); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] - */ - function orderBy(collection, iteratees, orders, guard) { - if (collection == null) { - return []; - } - if (!isArray(iteratees)) { - iteratees = iteratees == null ? [] : [iteratees]; - } - orders = guard ? undefined : orders; - if (!isArray(orders)) { - orders = orders == null ? [] : [orders]; - } - return baseOrderBy(collection, iteratees, orders); - } - - /** - * Creates an array of elements split into two groups, the first of which - * contains elements `predicate` returns truthy for, the second of which - * contains elements `predicate` returns falsey for. The predicate is - * invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the array of grouped elements. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': true }, - * { 'user': 'pebbles', 'age': 1, 'active': false } - * ]; - * - * _.partition(users, function(o) { return o.active; }); - * // => objects for [['fred'], ['barney', 'pebbles']] - * - * // The `_.matches` iteratee shorthand. - * _.partition(users, { 'age': 1, 'active': false }); - * // => objects for [['pebbles'], ['barney', 'fred']] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.partition(users, ['active', false]); - * // => objects for [['barney', 'pebbles'], ['fred']] - * - * // The `_.property` iteratee shorthand. - * _.partition(users, 'active'); - * // => objects for [['fred'], ['barney', 'pebbles']] - */ - var partition = createAggregator(function(result, value, key) { - result[key ? 0 : 1].push(value); - }, function() { return [[], []]; }); - - /** - * Reduces `collection` to a value which is the accumulated result of running - * each element in `collection` thru `iteratee`, where each successive - * invocation is supplied the return value of the previous. If `accumulator` - * is not given, the first element of `collection` is used as the initial - * value. The iteratee is invoked with four arguments: - * (accumulator, value, index|key, collection). - * - * Many lodash methods are guarded to work as iteratees for methods like - * `_.reduce`, `_.reduceRight`, and `_.transform`. - * - * The guarded methods are: - * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, - * and `sortBy` - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @returns {*} Returns the accumulated value. - * @see _.reduceRight - * @example - * - * _.reduce([1, 2], function(sum, n) { - * return sum + n; - * }, 0); - * // => 3 - * - * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { - * (result[value] || (result[value] = [])).push(key); - * return result; - * }, {}); - * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) - */ - function reduce(collection, iteratee, accumulator) { - var func = isArray(collection) ? arrayReduce : baseReduce, - initAccum = arguments.length < 3; - - return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach); - } - - /** - * This method is like `_.reduce` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @returns {*} Returns the accumulated value. - * @see _.reduce - * @example - * - * var array = [[0, 1], [2, 3], [4, 5]]; - * - * _.reduceRight(array, function(flattened, other) { - * return flattened.concat(other); - * }, []); - * // => [4, 5, 2, 3, 0, 1] - */ - function reduceRight(collection, iteratee, accumulator) { - var func = isArray(collection) ? arrayReduceRight : baseReduce, - initAccum = arguments.length < 3; - - return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight); - } - - /** - * The opposite of `_.filter`; this method returns the elements of `collection` - * that `predicate` does **not** return truthy for. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - * @see _.filter - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': true } - * ]; - * - * _.reject(users, function(o) { return !o.active; }); - * // => objects for ['fred'] - * - * // The `_.matches` iteratee shorthand. - * _.reject(users, { 'age': 40, 'active': true }); - * // => objects for ['barney'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.reject(users, ['active', false]); - * // => objects for ['fred'] - * - * // The `_.property` iteratee shorthand. - * _.reject(users, 'active'); - * // => objects for ['barney'] - */ - function reject(collection, predicate) { - var func = isArray(collection) ? arrayFilter : baseFilter; - return func(collection, negate(getIteratee(predicate, 3))); - } - - /** - * Gets a random element from `collection`. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Collection - * @param {Array|Object} collection The collection to sample. - * @returns {*} Returns the random element. - * @example - * - * _.sample([1, 2, 3, 4]); - * // => 2 - */ - function sample(collection) { - var func = isArray(collection) ? arraySample : baseSample; - return func(collection); - } - - /** - * Gets `n` random elements at unique keys from `collection` up to the - * size of `collection`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to sample. - * @param {number} [n=1] The number of elements to sample. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the random elements. - * @example - * - * _.sampleSize([1, 2, 3], 2); - * // => [3, 1] - * - * _.sampleSize([1, 2, 3], 4); - * // => [2, 3, 1] - */ - function sampleSize(collection, n, guard) { - if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) { - n = 1; - } else { - n = toInteger(n); - } - var func = isArray(collection) ? arraySampleSize : baseSampleSize; - return func(collection, n); - } - - /** - * Creates an array of shuffled values, using a version of the - * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to shuffle. - * @returns {Array} Returns the new shuffled array. - * @example - * - * _.shuffle([1, 2, 3, 4]); - * // => [4, 1, 3, 2] - */ - function shuffle(collection) { - var func = isArray(collection) ? arrayShuffle : baseShuffle; - return func(collection); - } - - /** - * Gets the size of `collection` by returning its length for array-like - * values or the number of own enumerable string keyed properties for objects. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object|string} collection The collection to inspect. - * @returns {number} Returns the collection size. - * @example - * - * _.size([1, 2, 3]); - * // => 3 - * - * _.size({ 'a': 1, 'b': 2 }); - * // => 2 - * - * _.size('pebbles'); - * // => 7 - */ - function size(collection) { - if (collection == null) { - return 0; - } - if (isArrayLike(collection)) { - return isString(collection) ? stringSize(collection) : collection.length; - } - var tag = getTag(collection); - if (tag == mapTag || tag == setTag) { - return collection.size; - } - return baseKeys(collection).length; - } - - /** - * Checks if `predicate` returns truthy for **any** element of `collection`. - * Iteration is stopped once `predicate` returns truthy. The predicate is - * invoked with three arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - * @example - * - * _.some([null, 0, 'yes', false], Boolean); - * // => true - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false } - * ]; - * - * // The `_.matches` iteratee shorthand. - * _.some(users, { 'user': 'barney', 'active': false }); - * // => false - * - * // The `_.matchesProperty` iteratee shorthand. - * _.some(users, ['active', false]); - * // => true - * - * // The `_.property` iteratee shorthand. - * _.some(users, 'active'); - * // => true - */ - function some(collection, predicate, guard) { - var func = isArray(collection) ? arraySome : baseSome; - if (guard && isIterateeCall(collection, predicate, guard)) { - predicate = undefined; - } - return func(collection, getIteratee(predicate, 3)); - } - - /** - * Creates an array of elements, sorted in ascending order by the results of - * running each element in a collection thru each iteratee. This method - * performs a stable sort, that is, it preserves the original sort order of - * equal elements. The iteratees are invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {...(Function|Function[])} [iteratees=[_.identity]] - * The iteratees to sort by. - * @returns {Array} Returns the new sorted array. - * @example - * - * var users = [ - * { 'user': 'fred', 'age': 48 }, - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'barney', 'age': 34 } - * ]; - * - * _.sortBy(users, [function(o) { return o.user; }]); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] - * - * _.sortBy(users, ['user', 'age']); - * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]] - */ - var sortBy = baseRest(function(collection, iteratees) { - if (collection == null) { - return []; - } - var length = iteratees.length; - if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { - iteratees = []; - } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { - iteratees = [iteratees[0]]; - } - return baseOrderBy(collection, baseFlatten(iteratees, 1), []); - }); - - /*------------------------------------------------------------------------*/ - - /** - * Gets the timestamp of the number of milliseconds that have elapsed since - * the Unix epoch (1 January 1970 00:00:00 UTC). - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Date - * @returns {number} Returns the timestamp. - * @example - * - * _.defer(function(stamp) { - * console.log(_.now() - stamp); - * }, _.now()); - * // => Logs the number of milliseconds it took for the deferred invocation. - */ - var now = ctxNow || function() { - return root.Date.now(); - }; - - /*------------------------------------------------------------------------*/ - - /** - * The opposite of `_.before`; this method creates a function that invokes - * `func` once it's called `n` or more times. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {number} n The number of calls before `func` is invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var saves = ['profile', 'settings']; - * - * var done = _.after(saves.length, function() { - * console.log('done saving!'); - * }); - * - * _.forEach(saves, function(type) { - * asyncSave({ 'type': type, 'complete': done }); - * }); - * // => Logs 'done saving!' after the two async saves have completed. - */ - function after(n, func) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - n = toInteger(n); - return function() { - if (--n < 1) { - return func.apply(this, arguments); - } - }; - } - - /** - * Creates a function that invokes `func`, with up to `n` arguments, - * ignoring any additional arguments. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} func The function to cap arguments for. - * @param {number} [n=func.length] The arity cap. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new capped function. - * @example - * - * _.map(['6', '8', '10'], _.ary(parseInt, 1)); - * // => [6, 8, 10] - */ - function ary(func, n, guard) { - n = guard ? undefined : n; - n = (func && n == null) ? func.length : n; - return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n); - } - - /** - * Creates a function that invokes `func`, with the `this` binding and arguments - * of the created function, while it's called less than `n` times. Subsequent - * calls to the created function return the result of the last `func` invocation. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {number} n The number of calls at which `func` is no longer invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * jQuery(element).on('click', _.before(5, addContactToList)); - * // => Allows adding up to 4 contacts to the list. - */ - function before(n, func) { - var result; - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - n = toInteger(n); - return function() { - if (--n > 0) { - result = func.apply(this, arguments); - } - if (n <= 1) { - func = undefined; - } - return result; - }; - } - - /** - * Creates a function that invokes `func` with the `this` binding of `thisArg` - * and `partials` prepended to the arguments it receives. - * - * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for partially applied arguments. - * - * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" - * property of bound functions. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to bind. - * @param {*} thisArg The `this` binding of `func`. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * function greet(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * } - * - * var object = { 'user': 'fred' }; - * - * var bound = _.bind(greet, object, 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * // Bound with placeholders. - * var bound = _.bind(greet, object, _, '!'); - * bound('hi'); - * // => 'hi fred!' - */ - var bind = baseRest(function(func, thisArg, partials) { - var bitmask = WRAP_BIND_FLAG; - if (partials.length) { - var holders = replaceHolders(partials, getHolder(bind)); - bitmask |= WRAP_PARTIAL_FLAG; - } - return createWrap(func, bitmask, thisArg, partials, holders); - }); - - /** - * Creates a function that invokes the method at `object[key]` with `partials` - * prepended to the arguments it receives. - * - * This method differs from `_.bind` by allowing bound functions to reference - * methods that may be redefined or don't yet exist. See - * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern) - * for more details. - * - * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * @static - * @memberOf _ - * @since 0.10.0 - * @category Function - * @param {Object} object The object to invoke the method on. - * @param {string} key The key of the method. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var object = { - * 'user': 'fred', - * 'greet': function(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * } - * }; - * - * var bound = _.bindKey(object, 'greet', 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * object.greet = function(greeting, punctuation) { - * return greeting + 'ya ' + this.user + punctuation; - * }; - * - * bound('!'); - * // => 'hiya fred!' - * - * // Bound with placeholders. - * var bound = _.bindKey(object, 'greet', _, '!'); - * bound('hi'); - * // => 'hiya fred!' - */ - var bindKey = baseRest(function(object, key, partials) { - var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG; - if (partials.length) { - var holders = replaceHolders(partials, getHolder(bindKey)); - bitmask |= WRAP_PARTIAL_FLAG; - } - return createWrap(key, bitmask, object, partials, holders); - }); - - /** - * Creates a function that accepts arguments of `func` and either invokes - * `func` returning its result, if at least `arity` number of arguments have - * been provided, or returns a function that accepts the remaining `func` - * arguments, and so on. The arity of `func` may be specified if `func.length` - * is not sufficient. - * - * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for provided arguments. - * - * **Note:** This method doesn't set the "length" property of curried functions. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Function - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new curried function. - * @example - * - * var abc = function(a, b, c) { - * return [a, b, c]; - * }; - * - * var curried = _.curry(abc); - * - * curried(1)(2)(3); - * // => [1, 2, 3] - * - * curried(1, 2)(3); - * // => [1, 2, 3] - * - * curried(1, 2, 3); - * // => [1, 2, 3] - * - * // Curried with placeholders. - * curried(1)(_, 3)(2); - * // => [1, 2, 3] - */ - function curry(func, arity, guard) { - arity = guard ? undefined : arity; - var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity); - result.placeholder = curry.placeholder; - return result; - } - - /** - * This method is like `_.curry` except that arguments are applied to `func` - * in the manner of `_.partialRight` instead of `_.partial`. - * - * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for provided arguments. - * - * **Note:** This method doesn't set the "length" property of curried functions. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new curried function. - * @example - * - * var abc = function(a, b, c) { - * return [a, b, c]; - * }; - * - * var curried = _.curryRight(abc); - * - * curried(3)(2)(1); - * // => [1, 2, 3] - * - * curried(2, 3)(1); - * // => [1, 2, 3] - * - * curried(1, 2, 3); - * // => [1, 2, 3] - * - * // Curried with placeholders. - * curried(3)(1, _)(2); - * // => [1, 2, 3] - */ - function curryRight(func, arity, guard) { - arity = guard ? undefined : arity; - var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity); - result.placeholder = curryRight.placeholder; - return result; - } - - /** - * Creates a debounced function that delays invoking `func` until after `wait` - * milliseconds have elapsed since the last time the debounced function was - * invoked. The debounced function comes with a `cancel` method to cancel - * delayed `func` invocations and a `flush` method to immediately invoke them. - * Provide `options` to indicate whether `func` should be invoked on the - * leading and/or trailing edge of the `wait` timeout. The `func` is invoked - * with the last arguments provided to the debounced function. Subsequent - * calls to the debounced function return the result of the last `func` - * invocation. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is - * invoked on the trailing edge of the timeout only if the debounced function - * is invoked more than once during the `wait` timeout. - * - * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred - * until to the next tick, similar to `setTimeout` with a timeout of `0`. - * - * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) - * for details over the differences between `_.debounce` and `_.throttle`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to debounce. - * @param {number} [wait=0] The number of milliseconds to delay. - * @param {Object} [options={}] The options object. - * @param {boolean} [options.leading=false] - * Specify invoking on the leading edge of the timeout. - * @param {number} [options.maxWait] - * The maximum time `func` is allowed to be delayed before it's invoked. - * @param {boolean} [options.trailing=true] - * Specify invoking on the trailing edge of the timeout. - * @returns {Function} Returns the new debounced function. - * @example - * - * // Avoid costly calculations while the window size is in flux. - * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); - * - * // Invoke `sendMail` when clicked, debouncing subsequent calls. - * jQuery(element).on('click', _.debounce(sendMail, 300, { - * 'leading': true, - * 'trailing': false - * })); - * - * // Ensure `batchLog` is invoked once after 1 second of debounced calls. - * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); - * var source = new EventSource('/stream'); - * jQuery(source).on('message', debounced); - * - * // Cancel the trailing debounced invocation. - * jQuery(window).on('popstate', debounced.cancel); - */ - function debounce(func, wait, options) { - var lastArgs, - lastThis, - maxWait, - result, - timerId, - lastCallTime, - lastInvokeTime = 0, - leading = false, - maxing = false, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - wait = toNumber(wait) || 0; - if (isObject(options)) { - leading = !!options.leading; - maxing = 'maxWait' in options; - maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; - trailing = 'trailing' in options ? !!options.trailing : trailing; - } - - function invokeFunc(time) { - var args = lastArgs, - thisArg = lastThis; - - lastArgs = lastThis = undefined; - lastInvokeTime = time; - result = func.apply(thisArg, args); - return result; - } - - function leadingEdge(time) { - // Reset any `maxWait` timer. - lastInvokeTime = time; - // Start the timer for the trailing edge. - timerId = setTimeout(timerExpired, wait); - // Invoke the leading edge. - return leading ? invokeFunc(time) : result; - } - - function remainingWait(time) { - var timeSinceLastCall = time - lastCallTime, - timeSinceLastInvoke = time - lastInvokeTime, - timeWaiting = wait - timeSinceLastCall; - - return maxing - ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) - : timeWaiting; - } - - function shouldInvoke(time) { - var timeSinceLastCall = time - lastCallTime, - timeSinceLastInvoke = time - lastInvokeTime; - - // Either this is the first call, activity has stopped and we're at the - // trailing edge, the system time has gone backwards and we're treating - // it as the trailing edge, or we've hit the `maxWait` limit. - return (lastCallTime === undefined || (timeSinceLastCall >= wait) || - (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); - } - - function timerExpired() { - var time = now(); - if (shouldInvoke(time)) { - return trailingEdge(time); - } - // Restart the timer. - timerId = setTimeout(timerExpired, remainingWait(time)); - } - - function trailingEdge(time) { - timerId = undefined; - - // Only invoke if we have `lastArgs` which means `func` has been - // debounced at least once. - if (trailing && lastArgs) { - return invokeFunc(time); - } - lastArgs = lastThis = undefined; - return result; - } - - function cancel() { - if (timerId !== undefined) { - clearTimeout(timerId); - } - lastInvokeTime = 0; - lastArgs = lastCallTime = lastThis = timerId = undefined; - } - - function flush() { - return timerId === undefined ? result : trailingEdge(now()); - } - - function debounced() { - var time = now(), - isInvoking = shouldInvoke(time); - - lastArgs = arguments; - lastThis = this; - lastCallTime = time; - - if (isInvoking) { - if (timerId === undefined) { - return leadingEdge(lastCallTime); - } - if (maxing) { - // Handle invocations in a tight loop. - clearTimeout(timerId); - timerId = setTimeout(timerExpired, wait); - return invokeFunc(lastCallTime); - } - } - if (timerId === undefined) { - timerId = setTimeout(timerExpired, wait); - } - return result; - } - debounced.cancel = cancel; - debounced.flush = flush; - return debounced; - } - - /** - * Defers invoking the `func` until the current call stack has cleared. Any - * additional arguments are provided to `func` when it's invoked. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to defer. - * @param {...*} [args] The arguments to invoke `func` with. - * @returns {number} Returns the timer id. - * @example - * - * _.defer(function(text) { - * console.log(text); - * }, 'deferred'); - * // => Logs 'deferred' after one millisecond. - */ - var defer = baseRest(function(func, args) { - return baseDelay(func, 1, args); - }); - - /** - * Invokes `func` after `wait` milliseconds. Any additional arguments are - * provided to `func` when it's invoked. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {...*} [args] The arguments to invoke `func` with. - * @returns {number} Returns the timer id. - * @example - * - * _.delay(function(text) { - * console.log(text); - * }, 1000, 'later'); - * // => Logs 'later' after one second. - */ - var delay = baseRest(function(func, wait, args) { - return baseDelay(func, toNumber(wait) || 0, args); - }); - - /** - * Creates a function that invokes `func` with arguments reversed. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Function - * @param {Function} func The function to flip arguments for. - * @returns {Function} Returns the new flipped function. - * @example - * - * var flipped = _.flip(function() { - * return _.toArray(arguments); - * }); - * - * flipped('a', 'b', 'c', 'd'); - * // => ['d', 'c', 'b', 'a'] - */ - function flip(func) { - return createWrap(func, WRAP_FLIP_FLAG); - } - - /** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided, it determines the cache key for storing the result based on the - * arguments provided to the memoized function. By default, the first argument - * provided to the memoized function is used as the map cache key. The `func` - * is invoked with the `this` binding of the memoized function. - * - * **Note:** The cache is exposed as the `cache` property on the memoized - * function. Its creation may be customized by replacing the `_.memoize.Cache` - * constructor with one whose instances implement the - * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) - * method interface of `clear`, `delete`, `get`, `has`, and `set`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] The function to resolve the cache key. - * @returns {Function} Returns the new memoized function. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * var other = { 'c': 3, 'd': 4 }; - * - * var values = _.memoize(_.values); - * values(object); - * // => [1, 2] - * - * values(other); - * // => [3, 4] - * - * object.a = 2; - * values(object); - * // => [1, 2] - * - * // Modify the result cache. - * values.cache.set(object, ['a', 'b']); - * values(object); - * // => ['a', 'b'] - * - * // Replace `_.memoize.Cache`. - * _.memoize.Cache = WeakMap; - */ - function memoize(func, resolver) { - if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { - throw new TypeError(FUNC_ERROR_TEXT); - } - var memoized = function() { - var args = arguments, - key = resolver ? resolver.apply(this, args) : args[0], - cache = memoized.cache; - - if (cache.has(key)) { - return cache.get(key); - } - var result = func.apply(this, args); - memoized.cache = cache.set(key, result) || cache; - return result; - }; - memoized.cache = new (memoize.Cache || MapCache); - return memoized; - } - - // Expose `MapCache`. - memoize.Cache = MapCache; - - /** - * Creates a function that negates the result of the predicate `func`. The - * `func` predicate is invoked with the `this` binding and arguments of the - * created function. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} predicate The predicate to negate. - * @returns {Function} Returns the new negated function. - * @example - * - * function isEven(n) { - * return n % 2 == 0; - * } - * - * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); - * // => [1, 3, 5] - */ - function negate(predicate) { - if (typeof predicate != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return function() { - var args = arguments; - switch (args.length) { - case 0: return !predicate.call(this); - case 1: return !predicate.call(this, args[0]); - case 2: return !predicate.call(this, args[0], args[1]); - case 3: return !predicate.call(this, args[0], args[1], args[2]); - } - return !predicate.apply(this, args); - }; - } - - /** - * Creates a function that is restricted to invoking `func` once. Repeat calls - * to the function return the value of the first invocation. The `func` is - * invoked with the `this` binding and arguments of the created function. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var initialize = _.once(createApplication); - * initialize(); - * initialize(); - * // => `createApplication` is invoked once - */ - function once(func) { - return before(2, func); - } - - /** - * Creates a function that invokes `func` with its arguments transformed. - * - * @static - * @since 4.0.0 - * @memberOf _ - * @category Function - * @param {Function} func The function to wrap. - * @param {...(Function|Function[])} [transforms=[_.identity]] - * The argument transforms. - * @returns {Function} Returns the new function. - * @example - * - * function doubled(n) { - * return n * 2; - * } - * - * function square(n) { - * return n * n; - * } - * - * var func = _.overArgs(function(x, y) { - * return [x, y]; - * }, [square, doubled]); - * - * func(9, 3); - * // => [81, 6] - * - * func(10, 5); - * // => [100, 10] - */ - var overArgs = castRest(function(func, transforms) { - transforms = (transforms.length == 1 && isArray(transforms[0])) - ? arrayMap(transforms[0], baseUnary(getIteratee())) - : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee())); - - var funcsLength = transforms.length; - return baseRest(function(args) { - var index = -1, - length = nativeMin(args.length, funcsLength); - - while (++index < length) { - args[index] = transforms[index].call(this, args[index]); - } - return apply(func, this, args); - }); - }); - - /** - * Creates a function that invokes `func` with `partials` prepended to the - * arguments it receives. This method is like `_.bind` except it does **not** - * alter the `this` binding. - * - * The `_.partial.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * **Note:** This method doesn't set the "length" property of partially - * applied functions. - * - * @static - * @memberOf _ - * @since 0.2.0 - * @category Function - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * function greet(greeting, name) { - * return greeting + ' ' + name; - * } - * - * var sayHelloTo = _.partial(greet, 'hello'); - * sayHelloTo('fred'); - * // => 'hello fred' - * - * // Partially applied with placeholders. - * var greetFred = _.partial(greet, _, 'fred'); - * greetFred('hi'); - * // => 'hi fred' - */ - var partial = baseRest(function(func, partials) { - var holders = replaceHolders(partials, getHolder(partial)); - return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders); - }); - - /** - * This method is like `_.partial` except that partially applied arguments - * are appended to the arguments it receives. - * - * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * **Note:** This method doesn't set the "length" property of partially - * applied functions. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Function - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * function greet(greeting, name) { - * return greeting + ' ' + name; - * } - * - * var greetFred = _.partialRight(greet, 'fred'); - * greetFred('hi'); - * // => 'hi fred' - * - * // Partially applied with placeholders. - * var sayHelloTo = _.partialRight(greet, 'hello', _); - * sayHelloTo('fred'); - * // => 'hello fred' - */ - var partialRight = baseRest(function(func, partials) { - var holders = replaceHolders(partials, getHolder(partialRight)); - return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders); - }); - - /** - * Creates a function that invokes `func` with arguments arranged according - * to the specified `indexes` where the argument value at the first index is - * provided as the first argument, the argument value at the second index is - * provided as the second argument, and so on. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} func The function to rearrange arguments for. - * @param {...(number|number[])} indexes The arranged argument indexes. - * @returns {Function} Returns the new function. - * @example - * - * var rearged = _.rearg(function(a, b, c) { - * return [a, b, c]; - * }, [2, 0, 1]); - * - * rearged('b', 'c', 'a') - * // => ['a', 'b', 'c'] - */ - var rearg = flatRest(function(func, indexes) { - return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes); - }); - - /** - * Creates a function that invokes `func` with the `this` binding of the - * created function and arguments from `start` and beyond provided as - * an array. - * - * **Note:** This method is based on the - * [rest parameter](https://mdn.io/rest_parameters). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Function - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. - * @example - * - * var say = _.rest(function(what, names) { - * return what + ' ' + _.initial(names).join(', ') + - * (_.size(names) > 1 ? ', & ' : '') + _.last(names); - * }); - * - * say('hello', 'fred', 'barney', 'pebbles'); - * // => 'hello fred, barney, & pebbles' - */ - function rest(func, start) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - start = start === undefined ? start : toInteger(start); - return baseRest(func, start); - } - - /** - * Creates a function that invokes `func` with the `this` binding of the - * create function and an array of arguments much like - * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply). - * - * **Note:** This method is based on the - * [spread operator](https://mdn.io/spread_operator). - * - * @static - * @memberOf _ - * @since 3.2.0 - * @category Function - * @param {Function} func The function to spread arguments over. - * @param {number} [start=0] The start position of the spread. - * @returns {Function} Returns the new function. - * @example - * - * var say = _.spread(function(who, what) { - * return who + ' says ' + what; - * }); - * - * say(['fred', 'hello']); - * // => 'fred says hello' - * - * var numbers = Promise.all([ - * Promise.resolve(40), - * Promise.resolve(36) - * ]); - * - * numbers.then(_.spread(function(x, y) { - * return x + y; - * })); - * // => a Promise of 76 - */ - function spread(func, start) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - start = start == null ? 0 : nativeMax(toInteger(start), 0); - return baseRest(function(args) { - var array = args[start], - otherArgs = castSlice(args, 0, start); - - if (array) { - arrayPush(otherArgs, array); - } - return apply(func, this, otherArgs); - }); - } - - /** - * Creates a throttled function that only invokes `func` at most once per - * every `wait` milliseconds. The throttled function comes with a `cancel` - * method to cancel delayed `func` invocations and a `flush` method to - * immediately invoke them. Provide `options` to indicate whether `func` - * should be invoked on the leading and/or trailing edge of the `wait` - * timeout. The `func` is invoked with the last arguments provided to the - * throttled function. Subsequent calls to the throttled function return the - * result of the last `func` invocation. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is - * invoked on the trailing edge of the timeout only if the throttled function - * is invoked more than once during the `wait` timeout. - * - * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred - * until to the next tick, similar to `setTimeout` with a timeout of `0`. - * - * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) - * for details over the differences between `_.throttle` and `_.debounce`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to throttle. - * @param {number} [wait=0] The number of milliseconds to throttle invocations to. - * @param {Object} [options={}] The options object. - * @param {boolean} [options.leading=true] - * Specify invoking on the leading edge of the timeout. - * @param {boolean} [options.trailing=true] - * Specify invoking on the trailing edge of the timeout. - * @returns {Function} Returns the new throttled function. - * @example - * - * // Avoid excessively updating the position while scrolling. - * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); - * - * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. - * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); - * jQuery(element).on('click', throttled); - * - * // Cancel the trailing throttled invocation. - * jQuery(window).on('popstate', throttled.cancel); - */ - function throttle(func, wait, options) { - var leading = true, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - if (isObject(options)) { - leading = 'leading' in options ? !!options.leading : leading; - trailing = 'trailing' in options ? !!options.trailing : trailing; - } - return debounce(func, wait, { - 'leading': leading, - 'maxWait': wait, - 'trailing': trailing - }); - } - - /** - * Creates a function that accepts up to one argument, ignoring any - * additional arguments. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Function - * @param {Function} func The function to cap arguments for. - * @returns {Function} Returns the new capped function. - * @example - * - * _.map(['6', '8', '10'], _.unary(parseInt)); - * // => [6, 8, 10] - */ - function unary(func) { - return ary(func, 1); - } - - /** - * Creates a function that provides `value` to `wrapper` as its first - * argument. Any additional arguments provided to the function are appended - * to those provided to the `wrapper`. The wrapper is invoked with the `this` - * binding of the created function. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {*} value The value to wrap. - * @param {Function} [wrapper=identity] The wrapper function. - * @returns {Function} Returns the new function. - * @example - * - * var p = _.wrap(_.escape, function(func, text) { - * return '

' + func(text) + '

'; - * }); - * - * p('fred, barney, & pebbles'); - * // => '

fred, barney, & pebbles

' - */ - function wrap(value, wrapper) { - return partial(castFunction(wrapper), value); - } - - /*------------------------------------------------------------------------*/ - - /** - * Casts `value` as an array if it's not one. - * - * @static - * @memberOf _ - * @since 4.4.0 - * @category Lang - * @param {*} value The value to inspect. - * @returns {Array} Returns the cast array. - * @example - * - * _.castArray(1); - * // => [1] - * - * _.castArray({ 'a': 1 }); - * // => [{ 'a': 1 }] - * - * _.castArray('abc'); - * // => ['abc'] - * - * _.castArray(null); - * // => [null] - * - * _.castArray(undefined); - * // => [undefined] - * - * _.castArray(); - * // => [] - * - * var array = [1, 2, 3]; - * console.log(_.castArray(array) === array); - * // => true - */ - function castArray() { - if (!arguments.length) { - return []; - } - var value = arguments[0]; - return isArray(value) ? value : [value]; - } - - /** - * Creates a shallow clone of `value`. - * - * **Note:** This method is loosely based on the - * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) - * and supports cloning arrays, array buffers, booleans, date objects, maps, - * numbers, `Object` objects, regexes, sets, strings, symbols, and typed - * arrays. The own enumerable properties of `arguments` objects are cloned - * as plain objects. An empty object is returned for uncloneable values such - * as error objects, functions, DOM nodes, and WeakMaps. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to clone. - * @returns {*} Returns the cloned value. - * @see _.cloneDeep - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var shallow = _.clone(objects); - * console.log(shallow[0] === objects[0]); - * // => true - */ - function clone(value) { - return baseClone(value, CLONE_SYMBOLS_FLAG); - } - - /** - * This method is like `_.clone` except that it accepts `customizer` which - * is invoked to produce the cloned value. If `customizer` returns `undefined`, - * cloning is handled by the method instead. The `customizer` is invoked with - * up to four arguments; (value [, index|key, object, stack]). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to clone. - * @param {Function} [customizer] The function to customize cloning. - * @returns {*} Returns the cloned value. - * @see _.cloneDeepWith - * @example - * - * function customizer(value) { - * if (_.isElement(value)) { - * return value.cloneNode(false); - * } - * } - * - * var el = _.cloneWith(document.body, customizer); - * - * console.log(el === document.body); - * // => false - * console.log(el.nodeName); - * // => 'BODY' - * console.log(el.childNodes.length); - * // => 0 - */ - function cloneWith(value, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return baseClone(value, CLONE_SYMBOLS_FLAG, customizer); - } - - /** - * This method is like `_.clone` except that it recursively clones `value`. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Lang - * @param {*} value The value to recursively clone. - * @returns {*} Returns the deep cloned value. - * @see _.clone - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var deep = _.cloneDeep(objects); - * console.log(deep[0] === objects[0]); - * // => false - */ - function cloneDeep(value) { - return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); - } - - /** - * This method is like `_.cloneWith` except that it recursively clones `value`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to recursively clone. - * @param {Function} [customizer] The function to customize cloning. - * @returns {*} Returns the deep cloned value. - * @see _.cloneWith - * @example - * - * function customizer(value) { - * if (_.isElement(value)) { - * return value.cloneNode(true); - * } - * } - * - * var el = _.cloneDeepWith(document.body, customizer); - * - * console.log(el === document.body); - * // => false - * console.log(el.nodeName); - * // => 'BODY' - * console.log(el.childNodes.length); - * // => 20 - */ - function cloneDeepWith(value, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer); - } - - /** - * Checks if `object` conforms to `source` by invoking the predicate - * properties of `source` with the corresponding property values of `object`. - * - * **Note:** This method is equivalent to `_.conforms` when `source` is - * partially applied. - * - * @static - * @memberOf _ - * @since 4.14.0 - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property predicates to conform to. - * @returns {boolean} Returns `true` if `object` conforms, else `false`. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * - * _.conformsTo(object, { 'b': function(n) { return n > 1; } }); - * // => true - * - * _.conformsTo(object, { 'b': function(n) { return n > 2; } }); - * // => false - */ - function conformsTo(object, source) { - return source == null || baseConformsTo(object, source, keys(source)); - } - - /** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ - function eq(value, other) { - return value === other || (value !== value && other !== other); - } - - /** - * Checks if `value` is greater than `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than `other`, - * else `false`. - * @see _.lt - * @example - * - * _.gt(3, 1); - * // => true - * - * _.gt(3, 3); - * // => false - * - * _.gt(1, 3); - * // => false - */ - var gt = createRelationalOperation(baseGt); - - /** - * Checks if `value` is greater than or equal to `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than or equal to - * `other`, else `false`. - * @see _.lte - * @example - * - * _.gte(3, 1); - * // => true - * - * _.gte(3, 3); - * // => true - * - * _.gte(1, 3); - * // => false - */ - var gte = createRelationalOperation(function(value, other) { - return value >= other; - }); - - /** - * Checks if `value` is likely an `arguments` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - * else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ - var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { - return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && - !propertyIsEnumerable.call(value, 'callee'); - }; - - /** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ - var isArray = Array.isArray; - - /** - * Checks if `value` is classified as an `ArrayBuffer` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. - * @example - * - * _.isArrayBuffer(new ArrayBuffer(2)); - * // => true - * - * _.isArrayBuffer(new Array(2)); - * // => false - */ - var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; - - /** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ - function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); - } - - /** - * This method is like `_.isArrayLike` except that it also checks if `value` - * is an object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, - * else `false`. - * @example - * - * _.isArrayLikeObject([1, 2, 3]); - * // => true - * - * _.isArrayLikeObject(document.body.children); - * // => true - * - * _.isArrayLikeObject('abc'); - * // => false - * - * _.isArrayLikeObject(_.noop); - * // => false - */ - function isArrayLikeObject(value) { - return isObjectLike(value) && isArrayLike(value); - } - - /** - * Checks if `value` is classified as a boolean primitive or object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. - * @example - * - * _.isBoolean(false); - * // => true - * - * _.isBoolean(null); - * // => false - */ - function isBoolean(value) { - return value === true || value === false || - (isObjectLike(value) && baseGetTag(value) == boolTag); - } - - /** - * Checks if `value` is a buffer. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. - * @example - * - * _.isBuffer(new Buffer(2)); - * // => true - * - * _.isBuffer(new Uint8Array(2)); - * // => false - */ - var isBuffer = nativeIsBuffer || stubFalse; - - /** - * Checks if `value` is classified as a `Date` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a date object, else `false`. - * @example - * - * _.isDate(new Date); - * // => true - * - * _.isDate('Mon April 23 2012'); - * // => false - */ - var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; - - /** - * Checks if `value` is likely a DOM element. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. - * @example - * - * _.isElement(document.body); - * // => true - * - * _.isElement(''); - * // => false - */ - function isElement(value) { - return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value); - } - - /** - * Checks if `value` is an empty object, collection, map, or set. - * - * Objects are considered empty if they have no own enumerable string keyed - * properties. - * - * Array-like values such as `arguments` objects, arrays, buffers, strings, or - * jQuery-like collections are considered empty if they have a `length` of `0`. - * Similarly, maps and sets are considered empty if they have a `size` of `0`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is empty, else `false`. - * @example - * - * _.isEmpty(null); - * // => true - * - * _.isEmpty(true); - * // => true - * - * _.isEmpty(1); - * // => true - * - * _.isEmpty([1, 2, 3]); - * // => false - * - * _.isEmpty({ 'a': 1 }); - * // => false - */ - function isEmpty(value) { - if (value == null) { - return true; - } - if (isArrayLike(value) && - (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || - isBuffer(value) || isTypedArray(value) || isArguments(value))) { - return !value.length; - } - var tag = getTag(value); - if (tag == mapTag || tag == setTag) { - return !value.size; - } - if (isPrototype(value)) { - return !baseKeys(value).length; - } - for (var key in value) { - if (hasOwnProperty.call(value, key)) { - return false; - } - } - return true; - } - - /** - * Performs a deep comparison between two values to determine if they are - * equivalent. - * - * **Note:** This method supports comparing arrays, array buffers, booleans, - * date objects, error objects, maps, numbers, `Object` objects, regexes, - * sets, strings, symbols, and typed arrays. `Object` objects are compared - * by their own, not inherited, enumerable properties. Functions and DOM - * nodes are compared by strict equality, i.e. `===`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.isEqual(object, other); - * // => true - * - * object === other; - * // => false - */ - function isEqual(value, other) { - return baseIsEqual(value, other); - } - - /** - * This method is like `_.isEqual` except that it accepts `customizer` which - * is invoked to compare values. If `customizer` returns `undefined`, comparisons - * are handled by the method instead. The `customizer` is invoked with up to - * six arguments: (objValue, othValue [, index|key, object, other, stack]). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * function isGreeting(value) { - * return /^h(?:i|ello)$/.test(value); - * } - * - * function customizer(objValue, othValue) { - * if (isGreeting(objValue) && isGreeting(othValue)) { - * return true; - * } - * } - * - * var array = ['hello', 'goodbye']; - * var other = ['hi', 'goodbye']; - * - * _.isEqualWith(array, other, customizer); - * // => true - */ - function isEqualWith(value, other, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - var result = customizer ? customizer(value, other) : undefined; - return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result; - } - - /** - * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, - * `SyntaxError`, `TypeError`, or `URIError` object. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an error object, else `false`. - * @example - * - * _.isError(new Error); - * // => true - * - * _.isError(Error); - * // => false - */ - function isError(value) { - if (!isObjectLike(value)) { - return false; - } - var tag = baseGetTag(value); - return tag == errorTag || tag == domExcTag || - (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value)); - } - - /** - * Checks if `value` is a finite primitive number. - * - * **Note:** This method is based on - * [`Number.isFinite`](https://mdn.io/Number/isFinite). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. - * @example - * - * _.isFinite(3); - * // => true - * - * _.isFinite(Number.MIN_VALUE); - * // => true - * - * _.isFinite(Infinity); - * // => false - * - * _.isFinite('3'); - * // => false - */ - function isFinite(value) { - return typeof value == 'number' && nativeIsFinite(value); - } - - /** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ - function isFunction(value) { - if (!isObject(value)) { - return false; - } - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 9 which returns 'object' for typed arrays and other constructors. - var tag = baseGetTag(value); - return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; - } - - /** - * Checks if `value` is an integer. - * - * **Note:** This method is based on - * [`Number.isInteger`](https://mdn.io/Number/isInteger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an integer, else `false`. - * @example - * - * _.isInteger(3); - * // => true - * - * _.isInteger(Number.MIN_VALUE); - * // => false - * - * _.isInteger(Infinity); - * // => false - * - * _.isInteger('3'); - * // => false - */ - function isInteger(value) { - return typeof value == 'number' && value == toInteger(value); - } - - /** - * Checks if `value` is a valid array-like length. - * - * **Note:** This method is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ - function isLength(value) { - return typeof value == 'number' && - value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; - } - - /** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ - function isObject(value) { - var type = typeof value; - return value != null && (type == 'object' || type == 'function'); - } - - /** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ - function isObjectLike(value) { - return value != null && typeof value == 'object'; - } - - /** - * Checks if `value` is classified as a `Map` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a map, else `false`. - * @example - * - * _.isMap(new Map); - * // => true - * - * _.isMap(new WeakMap); - * // => false - */ - var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; - - /** - * Performs a partial deep comparison between `object` and `source` to - * determine if `object` contains equivalent property values. - * - * **Note:** This method is equivalent to `_.matches` when `source` is - * partially applied. - * - * Partial comparisons will match empty array and empty object `source` - * values against any array or object value, respectively. See `_.isEqual` - * for a list of supported value comparisons. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * - * _.isMatch(object, { 'b': 2 }); - * // => true - * - * _.isMatch(object, { 'b': 1 }); - * // => false - */ - function isMatch(object, source) { - return object === source || baseIsMatch(object, source, getMatchData(source)); - } - - /** - * This method is like `_.isMatch` except that it accepts `customizer` which - * is invoked to compare values. If `customizer` returns `undefined`, comparisons - * are handled by the method instead. The `customizer` is invoked with five - * arguments: (objValue, srcValue, index|key, object, source). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - * @example - * - * function isGreeting(value) { - * return /^h(?:i|ello)$/.test(value); - * } - * - * function customizer(objValue, srcValue) { - * if (isGreeting(objValue) && isGreeting(srcValue)) { - * return true; - * } - * } - * - * var object = { 'greeting': 'hello' }; - * var source = { 'greeting': 'hi' }; - * - * _.isMatchWith(object, source, customizer); - * // => true - */ - function isMatchWith(object, source, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return baseIsMatch(object, source, getMatchData(source), customizer); - } - - /** - * Checks if `value` is `NaN`. - * - * **Note:** This method is based on - * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as - * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for - * `undefined` and other non-number values. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - * @example - * - * _.isNaN(NaN); - * // => true - * - * _.isNaN(new Number(NaN)); - * // => true - * - * isNaN(undefined); - * // => true - * - * _.isNaN(undefined); - * // => false - */ - function isNaN(value) { - // An `NaN` primitive is the only value that is not equal to itself. - // Perform the `toStringTag` check first to avoid errors with some - // ActiveX objects in IE. - return isNumber(value) && value != +value; - } - - /** - * Checks if `value` is a pristine native function. - * - * **Note:** This method can't reliably detect native functions in the presence - * of the core-js package because core-js circumvents this kind of detection. - * Despite multiple requests, the core-js maintainer has made it clear: any - * attempt to fix the detection will be obstructed. As a result, we're left - * with little choice but to throw an error. Unfortunately, this also affects - * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill), - * which rely on core-js. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - * @example - * - * _.isNative(Array.prototype.push); - * // => true - * - * _.isNative(_); - * // => false - */ - function isNative(value) { - if (isMaskable(value)) { - throw new Error(CORE_ERROR_TEXT); - } - return baseIsNative(value); - } - - /** - * Checks if `value` is `null`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `null`, else `false`. - * @example - * - * _.isNull(null); - * // => true - * - * _.isNull(void 0); - * // => false - */ - function isNull(value) { - return value === null; - } - - /** - * Checks if `value` is `null` or `undefined`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is nullish, else `false`. - * @example - * - * _.isNil(null); - * // => true - * - * _.isNil(void 0); - * // => true - * - * _.isNil(NaN); - * // => false - */ - function isNil(value) { - return value == null; - } - - /** - * Checks if `value` is classified as a `Number` primitive or object. - * - * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are - * classified as numbers, use the `_.isFinite` method. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a number, else `false`. - * @example - * - * _.isNumber(3); - * // => true - * - * _.isNumber(Number.MIN_VALUE); - * // => true - * - * _.isNumber(Infinity); - * // => true - * - * _.isNumber('3'); - * // => false - */ - function isNumber(value) { - return typeof value == 'number' || - (isObjectLike(value) && baseGetTag(value) == numberTag); - } - - /** - * Checks if `value` is a plain object, that is, an object created by the - * `Object` constructor or one with a `[[Prototype]]` of `null`. - * - * @static - * @memberOf _ - * @since 0.8.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * _.isPlainObject(new Foo); - * // => false - * - * _.isPlainObject([1, 2, 3]); - * // => false - * - * _.isPlainObject({ 'x': 0, 'y': 0 }); - * // => true - * - * _.isPlainObject(Object.create(null)); - * // => true - */ - function isPlainObject(value) { - if (!isObjectLike(value) || baseGetTag(value) != objectTag) { - return false; - } - var proto = getPrototype(value); - if (proto === null) { - return true; - } - var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; - return typeof Ctor == 'function' && Ctor instanceof Ctor && - funcToString.call(Ctor) == objectCtorString; - } - - /** - * Checks if `value` is classified as a `RegExp` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. - * @example - * - * _.isRegExp(/abc/); - * // => true - * - * _.isRegExp('/abc/'); - * // => false - */ - var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; - - /** - * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754 - * double precision number which isn't the result of a rounded unsafe integer. - * - * **Note:** This method is based on - * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`. - * @example - * - * _.isSafeInteger(3); - * // => true - * - * _.isSafeInteger(Number.MIN_VALUE); - * // => false - * - * _.isSafeInteger(Infinity); - * // => false - * - * _.isSafeInteger('3'); - * // => false - */ - function isSafeInteger(value) { - return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; - } - - /** - * Checks if `value` is classified as a `Set` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a set, else `false`. - * @example - * - * _.isSet(new Set); - * // => true - * - * _.isSet(new WeakSet); - * // => false - */ - var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; - - /** - * Checks if `value` is classified as a `String` primitive or object. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a string, else `false`. - * @example - * - * _.isString('abc'); - * // => true - * - * _.isString(1); - * // => false - */ - function isString(value) { - return typeof value == 'string' || - (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); - } - - /** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ - function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && baseGetTag(value) == symbolTag); - } - - /** - * Checks if `value` is classified as a typed array. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - * @example - * - * _.isTypedArray(new Uint8Array); - * // => true - * - * _.isTypedArray([]); - * // => false - */ - var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; - - /** - * Checks if `value` is `undefined`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. - * @example - * - * _.isUndefined(void 0); - * // => true - * - * _.isUndefined(null); - * // => false - */ - function isUndefined(value) { - return value === undefined; - } - - /** - * Checks if `value` is classified as a `WeakMap` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a weak map, else `false`. - * @example - * - * _.isWeakMap(new WeakMap); - * // => true - * - * _.isWeakMap(new Map); - * // => false - */ - function isWeakMap(value) { - return isObjectLike(value) && getTag(value) == weakMapTag; - } - - /** - * Checks if `value` is classified as a `WeakSet` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a weak set, else `false`. - * @example - * - * _.isWeakSet(new WeakSet); - * // => true - * - * _.isWeakSet(new Set); - * // => false - */ - function isWeakSet(value) { - return isObjectLike(value) && baseGetTag(value) == weakSetTag; - } - - /** - * Checks if `value` is less than `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than `other`, - * else `false`. - * @see _.gt - * @example - * - * _.lt(1, 3); - * // => true - * - * _.lt(3, 3); - * // => false - * - * _.lt(3, 1); - * // => false - */ - var lt = createRelationalOperation(baseLt); - - /** - * Checks if `value` is less than or equal to `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than or equal to - * `other`, else `false`. - * @see _.gte - * @example - * - * _.lte(1, 3); - * // => true - * - * _.lte(3, 3); - * // => true - * - * _.lte(3, 1); - * // => false - */ - var lte = createRelationalOperation(function(value, other) { - return value <= other; - }); - - /** - * Converts `value` to an array. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to convert. - * @returns {Array} Returns the converted array. - * @example - * - * _.toArray({ 'a': 1, 'b': 2 }); - * // => [1, 2] - * - * _.toArray('abc'); - * // => ['a', 'b', 'c'] - * - * _.toArray(1); - * // => [] - * - * _.toArray(null); - * // => [] - */ - function toArray(value) { - if (!value) { - return []; - } - if (isArrayLike(value)) { - return isString(value) ? stringToArray(value) : copyArray(value); - } - if (symIterator && value[symIterator]) { - return iteratorToArray(value[symIterator]()); - } - var tag = getTag(value), - func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values); - - return func(value); - } - - /** - * Converts `value` to a finite number. - * - * @static - * @memberOf _ - * @since 4.12.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted number. - * @example - * - * _.toFinite(3.2); - * // => 3.2 - * - * _.toFinite(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toFinite(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toFinite('3.2'); - * // => 3.2 - */ - function toFinite(value) { - if (!value) { - return value === 0 ? value : 0; - } - value = toNumber(value); - if (value === INFINITY || value === -INFINITY) { - var sign = (value < 0 ? -1 : 1); - return sign * MAX_INTEGER; - } - return value === value ? value : 0; - } - - /** - * Converts `value` to an integer. - * - * **Note:** This method is loosely based on - * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toInteger(3.2); - * // => 3 - * - * _.toInteger(Number.MIN_VALUE); - * // => 0 - * - * _.toInteger(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toInteger('3.2'); - * // => 3 - */ - function toInteger(value) { - var result = toFinite(value), - remainder = result % 1; - - return result === result ? (remainder ? result - remainder : result) : 0; - } - - /** - * Converts `value` to an integer suitable for use as the length of an - * array-like object. - * - * **Note:** This method is based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toLength(3.2); - * // => 3 - * - * _.toLength(Number.MIN_VALUE); - * // => 0 - * - * _.toLength(Infinity); - * // => 4294967295 - * - * _.toLength('3.2'); - * // => 3 - */ - function toLength(value) { - return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0; - } - - /** - * Converts `value` to a number. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to process. - * @returns {number} Returns the number. - * @example - * - * _.toNumber(3.2); - * // => 3.2 - * - * _.toNumber(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toNumber(Infinity); - * // => Infinity - * - * _.toNumber('3.2'); - * // => 3.2 - */ - function toNumber(value) { - if (typeof value == 'number') { - return value; - } - if (isSymbol(value)) { - return NAN; - } - if (isObject(value)) { - var other = typeof value.valueOf == 'function' ? value.valueOf() : value; - value = isObject(other) ? (other + '') : other; - } - if (typeof value != 'string') { - return value === 0 ? value : +value; - } - value = value.replace(reTrim, ''); - var isBinary = reIsBinary.test(value); - return (isBinary || reIsOctal.test(value)) - ? freeParseInt(value.slice(2), isBinary ? 2 : 8) - : (reIsBadHex.test(value) ? NAN : +value); - } - - /** - * Converts `value` to a plain object flattening inherited enumerable string - * keyed properties of `value` to own properties of the plain object. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {Object} Returns the converted plain object. - * @example - * - * function Foo() { - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.assign({ 'a': 1 }, new Foo); - * // => { 'a': 1, 'b': 2 } - * - * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); - * // => { 'a': 1, 'b': 2, 'c': 3 } - */ - function toPlainObject(value) { - return copyObject(value, keysIn(value)); - } - - /** - * Converts `value` to a safe integer. A safe integer can be compared and - * represented correctly. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toSafeInteger(3.2); - * // => 3 - * - * _.toSafeInteger(Number.MIN_VALUE); - * // => 0 - * - * _.toSafeInteger(Infinity); - * // => 9007199254740991 - * - * _.toSafeInteger('3.2'); - * // => 3 - */ - function toSafeInteger(value) { - return value - ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) - : (value === 0 ? value : 0); - } - - /** - * Converts `value` to a string. An empty string is returned for `null` - * and `undefined` values. The sign of `-0` is preserved. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - * @example - * - * _.toString(null); - * // => '' - * - * _.toString(-0); - * // => '-0' - * - * _.toString([1, 2, 3]); - * // => '1,2,3' - */ - function toString(value) { - return value == null ? '' : baseToString(value); - } - - /*------------------------------------------------------------------------*/ - - /** - * Assigns own enumerable string keyed properties of source objects to the - * destination object. Source objects are applied from left to right. - * Subsequent sources overwrite property assignments of previous sources. - * - * **Note:** This method mutates `object` and is loosely based on - * [`Object.assign`](https://mdn.io/Object/assign). - * - * @static - * @memberOf _ - * @since 0.10.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.assignIn - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * function Bar() { - * this.c = 3; - * } - * - * Foo.prototype.b = 2; - * Bar.prototype.d = 4; - * - * _.assign({ 'a': 0 }, new Foo, new Bar); - * // => { 'a': 1, 'c': 3 } - */ - var assign = createAssigner(function(object, source) { - if (isPrototype(source) || isArrayLike(source)) { - copyObject(source, keys(source), object); - return; - } - for (var key in source) { - if (hasOwnProperty.call(source, key)) { - assignValue(object, key, source[key]); - } - } - }); - - /** - * This method is like `_.assign` except that it iterates over own and - * inherited source properties. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias extend - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.assign - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * function Bar() { - * this.c = 3; - * } - * - * Foo.prototype.b = 2; - * Bar.prototype.d = 4; - * - * _.assignIn({ 'a': 0 }, new Foo, new Bar); - * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } - */ - var assignIn = createAssigner(function(object, source) { - copyObject(source, keysIn(source), object); - }); - - /** - * This method is like `_.assignIn` except that it accepts `customizer` - * which is invoked to produce the assigned values. If `customizer` returns - * `undefined`, assignment is handled by the method instead. The `customizer` - * is invoked with five arguments: (objValue, srcValue, key, object, source). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias extendWith - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @see _.assignWith - * @example - * - * function customizer(objValue, srcValue) { - * return _.isUndefined(objValue) ? srcValue : objValue; - * } - * - * var defaults = _.partialRight(_.assignInWith, customizer); - * - * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ - var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { - copyObject(source, keysIn(source), object, customizer); - }); - - /** - * This method is like `_.assign` except that it accepts `customizer` - * which is invoked to produce the assigned values. If `customizer` returns - * `undefined`, assignment is handled by the method instead. The `customizer` - * is invoked with five arguments: (objValue, srcValue, key, object, source). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @see _.assignInWith - * @example - * - * function customizer(objValue, srcValue) { - * return _.isUndefined(objValue) ? srcValue : objValue; - * } - * - * var defaults = _.partialRight(_.assignWith, customizer); - * - * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ - var assignWith = createAssigner(function(object, source, srcIndex, customizer) { - copyObject(source, keys(source), object, customizer); - }); - - /** - * Creates an array of values corresponding to `paths` of `object`. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {...(string|string[])} [paths] The property paths to pick. - * @returns {Array} Returns the picked values. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; - * - * _.at(object, ['a[0].b.c', 'a[1]']); - * // => [3, 4] - */ - var at = flatRest(baseAt); - - /** - * Creates an object that inherits from the `prototype` object. If a - * `properties` object is given, its own enumerable string keyed properties - * are assigned to the created object. - * - * @static - * @memberOf _ - * @since 2.3.0 - * @category Object - * @param {Object} prototype The object to inherit from. - * @param {Object} [properties] The properties to assign to the object. - * @returns {Object} Returns the new object. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * function Circle() { - * Shape.call(this); - * } - * - * Circle.prototype = _.create(Shape.prototype, { - * 'constructor': Circle - * }); - * - * var circle = new Circle; - * circle instanceof Circle; - * // => true - * - * circle instanceof Shape; - * // => true - */ - function create(prototype, properties) { - var result = baseCreate(prototype); - return properties == null ? result : baseAssign(result, properties); - } - - /** - * Assigns own and inherited enumerable string keyed properties of source - * objects to the destination object for all destination properties that - * resolve to `undefined`. Source objects are applied from left to right. - * Once a property is set, additional values of the same property are ignored. - * - * **Note:** This method mutates `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.defaultsDeep - * @example - * - * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ - var defaults = baseRest(function(object, sources) { - object = Object(object); - - var index = -1; - var length = sources.length; - var guard = length > 2 ? sources[2] : undefined; - - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - length = 1; - } - - while (++index < length) { - var source = sources[index]; - var props = keysIn(source); - var propsIndex = -1; - var propsLength = props.length; - - while (++propsIndex < propsLength) { - var key = props[propsIndex]; - var value = object[key]; - - if (value === undefined || - (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) { - object[key] = source[key]; - } - } - } - - return object; - }); - - /** - * This method is like `_.defaults` except that it recursively assigns - * default properties. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 3.10.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.defaults - * @example - * - * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } }); - * // => { 'a': { 'b': 2, 'c': 3 } } - */ - var defaultsDeep = baseRest(function(args) { - args.push(undefined, customDefaultsMerge); - return apply(mergeWith, undefined, args); - }); - - /** - * This method is like `_.find` except that it returns the key of the first - * element `predicate` returns truthy for instead of the element itself. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Object - * @param {Object} object The object to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {string|undefined} Returns the key of the matched element, - * else `undefined`. - * @example - * - * var users = { - * 'barney': { 'age': 36, 'active': true }, - * 'fred': { 'age': 40, 'active': false }, - * 'pebbles': { 'age': 1, 'active': true } - * }; - * - * _.findKey(users, function(o) { return o.age < 40; }); - * // => 'barney' (iteration order is not guaranteed) - * - * // The `_.matches` iteratee shorthand. - * _.findKey(users, { 'age': 1, 'active': true }); - * // => 'pebbles' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findKey(users, ['active', false]); - * // => 'fred' - * - * // The `_.property` iteratee shorthand. - * _.findKey(users, 'active'); - * // => 'barney' - */ - function findKey(object, predicate) { - return baseFindKey(object, getIteratee(predicate, 3), baseForOwn); - } - - /** - * This method is like `_.findKey` except that it iterates over elements of - * a collection in the opposite order. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Object - * @param {Object} object The object to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {string|undefined} Returns the key of the matched element, - * else `undefined`. - * @example - * - * var users = { - * 'barney': { 'age': 36, 'active': true }, - * 'fred': { 'age': 40, 'active': false }, - * 'pebbles': { 'age': 1, 'active': true } - * }; - * - * _.findLastKey(users, function(o) { return o.age < 40; }); - * // => returns 'pebbles' assuming `_.findKey` returns 'barney' - * - * // The `_.matches` iteratee shorthand. - * _.findLastKey(users, { 'age': 36, 'active': true }); - * // => 'barney' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findLastKey(users, ['active', false]); - * // => 'fred' - * - * // The `_.property` iteratee shorthand. - * _.findLastKey(users, 'active'); - * // => 'pebbles' - */ - function findLastKey(object, predicate) { - return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight); - } - - /** - * Iterates over own and inherited enumerable string keyed properties of an - * object and invokes `iteratee` for each property. The iteratee is invoked - * with three arguments: (value, key, object). Iteratee functions may exit - * iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 0.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forInRight - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forIn(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). - */ - function forIn(object, iteratee) { - return object == null - ? object - : baseFor(object, getIteratee(iteratee, 3), keysIn); - } - - /** - * This method is like `_.forIn` except that it iterates over properties of - * `object` in the opposite order. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forIn - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forInRight(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'. - */ - function forInRight(object, iteratee) { - return object == null - ? object - : baseForRight(object, getIteratee(iteratee, 3), keysIn); - } - - /** - * Iterates over own enumerable string keyed properties of an object and - * invokes `iteratee` for each property. The iteratee is invoked with three - * arguments: (value, key, object). Iteratee functions may exit iteration - * early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 0.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forOwnRight - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forOwn(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). - */ - function forOwn(object, iteratee) { - return object && baseForOwn(object, getIteratee(iteratee, 3)); - } - - /** - * This method is like `_.forOwn` except that it iterates over properties of - * `object` in the opposite order. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forOwn - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forOwnRight(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'. - */ - function forOwnRight(object, iteratee) { - return object && baseForOwnRight(object, getIteratee(iteratee, 3)); - } - - /** - * Creates an array of function property names from own enumerable properties - * of `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to inspect. - * @returns {Array} Returns the function names. - * @see _.functionsIn - * @example - * - * function Foo() { - * this.a = _.constant('a'); - * this.b = _.constant('b'); - * } - * - * Foo.prototype.c = _.constant('c'); - * - * _.functions(new Foo); - * // => ['a', 'b'] - */ - function functions(object) { - return object == null ? [] : baseFunctions(object, keys(object)); - } - - /** - * Creates an array of function property names from own and inherited - * enumerable properties of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to inspect. - * @returns {Array} Returns the function names. - * @see _.functions - * @example - * - * function Foo() { - * this.a = _.constant('a'); - * this.b = _.constant('b'); - * } - * - * Foo.prototype.c = _.constant('c'); - * - * _.functionsIn(new Foo); - * // => ['a', 'b', 'c'] - */ - function functionsIn(object) { - return object == null ? [] : baseFunctions(object, keysIn(object)); - } - - /** - * Gets the value at `path` of `object`. If the resolved value is - * `undefined`, the `defaultValue` is returned in its place. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.get(object, 'a[0].b.c'); - * // => 3 - * - * _.get(object, ['a', '0', 'b', 'c']); - * // => 3 - * - * _.get(object, 'a.b.c', 'default'); - * // => 'default' - */ - function get(object, path, defaultValue) { - var result = object == null ? undefined : baseGet(object, path); - return result === undefined ? defaultValue : result; - } - - /** - * Checks if `path` is a direct property of `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = { 'a': { 'b': 2 } }; - * var other = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.has(object, 'a'); - * // => true - * - * _.has(object, 'a.b'); - * // => true - * - * _.has(object, ['a', 'b']); - * // => true - * - * _.has(other, 'a'); - * // => false - */ - function has(object, path) { - return object != null && hasPath(object, path, baseHas); - } - - /** - * Checks if `path` is a direct or inherited property of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.hasIn(object, 'a'); - * // => true - * - * _.hasIn(object, 'a.b'); - * // => true - * - * _.hasIn(object, ['a', 'b']); - * // => true - * - * _.hasIn(object, 'b'); - * // => false - */ - function hasIn(object, path) { - return object != null && hasPath(object, path, baseHasIn); - } - - /** - * Creates an object composed of the inverted keys and values of `object`. - * If `object` contains duplicate values, subsequent values overwrite - * property assignments of previous values. - * - * @static - * @memberOf _ - * @since 0.7.0 - * @category Object - * @param {Object} object The object to invert. - * @returns {Object} Returns the new inverted object. - * @example - * - * var object = { 'a': 1, 'b': 2, 'c': 1 }; - * - * _.invert(object); - * // => { '1': 'c', '2': 'b' } - */ - var invert = createInverter(function(result, value, key) { - if (value != null && - typeof value.toString != 'function') { - value = nativeObjectToString.call(value); - } - - result[value] = key; - }, constant(identity)); - - /** - * This method is like `_.invert` except that the inverted object is generated - * from the results of running each element of `object` thru `iteratee`. The - * corresponding inverted value of each inverted key is an array of keys - * responsible for generating the inverted value. The iteratee is invoked - * with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.1.0 - * @category Object - * @param {Object} object The object to invert. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Object} Returns the new inverted object. - * @example - * - * var object = { 'a': 1, 'b': 2, 'c': 1 }; - * - * _.invertBy(object); - * // => { '1': ['a', 'c'], '2': ['b'] } - * - * _.invertBy(object, function(value) { - * return 'group' + value; - * }); - * // => { 'group1': ['a', 'c'], 'group2': ['b'] } - */ - var invertBy = createInverter(function(result, value, key) { - if (value != null && - typeof value.toString != 'function') { - value = nativeObjectToString.call(value); - } - - if (hasOwnProperty.call(result, value)) { - result[value].push(key); - } else { - result[value] = [key]; - } - }, getIteratee); - - /** - * Invokes the method at `path` of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the method to invoke. - * @param {...*} [args] The arguments to invoke the method with. - * @returns {*} Returns the result of the invoked method. - * @example - * - * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] }; - * - * _.invoke(object, 'a[0].b.c.slice', 1, 3); - * // => [2, 3] - */ - var invoke = baseRest(baseInvoke); - - /** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * for more details. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) - * - * _.keys('hi'); - * // => ['0', '1'] - */ - function keys(object) { - return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); - } - - /** - * Creates an array of the own and inherited enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keysIn(new Foo); - * // => ['a', 'b', 'c'] (iteration order is not guaranteed) - */ - function keysIn(object) { - return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); - } - - /** - * The opposite of `_.mapValues`; this method creates an object with the - * same values as `object` and keys generated by running each own enumerable - * string keyed property of `object` thru `iteratee`. The iteratee is invoked - * with three arguments: (value, key, object). - * - * @static - * @memberOf _ - * @since 3.8.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns the new mapped object. - * @see _.mapValues - * @example - * - * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { - * return key + value; - * }); - * // => { 'a1': 1, 'b2': 2 } - */ - function mapKeys(object, iteratee) { - var result = {}; - iteratee = getIteratee(iteratee, 3); - - baseForOwn(object, function(value, key, object) { - baseAssignValue(result, iteratee(value, key, object), value); - }); - return result; - } - - /** - * Creates an object with the same keys as `object` and values generated - * by running each own enumerable string keyed property of `object` thru - * `iteratee`. The iteratee is invoked with three arguments: - * (value, key, object). - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns the new mapped object. - * @see _.mapKeys - * @example - * - * var users = { - * 'fred': { 'user': 'fred', 'age': 40 }, - * 'pebbles': { 'user': 'pebbles', 'age': 1 } - * }; - * - * _.mapValues(users, function(o) { return o.age; }); - * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) - * - * // The `_.property` iteratee shorthand. - * _.mapValues(users, 'age'); - * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) - */ - function mapValues(object, iteratee) { - var result = {}; - iteratee = getIteratee(iteratee, 3); - - baseForOwn(object, function(value, key, object) { - baseAssignValue(result, key, iteratee(value, key, object)); - }); - return result; - } - - /** - * This method is like `_.assign` except that it recursively merges own and - * inherited enumerable string keyed properties of source objects into the - * destination object. Source properties that resolve to `undefined` are - * skipped if a destination value exists. Array and plain object properties - * are merged recursively. Other objects and value types are overridden by - * assignment. Source objects are applied from left to right. Subsequent - * sources overwrite property assignments of previous sources. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 0.5.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @example - * - * var object = { - * 'a': [{ 'b': 2 }, { 'd': 4 }] - * }; - * - * var other = { - * 'a': [{ 'c': 3 }, { 'e': 5 }] - * }; - * - * _.merge(object, other); - * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } - */ - var merge = createAssigner(function(object, source, srcIndex) { - baseMerge(object, source, srcIndex); - }); - - /** - * This method is like `_.merge` except that it accepts `customizer` which - * is invoked to produce the merged values of the destination and source - * properties. If `customizer` returns `undefined`, merging is handled by the - * method instead. The `customizer` is invoked with six arguments: - * (objValue, srcValue, key, object, source, stack). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} customizer The function to customize assigned values. - * @returns {Object} Returns `object`. - * @example - * - * function customizer(objValue, srcValue) { - * if (_.isArray(objValue)) { - * return objValue.concat(srcValue); - * } - * } - * - * var object = { 'a': [1], 'b': [2] }; - * var other = { 'a': [3], 'b': [4] }; - * - * _.mergeWith(object, other, customizer); - * // => { 'a': [1, 3], 'b': [2, 4] } - */ - var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { - baseMerge(object, source, srcIndex, customizer); - }); - - /** - * The opposite of `_.pick`; this method creates an object composed of the - * own and inherited enumerable property paths of `object` that are not omitted. - * - * **Note:** This method is considerably slower than `_.pick`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The source object. - * @param {...(string|string[])} [paths] The property paths to omit. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.omit(object, ['a', 'c']); - * // => { 'b': '2' } - */ - var omit = flatRest(function(object, paths) { - var result = {}; - if (object == null) { - return result; - } - var isDeep = false; - paths = arrayMap(paths, function(path) { - path = castPath(path, object); - isDeep || (isDeep = path.length > 1); - return path; - }); - copyObject(object, getAllKeysIn(object), result); - if (isDeep) { - result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); - } - var length = paths.length; - while (length--) { - baseUnset(result, paths[length]); - } - return result; - }); - - /** - * The opposite of `_.pickBy`; this method creates an object composed of - * the own and inherited enumerable string keyed properties of `object` that - * `predicate` doesn't return truthy for. The predicate is invoked with two - * arguments: (value, key). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The source object. - * @param {Function} [predicate=_.identity] The function invoked per property. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.omitBy(object, _.isNumber); - * // => { 'b': '2' } - */ - function omitBy(object, predicate) { - return pickBy(object, negate(getIteratee(predicate))); - } - - /** - * Creates an object composed of the picked `object` properties. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The source object. - * @param {...(string|string[])} [paths] The property paths to pick. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.pick(object, ['a', 'c']); - * // => { 'a': 1, 'c': 3 } - */ - var pick = flatRest(function(object, paths) { - return object == null ? {} : basePick(object, paths); - }); - - /** - * Creates an object composed of the `object` properties `predicate` returns - * truthy for. The predicate is invoked with two arguments: (value, key). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The source object. - * @param {Function} [predicate=_.identity] The function invoked per property. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.pickBy(object, _.isNumber); - * // => { 'a': 1, 'c': 3 } - */ - function pickBy(object, predicate) { - if (object == null) { - return {}; - } - var props = arrayMap(getAllKeysIn(object), function(prop) { - return [prop]; - }); - predicate = getIteratee(predicate); - return basePickBy(object, props, function(value, path) { - return predicate(value, path[0]); - }); - } - - /** - * This method is like `_.get` except that if the resolved value is a - * function it's invoked with the `this` binding of its parent object and - * its result is returned. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to resolve. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; - * - * _.result(object, 'a[0].b.c1'); - * // => 3 - * - * _.result(object, 'a[0].b.c2'); - * // => 4 - * - * _.result(object, 'a[0].b.c3', 'default'); - * // => 'default' - * - * _.result(object, 'a[0].b.c3', _.constant('default')); - * // => 'default' - */ - function result(object, path, defaultValue) { - path = castPath(path, object); - - var index = -1, - length = path.length; - - // Ensure the loop is entered when path is empty. - if (!length) { - length = 1; - object = undefined; - } - while (++index < length) { - var value = object == null ? undefined : object[toKey(path[index])]; - if (value === undefined) { - index = length; - value = defaultValue; - } - object = isFunction(value) ? value.call(object) : value; - } - return object; - } - - /** - * Sets the value at `path` of `object`. If a portion of `path` doesn't exist, - * it's created. Arrays are created for missing index properties while objects - * are created for all other missing properties. Use `_.setWith` to customize - * `path` creation. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @returns {Object} Returns `object`. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.set(object, 'a[0].b.c', 4); - * console.log(object.a[0].b.c); - * // => 4 - * - * _.set(object, ['x', '0', 'y', 'z'], 5); - * console.log(object.x[0].y.z); - * // => 5 - */ - function set(object, path, value) { - return object == null ? object : baseSet(object, path, value); - } - - /** - * This method is like `_.set` except that it accepts `customizer` which is - * invoked to produce the objects of `path`. If `customizer` returns `undefined` - * path creation is handled by the method instead. The `customizer` is invoked - * with three arguments: (nsValue, key, nsObject). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @example - * - * var object = {}; - * - * _.setWith(object, '[0][1]', 'a', Object); - * // => { '0': { '1': 'a' } } - */ - function setWith(object, path, value, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return object == null ? object : baseSet(object, path, value, customizer); - } - - /** - * Creates an array of own enumerable string keyed-value pairs for `object` - * which can be consumed by `_.fromPairs`. If `object` is a map or set, its - * entries are returned. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias entries - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the key-value pairs. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.toPairs(new Foo); - * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed) - */ - var toPairs = createToPairs(keys); - - /** - * Creates an array of own and inherited enumerable string keyed-value pairs - * for `object` which can be consumed by `_.fromPairs`. If `object` is a map - * or set, its entries are returned. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias entriesIn - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the key-value pairs. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.toPairsIn(new Foo); - * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed) - */ - var toPairsIn = createToPairs(keysIn); - - /** - * An alternative to `_.reduce`; this method transforms `object` to a new - * `accumulator` object which is the result of running each of its own - * enumerable string keyed properties thru `iteratee`, with each invocation - * potentially mutating the `accumulator` object. If `accumulator` is not - * provided, a new object with the same `[[Prototype]]` will be used. The - * iteratee is invoked with four arguments: (accumulator, value, key, object). - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 1.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The custom accumulator value. - * @returns {*} Returns the accumulated value. - * @example - * - * _.transform([2, 3, 4], function(result, n) { - * result.push(n *= n); - * return n % 2 == 0; - * }, []); - * // => [4, 9] - * - * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { - * (result[value] || (result[value] = [])).push(key); - * }, {}); - * // => { '1': ['a', 'c'], '2': ['b'] } - */ - function transform(object, iteratee, accumulator) { - var isArr = isArray(object), - isArrLike = isArr || isBuffer(object) || isTypedArray(object); - - iteratee = getIteratee(iteratee, 4); - if (accumulator == null) { - var Ctor = object && object.constructor; - if (isArrLike) { - accumulator = isArr ? new Ctor : []; - } - else if (isObject(object)) { - accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; - } - else { - accumulator = {}; - } - } - (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) { - return iteratee(accumulator, value, index, object); - }); - return accumulator; - } - - /** - * Removes the property at `path` of `object`. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to unset. - * @returns {boolean} Returns `true` if the property is deleted, else `false`. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 7 } }] }; - * _.unset(object, 'a[0].b.c'); - * // => true - * - * console.log(object); - * // => { 'a': [{ 'b': {} }] }; - * - * _.unset(object, ['a', '0', 'b', 'c']); - * // => true - * - * console.log(object); - * // => { 'a': [{ 'b': {} }] }; - */ - function unset(object, path) { - return object == null ? true : baseUnset(object, path); - } - - /** - * This method is like `_.set` except that accepts `updater` to produce the - * value to set. Use `_.updateWith` to customize `path` creation. The `updater` - * is invoked with one argument: (value). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.6.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {Function} updater The function to produce the updated value. - * @returns {Object} Returns `object`. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.update(object, 'a[0].b.c', function(n) { return n * n; }); - * console.log(object.a[0].b.c); - * // => 9 - * - * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; }); - * console.log(object.x[0].y.z); - * // => 0 - */ - function update(object, path, updater) { - return object == null ? object : baseUpdate(object, path, castFunction(updater)); - } - - /** - * This method is like `_.update` except that it accepts `customizer` which is - * invoked to produce the objects of `path`. If `customizer` returns `undefined` - * path creation is handled by the method instead. The `customizer` is invoked - * with three arguments: (nsValue, key, nsObject). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.6.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {Function} updater The function to produce the updated value. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @example - * - * var object = {}; - * - * _.updateWith(object, '[0][1]', _.constant('a'), Object); - * // => { '0': { '1': 'a' } } - */ - function updateWith(object, path, updater, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer); - } - - /** - * Creates an array of the own enumerable string keyed property values of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property values. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.values(new Foo); - * // => [1, 2] (iteration order is not guaranteed) - * - * _.values('hi'); - * // => ['h', 'i'] - */ - function values(object) { - return object == null ? [] : baseValues(object, keys(object)); - } - - /** - * Creates an array of the own and inherited enumerable string keyed property - * values of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property values. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.valuesIn(new Foo); - * // => [1, 2, 3] (iteration order is not guaranteed) - */ - function valuesIn(object) { - return object == null ? [] : baseValues(object, keysIn(object)); - } - - /*------------------------------------------------------------------------*/ - - /** - * Clamps `number` within the inclusive `lower` and `upper` bounds. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Number - * @param {number} number The number to clamp. - * @param {number} [lower] The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the clamped number. - * @example - * - * _.clamp(-10, -5, 5); - * // => -5 - * - * _.clamp(10, -5, 5); - * // => 5 - */ - function clamp(number, lower, upper) { - if (upper === undefined) { - upper = lower; - lower = undefined; - } - if (upper !== undefined) { - upper = toNumber(upper); - upper = upper === upper ? upper : 0; - } - if (lower !== undefined) { - lower = toNumber(lower); - lower = lower === lower ? lower : 0; - } - return baseClamp(toNumber(number), lower, upper); - } - - /** - * Checks if `n` is between `start` and up to, but not including, `end`. If - * `end` is not specified, it's set to `start` with `start` then set to `0`. - * If `start` is greater than `end` the params are swapped to support - * negative ranges. - * - * @static - * @memberOf _ - * @since 3.3.0 - * @category Number - * @param {number} number The number to check. - * @param {number} [start=0] The start of the range. - * @param {number} end The end of the range. - * @returns {boolean} Returns `true` if `number` is in the range, else `false`. - * @see _.range, _.rangeRight - * @example - * - * _.inRange(3, 2, 4); - * // => true - * - * _.inRange(4, 8); - * // => true - * - * _.inRange(4, 2); - * // => false - * - * _.inRange(2, 2); - * // => false - * - * _.inRange(1.2, 2); - * // => true - * - * _.inRange(5.2, 4); - * // => false - * - * _.inRange(-3, -2, -6); - * // => true - */ - function inRange(number, start, end) { - start = toFinite(start); - if (end === undefined) { - end = start; - start = 0; - } else { - end = toFinite(end); - } - number = toNumber(number); - return baseInRange(number, start, end); - } - - /** - * Produces a random number between the inclusive `lower` and `upper` bounds. - * If only one argument is provided a number between `0` and the given number - * is returned. If `floating` is `true`, or either `lower` or `upper` are - * floats, a floating-point number is returned instead of an integer. - * - * **Note:** JavaScript follows the IEEE-754 standard for resolving - * floating-point values which can produce unexpected results. - * - * @static - * @memberOf _ - * @since 0.7.0 - * @category Number - * @param {number} [lower=0] The lower bound. - * @param {number} [upper=1] The upper bound. - * @param {boolean} [floating] Specify returning a floating-point number. - * @returns {number} Returns the random number. - * @example - * - * _.random(0, 5); - * // => an integer between 0 and 5 - * - * _.random(5); - * // => also an integer between 0 and 5 - * - * _.random(5, true); - * // => a floating-point number between 0 and 5 - * - * _.random(1.2, 5.2); - * // => a floating-point number between 1.2 and 5.2 - */ - function random(lower, upper, floating) { - if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) { - upper = floating = undefined; - } - if (floating === undefined) { - if (typeof upper == 'boolean') { - floating = upper; - upper = undefined; - } - else if (typeof lower == 'boolean') { - floating = lower; - lower = undefined; - } - } - if (lower === undefined && upper === undefined) { - lower = 0; - upper = 1; - } - else { - lower = toFinite(lower); - if (upper === undefined) { - upper = lower; - lower = 0; - } else { - upper = toFinite(upper); - } - } - if (lower > upper) { - var temp = lower; - lower = upper; - upper = temp; - } - if (floating || lower % 1 || upper % 1) { - var rand = nativeRandom(); - return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper); - } - return baseRandom(lower, upper); - } - - /*------------------------------------------------------------------------*/ - - /** - * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the camel cased string. - * @example - * - * _.camelCase('Foo Bar'); - * // => 'fooBar' - * - * _.camelCase('--foo-bar--'); - * // => 'fooBar' - * - * _.camelCase('__FOO_BAR__'); - * // => 'fooBar' - */ - var camelCase = createCompounder(function(result, word, index) { - word = word.toLowerCase(); - return result + (index ? capitalize(word) : word); - }); - - /** - * Converts the first character of `string` to upper case and the remaining - * to lower case. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to capitalize. - * @returns {string} Returns the capitalized string. - * @example - * - * _.capitalize('FRED'); - * // => 'Fred' - */ - function capitalize(string) { - return upperFirst(toString(string).toLowerCase()); - } - - /** - * Deburrs `string` by converting - * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) - * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A) - * letters to basic Latin letters and removing - * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to deburr. - * @returns {string} Returns the deburred string. - * @example - * - * _.deburr('déjà vu'); - * // => 'deja vu' - */ - function deburr(string) { - string = toString(string); - return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); - } - - /** - * Checks if `string` ends with the given target string. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to inspect. - * @param {string} [target] The string to search for. - * @param {number} [position=string.length] The position to search up to. - * @returns {boolean} Returns `true` if `string` ends with `target`, - * else `false`. - * @example - * - * _.endsWith('abc', 'c'); - * // => true - * - * _.endsWith('abc', 'b'); - * // => false - * - * _.endsWith('abc', 'b', 2); - * // => true - */ - function endsWith(string, target, position) { - string = toString(string); - target = baseToString(target); - - var length = string.length; - position = position === undefined - ? length - : baseClamp(toInteger(position), 0, length); - - var end = position; - position -= target.length; - return position >= 0 && string.slice(position, end) == target; - } - - /** - * Converts the characters "&", "<", ">", '"', and "'" in `string` to their - * corresponding HTML entities. - * - * **Note:** No other characters are escaped. To escape additional - * characters use a third-party library like [_he_](https://mths.be/he). - * - * Though the ">" character is escaped for symmetry, characters like - * ">" and "/" don't need escaping in HTML and have no special meaning - * unless they're part of a tag or unquoted attribute value. See - * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) - * (under "semi-related fun fact") for more details. - * - * When working with HTML you should always - * [quote attribute values](http://wonko.com/post/html-escaping) to reduce - * XSS vectors. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escape('fred, barney, & pebbles'); - * // => 'fred, barney, & pebbles' - */ - function escape(string) { - string = toString(string); - return (string && reHasUnescapedHtml.test(string)) - ? string.replace(reUnescapedHtml, escapeHtmlChar) - : string; - } - - /** - * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", - * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escapeRegExp('[lodash](https://lodash.com/)'); - * // => '\[lodash\]\(https://lodash\.com/\)' - */ - function escapeRegExp(string) { - string = toString(string); - return (string && reHasRegExpChar.test(string)) - ? string.replace(reRegExpChar, '\\$&') - : string; - } - - /** - * Converts `string` to - * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the kebab cased string. - * @example - * - * _.kebabCase('Foo Bar'); - * // => 'foo-bar' - * - * _.kebabCase('fooBar'); - * // => 'foo-bar' - * - * _.kebabCase('__FOO_BAR__'); - * // => 'foo-bar' - */ - var kebabCase = createCompounder(function(result, word, index) { - return result + (index ? '-' : '') + word.toLowerCase(); - }); - - /** - * Converts `string`, as space separated words, to lower case. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the lower cased string. - * @example - * - * _.lowerCase('--Foo-Bar--'); - * // => 'foo bar' - * - * _.lowerCase('fooBar'); - * // => 'foo bar' - * - * _.lowerCase('__FOO_BAR__'); - * // => 'foo bar' - */ - var lowerCase = createCompounder(function(result, word, index) { - return result + (index ? ' ' : '') + word.toLowerCase(); - }); - - /** - * Converts the first character of `string` to lower case. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the converted string. - * @example - * - * _.lowerFirst('Fred'); - * // => 'fred' - * - * _.lowerFirst('FRED'); - * // => 'fRED' - */ - var lowerFirst = createCaseFirst('toLowerCase'); - - /** - * Pads `string` on the left and right sides if it's shorter than `length`. - * Padding characters are truncated if they can't be evenly divided by `length`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to pad. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padded string. - * @example - * - * _.pad('abc', 8); - * // => ' abc ' - * - * _.pad('abc', 8, '_-'); - * // => '_-abc_-_' - * - * _.pad('abc', 3); - * // => 'abc' - */ - function pad(string, length, chars) { - string = toString(string); - length = toInteger(length); - - var strLength = length ? stringSize(string) : 0; - if (!length || strLength >= length) { - return string; - } - var mid = (length - strLength) / 2; - return ( - createPadding(nativeFloor(mid), chars) + - string + - createPadding(nativeCeil(mid), chars) - ); - } - - /** - * Pads `string` on the right side if it's shorter than `length`. Padding - * characters are truncated if they exceed `length`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to pad. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padded string. - * @example - * - * _.padEnd('abc', 6); - * // => 'abc ' - * - * _.padEnd('abc', 6, '_-'); - * // => 'abc_-_' - * - * _.padEnd('abc', 3); - * // => 'abc' - */ - function padEnd(string, length, chars) { - string = toString(string); - length = toInteger(length); - - var strLength = length ? stringSize(string) : 0; - return (length && strLength < length) - ? (string + createPadding(length - strLength, chars)) - : string; - } - - /** - * Pads `string` on the left side if it's shorter than `length`. Padding - * characters are truncated if they exceed `length`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to pad. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padded string. - * @example - * - * _.padStart('abc', 6); - * // => ' abc' - * - * _.padStart('abc', 6, '_-'); - * // => '_-_abc' - * - * _.padStart('abc', 3); - * // => 'abc' - */ - function padStart(string, length, chars) { - string = toString(string); - length = toInteger(length); - - var strLength = length ? stringSize(string) : 0; - return (length && strLength < length) - ? (createPadding(length - strLength, chars) + string) - : string; - } - - /** - * Converts `string` to an integer of the specified radix. If `radix` is - * `undefined` or `0`, a `radix` of `10` is used unless `value` is a - * hexadecimal, in which case a `radix` of `16` is used. - * - * **Note:** This method aligns with the - * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category String - * @param {string} string The string to convert. - * @param {number} [radix=10] The radix to interpret `value` by. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {number} Returns the converted integer. - * @example - * - * _.parseInt('08'); - * // => 8 - * - * _.map(['6', '08', '10'], _.parseInt); - * // => [6, 8, 10] - */ - function parseInt(string, radix, guard) { - if (guard || radix == null) { - radix = 0; - } else if (radix) { - radix = +radix; - } - return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0); - } - - /** - * Repeats the given string `n` times. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to repeat. - * @param {number} [n=1] The number of times to repeat the string. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {string} Returns the repeated string. - * @example - * - * _.repeat('*', 3); - * // => '***' - * - * _.repeat('abc', 2); - * // => 'abcabc' - * - * _.repeat('abc', 0); - * // => '' - */ - function repeat(string, n, guard) { - if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) { - n = 1; - } else { - n = toInteger(n); - } - return baseRepeat(toString(string), n); - } - - /** - * Replaces matches for `pattern` in `string` with `replacement`. - * - * **Note:** This method is based on - * [`String#replace`](https://mdn.io/String/replace). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to modify. - * @param {RegExp|string} pattern The pattern to replace. - * @param {Function|string} replacement The match replacement. - * @returns {string} Returns the modified string. - * @example - * - * _.replace('Hi Fred', 'Fred', 'Barney'); - * // => 'Hi Barney' - */ - function replace() { - var args = arguments, - string = toString(args[0]); - - return args.length < 3 ? string : string.replace(args[1], args[2]); - } - - /** - * Converts `string` to - * [snake case](https://en.wikipedia.org/wiki/Snake_case). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the snake cased string. - * @example - * - * _.snakeCase('Foo Bar'); - * // => 'foo_bar' - * - * _.snakeCase('fooBar'); - * // => 'foo_bar' - * - * _.snakeCase('--FOO-BAR--'); - * // => 'foo_bar' - */ - var snakeCase = createCompounder(function(result, word, index) { - return result + (index ? '_' : '') + word.toLowerCase(); - }); - - /** - * Splits `string` by `separator`. - * - * **Note:** This method is based on - * [`String#split`](https://mdn.io/String/split). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to split. - * @param {RegExp|string} separator The separator pattern to split by. - * @param {number} [limit] The length to truncate results to. - * @returns {Array} Returns the string segments. - * @example - * - * _.split('a-b-c', '-', 2); - * // => ['a', 'b'] - */ - function split(string, separator, limit) { - if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) { - separator = limit = undefined; - } - limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0; - if (!limit) { - return []; - } - string = toString(string); - if (string && ( - typeof separator == 'string' || - (separator != null && !isRegExp(separator)) - )) { - separator = baseToString(separator); - if (!separator && hasUnicode(string)) { - return castSlice(stringToArray(string), 0, limit); - } - } - return string.split(separator, limit); - } - - /** - * Converts `string` to - * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage). - * - * @static - * @memberOf _ - * @since 3.1.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the start cased string. - * @example - * - * _.startCase('--foo-bar--'); - * // => 'Foo Bar' - * - * _.startCase('fooBar'); - * // => 'Foo Bar' - * - * _.startCase('__FOO_BAR__'); - * // => 'FOO BAR' - */ - var startCase = createCompounder(function(result, word, index) { - return result + (index ? ' ' : '') + upperFirst(word); - }); - - /** - * Checks if `string` starts with the given target string. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to inspect. - * @param {string} [target] The string to search for. - * @param {number} [position=0] The position to search from. - * @returns {boolean} Returns `true` if `string` starts with `target`, - * else `false`. - * @example - * - * _.startsWith('abc', 'a'); - * // => true - * - * _.startsWith('abc', 'b'); - * // => false - * - * _.startsWith('abc', 'b', 1); - * // => true - */ - function startsWith(string, target, position) { - string = toString(string); - position = position == null - ? 0 - : baseClamp(toInteger(position), 0, string.length); - - target = baseToString(target); - return string.slice(position, position + target.length) == target; - } - - /** - * Creates a compiled template function that can interpolate data properties - * in "interpolate" delimiters, HTML-escape interpolated data properties in - * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data - * properties may be accessed as free variables in the template. If a setting - * object is given, it takes precedence over `_.templateSettings` values. - * - * **Note:** In the development build `_.template` utilizes - * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) - * for easier debugging. - * - * For more information on precompiling templates see - * [lodash's custom builds documentation](https://lodash.com/custom-builds). - * - * For more information on Chrome extension sandboxes see - * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category String - * @param {string} [string=''] The template string. - * @param {Object} [options={}] The options object. - * @param {RegExp} [options.escape=_.templateSettings.escape] - * The HTML "escape" delimiter. - * @param {RegExp} [options.evaluate=_.templateSettings.evaluate] - * The "evaluate" delimiter. - * @param {Object} [options.imports=_.templateSettings.imports] - * An object to import into the template as free variables. - * @param {RegExp} [options.interpolate=_.templateSettings.interpolate] - * The "interpolate" delimiter. - * @param {string} [options.sourceURL='lodash.templateSources[n]'] - * The sourceURL of the compiled template. - * @param {string} [options.variable='obj'] - * The data object variable name. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the compiled template function. - * @example - * - * // Use the "interpolate" delimiter to create a compiled template. - * var compiled = _.template('hello <%= user %>!'); - * compiled({ 'user': 'fred' }); - * // => 'hello fred!' - * - * // Use the HTML "escape" delimiter to escape data property values. - * var compiled = _.template('<%- value %>'); - * compiled({ 'value': ' - - - - + + + + - - + } + }); + + + + \ No newline at end of file diff --git a/src/index.js b/src/index.ts similarity index 55% rename from src/index.js rename to src/index.ts index 9fc2d66..0e7282b 100644 --- a/src/index.js +++ b/src/index.ts @@ -1,27 +1,20 @@ -// Device Clients -import Client from './protocols/amqpClient'; +// Device and Stream Clients import AmqpClient from './protocols/amqpClient'; -import MqttClient from './protocols/mqttClient'; -import StompClient from './protocols/stompClient'; -// Stream Clients -import StreamClient from './protocols/amqpStreamClient'; import AmqpStreamClient from './protocols/amqpStreamClient'; +import MqttClient from './protocols/mqttClient'; import MqttStreamClient from './protocols/mqttStreamClient'; +import StompClient from './protocols/stompClient'; import StompStreamClient from './protocols/stompStreamClient'; - -// Export clients in browser context -if (typeof window !== 'undefined') { - window.StompClient = StompClient; - window.StompStreamClient = StompStreamClient; -} +import { ISpaceBunnyParams } from './spacebunny'; export { - Client, + AmqpClient as Client, AmqpClient, MqttClient, StompClient, - StreamClient, AmqpStreamClient, + AmqpStreamClient as StreamClient, MqttStreamClient, - StompStreamClient + StompStreamClient, + ISpaceBunnyParams }; diff --git a/src/indexWeb.ts b/src/indexWeb.ts new file mode 100644 index 0000000..9eaae87 --- /dev/null +++ b/src/indexWeb.ts @@ -0,0 +1,16 @@ +// Device and Stream Clients +import StompClient from './protocols/stompClient'; +import StompStreamClient from './protocols/stompStreamClient'; + +// Export clients in browser context +// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access +(window as any).StompClient = StompClient; +// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access +(window as any).StompStreamClient = StompStreamClient; + +export { + StompClient as Client, + StompClient, + StompStreamClient as StreamClient, + StompStreamClient +}; diff --git a/src/messages/amqpMessage.js b/src/messages/amqpMessage.js deleted file mode 100644 index 0c621a8..0000000 --- a/src/messages/amqpMessage.js +++ /dev/null @@ -1,81 +0,0 @@ -/** - * A wrapper for the message object - * @module Message - */ -import _ from 'lodash'; -import { parseContent } from '../utils'; -import CONFIG from '../../config/constants'; - -class AmqpMessage { - - message: any; - content: any; - fields: any; - properties: any; - channel: any; - senderId: string; - channelName: string - _receiverId: string; - _discardMine: boolean; - _discardFromApi: boolean; - - /** - * @constructor - * @param {Object} message - the message received from the channel - * @param {String} receiverId - the receiver id - * @param {Object} opts - subscription options - */ - constructor(opts: any = {}) { - const { - message = undefined, receiverId = undefined, channel = undefined, subscriptionOpts = {} - } = opts; - this.message = message; - this.content = parseContent(_.get(message, 'content', {})); - this.fields = _.get(message, 'fields', {}); - this.properties = _.get(message, 'properties', {}); - this.channel = channel; - try { - const [senderId, channelName] = this.fields.routingKey.split('.'); - this.senderId = senderId; - this.channelName = channelName; - } catch (ex) { - console.error('Wrong routing key format'); // eslint-disable-line no-console - } - this._receiverId = receiverId || ''; - this._discardMine = subscriptionOpts.discardMine || false; - this._discardFromApi = subscriptionOpts.discardFromApi || false; - } - - /** - * Check if a message should be accepted of rejected - * - * @return Boolean - true if should be not considered, false otherwise - */ - blackListed = () => { - if (this._discardMine && this._receiverId === this.senderId && !this.fromApi()) return true; - if (this._discardFromApi && this.fromApi()) return true; - return false; - } - - /** - * Check if a message comes from API - * Check if it contains 'x-from-sb-api' header - * - * @return Boolean - true if it comes from API, false otherwise - */ - fromApi = () => { - return (this.properties.headers && this.properties.headers[CONFIG.fromApiHeader]); - } - - ack = (opts: any = {}) => { - const { allUpTo = false } = opts; - this.channel.nack(this.message, allUpTo); - } - - nack = (opts: any = {}) => { - const { allUpTo = false, requeue = true } = opts; - this.channel.nack(this.message, allUpTo, requeue); - } -} - -export default AmqpMessage; diff --git a/src/messages/amqpMessage.ts b/src/messages/amqpMessage.ts new file mode 100644 index 0000000..98e4c66 --- /dev/null +++ b/src/messages/amqpMessage.ts @@ -0,0 +1,103 @@ +import * as amqp from 'amqplib'; + +import { ISpaceBunnySubscribeOptions } from '../spacebunny'; +/** + * A wrapper for the message object + * @module Message + */ +import { parseContent } from '../utils'; + +class AmqpMessage { + private message: amqp.ConsumeMessage | null; + + private content: Record|string; + + private channel: amqp.Channel | amqp.ConfirmChannel; + + private senderId: string; + + private channelName: string + + private receiverId: string; + + private discardMine: boolean; + + private discardFromApi: boolean; + + private static FROM_API_HEADER = 'x-from-sb-api'; + + /** + * @constructor + * @param {Object} message - the message received from the channel + * @param {String} receiverId - the receiver id + * @param {Object} opts - subscription options + */ + constructor(opts: { + message: amqp.ConsumeMessage | null; receiverId: string; channel: amqp.Channel | amqp.ConfirmChannel; + subscriptionOpts: ISpaceBunnySubscribeOptions; }) { + const { message = undefined, receiverId = '', channel = undefined, subscriptionOpts = {} } = opts; + const { discardMine = false, discardFromApi = false } = subscriptionOpts; + this.message = message; + this.content = parseContent((message) ? message.content : '{}'); + this.channel = channel; + try { + const [senderId, channelName] = this.message.fields.routingKey.split('.'); + this.senderId = senderId; + this.channelName = channelName; + } catch (ex) { + console.error('Wrong routing key format'); // eslint-disable-line no-console + } + this.receiverId = receiverId; + this.discardMine = discardMine; + this.discardFromApi = discardFromApi; + } + + /** + * Check if a message should be accepted of rejected + * + * @return Boolean - true if should be not considered, false otherwise + */ + blackListed = (): boolean => { + if (this.discardMine && this.receiverId === this.senderId && !this.fromApi()) return true; + if (this.discardFromApi && this.fromApi()) return true; + return false; + } + + /** + * Check if a message comes from API + * Check if it contains 'x-from-sb-api' header + * + * @return Boolean - true if it comes from API, false otherwise + */ + fromApi = (): boolean => { + return (this.message.properties.headers && this.message.properties.headers[AmqpMessage.FROM_API_HEADER] === 'true'); + } + + ack = (opts: { allUpTo?: boolean } = {}): void => { + const { allUpTo = false } = opts; + this.channel.ack(this.message, allUpTo); + } + + nack = (opts: { allUpTo?: boolean; requeue?: boolean } = {}): void => { + const { allUpTo = false, requeue = true } = opts; + this.channel.nack(this.message, allUpTo, requeue); + } + + getContent = (): Record | string => { + return this.content; + } + + getProperties = (): amqp.MessageProperties => { + return this.message.properties; + } + + getFields = (): amqp.MessageFields => { + return this.message.fields; + } + + getChannelName = (): string => { + return this.channelName; + } +} + +export default AmqpMessage; diff --git a/src/messages/stompMessage.js b/src/messages/stompMessage.js deleted file mode 100644 index 6b37f88..0000000 --- a/src/messages/stompMessage.js +++ /dev/null @@ -1,78 +0,0 @@ -/** -* A wrapper for the message object -* @module Message -*/ -import _ from 'lodash'; - -import { parseContent } from '../utils'; -import CONFIG from '../../config/constants'; - -class StompMessage { - - message: any; - body: any; - content: any; - headers: any; - channel: any; - senderId: string; - channelName: string - _receiverId: string; - _discardMine: boolean; - _discardFromApi: boolean; - - /** - * @constructor - * @param {Object} opts - subscription options - */ - constructor(opts: any = {}) { - const { - message = undefined, receiverId = undefined, subscriptionOpts = {} - } = opts; - this.message = message; - this.body = _.get(message, 'body', {}); - this.content = parseContent(this.body); - this.headers = _.get(message, 'headers', {}); - try { - const destination = this.headers.destination.split('/'); - const [senderId, channelName] = destination[destination.length - 1].split('.'); - this.senderId = senderId; - this.channelName = channelName; - } catch (ex) { - console.error('Wrong routing key format'); // eslint-disable-line no-console - } - this._receiverId = receiverId || ''; - this._discardMine = subscriptionOpts.discardMine || false; - this._discardFromApi = subscriptionOpts.discardFromApi || false; - } - - /** - * Check if a message should be accepted of rejected - * - * @return Boolean - true if should be not considered, false otherwise - */ - blackListed = () => { - if (this._discardMine && this._receiverId === this.senderId && !this.fromApi()) return true; - if (this._discardFromApi && this.fromApi()) return true; - return false; - } - - /** - * Check if a message comes from API - * Check if it contains 'x-from-sb-api' header - * - * @return Boolean - true if it comes from API, false otherwise - */ - fromApi = () => { - return (this.headers && this.headers[CONFIG.fromApiHeader]); - } - - ack = () => { - this.message.ack(); - } - - nack = () => { - this.message.nack(); - } -} - -export default StompMessage; diff --git a/src/messages/stompMessage.ts b/src/messages/stompMessage.ts new file mode 100644 index 0000000..0e84d0e --- /dev/null +++ b/src/messages/stompMessage.ts @@ -0,0 +1,80 @@ +/** +* A wrapper for the message object +* @module Message +*/ +import { IMessage, StompHeaders } from '@stomp/stompjs'; + +import { ISpaceBunnySubscribeOptions } from '../spacebunny'; +import { parseContent } from '../utils'; + +class StompMessage { + private message: IMessage; + + private content: Record|string; + + private headers: StompHeaders; + + private senderId: string; + + private channelName: string + + private receiverId: string; + + private discardMine: boolean; + + private discardFromApi: boolean; + + private static FROM_API_HEADER = 'x-from-sb-api'; + + /** + * @constructor + * @param {Object} opts - subscription options + */ + constructor(opts: { message: IMessage | null; receiverId: string; + subscriptionOpts: ISpaceBunnySubscribeOptions; }) { + const { message = undefined, receiverId = '', subscriptionOpts = {} } = opts; + const { discardMine = false, discardFromApi = false } = subscriptionOpts; + this.message = message; + const body: string = message.body || '{}'; + this.content = parseContent(body); + this.headers = message.headers || {}; + const destination = this.headers.destination.split('/'); + const [senderId, channelName] = destination[destination.length - 1].split('.'); + this.senderId = senderId; + this.channelName = channelName; + this.receiverId = receiverId; + this.discardMine = discardMine; + this.discardFromApi = discardFromApi; + } + + /** + * Check if a message should be accepted of rejected + * + * @return Boolean - true if should be not considered, false otherwise + */ + public blackListed = (): boolean => { + if (this.discardMine && this.receiverId === this.senderId && !this.fromApi()) return true; + if (this.discardFromApi && this.fromApi()) return true; + return false; + } + + /** + * Check if a message comes from API + * Check if it contains 'x-from-sb-api' header + * + * @return Boolean - true if it comes from API, false otherwise + */ + private fromApi = (): boolean => { + return (this.headers && this.headers[StompMessage.FROM_API_HEADER] === 'true'); + } + + public ack = (): void => { this.message.ack(); } + + public nack = (): void => { this.message.nack(); } + + public getChannelName = (): string => { return this.channelName; } + + public getContent = (): Record|string => { return this.content; } +} + +export default StompMessage; diff --git a/src/protocols/amqpClient.js b/src/protocols/amqpClient.js deleted file mode 100644 index d0640c7..0000000 --- a/src/protocols/amqpClient.js +++ /dev/null @@ -1,343 +0,0 @@ -/** - * A module that exports an AmqpClient client - * which inherits from the SpaceBunny base client - * @module AmqpClient - */ - -// Import some helpers modules -import Promise from 'bluebird'; -import _ from 'lodash'; - -// Import amqplib -import * as amqp from 'amqplib'; - -// Import SpaceBunny main module from which AmqpClient inherits -import SpaceBunny from '../spacebunny'; -import AmqpMessage from '../messages/amqpMessage'; -import { encapsulateContent } from '../utils'; -import CONFIG from '../../config/constants'; - -class AmqpClient extends SpaceBunny { - - _amqpConnection: any; - _amqpChannels: any; - _protocol: string; - _tlsProtocol: string; - _inputQueueArgs: any; - _deviceExchangeArgs: any; - _subscribeArgs: any; - _publishArgs: any; - _connectionOpts: any; - - /** - * @constructor - * @param {Object} opts - options must contain Device-Key or connection options - * (deviceId and secret) for devices. - */ - constructor(opts: any = {}) { - super(opts); - this._amqpConnection = undefined; - this._amqpChannels = {}; - const amqpOptions = CONFIG.amqp; - this._protocol = amqpOptions.protocol; - this._tlsProtocol = amqpOptions.tls.protocol; - this._inputQueueArgs = amqpOptions.inputQueueArgs; - this._deviceExchangeArgs = amqpOptions.deviceExchangeArgs; - this._subscribeArgs = amqpOptions.subscribeArgs; - this._publishArgs = amqpOptions.publishArgs; - this._connectionOpts = amqpOptions.connection.opts; - } - - /** - * Subscribe to input channel - * - * @param {function} callback - function called every time a message is received - * passing the current message as argument - * @param {Object} options - subscription options - * @return promise containing the result of the subscription - */ - onReceive = (callback: Function, opts: any = {}): Promise => { - // Receive messages from imput queue - return new Promise((resolve, reject) => { - let localOpts = _.cloneDeep(opts); - localOpts = _.merge(_.cloneDeep(this._subscribeArgs), localOpts); - localOpts.noAck = (localOpts.ack === null); - this._createChannel('input', localOpts).then((ch) => { - return Promise.all([ - ch.checkQueue(`${this.deviceId()}.${this._inboxTopic}`, this._inputQueueArgs), - ch.consume(`${this.deviceId()}.${this._inboxTopic}`, (message) => { - // Create message object - const amqpMessage = new AmqpMessage({ - message, - receiverId: this._deviceId, - subscriptionOpts: localOpts, - channel: ch - }); - const ackNeeded = this._autoAck(localOpts.ack); - // Check if should be accepted or not - if (amqpMessage.blackListed()) { - if (ackNeeded) { ch.nack(message, localOpts.allUpTo, localOpts.requeue); } - return; - } - // Call message callback - callback(amqpMessage); - // Check if ACK is needed - if (ackNeeded) { ch.ack(message, localOpts.allUpTo); } - }, localOpts) - ]); - }).then((res) => { - resolve(res); - }).catch((reason) => { - reject(reason); - }); - }); - } - - /** - * Publish a message on a specific channel - * - * @param {String} channel - channel name on which you want to publish a message - * @param {Object} message - the message payload - * @param {Object} opts - publication options - * @return promise containing the result of the subscription - */ - publish = (channel: string, message: any, opts: any = {}): Promise => { - return new Promise((resolve, reject) => { - let localOpts = _.cloneDeep(opts); - localOpts = _.merge(_.cloneDeep(this._publishArgs), localOpts); - this._createChannel('output', localOpts).then((ch) => { - const { routingKey = undefined, topic = undefined } = localOpts; - const promises = [ - ch.checkExchange(this.deviceId()), - ch.publish(this.deviceId(), this._routingKeyFor({ channel, routingKey, topic }), - Buffer.from(encapsulateContent(message)), localOpts) - ]; - if (localOpts.withConfirm === true) { - promises.push(ch.waitForConfirms()); - } - return Promise.all(promises); - }).then((res) => { - resolve(res); - }).catch((reason) => { - reject(reason); - }); - }); - } - - /** - * Destroy the connection between the amqp client and broker - * - * @return a promise containing the result of the operation - */ - disconnect = (): Promise => { - return new Promise((resolve, reject) => { - if (this._amqpConnection === undefined) { - reject(new Error('Not Connected')); - } else { - this._amqpConnection.close().then(() => { - this._amqpConnection = undefined; - this._amqpChannels = {}; - this.emit('disconnect'); - resolve(true); - }).catch((reason) => { - reject(reason); - }); - } - }); - } - - /** - * Establish an amqp connection with the broker - * using configurations retrieved from the endpoint. - * If the connnection already exists, returns the current connnection - * - * @return a promise containing current connection - */ - connect = (opts: any = {}): Promise => { - return new Promise((resolve, reject) => { - let connectionOpts = _.cloneDeep(opts); - connectionOpts = _.merge(_.cloneDeep(this._connectionOpts), connectionOpts); - this.getEndpointConfigs().then((endpointConfigs) => { - const connectionParams = endpointConfigs.connection; - if (this.isConnected()) { - resolve(this._amqpConnection); - return undefined; - } else { - let connectionString = ''; - if (this._tls) { - connectionString = `${this._tlsProtocol}://${connectionParams.deviceId || connectionParams.client}:` - + `${connectionParams.secret}@${connectionParams.host}:` - + `${connectionParams.protocols.amqp.tlsPort}/${connectionParams.vhost.replace('/', '%2f')}`; - connectionOpts = _.merge(connectionOpts, this._tlsOpts); - } else { - connectionString = `${this._protocol}://${connectionParams.deviceId || connectionParams.client}:` - + `${connectionParams.secret}@${connectionParams.host}:` - + `${connectionParams.protocols.amqp.port}/${connectionParams.vhost.replace('/', '%2f')}`; - } - if (!_.isNil(connectionOpts.heartbeat)) { - connectionString += `?heartbeat=${connectionOpts.heartbeat}`; - } - return amqp.connect(connectionString, connectionOpts).then((conn: any) => { - conn.on('error', (err) => { - this._amqpConnection = undefined; - this.emit('error', err); - reject(err); - }); - conn.on('close', (err) => { - this.emit('close', err); - this._amqpConnection = undefined; - }); - conn.on('blocked', (reason) => { - this.emit('blocked', reason); - console.warn(reason); // eslint-disable-line no-console - }); - conn.on('unblocked', (reason) => { - this.emit('unblocked', reason); - console.warn(reason); // eslint-disable-line no-console - }); - this._amqpConnection = conn; - this.on('error', () => {}); - this.emit('connect'); - resolve(this._amqpConnection); - }).catch((reason) => { - reject(reason); - }); - } - }).catch((reason) => { - reject(reason); - }); - }); - } - - isConnected = (): boolean => { - return (this._amqpConnection !== undefined); - } - - // ------------ PRIVATE METHODS ------------------- - - /** - * Creates a channel on current connection - * - * @private - * @param {String} channelName - indicates the channel name - * @param {Object} opts - channel options - * @return a promise containing the current channel - */ - _createChannel = (channel: string, opts: any = {}): Promise => { - return new Promise((resolve, reject) => { - const { routingKey = undefined, topic = undefined, withConfirm = true } = opts; - const suffix = topic || routingKey || ''; - const channelName = `${channel}${suffix}${(withConfirm === true) ? 'WithConfirm' : ''}`; - if (this._amqpChannels[channelName]) { - if (typeof this._amqpChannels[channelName] === 'boolean') { - this.on('channelOpen', (ch) => { - if (ch === channelName) { - resolve(this._amqpChannels[channelName]); - } - }); - } else { - resolve(this._amqpChannels[channelName]); - } - } else { - this._amqpChannels[channelName] = true; - this.connect().then((conn) => { - if (opts.withConfirm === true) { - return conn.createConfirmChannel(); - } else { - return conn.createChannel(); - } - }).then((ch) => { - this._amqpChannels[channelName] = ch; - this.emit('channelOpen', channelName); - this._amqpChannels[channelName].on('error', (err) => { - if (err) { - console.error(err); // eslint-disable-line no-console - } - // TODO close channel in function of error type?? - this._amqpChannels[channelName] = undefined; - }); - this._amqpChannels[channelName].on('close', (err) => { - if (err) { - console.error(err); // eslint-disable-line no-console - } - this._amqpChannels[channelName] = undefined; - }); - resolve(ch); - }).catch((reason) => { - reject(reason); - }); - } - }); - } - - /** - * Close a channel on current connection - * - * @private - * @param {String} channelName - indicates if the channel is input or output - * @return a promise containing the result of the operation - */ - _closeChannel = (channelName: string, opts: any = {}): Promise => { - channelName = `${channelName}${(opts.withConfirm === true) ? 'WithConfirm' : ''}`; - return new Promise((resolve, reject) => { - const ch = this._amqpChannels[channelName]; - if (ch === undefined) { - reject(new Error('Invalid Channel Object')); - } else { - ch.close().then(() => { - this._amqpChannels[channelName] = undefined; - resolve(true); - }).catch((reason) => { - reject(reason); - }); - } - }); - } - - /** - * Generate the routing key for a specific channel - * - * @private - * @param {Object} params - params - * @return a string that represents the routing key for that channel - */ - _routingKeyFor = (params: any): string => { - const { channel = undefined, routingKey = undefined, topic = undefined } = params; - if (routingKey) { - return routingKey; - } else { - let messageRoutingKey = this.deviceId(); - if (!_.isEmpty(channel)) { - messageRoutingKey += `.${channel || ''}`; - } - if (!_.isEmpty(topic)) { - messageRoutingKey += `.${topic || ''}`; - } - return messageRoutingKey; - } - } - - /** - * Check if the SDK have to automatically ack messages - * - * @private - * @param {String} ack - the ack type, it should be 'manual' or 'auto' - * @return boolean - true if messages have to be autoacked, false otherwise - */ - _autoAck = (ack: string): boolean => { - if (ack) { - if (!_.includes(CONFIG[this._protocol].ackTypes, ack)) { - console.error('Wrong acknowledge type'); // eslint-disable-line no-console - } - switch (ack) { - case 'auto': - return true; - default: - return false; - } - } - return true; - } -} - -export default AmqpClient; diff --git a/src/protocols/amqpClient.ts b/src/protocols/amqpClient.ts new file mode 100644 index 0000000..707e7f5 --- /dev/null +++ b/src/protocols/amqpClient.ts @@ -0,0 +1,486 @@ +/** + * A module that exports an AmqpClient client + * which inherits from the SpaceBunny base client + * @module AmqpClient + */ + +// Import amqplib +import * as amqp from 'amqplib'; +import cloneDeep from 'lodash.clonedeep'; +// Import some helpers modules +import { isDeepStrictEqual, isNullOrUndefined, promisify } from 'util'; + +import AmqpMessage from '../messages/amqpMessage'; +// Import SpaceBunny main module from which AmqpClient inherits +import SpaceBunny, { + ICachedMessage, ISpaceBunnyParams, ISpaceBunnySubscribeOptions +} from '../spacebunny'; +import { encapsulateContent } from '../utils'; + +export interface IAmqpConsumeOptions extends ISpaceBunnySubscribeOptions { + allUpTo?: boolean; + ack?: 'auto' | 'manual' | void; + requeue?: boolean; +} + +export interface IRoutingKey { + channel?: string; + routingKey?: string; + topic?: string; + deviceId?: string; +} + +export interface IAmqpPublishOptions { + routingKey?: string; + topic?: string; + withConfirm?: boolean; +} + +export type IAmqpCallback = (message: Record|string, fields?: amqp.MessageFields, properties?: amqp.MessageProperties) => Promise|void; + +export type IAmqpListener = { + callback: IAmqpCallback; + opts?: IAmqpConsumeOptions; + consumerTag?: string; +} + +class AmqpClient extends SpaceBunny { + private amqpConnection: amqp.Connection; + + private amqpChannels: { [key: string]: amqp.Channel }; + + private defaultConnectionOpts: Record; + + private ackTypes: string[]; + + private connected: boolean; + + private amqpListeners: { [name: string]: IAmqpListener }; + + /** + * @constructor + * @param {Object} opts - options must contain Device-Key or connection options + * (deviceId and secret) for devices. + */ + constructor(opts: ISpaceBunnyParams = {}) { + super(opts); + this.amqpConnection = undefined; + this.amqpChannels = {}; + this.protocol = 'amqp'; + this.tlsProtocol = 'amqps'; + this.defaultConnectionOpts = { frameMax: 32768 }; + this.ackTypes = ['auto', 'manual']; + this.connected = false; + this.amqpListeners = {}; + this.on('connect', () => { + void this.bindAmqpListeners(); + void this.publishCachedMessages(); + }); + this.on('disconnect', () => { this.amqpListeners = {}; }); + this.on('channelClose', () => { this.clearConsumers(); }); + } + + /** + * Subscribe to input channel + * + * @param {function} callback - function called every time a message is received + * passing the current message as argument + * @param {Object} options - subscription options + * @return promise containing the result of the subscription + */ + public onMessage = async (callback: IAmqpCallback, opts: IAmqpConsumeOptions = {}): Promise => { + const name = this.addAmqpListener(callback, opts); + await this.bindAmqpListener(name); + return name; + } + + /** + * Publish a message on a specific channel + * + * @param {String} channel - channel name on which you want to publish a message + * @param {Object} message - the message payload + * @param {Object} opts - publication options + * @return promise containing the result of the subscription + */ + public publish = async (channel: string, message: Record, opts: IAmqpPublishOptions = {}, publishOpts: amqp.Options.Publish = {}): Promise => { + const { routingKey = undefined, topic = undefined, withConfirm = false } = opts; + const ch: amqp.Channel | amqp.ConfirmChannel = await this.createChannel('output', { withConfirm }); + if (this.isConnected()) { + try { + const encapsulatedContent = encapsulateContent(message); + const rKey = this.routingKeyFor({ channel, routingKey, topic }); + const deviceId = this.getDeviceId(); + await ch.checkExchange(deviceId); + const res = ch.publish(deviceId, rKey, Buffer.from(encapsulatedContent), publishOpts); + if (!res) { + this.log('error', `Publish on channel ${channel} failed: ${encapsulatedContent}`); + return false; + } + if (withConfirm === true && res) { + await (ch as amqp.ConfirmChannel).waitForConfirms(); + } + this.log('debug', `Message published on channel ${channel} successfully`); + return true; + } catch (error) { + this.log('error', `Error publishing on channel ${channel}`); + throw error; + } + } else { + throw new Error(`${this.getClassName()} - Error sending message on channel ${channel} when client is not connected`); + } + } + + /** + * Destroy the connection between the amqp client and broker + * + * @return a promise containing the result of the operation + */ + public disconnect = async (): Promise => { + if (this.isConnected()) { + try { + const channels = Object.keys(this.amqpChannels); + for (let index = 0; index < channels.length; index += 1) { + const channelName = channels[index]; + if (this.amqpChannels[channelName]) { + // eslint-disable-next-line no-await-in-loop + await this.amqpChannels[channelName].close(); + delete this.amqpChannels[channelName]; + } + } + this.amqpConnection.removeAllListeners(); + await this.amqpConnection.close(); + } catch (error) { + this.log('error', 'Error disconnecting client.'); + throw error; + } + } else { + this.log('info', 'Client already disconnected.'); + } + this.amqpConnection = undefined; + this.amqpChannels = {}; + this.connected = false; + this.emit('disconnect'); + return true; + } + + /** + * Establish an amqp connection with the broker + * using configurations retrieved from the endpoint. + * If the connnection already exists, returns the current connnection + * + * @return a promise containing current connection + */ + public connect = async (opts: amqp.Options.Connect = {}, socketOptions: Record = {}): Promise => { + if (this.isConnected()) { return this.amqpConnection; } + await this.getEndpointConfigs(); + try { + this.log('debug', 'Connecting client..'); + this.amqpConnection = await amqp.connect({ + protocol: (this.tls) ? this.tlsProtocol : this.protocol, + hostname: this.connectionParams.host, + port: (this.tls) ? this.connectionParams.protocols.amqp.tlsPort : this.connectionParams.protocols.amqp.port, + username: this.connectionParams.deviceId || this.connectionParams.client, + password: this.connectionParams.secret, + vhost: this.connectionParams.vhost.replace('/', '%2f'), + frameMax: opts.frameMax || (this.defaultConnectionOpts.frameMax as number), + heartbeat: opts.heartbeat || this.heartbeat + }, { + timeout: this.connectionTimeout, + ...socketOptions + }); + const onError = (err: Error) => { + if (err) { + this.emit('error', err); + this.log('error', err); + } + if (!isNullOrUndefined(this.amqpConnection)) { + this.amqpConnection.removeAllListeners(); + this.amqpConnection = undefined; + } + this.connected = false; + if (this.autoReconnect) { + void this.connect(opts); + } + }; + const onBlock = (reason) => { + if (reason) { + this.emit('blocked', reason); + this.log('warn', reason); + } + }; + this.amqpConnection.on('error', onError); + this.amqpConnection.on('close', onError); + this.amqpConnection.on('blocked', onBlock); + this.amqpConnection.on('unblocked', onBlock); + this.connected = true; + this.emit('connect'); + this.log('debug', 'Client connected!'); + return this.amqpConnection; + } catch (error) { + if (!isNullOrUndefined(this.amqpConnection)) { + this.amqpConnection.removeAllListeners(); + this.amqpConnection = undefined; + } + this.connected = false; + this.log('error', 'Error during connection'); + if (this.autoReconnect) { + this.log('error', (error as Error).message); + const timeout = promisify(setTimeout); + await timeout(this.reconnectTimeout); + void this.connect(opts); + } else { + throw error; + } + } + } + + public isConnected = (): boolean => { + return (this.amqpConnection !== undefined) && this.connected; + } + + public removeAmqpListener = async (name: string): Promise => { + if (isNullOrUndefined(this.amqpListeners[name])) { + this.log('error', `AMQP listener ${name} does not exist.`); + return; + } + await this.unsubscribe(this.amqpListeners[name].consumerTag); + delete this.amqpListeners[name]; + } + + // ------------ PROTECTED METHODS ------------------- + + /** + * Unsubscribe client from a topic + * + * @param {String} consumerTag - Consumer Tag + * @return a promise containing the result of the operation + */ + protected unsubscribe = async (consumerTag: string): Promise => { + if (this.isConnected()) { + try { + const ch: amqp.Channel | amqp.ConfirmChannel | void = await this.createChannel('input'); + if (ch) { + await ch.cancel(consumerTag); + } + this.log('debug', `Unsubscrbed ${consumerTag}`); + } catch (error) { + this.log('error', `Error unsubscribing from ${consumerTag}`); + throw error; + } + } else { + throw new Error(`${this.getClassName()} - Error trying to unsucscribe from ${consumerTag} on an invalid connection`); + } + } + + /** + * Creates a channel on current connection + * + * @private + * @param {String} channelName - indicates the channel name + * @param {Object} opts - channel options + * @return a promise containing the current channel + */ + protected createChannel = async (channel: string, opts: { withConfirm?: boolean } = {}): Promise => { + const { withConfirm = true } = opts; + const channelName = `${channel}${(withConfirm === true) ? 'WithConfirm' : ''}`; + if (this.isConnected()) { + try { + if (isNullOrUndefined(this.amqpChannels[channelName])) { + this.amqpChannels[channelName] = (withConfirm === true || channelName.endsWith('WithConfirm')) ? await this.amqpConnection.createConfirmChannel() + : await this.amqpConnection.createChannel(); + this.emit('channelOpen', channelName); + const errorCallback = (err: Error) => { + if (err) { this.log('error', err); } + // TODO close channel in function of error type?? + if (!isNullOrUndefined(this.amqpChannels[channelName])) { + this.amqpChannels[channelName].removeAllListeners(); + this.amqpChannels[channelName] = undefined; + } + // emit channelClose to clear consumers + if (channel.startsWith('input')) { + this.emit('channelClose', channelName); + } + }; + this.amqpChannels[channelName].on('error', errorCallback); + this.amqpChannels[channelName].on('close', errorCallback); + } + return this.amqpChannels[channelName]; + } catch (error) { + this.log('error', `Error creating channel: ${channelName}`); + throw error; + } + } else { + throw new Error(`${this.getClassName()} - Error trying to open a channel on an invalid connection`); + } + } + + /** + * Close a channel on current connection + * + * @private + * @param {String} channelName - indicates if the channel is input or output + * @return a promise containing the result of the operation + */ + protected closeChannel = async (channelName: string, opts: { withConfirm?: boolean } = {}): Promise => { + try { + const { withConfirm = true } = opts; + const fullChannelName = `${channelName}${(withConfirm === true) ? 'WithConfirm' : ''}`; + if (this.amqpChannels[fullChannelName]) { + await this.amqpChannels[fullChannelName].close(); + this.amqpChannels[fullChannelName] = undefined; + } + } catch (error) { + this.log('error', `Error closing channel ${channelName}`); + throw error; + } + } + + protected consumeCallback = (ch: amqp.Channel | amqp.ConfirmChannel, callback: IAmqpCallback, opts: IAmqpConsumeOptions, message: amqp.ConsumeMessage): void => { + try { + const { ack = undefined, allUpTo = false, requeue = false } = opts; + if (isNullOrUndefined(message)) { return; } + // Create message Record + const { discardMine, discardFromApi } = opts; + const amqpMessage = new AmqpMessage({ + message, + receiverId: this.getClient(), + channel: ch, + subscriptionOpts: { discardMine, discardFromApi } + }); + const ackNeeded = this.autoAck(ack); + // Check if should be accepted or not + if (amqpMessage.blackListed()) { + if (ackNeeded) { amqpMessage.nack({ allUpTo, requeue }); } + return; + } + // Call message callback + void callback(amqpMessage.getContent(), amqpMessage.getFields(), amqpMessage.getProperties()); + // Check if ACK is needed + if (ackNeeded) { amqpMessage.ack({ allUpTo }); } + } catch (error) { + this.log('error', 'Error consuming message'); + this.log('error', error); + } + } + + // ------------ PRIVATE METHODS ------------------- + + private clearConsumers = (): void => { + const names = Object.keys(this.amqpListeners); + for (let index = 0; index < names.length; index += 1) { + const name = names[index]; + const listener = this.amqpListeners[name]; + delete listener.consumerTag; + } + } + + private addAmqpListener = (callback: IAmqpCallback, opts: IAmqpConsumeOptions = {}): string => { + const name = `subscription-${new Date().getTime()}`; + this.amqpListeners[name] = { callback, opts }; + return name; + } + + private bindAmqpListeners = async (): Promise => { + const names = Object.keys(this.amqpListeners); + for (let index = 0; index < names.length; index += 1) { + const name = names[index]; + // eslint-disable-next-line no-await-in-loop + await this.bindAmqpListener(name); + } + } + + private bindAmqpListener = async (name: string): Promise => { + if (isNullOrUndefined(this.amqpListeners[name])) { + this.log('error', `Listner ${name} does not exist.`); + return; + } + if (!isNullOrUndefined(this.amqpListeners[name].consumerTag)) { + this.log('warn', `Listner ${name} already bound to a consumer.`); + return; + } + const { callback, opts } = this.amqpListeners[name]; + // Receive messages from input queue + const noAck = isNullOrUndefined(opts.ack); + const channelName = 'input'; + // eslint-disable-next-line no-await-in-loop + const ch: amqp.Channel | amqp.ConfirmChannel = await this.createChannel(channelName, { withConfirm: false }); + try { + // eslint-disable-next-line no-await-in-loop + await ch.checkQueue(`${this.getDeviceId()}.${this.getInboxTopic()}`); + // eslint-disable-next-line no-await-in-loop + const { consumerTag } = await ch.consume(`${this.getDeviceId()}.${this.getInboxTopic()}`, + this.consumeCallback.bind(this, ch, callback, opts), + { noAck }); + this.amqpListeners[name].consumerTag = consumerTag; + } catch (error) { + this.log('error', `Error consuming from ${channelName} channel.`); + throw error; + } + } + + /** + * Generate the routing key for a specific channel + * + * @private + * @param {Object} params - params + * @return a string that represents the routing key for that channel + */ + private routingKeyFor = (params: IRoutingKey = {}): string => { + const { channel = undefined, routingKey = undefined, topic = undefined } = params; + if (routingKey) { return routingKey; } + let messageRoutingKey = this.getDeviceId(); + if (!isNullOrUndefined(channel) && channel.length > 0) { + messageRoutingKey += `.${channel || ''}`; + } + if (!isNullOrUndefined(topic) && topic.length > 0) { + messageRoutingKey += `.${topic || ''}`; + } + return messageRoutingKey; + } + + /** + * Check if the SDK have to automatically ack messages + * + * @private + * @param {String} ack - the ack type, it should be 'manual' or 'auto' + * @return boolean - true if messages have to be autoacked, false otherwise + */ + protected autoAck = (ack: string|void): boolean => { + if (ack) { + if (!this.ackTypes.includes(ack)) { + this.log('error', 'Wrong acknowledge type'); + } + switch (ack) { + case 'auto': + return true; + default: + return false; + } + } + return false; + } + + private publishCachedMessages = async () => { + if (this.isConnected() && this.cachedMessages.length > 0) { + const cachedMessagesToSend = cloneDeep(this.cachedMessages); + this.log('debug', `Publishing ${cachedMessagesToSend.length} cached messages...`); + for (let index = 0; index < cachedMessagesToSend.length; index += 1) { + const cachedMessage: ICachedMessage = cachedMessagesToSend[index]; + this.log('silly', `Sending message ${index + 1} from cache`); + const { message, channel, options } = cachedMessage; + // eslint-disable-next-line no-await-in-loop + const res: boolean = await this.publish(channel, message, options); + if (res) { + // remove message from cache when successful send + const itemToRemove = this.cachedMessages.findIndex((el: ICachedMessage) => { + return isDeepStrictEqual(el, cachedMessage); + }); + this.cachedMessages.splice(itemToRemove, 1); + } + } + this.writeCachedMessagesFile(); + } + } +} + +export default AmqpClient; diff --git a/src/protocols/amqpStreamClient.js b/src/protocols/amqpStreamClient.js deleted file mode 100644 index 2ddfa2f..0000000 --- a/src/protocols/amqpStreamClient.js +++ /dev/null @@ -1,218 +0,0 @@ -/** - * A module that exports an AmqpStreamClient client - * which inherits from the Amqp base client - * @module AmqpStreamClient - */ - -// Import some helpers modules -import _ from 'lodash'; -import Promise from 'bluebird'; -import md5 from 'js-md5'; - -// Import AmqpClient module from which AmqpStreamClient inherits -import AmqpClient from './amqpClient'; -import { parseContent } from '../utils'; -import CONFIG from '../../config/constants'; - -class AmqpStreamClient extends AmqpClient { - - _defaultStreamRoutingKey: string; - _streamQueueArguments: any; - _subscriptions: any; - - /** - * @constructor - * @param {Object} opts - options must contain client and secret for access keys - */ - constructor(opts: any = {}) { - super(opts); - const amqpStreamOptions = CONFIG.amqp.stream; - this._defaultStreamRoutingKey = amqpStreamOptions.defaultStreamRoutingKey; - this._streamQueueArguments = amqpStreamOptions.streamQueueArguments; - this._subscriptions = []; - } - - /** - * Subscribe to multiple stream hooks - * - * @param {Array} streamHooks - Array of objects. Each objects containing - * { deviceId: {string}, channel: {string}, callback: {func} } - * @param {Object} options - subscription options - * @return promise containing the result of multiple subscriptions - */ - streamFrom = (streamHooks: Array = [], opts:any = {}): Promise => { - if (streamHooks.length > 0) { - return Promise.mapSeries(streamHooks, (streamHook) => { - return this._attachStreamHook(streamHook, opts); - }); - } else { - return Promise.reject(new Error('Missing stream hooks')); - } - } - - // ------------ PRIVATE METHODS ------------------- - - /** - * Start consuming messages from a device's channel - * It generates an auto delete queue from which consume - * and binds it to the channel exchange - * - * @private - * @param {Object} streamHook - Object containit hook info - * { stream: {String}, callback: {func}} - * or - * { deviceId: {String}, channel: {String}, callback: {func}} - * @param {Object} opts - connection options - * @return a promise containing current connection - */ - _attachStreamHook = (streamHook: any, opts: any = {}): Promise => { - // Receive messages from imput queue - return new Promise((resolve, reject) => { - const { - stream = undefined, deviceId = undefined, channel = undefined, - topic = undefined, routingKey = undefined - } = streamHook; - const cache = (typeof (streamHook.cache) !== 'boolean') ? true : streamHook.cache; - if (stream === undefined && (channel === undefined || deviceId === undefined)) { - reject(new Error('Missing Stream or Device ID and Channel')); - } - const emptyFunction = function () { return undefined; }; - const callback = streamHook.callback || emptyFunction; - - const currentTime = new Date().getTime(); - let tempQueue; - this._createChannel(`${currentTime}`).then((ch) => { - this._amqpChannels[`${currentTime}`] = ch; - let promisesChain; - // if current hook is a stream - // checks the existence of the stream queue and starts consuming - let localOpts = _.cloneDeep(opts); - localOpts = _.merge(_.cloneDeep(this._subscribeArgs), localOpts); - if (stream) { - if (!this.liveStreamExists(stream)) { - console.error(`Stream ${stream} does not exist`); // eslint-disable-line no-console - resolve(false); - } - if (cache) { - // Cached streams are connected to the existing live stream queue - tempQueue = this._cachedStreamQueue(stream); - promisesChain = this._amqpChannels[`${currentTime}`] - .checkQueue(tempQueue, this._streamQueueArguments).then(() => { - return this._amqpChannels[`${currentTime}`].consume(tempQueue, (message) => { - // Call message callback - callback(parseContent(message.content), message.fields, message.properties); - }, localOpts); - }); - } else { - // Uncached streams are connected to the stream exchange and create a temp queue - const streamExchange = this.exchangeName(stream, this._liveStreamSuffix); - tempQueue = this.tempQueue(stream, this._liveStreamSuffix, currentTime); - promisesChain = this._amqpChannels[`${currentTime}`].checkExchange(streamExchange).then(() => { - return this._amqpChannels[`${currentTime}`].assertQueue(tempQueue, this._streamQueueArguments); - }).then(() => { - return this._amqpChannels[`${currentTime}`].bindQueue(tempQueue, streamExchange, routingKey); - }).then(() => { - return this._amqpChannels[`${currentTime}`].consume(tempQueue, (message) => { - callback(parseContent(message.content), message.fields, message.properties); - }, localOpts); - }); - } - } else { - // else if current hook is channel (or a couple deviceId, channel) - // creates a temp queue, binds to channel exchange and starts consuming - const channelExchangeName = this.exchangeName(deviceId, channel); - tempQueue = this.tempQueue(deviceId, channel, currentTime); - promisesChain = this._amqpChannels[`${currentTime}`].checkExchange(channelExchangeName).then(() => { - return this._amqpChannels[`${currentTime}`].assertQueue(tempQueue, this._streamQueueArguments); - }).then(() => { - return this._amqpChannels[`${currentTime}`].bindQueue(tempQueue, channelExchangeName, - this._streamRoutingKeyFor({ - deviceId, channel, routingKey, topic - })); - }).then(() => { - return this._amqpChannels[`${currentTime}`].consume(tempQueue, (message) => { - callback(parseContent(message.content), message.fields, message.properties); - }, localOpts); - }); - } - return promisesChain; - }).then(() => { - const subscriptionId = md5(tempQueue); - this._subscriptions[subscriptionId] = { amqpChannel: currentTime }; - resolve(_.merge(streamHook, { id: subscriptionId })); - }).catch((reason) => { - reject(reason); - }); - }); - } - - /** - * Unsubscribe client from a topic - * - * @param {String} subscriptionId - subscription ID - * @return a promise containing the result of the operation - */ - unsubscribe = (subscriptionId: string = ''): Promise => { - return new Promise((resolve, reject) => { - if (!this.isConnected()) { - reject(new Error('Invalid connection')); - } else { - const subscription = this._subscriptions[subscriptionId]; - if (!_.isEmpty(subscription)) { - const { amqpChannel } = subscription; - if (this._amqpChannels[amqpChannel]) { - this._amqpChannels[amqpChannel].close(); - delete this._amqpChannels[amqpChannel]; - delete this._subscriptions[subscriptionId]; - } - resolve(true); - } else { - reject(new Error('Subscription not found')); - } - } - }); - } - - /** - * Generate the exchange name for a device's channel - * - * @private - * @param {String} streamName - stream name from which you want to stream - * @return a string that represents the stream queue - */ - _cachedStreamQueue = (streamName: string) => { - return `${streamName}.${this._liveStreamSuffix}`; - } - - /** - * Generate the exchange name for a device's channel - * - * @private - * @param {Object} params - params - * @return a string that represents the rounting key - */ - _streamRoutingKeyFor = (params: any = {}) => { - const { - deviceId = undefined, channel = undefined, routingKey = undefined, topic = undefined - } = params; - if (_.isEmpty(routingKey) && _.isEmpty(deviceId)) { - // if both routingKey and deviceId are empty return default routingKey - return this._defaultStreamRoutingKey; - } else if (!_.isEmpty(routingKey)) { - // return routing key if present - return routingKey; - } else { - let streamRoutingKey = deviceId || ''; - if (channel) { streamRoutingKey += `.${channel}`; } - if (topic) { streamRoutingKey += `.${topic}`; } - return `${streamRoutingKey}`; - } - } -} - -// Remove unwanted methods inherited from AmqpClient -delete AmqpStreamClient.prototype.onReceive; -delete AmqpStreamClient.prototype.publish; -delete AmqpStreamClient.prototype._routingKeyFor; - -export default AmqpStreamClient; diff --git a/src/protocols/amqpStreamClient.ts b/src/protocols/amqpStreamClient.ts new file mode 100644 index 0000000..85906b9 --- /dev/null +++ b/src/protocols/amqpStreamClient.ts @@ -0,0 +1,219 @@ +/** + * A module that exports an AmqpStreamClient client + * which inherits from the Amqp base client + * @module AmqpStreamClient + */ + +import * as amqp from 'amqplib'; +import { isNullOrUndefined } from 'util'; + +import { ILiveStreamHook, ISpaceBunnyParams } from '../spacebunny'; +import AmqpClient, { IAmqpCallback, IAmqpConsumeOptions, IRoutingKey } from './amqpClient'; + +export interface IAmqpLiveStreamHook extends ILiveStreamHook { + callback: IAmqpCallback; +} + +export type IAmqpStreamListener = { + streamHook: IAmqpLiveStreamHook; + opts?: IAmqpConsumeOptions; + consumerTag?: string; +} + +class AmqpStreamClient extends AmqpClient { + private defaultStreamRoutingKey: string; + + private streamQueueArguments: amqp.Options.AssertQueue; + + private amqpStreamListeners: { [name: string]: IAmqpStreamListener }; + + /** + * @constructor + * @param {ISpaceBunnyParams} opts - options must contain client and secret for access keys + */ + constructor(opts: ISpaceBunnyParams = {}) { + super(opts); + this.defaultStreamRoutingKey = '#'; + this.streamQueueArguments = { exclusive: true, autoDelete: true, durable: false }; + this.amqpStreamListeners = {}; + this.on('connect', () => { void this.bindAmqpStreamListeners(); }); + this.on('disconnect', () => { this.amqpStreamListeners = {}; }); + this.on('channelClose', () => { this.clearStreamConsumers(); }); + } + + /** + * Subscribe to multiple stream hooks + * + * @param {Array} streamHooks - Array of objects. Each objects containing + * { name: {string}, deviceId: {string}, channel: {string}, callback: {func} } + * @param {Object} options - subscription options + * @return promise containing the result of multiple subscriptions + */ + public streamFrom = async (streamHooks: IAmqpLiveStreamHook | Array = [], opts: IAmqpConsumeOptions = {}): Promise> => { + const hooks: Array = Array.isArray(streamHooks) ? streamHooks : [streamHooks]; + const names: string[] = []; + for (let index = 0; index < hooks.length; index += 1) { + const streamHook = hooks[index]; + const name: string = this.addAmqpStreamListener(streamHook, opts); + // eslint-disable-next-line no-await-in-loop + await this.bindAmqpStreamListener(name); + names.push(name); + } + return names; + } + + public removeAmqpStreamListener = async (name: string): Promise => { + if (isNullOrUndefined(this.amqpStreamListeners[name])) { + this.log('error', `AMQP listener ${name} does not exist.`); + return; + } + await this.unsubscribe(this.amqpStreamListeners[name].consumerTag); + delete this.amqpStreamListeners[name]; + } + + // ------------ PRIVATE METHODS ------------------- + + private clearStreamConsumers = (): void => { + const names = Object.keys(this.amqpStreamListeners); + for (let index = 0; index < names.length; index += 1) { + const name = names[index]; + const listener = this.amqpStreamListeners[name]; + delete listener.consumerTag; + } + } + + private addAmqpStreamListener = (streamHook: IAmqpLiveStreamHook, opts: IAmqpConsumeOptions = {}): string => { + const name = `subscription-${new Date().getTime()}`; + this.amqpStreamListeners[name] = { streamHook, opts }; + return name; + } + + private bindAmqpStreamListeners = async (): Promise => { + const names = Object.keys(this.amqpStreamListeners); + for (let index = 0; index < names.length; index += 1) { + const name = names[index]; + // eslint-disable-next-line no-await-in-loop + await this.bindAmqpStreamListener(name); + } + } + + /** + * Start consuming messages from a device's channel + * It generates an auto delete queue from which consume + * and binds it to the channel exchange + * + * @private + * @param {Object} streamHook - Object containit hook info + * { stream: {String}, callback: {func}} + * or + * { deviceId: {String}, channel: {String}, callback: {func}} + * @param {Object} opts - connection options + * @return a promise containing current connection + */ + private bindAmqpStreamListener = async (name: string): Promise => { + if (isNullOrUndefined(this.amqpStreamListeners[name])) { + this.log('error', `Listner ${name} does not exist.`); + return; + } + if (!isNullOrUndefined(this.amqpStreamListeners[name].consumerTag)) { + this.log('warn', `Listner ${name} already bound to a consumer.`); + return; + } + const { streamHook, opts } = this.amqpStreamListeners[name]; + // Receive messages from stream + const { + stream = undefined, deviceId = undefined, channel = undefined, cache = true, + topic = undefined, routingKey = undefined, callback = undefined + } = streamHook; + const noAck = isNullOrUndefined(opts.ack); + if (isNullOrUndefined(stream) && (isNullOrUndefined(channel) || isNullOrUndefined(deviceId))) { + throw new Error(`${this.getClassName()} - Missing Stream or Device ID and Channel`); + } + if (isNullOrUndefined(callback)) { + throw new Error(`${this.getClassName()} - Missing Callback`); + } + const currentTime = new Date().getTime(); + let tempQueue: string; + let streamName: string; + const ch: amqp.Channel | amqp.ConfirmChannel = await this.createChannel('input'); + try { + // if current hook is a stream + // checks the existence of the stream queue and starts consuming + if (stream) { + if (!this.liveStreamExists(stream)) { + throw new Error(`${this.getClassName()} - Stream ${stream} does not exist`); + } + if (cache) { + // Cached streams are connected to the existing live stream queue + tempQueue = this.cachedStreamQueue(stream); + streamName = tempQueue; + await ch.checkQueue(tempQueue); + } else { + // Uncached streams are connected to the stream exchange and create a temp queue + const streamExchange = this.exchangeName(stream, this.liveStreamSuffix); + streamName = streamExchange; + tempQueue = this.tempQueue(stream, this.liveStreamSuffix, currentTime); + await ch.checkExchange(streamExchange); + await ch.assertQueue(tempQueue, this.streamQueueArguments); + await ch.bindQueue(tempQueue, streamExchange, routingKey); + } + } else { + // else if current hook is channel (or a couple deviceId, channel) + // creates a temp queue, binds to channel exchange and starts consuming + const channelExchangeName = this.exchangeName(deviceId, channel); + streamName = channelExchangeName; + tempQueue = this.tempQueue(deviceId, channel, currentTime); + await ch.checkExchange(channelExchangeName); + await ch.assertQueue(tempQueue, this.streamQueueArguments); + await ch.bindQueue(tempQueue, channelExchangeName, this.streamRoutingKeyFor({ deviceId, channel, routingKey, topic })); + } + const { consumerTag } = await ch.consume(tempQueue, + this.consumeCallback.bind(this, ch, callback, opts), + { noAck }); + this.log('debug', `Streaming from ${streamName}..`); + this.amqpStreamListeners[name].consumerTag = consumerTag; + } catch (error) { + this.log('error', 'Error adding stream hook', streamHook); + throw error; + } + } + + /** + * Generate the exchange name for a device's channel + * + * @private + * @param {String} streamName - stream name from which you want to stream + * @return a string that represents the stream queue + */ + private cachedStreamQueue = (streamName: string) => { + return `${streamName}.${this.liveStreamSuffix}`; + } + + /** + * Generate the exchange name for a device's channel + * + * @private + * @param {Object} opts - opts + * @return a string that represents the rounting key + */ + private streamRoutingKeyFor = (opts: IRoutingKey = {}) => { + const { deviceId = '', channel = '', routingKey = '', topic = '' } = opts; + if (routingKey.length === 0 && deviceId.length === 0) { + // if both routingKey and deviceId are empty return default routingKey + return this.defaultStreamRoutingKey; + } + if (routingKey.length > 0) { + return routingKey; // return routing key if present + } + let streamRoutingKey = deviceId || ''; + if (channel) { streamRoutingKey += `.${channel}`; } + if (topic) { streamRoutingKey += `.${topic}`; } + return `${streamRoutingKey}`; + } +} + +// Remove unwanted methods inherited from AmqpClient +delete AmqpStreamClient.prototype.onMessage; +delete AmqpStreamClient.prototype.publish; + +export default AmqpStreamClient; diff --git a/src/protocols/mqttClient.js b/src/protocols/mqttClient.js deleted file mode 100644 index 187569c..0000000 --- a/src/protocols/mqttClient.js +++ /dev/null @@ -1,242 +0,0 @@ -/** - * A module that exports an MqttClient client - * which inherits from the SpaceBunny base client - * @module MqttClient - */ - -// Import some helpers modules -import Promise from 'bluebird'; -import _ from 'lodash'; - -// Import mqtt library -import mqtt from 'mqtt'; - -// Import SpaceBunny main module from which MqttClient inherits -import SpaceBunny from '../spacebunny'; -import { parseContent, encapsulateContent } from '../utils'; -import CONFIG from '../../config/constants'; - -class MqttClient extends SpaceBunny { - - _topics: any; - _mqttConnection: any; - _subscription: any; - _protocol: string; - _tlsOpts: any; - _connectionOpts: any; - _connectionTimeout: number; - - /** - * @constructor - * @param {Object} opts - options must contain Device-Key or connection options - * (deviceId and secret) for devices. - */ - constructor(opts: any = {}) { - super(opts); - this._topics = {}; - this._mqttConnection = undefined; - this._subscription = undefined; - const mqttOptions = CONFIG.mqtt; - this._protocol = mqttOptions.protocol; - this._tlsOpts.protocol = mqttOptions.tls.protocol; - this._tlsOpts.rejectUnauthorized = mqttOptions.tls.rejectUnauthorized; - this._connectionOpts = mqttOptions.connection.opts; - this._connectionTimeout = mqttOptions.connection.timeout; - } - - /** - * Subscribe to input channel - * - * @param {function} callback - function called every time a message is received - * passing the current message as argument - * @param {Object} options - subscription options - * @return promise containing the result of the subscription - */ - onReceive = (callback: Function, opts: any = {}): Promise => { - // subscribe for input messages - return new Promise((resolve, reject) => { - let localOpts = _.cloneDeep(opts); - localOpts = _.merge({}, localOpts); - this.connect(localOpts).then((client) => { - this._topics[this._topicFor(null, this._inboxTopic)] = localOpts.qos || this._connectionOpts.qos; - client.subscribe(this._topics, _.merge(_.cloneDeep(this._connectionOpts), localOpts), (err) => { - if (err) { - reject(err); - } else { - client.on('message', (topic, message) => { - // TODO filterMine and filterWeb - callback(topic, parseContent(message)); - }); - resolve(true); - } - }); - }).catch((reason) => { - reject(reason); - }); - }); - } - - /** - * Publish a message on a specific channel - * - * @param {String} channel - channel name on which you want to publish a message - * @param {Object/String} message - the message payload - * @param {Object} opts - publication options - * @return a promise containing the result of the operation - */ - publish = (channel: string, message: any, opts: any = {}): Promise => { - // Publish message - return new Promise((resolve, reject) => { - let localOpts = _.cloneDeep(opts); - localOpts = _.merge({}, localOpts); - this.connect(localOpts).then((client) => { - const _sendMessage = () => { - const bufferedMessage = Buffer.from(encapsulateContent(message)); - let localOpts = _.cloneDeep(opts); - localOpts = _.merge(_.cloneDeep(this._connectionOpts), localOpts); - client.publish(this._topicFor(null, channel), bufferedMessage, localOpts, () => { - resolve(true); - }); - }; - if (!client.connected) { - client.on('connect', () => { _sendMessage(); }); - } else { - _sendMessage(); - } - }).catch((reason) => { - reject(reason); - }); - }); - } - - /** - * Unsubscribe client from a list of topics - * - * @param {Object} topics - list of topics { topic: qos, ... } - * e.g. { topic_1: 1, topic_2: 0 } - * @return a promise containing the result of the operation - */ - unsubscribe = (topics: any): Promise => { - return new Promise((resolve, reject) => { - try { - if (_.isEmpty(topics)) { - resolve(true); - } else { - this._mqttConnection.unsubscribe(Object.keys(topics), () => { - resolve(true); - }); - } - } catch (reason) { - reject(reason); - } - }); - } - - /** - * Destroy the connection between the mqtt client and broker - * - * @return a promise containing the result of the operation - */ - disconnect = (): Promise => { - return new Promise((resolve, reject) => { - if (this._mqttConnection === undefined) { - reject(new Error('Invalid connection')); - } else { - const _closeConnection = () => { - this._mqttConnection.end(true, () => { - this._mqttConnection = undefined; - this.emit('disconnect'); - resolve(true); - }); - }; - try { - if (_.isEmpty(this._topics)) { - _closeConnection(); - } else { - this._mqttConnection.unsubscribe(Object.keys(this._topics), () => { - _closeConnection(); - }); - } - } catch (reason) { - reject(reason); - } - } - }); - } - - /** - * Establish an mqtt connection with the broker. - * If a connection already exists, returns the current connection - * - * @param {Object} opts - connection options - * @return a promise containing current connection - */ - connect = (opts: any = {}): Promise => { - return new Promise((resolve, reject) => { - let localOpts = _.cloneDeep(opts); - localOpts = _.merge(_.cloneDeep(this._connectionOpts), localOpts); - this.getEndpointConfigs().then((endpointConfigs) => { - const connectionParams = endpointConfigs.connection; - if (this._mqttConnection !== undefined) { - resolve(this._mqttConnection); - } else { - try { - let mqttConnectionParams = { - host: connectionParams.host, - port: (this._tls) ? connectionParams.protocols.mqtt.tlsPort : connectionParams.protocols.mqtt.port, - username: `${connectionParams.vhost}:${connectionParams.deviceId || connectionParams.client}`, - password: connectionParams.secret, - clientId: connectionParams.deviceId || connectionParams.client, - connectionTimeout: localOpts.connectionTimeout || this._connectionTimeout, - clean: localOpts.clean, - ...localOpts - }; - if (this._tls) { - mqttConnectionParams = _.merge(mqttConnectionParams, this._tlsOpts); - } - const client = mqtt.connect(mqttConnectionParams); - client.on('error', (reason) => { - this._mqttConnection = undefined; - this.emit('error', reason); - reject(reason); - }); - client.on('close', (reason) => { - reject(reason); - this.emit('close', reason); - this._mqttConnection = undefined; - }); - client.on('connect', () => { - this._mqttConnection = client; - this.emit('connect'); - resolve(this._mqttConnection); - }); - } catch (reason) { - reject(reason); - } - } - }).catch((reason) => { - reject(reason); - }); - }); - } - - isConnected = () => { - return (this._mqttConnection !== undefined); - } - - // ------------ PRIVATE METHODS ------------------- - - /** - * Generate the topic for a specific channel - * - * @private - * @param {String} deviceId - device id - * @param {String} channel - channel name on which you want to publish a message - * @return a string that represents the topic name for that channel - */ - _topicFor = (deviceId: string|void|null, channel: string) => { - return `${deviceId || this.deviceId()}/${channel}`; - } -} - -export default MqttClient; diff --git a/src/protocols/mqttClient.ts b/src/protocols/mqttClient.ts new file mode 100644 index 0000000..8c10c58 --- /dev/null +++ b/src/protocols/mqttClient.ts @@ -0,0 +1,313 @@ +/** + * A module that exports an MqttClient client + * which inherits from the SpaceBunny base client + * @module MqttClient + */ + +import mqtt, { + AsyncMqttClient, IClientOptions, IClientPublishOptions, IClientSubscribeOptions, QoS +} from 'async-mqtt'; +import fs from 'fs'; +import cloneDeep from 'lodash.clonedeep'; +import { isDeepStrictEqual, isNullOrUndefined, promisify } from 'util'; + +// import { promisify } from 'util'; +import SpaceBunny, { ICachedMessage, ISpaceBunnyParams } from '../spacebunny'; +import { encapsulateContent } from '../utils'; + +export type IMqttCallback = (topic?: string, message?: any) => Promise | void; +export type IMqttListener = { + callback: IMqttCallback; + topics?: string[]; +} + +export type IMqttConnectionOptions = { + qos?: QoS; + clean?: boolean; + reconnectPeriod?: number; + keepalive?: number; + connectTimeout?: number; +} + +class MqttClient extends SpaceBunny { + protected mqttClient: AsyncMqttClient; + + protected mqttListeners: { [name: string]: IMqttListener } = {}; + + protected topics: string[] = []; + + protected connectionOpts: IMqttConnectionOptions; + + /** + * @constructor + * @param {Object} opts - options must contain Device-Key or connection options + * (deviceId and secret) for devices. + */ + constructor(opts: ISpaceBunnyParams = {}) { + super(opts); + this.topics = []; + this.mqttClient = undefined; + this.protocol = 'mqtt'; + this.tlsProtocol = 'mqtts'; + this.connectionOpts = { qos: 1, clean: true }; + const { cert, key, passphrase, ca, pfx, disableCertCheck } = opts; + this.tlsOpts = {}; + if (cert) { this.tlsOpts.cert = fs.readFileSync(cert); } + if (key) { this.tlsOpts.key = fs.readFileSync(key); } + if (passphrase) { this.tlsOpts.passphrase = passphrase; } + if (ca) { + if (Array.isArray(ca)) { + this.tlsOpts.ca = ca.map((element) => { return fs.readFileSync(element); }); + } else { + this.tlsOpts.ca = [fs.readFileSync(ca)]; + } + } + if (pfx) { this.tlsOpts.pfx = fs.readFileSync(pfx); } + if (disableCertCheck) { + this.tlsOpts.rejectUnauthorized = false; + } else { + this.tlsOpts.rejectUnauthorized = true; + } + this.on('connect', () => { void this.publishCachedMessages(); }); + } + + /** + * Subscribe to input channel + * + * @param {function} callback - function called every time a message is received + * passing the current message as argument + * @param {Object} options - subscription options + * @return promise containing the result of the subscription + */ + public onMessage = async (callback: IMqttCallback, opts: IClientSubscribeOptions = { qos: 1 }): Promise => { + // subscribe for inbox messages + const topic = this.topicFor(null, this.inboxTopic); + this.addMqttListener(topic, callback, topic); + await this.subscribe(topic, opts); + } + + /** + * Publish a message on a specific channel + * + * @param {String} channel - channel name on which you want to publish a message + * @param {Object/String} message - the message payload + * @param {Object} opts - publication options + * @return a promise containing the result of the operation + */ + public publish = async (channel: string, message: Record, opts: IClientPublishOptions = { qos: 1 }): Promise => { + // Publish message + if (this.isConnected()) { + const topic = this.topicFor(null, channel); + try { + const bufferedMessage = Buffer.from(encapsulateContent(message)); + await this.mqttClient.publish(topic, bufferedMessage, opts); + this.log('silly', `Published message on topic ${topic}`); + return true; + } catch (error) { + this.log('error', `Error publishing on topic ${topic}`); + throw error; + } + } else { + throw new Error(`${this.getClassName()} - Error sending message on channel ${channel} when client is not connected.`); + } + } + + /** + * Destroy the connection between the mqtt client and broker + * + * @return a promise containing the result of the operation + */ + public async disconnect(): Promise { + if (this.isConnected()) { + try { + await this.unsubscribe(); + this.mqttClient.removeAllListeners(); + await this.mqttClient.end(); + } catch (error) { + this.log('error', 'Error disconnecting client.'); + throw error; + } + } + this.mqttClient = undefined; + this.mqttListeners = {}; + this.topics = []; + this.emit('disconnected'); + this.log('info', 'disconnected'); + return true; + } + + /** + * Establish an mqtt connection with the broker. + * If a connection already exists, returns the current connection + * + * @param {Object} opts - connection options + * @return a promise containing current connection + */ + public connect = async (opts: IClientOptions = {}): Promise => { + if (this.isConnected()) { return this.mqttClient; } + await this.getEndpointConfigs(); + try { + const clientId = this.connectionParams.deviceId || this.connectionParams.client; + let mqttConnectionParams: IClientOptions = { + host: this.connectionParams.host, + protocol: (this.tls) ? 'mqtts' : 'mqtt', + port: (this.tls) ? this.connectionParams.protocols.mqtt.tlsPort : this.connectionParams.protocols.mqtt.port, + username: `${this.connectionParams.vhost}:${clientId}`, + password: this.connectionParams.secret, + // Client id is used for resource authorization, multiple clients with the same clientId are not allowed + clientId, + connectTimeout: opts.connectTimeout || this.connectionTimeout, + reconnectPeriod: (this.autoReconnect) ? (opts.reconnectPeriod || this.reconnectTimeout) : 0, // disable autoreconnect ?? + clean: (isNullOrUndefined(opts.clean)) ? true : opts.clean, + keepalive: opts.keepalive || this.heartbeat, + // ...opts + }; + if (this.tls) { mqttConnectionParams = { ...mqttConnectionParams, ...this.tlsOpts }; } + this.mqttClient = await mqtt.connectAsync(null, mqttConnectionParams, this.autoReconnect); + const onError = (err: Error) => { + if (err) { + this.emit('error', err); + this.log('error', err); + } + if (!isNullOrUndefined(this.mqttClient)) { + this.mqttClient.removeAllListeners(); + this.mqttClient = undefined; + } + // Already done by mqttjs?? + // if (this.autoReconnect) { + // this.connect(opts); + // } + }; + this.mqttClient.on('error', onError); + this.mqttClient.on('close', onError); + this.mqttClient.on('message', (msgTopic: string, message: Buffer) => { + try { + let msg: Record|string = {}; + try { + msg = JSON.parse(message.toString()) as Record; + } catch (e) { + msg = message.toString(); + } + Object.entries(this.mqttListeners).forEach(([, listener]) => { + const { callback, topics } = listener; + if (topics.length === 0 || topics.includes(msgTopic)) { + this.log('debug', `Received message for topic ${msgTopic}`, msg); + void callback(msgTopic, msg); + } else { + this.log('silly', `Received unlistened message for topic ${msgTopic}`, msg); + } + }); + } catch (error) { + this.log('error', 'Error consuming message'); + this.log('error', error); + } + }); + this.emit('connect'); + this.log('debug', 'Client connected!'); + return this.mqttClient; + } catch (error) { + if (!isNullOrUndefined(this.mqttClient)) { + this.mqttClient.removeAllListeners(); + this.mqttClient = undefined; + } + this.log('error', 'Error during connection'); + if (this.autoReconnect) { + this.log('error', (error as Error).message); + const timeout = promisify(setTimeout); + await timeout(this.reconnectTimeout); + void this.connect(opts); + } else { + throw error; + } + } + } + + isConnected = (): boolean => { + return (!isNullOrUndefined(this.mqttClient) && this.mqttClient.connected); + } + + // ------------ PROTECTED METHODS ------------------- + + protected addMqttListener = (name: string, callback: IMqttCallback, topics?: string | string[]): void => { + this.mqttListeners[name] = { callback, topics: Array.isArray(topics) ? topics : [topics] }; + } + + protected removeMqttListener = (name: string): void => { + delete this.mqttListeners[name]; + } + + protected subscribe = async (topics: string | string[], opts: IClientSubscribeOptions = { qos: 1 }): Promise => { + if (this.isConnected()) { + const topicsToSubscribe = (Array.isArray(topics)) ? topics : [topics]; + await this.mqttClient.subscribe(topicsToSubscribe, opts); + this.topics.push(...topicsToSubscribe); + this.log('info', `Client subscribed to topics: ${topicsToSubscribe.join(',')}`); + } else { + throw new Error(`${this.getClassName()} - Trying to subscribe when client is not connected`); + } + } + + /** + * Unsubscribe client from a list of topics + * + * @param {Object} topics - list of topics { topic: qos, ... } + * e.g. { topic_1: 1, topic_2: 0 } + * @return a promise containing the result of the operation + */ + protected async unsubscribe(topics: string | string[] = []): Promise { + let topicsToUnsubscribe = (this.topics.length > 0 && topics.length === 0) ? this.topics : topics; + topicsToUnsubscribe = (Array.isArray(topicsToUnsubscribe)) ? topicsToUnsubscribe : [topicsToUnsubscribe]; + if (this.isConnected()) { + if (topicsToUnsubscribe.length > 0) { + await this.mqttClient.unsubscribe(topicsToUnsubscribe); + } + for (let index = 0; index < topicsToUnsubscribe.length; index += 1) { + const topic = topicsToUnsubscribe[index]; + for (let idx = 0; idx < this.topics.length; idx += 1) { + if (this.topics[idx] === topic) { this.topics.splice(idx, 1); } + } + } + this.log('info', `Client unsubscribed from topics: ${topicsToUnsubscribe.join(',')}`); + } else { + throw new Error(`${this.getClassName()} - Error trying to unsucscribe from ${topicsToUnsubscribe.join(',')} on an invalid connection`); + } + } + + // ------------ PRIVATE METHODS ------------------- + + /** + * Generate the topic for a specific channel + * + * @private + * @param {String} deviceId - device id + * @param {String} channel - channel name on which you want to publish a message + * @return a string that represents the topic name for that channel + */ + private topicFor = (deviceId: string|void|null, channel: string) => { + return `${deviceId || this.getDeviceId()}/${channel}`; + } + + private publishCachedMessages = async () => { + if (this.isConnected() && this.cachedMessages.length > 0) { + const cachedMessagesToSend = cloneDeep(this.cachedMessages); + this.log('debug', `Publishing ${cachedMessagesToSend.length} cached messages...`); + for (let index = 0; index < cachedMessagesToSend.length; index += 1) { + const cachedMessage = cachedMessagesToSend[index]; + this.log('silly', `Sending message ${index + 1} from cache`); + const { message, channel, options } = cachedMessage; + // eslint-disable-next-line no-await-in-loop + const res: boolean = await this.publish(channel, message, { qos: 1, ...options }); + if (res) { + // remove message from cache when successful send + const itemToRemove = this.cachedMessages.findIndex((el: ICachedMessage) => { + return isDeepStrictEqual(el, cachedMessage); + }); + this.cachedMessages.splice(itemToRemove, 1); + } + } + this.writeCachedMessagesFile(); + } + } +} + +export default MqttClient; diff --git a/src/protocols/mqttStreamClient.js b/src/protocols/mqttStreamClient.js deleted file mode 100644 index f514235..0000000 --- a/src/protocols/mqttStreamClient.js +++ /dev/null @@ -1,149 +0,0 @@ -/** - * A module that exports an MqttStreamClient client - * which inherits from the Mqtt base client - * @module MqttStreamClient - */ - -// Import some helpers modules -import _ from 'lodash'; -import Promise from 'bluebird'; - -// Import MqttClient main module from which MqttStreamClient inherits -import MqttClient from './mqttClient'; -import { parseContent } from '../utils'; -import CONFIG from '../../config/constants'; - -class MqttStreamClient extends MqttClient { - - _defaultStreamRoutingKey: string; - - /** - * @constructor - * @param {Object} opts - options must contain client and secret for access keys - */ - constructor(opts: any = {}) { - super(opts); - const mqttStreamOptions = CONFIG.mqtt.stream; - this._defaultStreamRoutingKey = mqttStreamOptions.defaultStreamRoutingKey; - } - /** - * Subscribe to multiple stream hooks - * - * @param {Array} streamHooks - Array of objects. Each objects containing - * { deviceId: {string}, channel: {string}, callback: {func} } - * @param {Object} options - subscription options - * @return promise containing the result of multiple subscriptions - */ - streamFrom = (streamHooks: Array = [], opts:any = {}): Promise => { - if (streamHooks.length > 0) { - return Promise.mapSeries(streamHooks, (streamHook) => { - return this._attachStreamHook(streamHook, opts); - }); - } else { - return Promise.reject(new Error('Missing stream hooks')); - } - } - - /** - * Start consuming messages from a device's channel - * It generates an auto delete queue from which consume - * and binds it to the channel exchange - * - * @private - * @param {Object} streamHook - Object containit hook info - * { stream: {String}, callback: {func}} - * or - * { deviceId: {String}, channel: {String}, callback: {func}} - * @param {Object} opts - connection options - * @return a promise containing current connection - */ - _attachStreamHook = (streamHook: any, opts: any = {}): Promise => { - return new Promise((resolve, reject) => { - this.connect().then((mqttClient) => { - const { - stream = undefined, deviceId = undefined, channel = undefined, - topic = undefined, routingKey = undefined, qos = undefined - } = streamHook; - const cache = (typeof (streamHook.cache) !== 'boolean') ? true : streamHook.cache; - if (stream === undefined && (channel === undefined || deviceId === undefined)) { - reject(new Error('Missing Stream or Device ID and Channel')); - } - const emptyFunction = function () { return undefined; }; - const callback = streamHook.callback || emptyFunction; - - if (!_.isEmpty(stream)) { - if (!this.liveStreamExists(stream)) { - console.error(`Stream ${stream || ''} does not exist`); // eslint-disable-line no-console - resolve(false); - } - // Cached streams generate qos1 connections with persistent queues - // Uncached streams generate qos0 connections with auto delete queues - this._topics[this._streamTopicFor(stream)] = (cache) ? 1 : 0; - } else { - // streams connected directly to a specific channel generate qos0 connections with auto delete queues - this._topics[this._streamChannelTopicFor({ deviceId, channel, topic, routingKey })] = qos || this._connectionOpts.qos; - } - let localOpts = _.cloneDeep(opts); - localOpts = _.merge(_.cloneDeep(this._connectionOpts), localOpts); - mqttClient.subscribe(this._topics, localOpts, (err) => { - if (err) { - reject(err); - } else { - mqttClient.on('message', (messageTopic, message) => { - callback(messageTopic, parseContent(message)); - }); - resolve(true); - } - }); - }).catch((reason) => { - reject(reason); - }); - }); - } - - // ------------ PRIVATE METHODS ------------------- - - /** - * Generate the topic for a specific channel - * - * @private - * @param {String} deviceId - deviceId from which you want to stream - * @param {String} channel - channel name from which you want to stream - * @return a string that represents the topic name for that channel - */ - _streamChannelTopicFor = (params: any = {}) => { - const { - deviceId = undefined, channel = undefined, routingKey = undefined, topic = undefined - } = params; - if (_.isEmpty(routingKey) && _.isEmpty(deviceId)) { - // if both routingKey and deviceId are empty return default routingKey - return this._defaultStreamRoutingKey; - } else if (!_.isEmpty(routingKey)) { - // return routing key if present - return routingKey; - } else { - let streamRoutingKey = deviceId || this.deviceId(); - if (channel) { streamRoutingKey += `/${channel}`; } - if (topic) { streamRoutingKey += `/${topic}`; } - return `${streamRoutingKey}`; - } - } - - /** - * Generate the topic for a specific stream - * - * @private - * @param {String} streamName - stream name from which you want to stream - * @return a string that represents the topic name for that stream - */ - _streamTopicFor = (stream: string = '') => { - return `${stream}/${this._liveStreamSuffix}`; - } -} - -// Remove unwnated methods inherited from MqttClient -delete MqttStreamClient.prototype.onReceive; -delete MqttStreamClient.prototype.publish; -delete MqttStreamClient.prototype._topicFor; - -export default MqttStreamClient; diff --git a/src/protocols/mqttStreamClient.ts b/src/protocols/mqttStreamClient.ts new file mode 100644 index 0000000..663decf --- /dev/null +++ b/src/protocols/mqttStreamClient.ts @@ -0,0 +1,144 @@ +/** + * A module that exports an MqttStreamClient client + * which inherits from the Mqtt base client + * @module MqttStreamClient + */ + +import { IClientSubscribeOptions, QoS } from 'async-mqtt'; +// Import some helpers modules +import { isNullOrUndefined } from 'util'; + +import { ILiveStreamHook } from '../spacebunny'; +// Import MqttClient main module from which MqttStreamClient inherits +import MqttClient from './mqttClient'; + +export type IMqttCallback = (topic?: string, message?: any) => Promise|void; +export interface IMqttLiveStreamHook extends ILiveStreamHook { + callback: IMqttCallback; + qos?: QoS; +} + +class MqttStreamClient extends MqttClient { + private defaultStreamRoutingKey: string; + + /** + * @constructor + * @param {Object} opts - options must contain client and secret for access keys + */ + constructor(opts: any = {}) { + super(opts); + this.defaultStreamRoutingKey = '#'; + } + + /** + * Subscribe to multiple stream hooks + * + * @param {Array} streamHooks - Array of objects. Each objects containing + * { deviceId: {string}, channel: {string}, callback: {func} } + * @param {Object} options - subscription options + * @return promise containing the result of multiple subscriptions + */ + public streamFrom = async (streamHooks: IMqttLiveStreamHook | Array = [], opts: IClientSubscribeOptions = { qos: 1 }): Promise> => { + const hooks: Array = Array.isArray(streamHooks) ? streamHooks : [streamHooks]; + const promises = []; + for (let index = 0; index < hooks.length; index += 1) { + const streamHook = hooks[index]; + const promise = this.addStreamHook(streamHook, opts); + promises.push(promise); + } + return Promise.all(promises) as Promise>; + } + + /** + * Start consuming messages from a device's channel + * It generates an auto delete queue from which consume + * and binds it to the channel exchange + * + * @private + * @param {Object} streamHook - Object containit hook info + * { stream: {String}, callback: {func}} + * or + * { deviceId: {String}, channel: {String}, callback: {func}} + * @param {Object} opts - connection options + * @return a promise containing current connection + */ + public addStreamHook = async (streamHook: IMqttLiveStreamHook, opts: IClientSubscribeOptions = { qos: 1 }): Promise => { + const { + stream = undefined, deviceId = undefined, channel = undefined, + topic = undefined, routingKey = undefined, qos = undefined, + callback = undefined, cache = true + } = streamHook; + if (isNullOrUndefined(stream) && (isNullOrUndefined(channel) || isNullOrUndefined(deviceId))) { + this.log('error', 'Missing Stream or Device ID and Channel'); + return; + } + if (isNullOrUndefined(callback)) { + this.log('error', 'Missing Callback'); + return; + } + let topicName: string = topic; + let topicQOS: QoS = qos || this.connectionOpts.qos; + if (!isNullOrUndefined(stream) && stream.length > 0) { + if (!this.liveStreamExists(stream)) { + console.error(`Stream ${stream || ''} does not exist`); // eslint-disable-line no-console + return; + } + // Cached streams generate qos1 connections with persistent queues + // Uncached streams generate qos0 connections with auto delete queues + topicName = this.streamTopicFor(stream); + topicQOS = (cache) ? 1 : 0; + } else { + // streams connected directly to a specific channel generate qos0 connections with auto delete queues + topicName = this.streamChannelTopicFor({ deviceId, channel, topic, routingKey }); + } + + this.addMqttListener(topicName, callback, topicName); + await this.subscribe(topicName, { ...this.connectionOpts, ...opts, qos: topicQOS }); + } + + // ------------ PRIVATE METHODS ------------------- + + /** + * Generate the topic for a specific channel + * + * @private + * @param {String} deviceId - deviceId from which you want to stream + * @param {String} channel - channel name from which you want to stream + * @return a string that represents the topic name for that channel + */ + private streamChannelTopicFor = (params: ILiveStreamHook = {}): string => { + const { + deviceId = '', channel = '', + routingKey = '', topic = '' + } = params; + if (routingKey.length === 0 && deviceId.length === 0) { + // if both routingKey and deviceId are empty return default routingKey + return this.defaultStreamRoutingKey; + } + if (routingKey.length > 0) { + // return routing key if present + return routingKey; + } + let streamRoutingKey = deviceId || this.getDeviceId(); + if (channel.length > 0) { streamRoutingKey += `/${channel}`; } + if (topic.length > 0) { streamRoutingKey += `/${topic}`; } + return `${streamRoutingKey}`; + } + + /** + * Generate the topic for a specific stream + * + * @private + * @param {String} streamName - stream name from which you want to stream + * @return a string that represents the topic name for that stream + */ + streamTopicFor = (stream = ''): string => { + return `${stream}/${this.liveStreamSuffix}`; + } +} + +// Remove unwnated methods inherited from MqttClient +delete MqttStreamClient.prototype.onMessage; +delete MqttStreamClient.prototype.publish; + +export default MqttStreamClient; diff --git a/src/protocols/stompClient.js b/src/protocols/stompClient.js deleted file mode 100644 index bf6758c..0000000 --- a/src/protocols/stompClient.js +++ /dev/null @@ -1,275 +0,0 @@ -/** - * A module that exports an StompClient client - * which inherits from the SpaceBunny base client - * @module StompClient - */ - -// Import some helpers modules -import Promise from 'bluebird'; -import _ from 'lodash'; - -// Import stomp library -import Stomp from 'stompjs'; - -// Import SpaceBunny main module from which StompClient inherits -import SpaceBunny from '../spacebunny'; -import StompMessage from '../messages/stompMessage'; -import { encapsulateContent } from '../utils'; -import CONFIG from '../../config/constants'; - -class StompClient extends SpaceBunny { - - _stompConnection: any; - _subscription: any; - _protocol: string; - _webSocketOpts: any; - _connectionHeaders: any; - _connectionOpts: any; - _existingQueuePrefix: string; - _defaultResource: string; - - /** - * @constructor - * @param {Object} opts - options must contain Device-Key or connection options - * (deviceId and secret) for devices. - */ - constructor(opts: any = {}) { - super(opts); - this._stompConnection = undefined; - this._subscription = undefined; - if (typeof process === 'object' && `${process.toString()}` === '[object process]') { - this._protocol = 'stomp'; - } else { - this._protocol = 'webStomp'; - } - const stompOpts = CONFIG.stomp; - const webStompOpts = CONFIG.webStomp; - this._webSocketOpts = webStompOpts.webSocket; - this._connectionHeaders = stompOpts.connection.headers; - this._connectionOpts = stompOpts.connection.opts; - this._existingQueuePrefix = stompOpts.existingQueuePrefix; - this._defaultResource = stompOpts.defaultResource; - } - - /** - * Subscribe to input channel - * - * @param {function} callback - function called every time a message is received - * passing the current message as argument - * @param {Object} options - subscription options - * @return promise containing the result of the subscription - */ - onReceive = (callback: Function, opts: any = {}): Promise => { - // subscribe for input messages - return new Promise((resolve, reject) => { - let localOpts = _.cloneDeep(opts); - localOpts = _.merge({}, localOpts); - this.connect().then((client) => { - const topic = this._subcriptionFor(this._existingQueuePrefix, this._inboxTopic); - const subscriptionCallback = (message) => { - // Create message object - const stompMessage = new StompMessage({ message, receiverId: this._deviceId, subscriptionOpts: localOpts }); - const ackNeeded = this._autoAck(localOpts.ack); - // Check if should be accepted or not - if (stompMessage.blackListed()) { - if (ackNeeded) { message.nack(); } - return; - } - // Call message callback - callback(stompMessage); - // Check if ACK is needed - if (ackNeeded) { message.ack(); } - }; - this._subscription = client.subscribe(topic, subscriptionCallback); - resolve(true); - }).catch((reason) => { - reject(reason); - }); - }); - } - - /** - * Publish a message on a specific channel - * - * @param {String} channel - channel name on which you want to publish a message - * @param {Object} message - the message payload - * @param {Object} opts - publication options - * @return a promise containing the result of the operation - */ - publish = (channel: string, message: any, opts: any = {}): Promise => { - // Publish message - return new Promise((resolve, reject) => { - let localOpts = _.cloneDeep(opts); - localOpts = _.merge({}, localOpts); - this.connect().then((client) => { - const { routingKey = undefined, topic = undefined } = localOpts; - const destination = this._destinationFor({ channel, routingKey, topic }); - client.send(destination, this._connectionHeaders, encapsulateContent(message)); - resolve(true); - }).catch((reason) => { - reject(reason); - }); - }); - } - - /** - * Destroy the connection between the stomp client and broker - * - * @return a promise containing the result of the operation - */ - disconnect = (): Promise => { - return new Promise((resolve, reject) => { - if (!this.isConnected()) { - reject(new Error('Invalid connection')); - } else { - if (this._subscription !== undefined) { - this._subscription.unsubscribe(); - } - this._stompConnection.disconnect(() => { - this.emit('disconnect'); - this._stompConnection = undefined; - resolve(true); - }).catch((reason) => { - this._stompConnection = undefined; - reject(reason); - }); - } - }); - } - - /** - * Establish an stomp connection with the broker. - * If a connection already exists, returns the current connection - * - * @param {Object} opts - connection options - * @return a promise containing current connection - */ - connect = (opts: any = {}): Promise => { - return new Promise((resolve, reject) => { - // let localOpts = _.cloneDeep(opts); - // localOpts = _.merge(_.cloneDeep(this._connectionOpts), localOpts); - this.getEndpointConfigs().then((endpointConfigs) => { - const connectionParams = endpointConfigs.connection; - if (this.isConnected()) { - resolve(this._stompConnection); - } else { - try { - let client; - if (typeof process === 'object' && `${process.toString()}` === '[object process]') { - // code is runnning in nodejs: STOMP uses TCP sockets - if (this._tls) { - client = Stomp.overTCP(connectionParams.host, connectionParams.protocols.stomp.tlsPort, this._tlsOpts); - } else { - client = Stomp.overTCP(connectionParams.host, connectionParams.protocols.stomp.port); - } - } else { - // code is runnning in a browser: web STOMP uses Web sockets - const protocol = (this._tls) ? this._webSocketOpts.tls.protocol : this._webSocketOpts.protocol; - const port = (this._tls) - ? connectionParams.protocols.webStomp.tlsPort : connectionParams.protocols.webStomp.port; - const connectionString = `${protocol}://${connectionParams.host}:${port}/${this._webSocketOpts.endpoint}`; - const ws = new WebSocket(connectionString); - client = Stomp.over(ws); - client.heartbeat.outgoing = 10000; - client.heartbeat.incoming = 10000; - client.debug = null; - } - const headers = _.merge(_.cloneDeep(this._connectionHeaders), { - login: connectionParams.deviceId || connectionParams.client, - passcode: connectionParams.secret, - host: connectionParams.vhost - }); - client.connect(headers, () => { - this._stompConnection = client; - this.emit('connect'); - resolve(this._stompConnection); - }, (err) => { - this.emit('error', err.body); - // this._stompConnection = undefined; - // reject(err.body); - }); - client.debug = (str) => { - this.emit('debug', str); - }; - this.on('error', () => {}); - } catch (reason) { - reject(reason); - } - } - }).catch((reason) => { - reject(reason); - }); - }); - } - - isConnected = () => { - return (this._stompConnection !== undefined && this._stompConnection.connected); - } - - // ------------ PRIVATE METHODS ------------------- - - /** - * Generate the subscription string for a specific channel - * - * @private - * @param {String} type - resource type on which subscribe or publish [exchange/queue] - * @param {String} channel - channel name on which you want to publish a message - * @return a string that represents the topic name for that channel - */ - _subcriptionFor = (type: string, channel: string) => { - return `/${type}/${this.deviceId()}.${channel}`; - } - - /** - * Generate the destination string for a specific channel - * - * @private - * @param {String} type - resource type on which subscribe or publish [exchange/queue] - * @param {String} channel - channel name on which you want to publish a message - * @return a string that represents the topic name for that channel - */ - _destinationFor = (params: any = {}) => { - const { - type = this._defaultResource, channel = undefined, topic = undefined, routingKey = undefined - } = params; - let messageRoutingKey; - if (routingKey) { - messageRoutingKey = routingKey; - } else { - messageRoutingKey = this.deviceId(); - if (!_.isEmpty(channel)) { - messageRoutingKey += `.${channel || ''}`; - } - if (!_.isEmpty(topic)) { - messageRoutingKey += `.${topic || ''}`; - } - } - return `/${type}/${this.deviceId()}/${messageRoutingKey}`; - } - - /** - * Check if the SDK have to automatically ack messages - * By default STOMP messages are acked by the server - * they need to be acked if client subscribes with { ack: 'client' } option - * - * @private - * @param {String} ack - the ack type, it should be 'client' or null - * @return boolean - true if messages have to be autoacked, false otherwise - */ - _autoAck = (ack: string) => { - if (ack) { - if (!_.includes(CONFIG[this._protocol].ackTypes, ack)) { - console.error('Wrong acknowledge type'); // eslint-disable-line no-console - } - switch (ack) { - case 'client': - return false; - default: - return true; - } - } - return false; - } -} - -export default StompClient; diff --git a/src/protocols/stompClient.ts b/src/protocols/stompClient.ts new file mode 100644 index 0000000..7cf6585 --- /dev/null +++ b/src/protocols/stompClient.ts @@ -0,0 +1,397 @@ +/** + * A module that exports an StompClient client + * which inherits from the SpaceBunny base client + * @module StompClient + */ + +import cloneDeep from 'lodash.clonedeep'; +// Import some helpers modules +import { isDeepStrictEqual, isNullOrUndefined } from 'util'; + +// Import stomp library +import Stomp, { Client, IMessage, StompHeaders } from '@stomp/stompjs'; + +import StompMessage from '../messages/stompMessage'; +// Import SpaceBunny main module from which StompClient inherits +import SpaceBunny, { ICachedMessage, ISpaceBunnySubscribeOptions } from '../spacebunny'; +import { encapsulateContent } from '../utils'; + +export interface IStompPublishOptions { + routingKey?: string; + topic?: string; +} + +export interface IStompDestinationhOptions extends IStompPublishOptions { + type?: string; + channel?: string; +} + +export interface IStompConsumeOptions extends ISpaceBunnySubscribeOptions { + ack?: 'client'; +} + +export type IStompCallback = (message: StompMessage) => Promise | void; +export type IStompListener = { + callback: IStompCallback; + topic: string; + opts?: IStompConsumeOptions; + subscription?: Stomp.StompSubscription; +} + +class StompClient extends SpaceBunny { + protected stompClient: Stomp.Client; + + protected stompListeners: { [name: string]: IStompListener } = {}; + + protected connectionHeaders: StompHeaders; + + protected connectionOpts: any; + + protected existingQueuePrefix: string; + + protected defaultResource: string; + + protected ackTypes: string[]; + + protected wsEndpoint: string; + + protected topics: string[]; + + /** + * @constructor + * @param {Object} opts - options must contain Device-Key or connection options + * (deviceId and secret) for devices. + */ + constructor(opts: any = {}) { + super(opts); + this.stompListeners = {}; + this.protocol = 'ws'; + this.tlsProtocol = 'wss'; + this.wsEndpoint = 'ws'; + this.connectionHeaders = { + max_hbrlck_fails: '10', + 'accept-version': '1.0,1.1,1.2', + 'heart-beat': '10000,10000' + }; + this.connectionOpts = {}; + this.existingQueuePrefix = 'amq/queue'; + this.defaultResource = 'exchange'; + this.ackTypes = ['client']; + this.on('connect', () => { + this.bindStompListners(); + void this.publishCachedMessages(); + }); + this.on('disconnect', () => { this.stompListeners = {}; }); + } + + /** + * Subscribe to input channel + * + * @param {function} callback - function called every time a message is received + * passing the current message as argument + * @param {Object} options - subscription options + * @return promise containing the result of the subscription + */ + public onMessage = (callback: IStompCallback, opts: IStompConsumeOptions = {}): Promise => { + return new Promise((resolve, reject) => { + try { + // subscribe for input messages + const topic = this.subcriptionFor(this.existingQueuePrefix, this.inboxTopic); + const name = this.addStompListener(callback, topic, opts); + if (this.isConnected()) { + this.bindStompListner(name); + } + resolve(); + } catch (error) { + this.log('error', error); + reject(error); + } + }); + } + + /** + * Publish a message on a specific channel + * + * @param {String} channel - channel name on which you want to publish a message + * @param {Object} message - the message payload + * @param {Object} opts - publication options + * @return a promise containing the result of the operation + */ + public publish = (channel: string, message: Record, opts: IStompPublishOptions = {}): Promise => { + return new Promise((resolve, reject) => { + if (this.isConnected()) { + try { + // Publish message + const { routingKey = undefined, topic = undefined } = opts; + const destination = this.destinationFor({ channel, routingKey, topic }); + this.stompClient.publish({ + destination, + headers: {}, + body: encapsulateContent(message), + }); + resolve(true); + } catch (error) { + this.log('error', `Error publishing on channel ${channel}`); + reject(error); + } + } else { + reject(new Error(`${this.getClassName()} - Error sending message on channel ${channel} when client is not connected`)); + } + }); + } + + /** + * Destroy the connection between the stomp client and broker + * + * @return a promise containing the result of the operation + */ + public disconnect = (): Promise => { + return new Promise((resolve, reject) => { + if (!this.isConnected()) { + resolve(true); + } else { + try { + const listeners = Object.keys(this.stompListeners); + for (let index = 0; index < listeners.length; index += 1) { + const name = listeners[index]; + const { subscription } = this.stompListeners[name]; + if (!isNullOrUndefined(subscription)) { + subscription.unsubscribe(); + } + delete this.stompListeners[name]; + } + this.stompClient.deactivate(); + this.stompClient = undefined; + this.emit('disconnect'); + resolve(true); + } catch (error) { + reject(error); + } + } + }); + } + + /** + * Establish an stomp connection with the broker. + * If a connection already exists, returns the current connection + * + * @param {Object} opts - connection options + * @return a promise containing current connection + */ + public connect = async (opts: Stomp.StompConfig = {}): Promise => { + if (this.isConnected()) { return this.stompClient; } + await this.getEndpointConfigs(); + return new Promise((resolve, reject) => { + try { + // code is runnning in a browser: web STOMP uses Web sockets + const protocol = (this.tls) ? this.tlsProtocol : this.protocol; + const port = (this.tls) + ? this.connectionParams.protocols.webStomp.tlsPort : this.connectionParams.protocols.webStomp.port; + const connectionString = `${protocol}://${this.connectionParams.host}:${port}/ws`; + const stompConfig: Stomp.StompConfig = { + // Typically login, passcode and vhost + // Adjust these for your broker + connectHeaders: { + ...this.connectionHeaders, + login: this.connectionParams.deviceId || this.connectionParams.client, + passcode: this.connectionParams.secret, + host: this.connectionParams.vhost + }, + + // Broker URL, should start with ws:// or wss:// - adjust for your broker setup + brokerURL: connectionString, + + // Keep it off for production, it can be quit verbose + // Skip this key to disable + // debug: function (str) { + // console.log('STOMP: ' + str); + // }, + + // If disconnected, it will retry after reconnectDelay ms + reconnectDelay: (this.autoReconnect) ? opts.reconnectDelay || this.reconnectTimeout : 0, + + heartbeatIncoming: opts.heartbeatIncoming || this.heartbeat, + + heartbeatOutgoing: opts.heartbeatOutgoing || this.heartbeat, + + // Subscriptions should be done inside onConnect as those need to reinstated when the broker reconnects + onConnect: () => { + this.emit('connect'); + this.log('info', 'Client connected!'); + resolve(this.stompClient); + }, + + // onDisconnect: () => { + // this.stompClient = undefined; + // }, + + // onStompError: (frame) => {} + }; + this.stompClient = new Client(stompConfig); + + this.stompClient.activate(); + } catch (error) { + this.stompClient = undefined; + reject(error); + } + }); + } + + public isConnected = (): boolean => { + return (!isNullOrUndefined(this.stompClient) && this.stompClient.connected); + } + + public removeStompListener = (name: string): void => { + delete this.stompListeners[name]; + } + + // ------------ PRIVATE METHODS ------------------- + + protected consumeCallback = (callback: IStompCallback, opts: IStompConsumeOptions = {}, message: IMessage): void => { + try { + // Create message object + const stompMessage = new StompMessage({ message, receiverId: this.getDeviceId(), subscriptionOpts: opts }); + const ackNeeded = this.autoAck(opts.ack); + // Check if should be accepted or not + if (stompMessage.blackListed()) { + if (ackNeeded) { message.nack(); } + return; + } + // Call message callback + void callback(stompMessage); + // Check if ACK is needed + if (ackNeeded) { message.ack(); } + } catch (error) { + this.log('error', 'Error consuming message'); + this.log('error', error); + } + } + + // ------------ PRIVATE METHODS ------------------- + + private addStompListener = (callback: IStompCallback, topic: string, opts: IStompConsumeOptions = {}): string => { + const name = `subscription-${new Date().getTime()}`; + this.stompListeners[name] = { callback, topic, opts }; + return name; + } + + private bindStompListners = (): void => { + const names = Object.keys(this.stompListeners); + for (let index = 0; index < names.length; index += 1) { + const name = names[index]; + // eslint-disable-next-line no-await-in-loop + this.bindStompListner(name); + } + } + + private bindStompListner = (name: string): void => { + if (isNullOrUndefined(this.stompListeners[name])) { + this.log('error', `Listner ${name} does not exist.`); + return; + } + if (!isNullOrUndefined(this.stompListeners[name].subscription)) { + this.log('warn', `Listner ${name} already bound to a subscription.`); + return; + } + const { callback, opts, topic } = this.stompListeners[name]; + + if (this.isConnected()) { + this.stompListeners[name].subscription = this.stompClient.subscribe(topic, + this.consumeCallback.bind(this, callback, opts)); + if (!this.topics.includes(topic)) { + this.topics.push(topic); + } + this.log('info', `Client subscribed to topics: ${topic}`); + } else { + throw new Error(`${this.getClassName()} - Trying to subscribe when client is not connected`); + } + } + + /** + * Generate the subscription string for a specific channel + * + * @private + * @param {String} type - resource type on which subscribe or publish [exchange/queue] + * @param {String} channel - channel name on which you want to publish a message + * @return a string that represents the topic name for that channel + */ + public subcriptionFor = (type: string, channel: string): string => { + return `/${type}/${this.getDeviceId()}.${channel}`; + } + + /** + * Generate the destination string for a specific channel + * + * @private + * @param {String} type - resource type on which subscribe or publish [exchange/queue] + * @param {String} channel - channel name on which you want to publish a message + * @return a string that represents the topic name for that channel + */ + public destinationFor = (params: IStompDestinationhOptions = {}): string => { + const { + type = this.defaultResource, channel = '', + topic = '', routingKey = '' + } = params; + let messageRoutingKey: string; + if (routingKey.length > 0) { + messageRoutingKey = routingKey; + } else { + messageRoutingKey = this.getDeviceId(); + if (!isNullOrUndefined(channel) && channel.length > 0) { + messageRoutingKey += `.${channel || ''}`; + } + if (!isNullOrUndefined(topic) && topic.length > 0) { + messageRoutingKey += `.${topic || ''}`; + } + } + return `/${type}/${this.getDeviceId()}/${messageRoutingKey}`; + } + + /** + * Check if the SDK have to automatically ack messages + * By default STOMP messages are acked by the server + * they need to be acked if client subscribes with { ack: 'client' } option + * + * @private + * @param {String} ack - the ack type, it should be 'client' or null + * @return boolean - true if messages have to be autoacked, false otherwise + */ + protected autoAck = (ack: string): boolean => { + if (ack) { + if (!this.ackTypes.includes(ack)) { + this.emit('error', 'Wrong acknowledge type'); // eslint-disable-line no-console + } + switch (ack) { + case 'client': + return false; + default: + return true; + } + } + return false; + } + + private publishCachedMessages = async (): Promise => { + if (this.isConnected() && this.cachedMessages.length > 0) { + const cachedMessagesToSend = cloneDeep(this.cachedMessages); + this.log('debug', `Publishing ${cachedMessagesToSend.length} cached messages...`); + for (let index = 0; index < cachedMessagesToSend.length; index += 1) { + const cachedMessage = cachedMessagesToSend[index]; + this.log('silly', `Sending message ${index + 1} from cache`); + const { message, channel, options } = cachedMessage; + // eslint-disable-next-line no-await-in-loop + const res: boolean = await this.publish(channel, message, options); + if (res) { + // remove message from cache when successful send + const itemToRemove = this.cachedMessages.findIndex((el: ICachedMessage) => { + return isDeepStrictEqual(el, cachedMessage); + }); + this.cachedMessages.splice(itemToRemove, 1); + } + } + this.writeCachedMessagesFile(); + } + } +} + +export default StompClient; diff --git a/src/protocols/stompStreamClient.js b/src/protocols/stompStreamClient.js deleted file mode 100644 index 4ab7765..0000000 --- a/src/protocols/stompStreamClient.js +++ /dev/null @@ -1,246 +0,0 @@ -/** - * A module that exports an StompStreamClient client - * which inherits from the Stomp base client - * @module StompStreamClient - */ - -// Import some helpers modules -import _ from 'lodash'; -import Promise from 'bluebird'; -import md5 from 'js-md5'; - -// Import StompClient main module from which StompStreamClient inherits -import StompClient from './stompClient'; -import { parseContent } from '../utils'; -import CONFIG from '../../config/constants'; - -class StompStreamClient extends StompClient { - - _subscriptions: any; - _defaultResource: string; - _defaultPattern: string; - - /** - * @constructor - * @param {Object} opts - options must contain client and secret for access keys - */ - constructor(opts: any = {}) { - super(opts); - this._subscriptions = {}; - const stompStreamOpts = CONFIG.stomp.stream; - this._defaultResource = CONFIG.stomp.defaultResource; - this._defaultPattern = stompStreamOpts.defaultPattern; - } - - /** - * Subscribe to multiple stream hooks - * - * @param {Array} streamHooks - Array of objects. Each objects containing - * { deviceId: {string}, channel: {string}, callback: {func} } - * @param {Object} options - subscription options - * @return promise containing the result of multiple subscriptions - */ - streamFrom = (streamHooks: Array = [], opts: any= {}): Promise => { - if (streamHooks.length > 0) { - return Promise.mapSeries(streamHooks, (streamHook) => { - return this._attachStreamHook(streamHook, opts); - }); - } else { - return Promise.reject(new Error('Missing stream hooks')); - } - } - - /** - * Unsubscribe client from a topic - * - * @param {String} subscriptionId - subscription ID - * @return a promise containing the result of the operation - */ - unsubscribe = (subscriptionId: string): Promise => { - return new Promise((resolve, reject) => { - if (!this.isConnected()) { - reject(new Error('Invalid connection')); - } else { - const subscription = this._subscriptions[subscriptionId]; - if (!_.isEmpty(subscription)) { - subscription.unsubscribe(); - delete this._subscriptions[subscriptionId]; - resolve(true); - } else { - reject(new Error('Subscription not found')); - } - } - }); - } - - /** - * Destroy the connection between the stomp client and broker - * - * @return a promise containing the result of the operation - */ - disconnect = (): Promise => { - return new Promise((resolve, reject) => { - if (!this.isConnected()) { - reject(new Error('Invalid connection')); - } else { - const subscriptions = Object.keys(this._subscriptions); - subscriptions.forEach((subscription) => { - if (this._subscriptions[subscription]) { - this._subscriptions[subscription].unsubscribe(); - } - }); - this._subscriptions = {}; - this._stompConnection.disconnect(() => { - this._stompConnection = undefined; - resolve(true); - }).catch((reason) => { - reject(reason); - }); - } - }); - } - - // ------------ PRIVATE METHODS ------------------- - - /** - * Start consuming messages from a device's channel - * It generates an auto delete queue from which consume - * and binds it to the channel exchange - * - * @private - * @param {Object} streamHook - Object containit hook info - * { deviceId: {String}, channel: {String}, callback: {func}} - * @param {Object} opts - connection options - * @return a promise containing current connection - */ - _attachStreamHook = (streamHook: any, opts: any = {}): Promise => { - return new Promise((resolve, reject) => { - // let localOpts = _.cloneDeep(opts); - // localOpts = _.merge({}, localOpts); - // Receive messages from imput queue - const { - stream = undefined, deviceId = undefined, channel = undefined, routingKey = undefined, topic = undefined - } = streamHook; - const cache = (typeof (streamHook.cache) !== 'boolean') ? true : streamHook.cache; - const emptyFunction = () => { return undefined; }; - const callback = streamHook.callback || emptyFunction; - if (stream === undefined && deviceId === undefined) { - reject(new Error('Missing Stream or Device ID')); - } - this.connect().then((client) => { - let streamTopic; - let tempQueue = ''; - if (stream) { - if (!this.liveStreamExists(stream)) { - console.error(`Stream ${stream} does not exist`); // eslint-disable-line no-console - resolve(false); - } - if (cache) { - // Cached streams are connected to the existing live stream queue - streamTopic = this._cachedStreamTopicFor({ stream }); - } else { - // Uncached streams are connected to the stream exchange and create a temp queue - streamTopic = this._streamTopicFor({ stream, routingKey, topic }); - tempQueue = this.tempQueue(stream, this._liveStreamSuffix); - } - } else { - // else if current hook is channel (or a couple deviceId, channel) - // creates a temp queue, binds to channel exchange and starts consuming - streamTopic = this._streamChannelTopicFor({ - deviceId, channel, routingKey, topic - }); - tempQueue = this.tempQueue(deviceId, channel); - } - const subscriptionHeaders = {}; - if (tempQueue) { subscriptionHeaders['x-queue-name'] = tempQueue; } - const messageCallback = (message) => { - callback(parseContent(message.body), message.headers); - }; - try { - const subscriptionId = md5(`${tempQueue}-${streamTopic}`); - const subscription = client.subscribe(streamTopic, messageCallback, { - ...subscriptionHeaders, - id: subscriptionId - }); - this._subscriptions[subscriptionId] = subscription; - resolve(_.merge(streamHook, { id: subscriptionId })); - } catch (e) { - console.error(e); // eslint-disable-line no-console - resolve(undefined); - } - }).catch((reason) => { - console.error(reason); // eslint-disable-line no-console - resolve(undefined); - }); - }); - } - - /** - * Generate the subscription string for a specific channel - * - * @private - * @param {String} deviceId - deviceId from which you want to stream from - * @param {String} channel - channel name from which you want to stream from - * @param {String} type - resource type on which subscribe or publish [exchange/queue] - * @param {String} routingKey - binding pattern - * @return a string that represents the topic name for that channel - */ - _streamChannelTopicFor = (params: any = {}) => { - const { - deviceId = undefined, channel = undefined, type = this._defaultResource, - routingKey = this._defaultPattern, topic = undefined - } = params; - let resource = deviceId || ''; - if (channel) { - resource += `.${channel}`; - } - let finalTopic = resource; - if (topic) { - finalTopic += `.${topic}`; - } else { - finalTopic = routingKey; - } - return `/${type}/${resource}/${finalTopic}`; - } - - /** - * Generate the subscription string for cached live streams - * - * @private - * @param {String} stream - stream name from which you want to stream - * @param {String} type - resource type on which subscribe or publish [exchange/queue] - * @return a string that represents the topic name for that channel - */ - _cachedStreamTopicFor = (params: any = {}) => { - const { - stream = undefined, type = this._existingQueuePrefix - } = params; - const topic = stream || ''; - return `/${type}/${topic}.${this._liveStreamSuffix}`; - } - - /** - * Generate the subscription for live streams without caching - * - * @private - * @param {String} stream - stream name from which you want to stream - * @param {String} type - resource type on which subscribe or publish [exchange/queue] - * @param {String} routingKey - binding pattern - * @return a string that represents the topic name for that channel - */ - _streamTopicFor = (params: any = {}) => { - const { - stream = undefined, type = this._defaultResource, routingKey = this._defaultPattern - } = params; - const resource = stream || ''; - return `/${type}/${resource}.${this._liveStreamSuffix}/${routingKey}`; - } -} - -// Remove unwnated methods inherited from StompClient -delete StompStreamClient.prototype.onReceive; -delete StompStreamClient.prototype.publish; -delete StompStreamClient.prototype._subcriptionFor; -delete StompStreamClient.prototype._destinationFor; - -export default StompStreamClient; diff --git a/src/protocols/stompStreamClient.ts b/src/protocols/stompStreamClient.ts new file mode 100644 index 0000000..34d1ce7 --- /dev/null +++ b/src/protocols/stompStreamClient.ts @@ -0,0 +1,298 @@ +/** + * A module that exports an StompStreamClient client + * which inherits from the Stomp base client + * @module StompStreamClient + */ + +import md5 from 'md5'; +// Import some helpers modules +import { isNullOrUndefined } from 'util'; + +import Stomp from '@stomp/stompjs'; + +import StompMessage from '../messages/stompMessage'; +import { ILiveStreamHook } from '../spacebunny'; +// Import StompClient main module from which StompStreamClient inherits +import StompClient, { IStompConsumeOptions } from './stompClient'; + +export type IStompCallback = (message: StompMessage) => Promise; +export interface IStompLiveStreamHook extends ILiveStreamHook { + callback: IStompCallback; + ack?: 'client'; +} + +export interface IStompLiveStreamDestination extends ILiveStreamHook { + type?: string; +} + +export type IStompStreamListener = { + streamHook: IStompLiveStreamHook; + opts?: IStompConsumeOptions; + subscription?: Stomp.StompSubscription; +} + +class StompStreamClient extends StompClient { + private defaultPattern: string; + + private stompStreamListeners: { [name: string]: IStompStreamListener } = {}; + + /** + * @constructor + * @param {Object} opts - options must contain client and secret for access keys + */ + constructor(opts: any = {}) { + super(opts); + this.defaultPattern = '#'; + this.stompStreamListeners = {}; + this.on('connect', () => { void this.bindStompStreamListeners(); }); + this.on('disconnect', () => { this.stompStreamListeners = {}; }); + } + + /** + * Subscribe to multiple stream hooks + * + * @param {Array} streamHooks - Array of objects. Each objects containing + * { deviceId: {string}, channel: {string}, callback: {func} } + * @param {Object} options - subscription options + * @return promise containing the result of multiple subscriptions + */ + public streamFrom = async (streamHooks: IStompLiveStreamHook | Array = [], opts: any = {}): Promise> => { + const hooks: Array = Array.isArray(streamHooks) ? streamHooks : [streamHooks]; + const names: string[] = []; + for (let index = 0; index < hooks.length; index += 1) { + const streamHook = hooks[index]; + const name = this.addStompStreamListener(streamHook, opts); + if (this.isConnected()) { + // eslint-disable-next-line no-await-in-loop + await this.bindStompStreamListener(name); + } + names.push(name); + } + return names; + } + + public removeStompStreamListener = async (name: string): Promise => { + if (isNullOrUndefined(this.stompStreamListeners[name])) { + this.log('error', `STOMP listener ${name} does not exist.`); + return; + } + await this.unsubscribe(name); + delete this.stompStreamListeners[name]; + } + + /** + * Destroy the connection between the stomp client and broker + * + * @return a promise containing the result of the operation + */ + public disconnect = (): Promise => { + return new Promise((resolve, reject) => { + if (!this.isConnected()) { + resolve(true); + } else { + try { + const subscriptions = Object.keys(this.stompStreamListeners); + for (let index = 0; index < subscriptions.length; index += 1) { + const name = subscriptions[index]; + const { subscription } = this.stompStreamListeners[name]; + if (!isNullOrUndefined(subscription)) { + subscription.unsubscribe(); + } + delete this.stompStreamListeners[name]; + } + this.stompClient.deactivate(); + this.stompClient = undefined; + this.emit('disconnect'); + } catch (error) { + reject(error); + } + } + }); + } + + // ------------ PRIVATE METHODS ------------------- + + /** + * Unsubscribe client from a topic + * + * @param {String} subscriptionId - subscription ID + * @return a promise containing the result of the operation + */ + private unsubscribe = (name: string): Promise => { + return new Promise((resolve, reject) => { + if (!this.isConnected()) { + reject(new Error('Invalid connection')); + } else { + const { subscription } = this.stompStreamListeners[name]; + if (!isNullOrUndefined(subscription)) { + subscription.unsubscribe(); + delete this.stompStreamListeners[name].subscription; + resolve(true); + } else { + reject(new Error('Subscription not found')); + } + } + }); + } + + private addStompStreamListener = (streamHook: IStompLiveStreamHook, opts: IStompConsumeOptions = {}): string => { + const name = `subscription-${new Date().getTime()}`; + this.stompStreamListeners[name] = { streamHook, opts }; + return name; + } + + private bindStompStreamListeners = async (): Promise => { + const names = Object.keys(this.stompStreamListeners); + for (let index = 0; index < names.length; index += 1) { + const name = names[index]; + // eslint-disable-next-line no-await-in-loop + await this.bindStompStreamListener(name); + } + } + + /** + * Start consuming messages from a device's channel + * It generates an auto delete queue from which consume + * and binds it to the channel exchange + * + * @private + * @param {Object} streamHook - Object containit hook info + * { deviceId: {String}, channel: {String}, callback: {func}} + * @param {Object} opts - connection options + * @return a promise containing current connection + */ + public bindStompStreamListener = async (name: string): Promise => { + if (isNullOrUndefined(this.stompStreamListeners[name])) { + this.log('error', `Listner ${name} does not exist.`); + return; + } + if (!isNullOrUndefined(this.stompStreamListeners[name].subscription)) { + this.log('warn', `Listner ${name} already bound to a consumer.`); + return; + } + return new Promise((resolve, reject) => { + try { + const { streamHook, opts } = this.stompStreamListeners[name]; + const { + stream = undefined, deviceId = undefined, + channel = undefined, routingKey = undefined, + topic = undefined, cache = true, callback = undefined + } = streamHook; + if (isNullOrUndefined(stream) && (isNullOrUndefined(channel) || isNullOrUndefined(deviceId))) { + this.log('error', 'Missing Stream or Device ID and Channel'); + return; + } + if (isNullOrUndefined(callback)) { + this.log('error', 'Missing Callback'); + return; + } + let streamTopic = ''; + let tempQueue = ''; + if (stream) { + if (!this.liveStreamExists(stream)) { + console.error(`Stream ${stream} does not exist`); // eslint-disable-line no-console + resolve(undefined); + } + if (cache) { + // Cached streams are connected to the existing live stream queue + streamTopic = this.cachedStreamTopicFor({ stream }); + } else { + // Uncached streams are connected to the stream exchange and create a temp queue + streamTopic = this.streamTopicFor({ stream, routingKey, topic }); + tempQueue = this.tempQueue(stream, this.liveStreamSuffix); + } + } else { + // else if current hook is channel (or a couple deviceId, channel) + // creates a temp queue, binds to channel exchange and starts consuming + streamTopic = this.streamChannelTopicFor({ + deviceId, channel, routingKey, topic + }); + tempQueue = this.tempQueue(deviceId, channel); + } + const subscriptionHeaders = {}; + if (tempQueue) { subscriptionHeaders['x-queue-name'] = tempQueue; } + const subscriptionId = md5(`${tempQueue}-${streamTopic}`); + const subscription = this.stompClient.subscribe(streamTopic, + this.consumeCallback.bind(this, callback, opts), { + ...subscriptionHeaders, + id: subscriptionId + }); + this.stompStreamListeners[name].subscription = subscription; + this.log('info', `Client subscribed to topic ${streamTopic}`); + resolve(subscriptionId); + } catch (error) { + this.log('error', error); + reject(error); + } + }); + } + + /** + * Generate the subscription string for a specific channel + * + * @private + * @param {String} deviceId - deviceId from which you want to stream from + * @param {String} channel - channel name from which you want to stream from + * @param {String} type - resource type on which subscribe or publish [exchange/queue] + * @param {String} routingKey - binding pattern + * @return a string that represents the topic name for that channel + */ + streamChannelTopicFor = (params: IStompLiveStreamDestination = {}): string => { + const { + deviceId = undefined, channel = undefined, type = this.defaultResource, + routingKey = this.defaultPattern, topic = undefined + } = params; + let resource = deviceId || ''; + if (channel) { + resource += `.${channel}`; + } + let finalTopic = resource; + if (topic) { + finalTopic += `.${topic}`; + } else { + finalTopic = routingKey; + } + return `/${type}/${resource}/${finalTopic}`; + } + + /** + * Generate the subscription string for cached live streams + * + * @private + * @param {String} stream - stream name from which you want to stream + * @param {String} type - resource type on which subscribe or publish [exchange/queue] + * @return a string that represents the topic name for that channel + */ + private cachedStreamTopicFor = (params: IStompLiveStreamDestination = {}): string => { + const { + stream = undefined, type = this.existingQueuePrefix + } = params; + const topic = stream || ''; + return `/${type}/${topic}.${this.liveStreamSuffix}`; + } + + /** + * Generate the subscription for live streams without caching + * + * @private + * @param {String} stream - stream name from which you want to stream + * @param {String} type - resource type on which subscribe or publish [exchange/queue] + * @param {String} routingKey - binding pattern + * @return a string that represents the topic name for that channel + */ + streamTopicFor = (params: IStompLiveStreamDestination = {}): string => { + const { + stream = undefined, type = this.defaultResource, routingKey = this.defaultPattern + } = params; + const resource = stream || ''; + return `/${type}/${resource}.${this.liveStreamSuffix}/${routingKey}`; + } +} + +// Remove unwnated methods inherited from StompClient +delete StompStreamClient.prototype.onMessage; +delete StompStreamClient.prototype.publish; +delete StompStreamClient.prototype.subcriptionFor; +delete StompStreamClient.prototype.destinationFor; + +export default StompStreamClient; diff --git a/src/spacebunny.js b/src/spacebunny.js deleted file mode 100644 index 6037427..0000000 --- a/src/spacebunny.js +++ /dev/null @@ -1,287 +0,0 @@ -/** - * A module that exports the base SpaceBunny client - * @module SpaceBunny - */ - -// Import some helpers modules -import fs from 'fs'; -import axios from 'axios'; -import humps from 'humps'; -import Promise from 'bluebird'; -import _ from 'lodash'; -import urljoin from 'url-join'; -import EventEmitter from 'events'; -import uuid from 'uuid-v4'; - -// TODO validate enpointConfig object format with Joi -// import Joi from 'joi'; - -import CONFIG from '../config/constants'; - -/** - * @constructor - * @param {Object} opts - constructor options may contain Device-Key or connection options - */ -class SpaceBunny extends EventEmitter { - - _connectionParams: any; - _endpointConfigs: any; - _endpoint: any; - _deviceKey: string; - _channels: any; - _deviceId: string; - _client: string; - _secret: string; - _host: string; - _port: number; - _vhost: string; - _protocol: string; - _inboxTopic: string; - _liveStreamSuffix: string; - _tempQueueSuffix: string; - _liveStreams: any; - _tls: boolean; - _tlsOpts: any; - - constructor(opts: any = {}) { - super(); - this._connectionParams = _.merge({}, humps.camelizeKeys(opts)); - this._endpointConfigs = undefined; - this._endpoint = _.merge(CONFIG.endpoint, this._connectionParams.endpoint); - this._deviceKey = this._connectionParams.deviceKey; - this._channels = this._connectionParams.channels; - this._deviceId = this._connectionParams.deviceId; - this._client = this._connectionParams.client; - this._secret = this._connectionParams.secret; - this._host = this._connectionParams.host; - this._port = this._connectionParams.port; - this._vhost = this._connectionParams.vhost; - this._protocol = CONFIG.protocol; - this._inboxTopic = this._connectionParams.inputTopic || CONFIG.inboxTopic; - this._liveStreamSuffix = CONFIG.liveStreamSuffix; - this._tempQueueSuffix = CONFIG.tempQueueSuffix; - this._liveStreams = []; - this._tls = this._connectionParams.tls || false; - this._tlsOpts = {}; - if (this._connectionParams.cert) { this._tlsOpts.cert = fs.readFileSync(this._connectionParams.cert); } - if (this._connectionParams.key) { this._tlsOpts.key = fs.readFileSync(this._connectionParams.key); } - if (this._connectionParams.passphrase) { this._tlsOpts.passphrase = this._connectionParams.passphrase; } - if (this._connectionParams.ca) { - if (Array.isArray(this._connectionParams.ca)) { - this._tlsOpts.ca = this._connectionParams.ca.map((element) => { - return fs.readFileSync(element); - }); - } else { - this._tlsOpts.ca = [fs.readFileSync(this._connectionParams.ca)]; - } - } - if (this._connectionParams.pfx) { this._tlsOpts.pfx = fs.readFileSync(this._connectionParams.pfx); } - if (this._connectionParams.disableCertCheck) { - this._tlsOpts.rejectUnauthorized = false; - } else { - this._tlsOpts.rejectUnauthorized = true; - } - this._tlsOpts.secureProtocol = this._connectionParams.secureProtocol || CONFIG.tls.secureProtocol; - } - - /** - * Check if Device-Key or connection parameters have already been passed - * If at least Device-Key is passed ask the endpoint for the configurations - * else if also connection parameters are not passed raise an exception - * - * @return an Object containing the connection parameters - */ - getEndpointConfigs = (): Promise => { - return new Promise((resolve, reject) => { - // Resolve with configs if already retrieved - if (this._endpointConfigs !== undefined || this.isConnected()) { - resolve(this._endpointConfigs); - return undefined; - } - // Contact endpoint to retrieve configs - // Switch endpoint if you are using sdk as device or as access key stream - if ((this._deviceId && this._secret) || this._deviceKey) { // Device credentials - // uses endpoint passed from user, default endpoint otherwise - const hostname = this._generateHostname(); - const uri = urljoin(hostname, this._endpoint.deviceConfigurationsPath); - if (this._deviceKey) { // Get configs from endpoint - const options = { - url: uri, - method: 'get', - responseType: 'json', - headers: { - 'Device-Key': this._deviceKey, - 'Content-Type': 'application/json' - } - }; - axios(options).then((response) => { - this._endpointConfigs = humps.camelizeKeys(response.data); - this._connectionParams = this._endpointConfigs.connection; - resolve(this._endpointConfigs); - }).catch((err) => { - reject(err); - }); - } else if (this._deviceId && this._secret && this._host && this._port && this._vhost) { - // Manually provided configs - this._connectionParams.protocols = {}; - if (this._tls) { - this._connectionParams.protocols[this._protocol] = { tlsPort: this._port }; - } else { - this._connectionParams.protocols[this._protocol] = { port: this._port }; - } - this._endpointConfigs = { - connection: this._connectionParams, - channels: [] - }; - resolve(this._endpointConfigs); - } - } else if (this._client && this._secret) { // Access key credentials - if (this._host && this._port && this._vhost) { - // Manually provided configs - this._connectionParams.protocols = {}; - if (this._tls) { - this._connectionParams.protocols[this._protocol] = { tlsPort: this._port }; - } else { - this._connectionParams.protocols[this._protocol] = { port: this._port }; - } - this._endpointConfigs = { - connection: this._connectionParams, - liveStreams: [] - }; - resolve(this._endpointConfigs); - } else { - // Get configs from endpoint - // uses endpoint passed from user, default endpoint otherwise - const hostname = this._generateHostname(); - const uri = urljoin(hostname, this._endpoint.liveStreamKeyConfigurationsPath); - const options = { - url: uri, - method: 'get', - responseType: 'json', - headers: { - 'Live-Stream-Key-Client': this._client, - 'Live-Stream-Key-Secret': this._secret, - 'Content-Type': 'application/json' - } - }; - axios(options).then((response) => { - this._endpointConfigs = humps.camelizeKeys(response.data); - this._connectionParams = this._endpointConfigs.connection; - this._liveStreams = this._endpointConfigs.liveStreams || []; - resolve(this._endpointConfigs); - }).catch((err) => { - reject(err); - }); - } - } else { // No configs or missing some info - reject(new Error('Missing Device Key or wrong connection parameters')); - } - return undefined; - }); - } - - isConnected = (): boolean => { return false; } - - /** - * @return all channels configured for the current device - */ - channels = () => { - if (this._endpointConfigs.channels) { - this._channels = this._endpointConfigs.channels.map((obj) => { - return obj.name; - }); - return this._channels || []; - } else { - return []; - } - } - - /** - * @return the device ID for the current device - */ - deviceId = () => { - this._deviceId = this._deviceId || this._connectionParams.deviceId; - return this._deviceId; - } - - /** - * Return a Stream ID from a stream name given in input - * - * @param {String} streamName - stream name - * @return the stream ID which corresponds to the input stream name - */ - liveStreamByName = (streamName: string) => { - const liveStreams = _.filter(this._liveStreams, (stream) => { return stream.name === streamName; }); - if (liveStreams.length > 0) { - return liveStreams[0].name || streamName; - } else { - return streamName; - } - } - - /** - * Check if a stream exists - * - * @param {String} streamName - stream name - * @return true if stream exists, false otherwise - */ - liveStreamExists = (streamName: string = '') => { - if (_.isEmpty(streamName)) { - return false; - } - const liveStreams = _.filter(this._liveStreams, (stream) => { return stream.name === streamName; }); - return (liveStreams.length > 0); - } - - /** - * Generate a temporary queue name - * - * @private - * @param {String} prefix - client id or stream name - * @param {String} suffix - channel name or defaul live stream suffix - * @param {Numeric} currentTime - current timestamp - * @return a string that represents the topic name for that channel - */ - tempQueue = (prefix: string = '', suffix: string = '', currentTime: number|void = undefined) => { - const timestamp = currentTime || new Date().getTime(); - const deviceId = this._connectionParams.client || this._connectionParams.deviceId; - return `${uuid()}-${timestamp}-${deviceId}-` - + `${this.exchangeName(prefix, suffix)}.` - + `${this._tempQueueSuffix}`; - } - - /** - * Generate the exchange name for a device's channel - * - * @private - * @param {String} prefix - It could be a device id or a stream name - * @param {String} suffix - It could be a channel name or a the default stream suffix (live_stream) - * @return a string that represents the complete exchange name - */ - exchangeName = (prefix: string = '', suffix: string = '') => { - return (!_.isEmpty(prefix) && !_.isEmpty(suffix)) ? `${this.liveStreamByName(prefix)}.${suffix}` : `${suffix}`; - } - - // ------------ PRIVATE METHODS ------------------- - - /** - * Generate the complete hostname string for an endpoint - * - * @private - * @return the string representing the endpoint url - */ - _generateHostname = () => { - if (this._endpoint.url) { - return this._endpoint.url; - } - const port = (this._tls) ? this._endpoint.securePort : this._endpoint.port; - let hostname = `${this._endpoint.host}:${port}`; - const protocol = (this._tls) ? this._endpoint.secureProtocol : this._endpoint.protocol; - if (!_.startsWith(hostname, protocol)) { - hostname = `${protocol}://${hostname}`; - } - return hostname; - } -} - -export default SpaceBunny; diff --git a/src/spacebunny.ts b/src/spacebunny.ts new file mode 100644 index 0000000..f7b8fd8 --- /dev/null +++ b/src/spacebunny.ts @@ -0,0 +1,477 @@ +/** + * A module that exports the base SpaceBunny client + * @module SpaceBunny + */ + +// Import some helpers modules +import axios, { AxiosRequestConfig } from 'axios'; +import { EventEmitter } from 'events'; +import fs from 'fs'; +import { camelizeKeys } from 'humps'; +import urljoin from 'url-join'; +import { isNullOrUndefined } from 'util'; +import { v4 as uuidv4 } from 'uuid'; + +export interface ISpaceBunnyParams { + endpoint?: IEndpoint; + deviceKey?: string; + channels?: IChannel[]; + deviceId?: string; + client?: string; + secret?: string; + host?: string; + port?: number; + vhost?: string; + protocol?: string; + inboxTopic?: string; + cert?: string; + key?: string; + passphrase?: string; + ca?: string; + pfx?: string; + disableCertCheck?: boolean; + secureProtocol?: string; + tls?: boolean; + protocols?: { [key: string]: IProtocol }; + autoReconnect?: boolean; + reconnectTimeout?: number; + verbose?: boolean; + caching?: boolean; + cacheSize?: number; + heartbeat?: number; + connectionTimeout?: number; + cachedMessagesPath?: string; +} + +export interface IEndpointConfigs { + connection?: ISpaceBunnyParams; + liveStreams?: ILiveStream[]; + channels?: IChannel[]; +} + +export interface ITlsOptions { + cert?: Buffer; + key?: Buffer; + passphrase?: string; + ca?: Buffer[]; + rejectUnauthorized?: boolean; + pfx?: Buffer; +} + +export interface IProtocol { + port?: number; + tlsPort?: number; +} + +export interface ILiveStream { + name: string; +} + +export interface IChannel { + name: string; +} + +export interface IEndpoint { + protocol: string; + secureProtocol: string; + host: string; + port: number; + securePort: number; + deviceConfigurationsPath: string; + liveStreamKeyConfigurationsPath: string; + url?: string; +} + +export interface ILiveStreamHook { + stream?: string; + deviceId?: string; + channel?: string; + routingKey?: string; + topic?: string; + cache?: boolean; +} + +export interface ISpaceBunnySubscribeOptions { + discardMine?: boolean; + discardFromApi?: boolean; +} + +export interface ICachedMessage { + message: Record; + channel: string; + options?: Record; +} + +/** + * @constructor + * @param {Object} opts - constructor options may contain Device-Key or connection options + */ +class SpaceBunny extends EventEmitter { + protected connectionParams: ISpaceBunnyParams; + + protected endpointConfigs: IEndpointConfigs; + + protected endpoint: IEndpoint; + + protected deviceKey: string; + + protected channels: IChannel[]; + + protected deviceId: string; + + protected client: string; + + protected secret: string; + + protected host: string; + + protected port: number; + + protected vhost: string; + + protected protocol: string; + + protected tlsProtocol: string; + + protected inboxTopic: string; + + protected liveStreamSuffix: string; + + protected tempQueueSuffix: string; + + protected liveStreams: ILiveStream[]; + + protected tls: boolean; + + protected tlsOpts: ITlsOptions; + + protected autoReconnect = true; + + protected reconnectTimeout = 5000; + + protected verbose = true; + + protected cacheSize: number; + + protected connectionTimeout: number; + + protected heartbeat: number; + + protected manualConfigurations: boolean; + + protected caching: boolean; + + protected cachedMessagesPath: string; + + protected cachedMessages: ICachedMessage[]; + + protected static DEFAULT_CONNECTION_TIMEOUT = 5000; + + protected static DEFAULT_RECONNECT_TIMEOUT = 5000; + + protected static DEFAULT_HEARTBEAT = 60; + + protected static DEFAULT_CACHE_SIZE = 100; + + constructor(opts: ISpaceBunnyParams = {}) { + super(); + this.connectionParams = camelizeKeys(opts); + const { endpoint, deviceKey, channels, deviceId, client, secret, host, port, vhost, inboxTopic, + tls, verbose, autoReconnect, heartbeat, connectionTimeout, caching, cacheSize, cachedMessagesPath } = this.connectionParams; + const defaultEndpoint: IEndpoint = { + protocol: 'http', + secureProtocol: 'https', + host: 'api.spacebunny.io', + port: 80, + securePort: 443, + deviceConfigurationsPath: 'device_configurations', + liveStreamKeyConfigurationsPath: 'live_stream_key_configurations' + }; + this.endpoint = { ...defaultEndpoint, ...endpoint }; + // becomes true when no configs are pulled from endpoint + this.manualConfigurations = false; + this.deviceKey = deviceKey; + this.channels = channels; + this.deviceId = deviceId; + this.client = client; + this.secret = secret; + this.host = host; + this.port = port; + this.vhost = vhost; + this.inboxTopic = inboxTopic || 'inbox'; + this.liveStreamSuffix = 'live_stream'; + this.tempQueueSuffix = 'temp'; + this.liveStreams = []; + this.tls = !(tls === false); + this.autoReconnect = !(autoReconnect === false); + this.verbose = (verbose === true); + this.heartbeat = heartbeat || SpaceBunny.DEFAULT_HEARTBEAT; + this.connectionTimeout = connectionTimeout || SpaceBunny.DEFAULT_CONNECTION_TIMEOUT; + this.endpointConfigs = {}; + this.caching = (caching === true); + this.cacheSize = cacheSize || SpaceBunny.DEFAULT_CACHE_SIZE; + this.cachedMessagesPath = cachedMessagesPath; + this.loadCachedMessages(); + } + + /** + * Check if Device-Key or connection parameters have already been passed + * If at least Device-Key is passed ask the endpoint for the configurations + * else if also connection parameters are not passed raise an exception + * + * @return an Object containing the connection parameters + */ + protected getEndpointConfigs = async (): Promise => { + // Resolve with configs if already retrieved + if (Object.keys(this.endpointConfigs).length > 0) { + return this.endpointConfigs; + } + try { + // Contact endpoint to retrieve configs + // Switch endpoint if you are using sdk as device or as access key stream + if ((this.deviceId && this.secret) || this.deviceKey) { // Device credentials + // uses endpoint passed from user, default endpoint otherwise + const hostname = this.generateHostname(); + const uri = urljoin(hostname, this.endpoint.deviceConfigurationsPath); + if (this.deviceKey) { // Get configs from endpoint + const options: AxiosRequestConfig = { + url: uri, + method: 'GET', + responseType: 'json', + headers: { + 'Device-Key': this.deviceKey, + 'Content-Type': 'application/json' + } + }; + const response = await axios(options); + this.endpointConfigs = (camelizeKeys(response.data) as IEndpointConfigs); + this.connectionParams = this.endpointConfigs.connection || {}; + this.channels = this.endpointConfigs.channels || []; + return this.endpointConfigs; + } + if (this.deviceId && this.secret && this.host && this.port && this.vhost) { + // Manually provided configs + this.connectionParams.protocols = {}; + if (this.tls) { + this.connectionParams.protocols[this.protocol] = { tlsPort: this.port }; + } else { + this.connectionParams.protocols[this.protocol] = { port: this.port }; + } + this.endpointConfigs = { + connection: this.connectionParams, + channels: [], + }; + this.manualConfigurations = true; + return this.endpointConfigs; + } + } else if (this.client && this.secret) { // Access key credentials + if (this.host && this.port && this.vhost) { + // Manually provided configs + this.connectionParams.protocols = {}; + if (this.tls) { + this.connectionParams.protocols[this.protocol] = { tlsPort: this.port }; + } else { + this.connectionParams.protocols[this.protocol] = { port: this.port }; + } + this.endpointConfigs = { + connection: this.connectionParams, + liveStreams: [], + }; + this.manualConfigurations = true; + return this.endpointConfigs; + } + // Get configs from endpoint + // uses endpoint passed from user, default endpoint otherwise + const hostname = this.generateHostname(); + const uri = urljoin(hostname, this.endpoint.liveStreamKeyConfigurationsPath); + const options: AxiosRequestConfig = { + url: uri, + method: 'GET', + responseType: 'json', + headers: { + 'Live-Stream-Key-Client': this.client, + 'Live-Stream-Key-Secret': this.secret, + 'Content-Type': 'application/json' + } + }; + const response = await axios(options); + this.endpointConfigs = (camelizeKeys(response.data) as IEndpointConfigs); + this.connectionParams = this.endpointConfigs.connection || {}; + this.liveStreams = this.endpointConfigs.liveStreams || []; + return this.endpointConfigs; + } else { // No configs or missing some info + throw new Error('Missing Device Key or wrong connection parameters'); + } + } catch (error) { + this.log('error', 'Error getting endpoint configurations.'); + throw error; + } + return {}; + } + + protected getClassName = (): string => { + return this.constructor.name; + } + + // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types + protected log = (level: string, message: string|Error, ...meta: any): void => { + const msg = (message instanceof Error) ? message.message : message; + const prefixedMessage = `${this.getClassName()} - ${msg}`; + if (this.verbose) { + this.emit('log', { level, message: prefixedMessage, ...meta }); + } + if (process.env.NODE_ENV === 'development') { + // eslint-disable-next-line no-console + console.log(new Date().toISOString(), prefixedMessage, ...meta); + } + } + + public isConnected = (): boolean => { return false; } + + public isStreamClient = (): boolean => { return this.getClassName().includes('Stream'); } + + /** + * @return all channels configured for the current device + */ + public getChannels = (): IChannel[] => { + return this.channels || this.endpointConfigs.channels || []; + } + + /** + * @return the device ID for the current device + */ + public getDeviceId = (): string => { + return this.deviceId || this.connectionParams.deviceId; + } + + /** + * @return the client for the current stream + */ + public getClient = (): string => { + return this.client; + } + + /** + * @return the Inbox topic for the current device + */ + public getInboxTopic = (): string => { + return this.inboxTopic; + } + + /** + * Return a Stream ID from a stream name given in input + * + * @param {String} streamName - stream name + * @return the stream ID which corresponds to the input stream name + */ + protected liveStreamByName = (streamName: string): string => { + const liveStreams = this.liveStreams.filter((stream) => { return stream.name === streamName; }); + if (liveStreams.length > 0) { + return liveStreams[0].name || streamName; + } + return streamName; + } + + /** + * Check if a stream exists + * + * @param {String} streamName - stream name + * @return true if stream exists, false otherwise + */ + protected liveStreamExists = (streamName: string): boolean => { + // skip this check for manual configuration + if (this.manualConfigurations) { return true; } + if (isNullOrUndefined(streamName) || streamName.length === 0) { + return false; + } + const liveStreams = this.liveStreams.filter((stream) => { return stream.name === streamName; }); + return (liveStreams.length > 0); + } + + /** + * Generate a temporary queue name + * + * @private + * @param {String} prefix - client id or stream name + * @param {String} suffix - channel name or defaul live stream suffix + * @param {Numeric} currentTime - current timestamp + * @return a string that represents the topic name for that channel + */ + protected tempQueue = (prefix: string, suffix: string, currentTime: number|void = undefined): string => { + const timestamp = currentTime || new Date().getTime(); + const deviceId = this.connectionParams.client || this.connectionParams.deviceId; + return `${uuidv4()}-${timestamp}-${deviceId}-` + + `${this.exchangeName(prefix, suffix)}.` + + `${this.tempQueueSuffix}`; + } + + /** + * Generate the exchange name for a device's channel + * + * @private + * @param {String} prefix - It could be a device id or a stream name + * @param {String} suffix - It could be a channel name or a the default stream suffix (livestream) + * @return a string that represents the complete exchange name + */ + protected exchangeName = (prefix: string, suffix: string): string => { + return (prefix.length > 0 && suffix.length > 0) ? `${this.liveStreamByName(prefix)}.${suffix}` : `${suffix}`; + } + + // ------------ PRIVATE METHODS ------------------- + + /** + * Generate the complete hostname string for an endpoint + * + * @private + * @return the string representing the endpoint url + */ + private generateHostname = (): string => { + if (this.endpoint.url) { + return this.endpoint.url; + } + const port = (this.tls) ? this.endpoint.securePort : this.endpoint.port; + let hostname = `${this.endpoint.host}:${port}`; + const protocol = (this.tls) ? this.endpoint.secureProtocol : this.endpoint.protocol; + if (!hostname.startsWith(protocol)) { + hostname = `${protocol}://${hostname}`; + } + return hostname; + } + + // TODO Load from LocalStorage if in browser + private loadCachedMessages = () => { + let cachedMessages: ICachedMessage[] = []; + if (this.cachedMessagesPath && fs.existsSync(this.cachedMessagesPath)) { + cachedMessages = JSON.parse(fs.readFileSync(this.cachedMessagesPath, { encoding: 'utf-8' })) as ICachedMessage[]; + } + this.cachedMessages = cachedMessages || []; + } + + // TODO Save to LocalStorage if in browser + protected writeCachedMessagesFile = (): void => { + try { + fs.writeFileSync(this.cachedMessagesPath, JSON.stringify(this.cachedMessages, null, 2)); + this.log('silly', `Cached messages written to: ${this.cachedMessagesPath}`); + } catch (error) { + this.log('error', 'Error writing cached messages'); + this.log('error', error); + } + } + + protected cacheMessage = (channel: string, message: Record, options: Record): void => { + const messageToCache: ICachedMessage = { channel, message, options }; + if (!this.cachedMessages.includes(messageToCache)) { + if (this.cachedMessages.length >= this.cacheSize) { + // remove eldest message + this.log('debug', 'Message cache full, removing eldest message'); + this.cachedMessages.shift(); + } + this.log('warn', 'Caching message..'); + this.log('silly', 'Message cached:', messageToCache); + this.cachedMessages.push(messageToCache); + this.writeCachedMessagesFile(); + } + } +} + +export default SpaceBunny; diff --git a/src/types/.index b/src/types/.index new file mode 100644 index 0000000..e69de29 diff --git a/src/types/types.d.ts b/src/types/types.d.ts new file mode 100644 index 0000000..6e3d77f --- /dev/null +++ b/src/types/types.d.ts @@ -0,0 +1 @@ +// declare module 'uuid-v4'; diff --git a/src/utils.js b/src/utils.ts similarity index 50% rename from src/utils.js rename to src/utils.ts index 2e50e67..1a800ea 100644 --- a/src/utils.js +++ b/src/utils.ts @@ -1,21 +1,21 @@ - /** * Automatically parse message content * * @private - * @param {Object/String} message - the received message + * @param {Buffer|string} message - the received message * @return an object containing the input message with parsed content */ -export function parseContent(message: any) { - let parsedMessage = message; +export function parseContent(message: Buffer|string): Record|string { + let parsedMessage: Record|string = message as unknown as Record; if (Buffer.isBuffer(parsedMessage)) { parsedMessage = parsedMessage.toString('utf-8'); } - let res; + let res: Record | string = parsedMessage; try { - res = JSON.parse(parsedMessage); + res = JSON.parse(parsedMessage as string) as Record; } catch (ex) { - res = parsedMessage; + // eslint-disable-next-line no-console + console.error(ex); } return res; } @@ -28,15 +28,14 @@ export function parseContent(message: any) { * @param {Object} content - content to publish, could be a string or a JSON object * @return the content encapsulated in the proper way */ -export function encapsulateContent(content: any) { - let encapsulatedContent = content; +export function encapsulateContent(content: Record): string { + let encapsulatedContent: string; try { encapsulatedContent = JSON.stringify(content); } catch (ex) { - encapsulatedContent = content; + encapsulatedContent = content.toString(); } return encapsulatedContent; } -const utilsFunctions = { parseContent, encapsulateContent }; -export default utilsFunctions; +export default { parseContent, encapsulateContent }; diff --git a/test/e2e/.index b/test/e2e/.index new file mode 100644 index 0000000..e69de29 diff --git a/test/integration/.index b/test/integration/.index new file mode 100644 index 0000000..e69de29 diff --git a/test/mocks/axios.ts b/test/mocks/axios.ts new file mode 100644 index 0000000..fd14583 --- /dev/null +++ b/test/mocks/axios.ts @@ -0,0 +1,49 @@ +import axios from 'axios'; +import MockAdapter from 'axios-mock-adapter'; +import faker from 'faker'; + +const mock = new MockAdapter(axios); + +export function apiCalls(method: string, api: string): number { + const calls = mock.history[method].filter(call => call.url.endsWith(api)); + return calls.length; +} + +export function resetMocks(): void { + mock.reset(); +} + +export function mockDeviceConfigs(): void { + mock.onGet('/device_configurations').reply(() => { + return [200, { + connection: { + host: 'endpoint.spacebunny.io', + protocols: { + amqp: [], + mqtt: [], + stomp: [], + webStomp: [] + }, + deviceName: faker.commerce.product(), + deviceId: faker.random.alphaNumeric(24), + secret: faker.random.uuid(), + vhost: faker.random.alphaNumeric(24), + }, + properties: {}, + channels: ['alarms', 'data'].map((n) => { + return { + id: faker.random.alphaNumeric(24), + name: n, + properties: {}, + createdAt: faker.time.recent().toISOString(), + updatedAt: faker.time.recent().toISOString(), + plugin: [] + }; + }) + }]; + }); +} + +export function mockBadDeviceConfigs(): void { + mock.onGet('/device_configurations').reply(401); +} diff --git a/test/testHelper.ts b/test/testHelper.ts new file mode 100644 index 0000000..2b2017f --- /dev/null +++ b/test/testHelper.ts @@ -0,0 +1,9 @@ +// Global file +import * as AxiosMocks from './mocks/axios'; + +// beforeEach(() => { +// }); + +afterEach(() => { + AxiosMocks.resetMocks(); +}); diff --git a/test/unit/.index b/test/unit/.index new file mode 100644 index 0000000..e69de29 diff --git a/test/unit/spacebunny.spec.ts b/test/unit/spacebunny.spec.ts new file mode 100644 index 0000000..d62a0fb --- /dev/null +++ b/test/unit/spacebunny.spec.ts @@ -0,0 +1,15 @@ +import SpaceBunny from '../../src/spacebunny'; + +describe('SpaceBunny Sdk', () => { + let sdk: SpaceBunny; + beforeEach(() => { + sdk = new SpaceBunny(); + }); + + describe('constructor', () => { + + it('should call loadCachedMessages', () => { + expect(sdk.loadCachedMessages).'toBeTruthy(); + }); + }); +}); diff --git a/tools/build.js b/tools/build.js deleted file mode 100644 index b4ad277..0000000 --- a/tools/build.js +++ /dev/null @@ -1,38 +0,0 @@ -// Allowing console calls below since this is a build file. -/* eslint-disable no-console */ -import webpack from 'webpack'; -import config from '../webpack.config.prod.babel'; -import { chalkError, chalkSuccess, chalkWarning, chalkProcessing } from './chalkConfig'; - -process.env.NODE_ENV = 'production'; // this assures React is built in prod mode and that the Babel dev config doesn't apply. - -console.log(chalkProcessing('Generating minified bundle. This will take a moment...')); - -webpack( - config, - (error, stats: any) : void => { - // webpack(config).run((error, stats) => { - if (error) { // so a fatal error occurred. Stop here. - console.log(chalkError(error.inspect())); - return; - } - - const jsonStats = stats.toJson(); - - if (jsonStats.hasErrors) { - return jsonStats.errors.map(error => console.log(chalkError(error))); - } - - if (jsonStats.hasWarnings) { - console.log(chalkWarning('Webpack generated the following warnings: ')); - jsonStats.warnings.map(warning => console.log(chalkWarning(warning))); - } - - console.log(`Webpack stats: ${stats}`); - - // if we got this far, the build succeeded. - console.log(chalkSuccess('Your app is compiled in production mode in /lib. It\'s ready to roll!')); - - return; - } -); diff --git a/tools/chalkConfig.js b/tools/chalkConfig.js deleted file mode 100644 index 8bb66e4..0000000 --- a/tools/chalkConfig.js +++ /dev/null @@ -1,6 +0,0 @@ -// Centralized configuration for chalk, which is used to add color to console.log statements. -import chalk from 'chalk'; -export const chalkError = chalk.red; -export const chalkSuccess = chalk.green; -export const chalkWarning = chalk.yellow; -export const chalkProcessing = chalk.blue; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..c888f83 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,44 @@ +{ + "exclude": [".vscode", "node_modules", "configs", "dist", "test", "examples"], + "compilerOptions": { + "target": "es6", + "module": "commonjs", + "pretty": true, + "sourceMap": true, + "outDir": "", + "importHelpers": true, + "strict": true, + "noImplicitAny": false, + "strictNullChecks": false, + "noImplicitThis": true, + "alwaysStrict": true, + "noUnusedLocals": true, + "noUnusedParameters": false, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "moduleResolution": "node", + "baseUrl": ".", + "allowSyntheticDefaultImports": true, + "experimentalDecorators": true, + "emitDecoratorMetadata": true, + "resolveJsonModule": true, + "esModuleInterop": true, + "declaration": true, + "declarationDir": "lib", + "lib": [ + "es5", + "es6", + "dom", + "es2015.core", + "es2015.collection", + "es2015.generator", + "es2015.iterable", + "es2015.promise", + "es2015.proxy", + "es2015.reflect", + "es2015.symbol", + "es2015.symbol.wellknown", + "esnext.asynciterable" + ] + } +} diff --git a/tsconfig.lint.json b/tsconfig.lint.json new file mode 100644 index 0000000..89f5226 --- /dev/null +++ b/tsconfig.lint.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "exclude": [".vscode", "node_modules"] +} diff --git a/webpack.config.analyze.js b/webpack.config.analyze.js new file mode 100644 index 0000000..686502d --- /dev/null +++ b/webpack.config.analyze.js @@ -0,0 +1,8 @@ +const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer'); +const nodejsConfig = require('./webpack.config.prod')[0]; + +const analyzerPlugin = new BundleAnalyzerPlugin(); + +nodejsConfig.plugins.push(analyzerPlugin); + +module.exports = nodejsConfig; diff --git a/webpack.config.prod.babel.js b/webpack.config.prod.js similarity index 51% rename from webpack.config.prod.babel.js rename to webpack.config.prod.js index a680012..b9c85e5 100644 --- a/webpack.config.prod.babel.js +++ b/webpack.config.prod.js @@ -1,15 +1,17 @@ -import path from 'path'; -import webpack from 'webpack'; -import WebpackMd5Hash from 'webpack-md5-hash'; -import minimist from 'minimist'; -import _ from 'lodash'; +const path = require('path'); +const webpack = require('webpack'); +const WebpackMd5Hash = require('webpack-md5-hash'); +const TerserPlugin = require('terser-webpack-plugin'); +const minimist = require('minimist'); +const _ = require('lodash'); +const { resolve } = require('path'); const env = process.env.NODE_ENV || 'production'; const argv = minimist(process.argv.slice(2)); -const platform = (argv.platform: any) || process.platform; -const arch = (argv.arch: any) || process.arch; +const platform = (argv.platform) || process.platform; +const arch = (argv.arch) || process.arch; const outputPath = path.join(__dirname, 'lib'); if (process.env.ANALYZER !== 'true') { @@ -22,11 +24,12 @@ const GLOBALS = { }; const baseConfig = { + mode: 'production', resolve: { modules: [__dirname, 'node_modules'], - extensions: ['.js'] + extensions: ['.ts', '.tsx', '.js', '.json'] }, - entry: { 'spacebunny': './src/index.js' }, + entry: { spacebunny: './src/index.ts' }, target: 'node', output: { path: outputPath, @@ -38,9 +41,18 @@ const baseConfig = { devtool: 'source-map', // devtool: 'nosources-source-map', optimization: { - minimize: false, + minimize: true, + minimizer: [ + new TerserPlugin({ + extractComments: false, + terserOptions: { + mangle: false, + sourceMap: true, + minify: true, + } + }) + ], }, - mode: 'production', node: { __dirname: false, __filename: true, @@ -50,12 +62,15 @@ const baseConfig = { module: 'empty' }, plugins: [ + // Optimize the order that items are bundled. This assures the hash is deterministic. + new webpack.optimize.OccurrenceOrderPlugin(), + // Hash the files using MD5 so that their names change when the content changes. new WebpackMd5Hash(), - new (webpack: any).DefinePlugin(GLOBALS), + new webpack.DefinePlugin(GLOBALS), - new (webpack: any).LoaderOptionsPlugin({ + new webpack.LoaderOptionsPlugin({ minimize: true, debug: false, noInfo: true, // set to false to see a list of every file being bundled. @@ -65,21 +80,24 @@ const baseConfig = { module: { rules: [ { - test: /\.js$/, - exclude: /node_modules/, - use: [{ loader: 'babel-loader', options: { cacheDirectory: true } }] + enforce: 'pre', + test: /\.ts$/, + loader: 'eslint-loader', + exclude: [resolve(__dirname, 'node_modules')], + }, { + test: /\.ts$/, + exclude: [resolve(__dirname, 'node_modules')], + use: [{ + loader: 'ts-loader' + }] }, { - include: [ - /mqtt\/bin\/sub/, - /mqtt\/bin\/pub/, - /mqtt\/mqtt/, - ], + test: /\.(js|mjs|jsx)$/, loader: 'string-replace-loader', options: { search: '#!/usr/bin/env node', replace: '', - flags: 'g' + // flags: 'g' } } ] @@ -93,5 +111,10 @@ nodejsConfig.output.filename = '[name].js'; const browserConfig = _.cloneDeep(baseConfig); browserConfig.target = 'web'; browserConfig.output.filename = '[name].var.js'; +browserConfig.entry.spacebunny = './src/indexWeb.ts'; + +const webConfig = _.cloneDeep(browserConfig); +webConfig.output.libraryTarget = 'commonjs2'; +webConfig.output.filename = '[name].web.js'; -export default [nodejsConfig, browserConfig]; +module.exports = [nodejsConfig, browserConfig, webConfig]; diff --git a/yarn.lock b/yarn.lock index b0ee785..5ad1d54 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,273 +2,1722 @@ # yarn lockfile v1 -"@babel/code-frame@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz#2a02643368de80916162be70865c97774f3adbd9" - integrity sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== dependencies: - "@babel/highlight" "7.0.0-beta.44" + "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" - integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== +"@babel/compat-data@^7.10.4", "@babel/compat-data@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.11.0.tgz#e9f73efe09af1355b723a7f39b11bad637d7c99c" + integrity sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ== dependencies: - "@babel/highlight" "^7.0.0" + browserslist "^4.12.0" + invariant "^2.2.4" + semver "^5.5.0" -"@babel/generator@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.44.tgz#c7e67b9b5284afcf69b309b50d7d37f3e5033d42" - integrity sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ== +"@babel/core@^7.1.0", "@babel/core@^7.1.6", "@babel/core@^7.7.5": + version "7.11.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.6.tgz#3a9455dc7387ff1bac45770650bc13ba04a15651" + integrity sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.11.6" + "@babel/helper-module-transforms" "^7.11.0" + "@babel/helpers" "^7.10.4" + "@babel/parser" "^7.11.5" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.11.5" + "@babel/types" "^7.11.5" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.11.5", "@babel/generator@^7.11.6": + version "7.11.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.6.tgz#b868900f81b163b4d464ea24545c61cbac4dc620" + integrity sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA== dependencies: - "@babel/types" "7.0.0-beta.44" + "@babel/types" "^7.11.5" jsesc "^2.5.1" - lodash "^4.2.0" source-map "^0.5.0" - trim-right "^1.0.1" -"@babel/helper-function-name@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz#e18552aaae2231100a6e485e03854bc3532d44dd" - integrity sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg== +"@babel/helper-annotate-as-pure@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" + integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA== dependencies: - "@babel/helper-get-function-arity" "7.0.0-beta.44" - "@babel/template" "7.0.0-beta.44" - "@babel/types" "7.0.0-beta.44" + "@babel/types" "^7.10.4" -"@babel/helper-get-function-arity@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz#d03ca6dd2b9f7b0b1e6b32c56c72836140db3a15" - integrity sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" + integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== dependencies: - "@babel/types" "7.0.0-beta.44" + "@babel/helper-explode-assignable-expression" "^7.10.4" + "@babel/types" "^7.10.4" -"@babel/helper-split-export-declaration@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz#c0b351735e0fbcb3822c8ad8db4e583b05ebd9dc" - integrity sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA== +"@babel/helper-compilation-targets@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz#804ae8e3f04376607cc791b9d47d540276332bd2" + integrity sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ== dependencies: - "@babel/types" "7.0.0-beta.44" + "@babel/compat-data" "^7.10.4" + browserslist "^4.12.0" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" -"@babel/highlight@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.44.tgz#18c94ce543916a80553edcdcf681890b200747d5" - integrity sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ== - dependencies: +"@babel/helper-create-class-features-plugin@^7.10.4", "@babel/helper-create-class-features-plugin@^7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz#9f61446ba80e8240b0a5c85c6fdac8459d6f259d" + integrity sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-member-expression-to-functions" "^7.10.5" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + +"@babel/helper-create-regexp-features-plugin@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz#fdd60d88524659a0b6959c0579925e425714f3b8" + integrity sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + regexpu-core "^4.7.0" + +"@babel/helper-define-map@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30" + integrity sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/types" "^7.10.5" + lodash "^4.17.19" + +"@babel/helper-explode-assignable-expression@^7.10.4": + version "7.11.4" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz#2d8e3470252cc17aba917ede7803d4a7a276a41b" + integrity sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" + integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== + dependencies: + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-get-function-arity@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" + integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-hoist-variables@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" + integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-member-expression-to-functions@^7.10.4", "@babel/helper-member-expression-to-functions@^7.10.5": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz#ae69c83d84ee82f4b42f96e2a09410935a8f26df" + integrity sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q== + dependencies: + "@babel/types" "^7.11.0" + +"@babel/helper-module-imports@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" + integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz#b16f250229e47211abdd84b34b64737c2ab2d359" + integrity sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-simple-access" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/template" "^7.10.4" + "@babel/types" "^7.11.0" + lodash "^4.17.19" + +"@babel/helper-optimise-call-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" + integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== + +"@babel/helper-regex@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.5.tgz#32dfbb79899073c415557053a19bd055aae50ae0" + integrity sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg== + dependencies: + lodash "^4.17.19" + +"@babel/helper-remap-async-to-generator@^7.10.4": + version "7.11.4" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz#4474ea9f7438f18575e30b0cac784045b402a12d" + integrity sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-wrap-function" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-replace-supers@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" + integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-simple-access@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" + integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== + dependencies: + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-skip-transparent-expression-wrappers@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz#eec162f112c2f58d3af0af125e3bb57665146729" + integrity sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q== + dependencies: + "@babel/types" "^7.11.0" + +"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" + integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== + dependencies: + "@babel/types" "^7.11.0" + +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + +"@babel/helper-wrap-function@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87" + integrity sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helpers@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" + integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^3.0.0" + js-tokens "^4.0.0" -"@babel/highlight@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" - integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== +"@babel/parser@^7.1.0", "@babel/parser@^7.1.6", "@babel/parser@^7.10.4", "@babel/parser@^7.11.5": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" + integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q== + +"@babel/plugin-proposal-async-generator-functions@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz#3491cabf2f7c179ab820606cec27fed15e0e8558" + integrity sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg== dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^4.0.0" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.10.4" + "@babel/plugin-syntax-async-generators" "^7.8.0" -"@babel/template@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.44.tgz#f8832f4fdcee5d59bf515e595fc5106c529b394f" - integrity sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng== - dependencies: - "@babel/code-frame" "7.0.0-beta.44" - "@babel/types" "7.0.0-beta.44" - babylon "7.0.0-beta.44" - lodash "^4.2.0" - -"@babel/traverse@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.44.tgz#a970a2c45477ad18017e2e465a0606feee0d2966" - integrity sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA== - dependencies: - "@babel/code-frame" "7.0.0-beta.44" - "@babel/generator" "7.0.0-beta.44" - "@babel/helper-function-name" "7.0.0-beta.44" - "@babel/helper-split-export-declaration" "7.0.0-beta.44" - "@babel/types" "7.0.0-beta.44" - babylon "7.0.0-beta.44" - debug "^3.1.0" +"@babel/plugin-proposal-class-properties@^7.1.0", "@babel/plugin-proposal-class-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz#a33bf632da390a59c7a8c570045d1115cd778807" + integrity sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-dynamic-import@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz#ba57a26cb98b37741e9d5bca1b8b0ddf8291f17e" + integrity sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + +"@babel/plugin-proposal-export-namespace-from@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz#570d883b91031637b3e2958eea3c438e62c05f54" + integrity sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz#593e59c63528160233bd321b1aebe0820c2341db" + integrity sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-logical-assignment-operators@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz#9f80e482c03083c87125dee10026b58527ea20c8" + integrity sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz#02a7e961fc32e6d5b2db0649e01bf80ddee7e04a" + integrity sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz#ce1590ff0a65ad12970a609d78855e9a4c1aef06" + integrity sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz#bd81f95a1f746760ea43b6c2d3d62b11790ad0af" + integrity sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.10.4" + +"@babel/plugin-proposal-optional-catch-binding@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz#31c938309d24a78a49d68fdabffaa863758554dd" + integrity sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz#de5866d0646f6afdaab8a566382fe3a221755076" + integrity sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-private-methods@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz#b160d972b8fdba5c7d111a145fc8c421fc2a6909" + integrity sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-unicode-property-regex@^7.10.4", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz#4483cda53041ce3413b7fe2f00022665ddfaa75d" + integrity sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.10.4", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz#6644e6a0baa55a61f9e3231f6c9eeb6ee46c124c" + integrity sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.4.tgz#53351dd7ae01995e567d04ce42af1a6e0ba846a6" + integrity sha512-yxQsX1dJixF4qEEdzVbst3SZQ58Nrooz8NV9Z9GL4byTE25BvJgl5lf0RECUf0fh28rZBb/RYTWn/eeKwCMrZQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz#4bbeb8917b54fcf768364e0a81f560e33a3ef57d" + integrity sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-typescript@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz#2f55e770d3501e83af217d782cb7517d7bb34d25" + integrity sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-arrow-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd" + integrity sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-async-to-generator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37" + integrity sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.10.4" + +"@babel/plugin-transform-block-scoped-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8" + integrity sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-block-scoping@^7.10.4": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz#5b7efe98852bef8d652c0b28144cd93a9e4b5215" + integrity sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-classes@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7" + integrity sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-define-map" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" globals "^11.1.0" - invariant "^2.2.0" - lodash "^4.2.0" -"@babel/types@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.44.tgz#6b1b164591f77dec0a0342aca995f2d046b3a757" - integrity sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ== +"@babel/plugin-transform-computed-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz#9ded83a816e82ded28d52d4b4ecbdd810cdfc0eb" + integrity sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw== dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-destructuring@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz#70ddd2b3d1bea83d01509e9bb25ddb3a74fc85e5" + integrity sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-dotall-regex@^7.10.4", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz#469c2062105c1eb6a040eaf4fac4b488078395ee" + integrity sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-duplicate-keys@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz#697e50c9fee14380fe843d1f306b295617431e47" + integrity sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-exponentiation-operator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz#5ae338c57f8cf4001bdb35607ae66b92d665af2e" + integrity sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-flow-strip-types@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.4.tgz#c497957f09e86e3df7296271e9eb642876bf7788" + integrity sha512-XTadyuqNst88UWBTdLjM+wEY7BFnY2sYtPyAidfC7M/QaZnSuIZpMvLxqGT7phAcnGyWh/XQFLKcGf04CnvxSQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-flow" "^7.10.4" + +"@babel/plugin-transform-for-of@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz#c08892e8819d3a5db29031b115af511dbbfebae9" + integrity sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz#6a467880e0fc9638514ba369111811ddbe2644b7" + integrity sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz#9f42ba0841100a135f22712d0e391c462f571f3c" + integrity sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz#b1ec44fcf195afcb8db2c62cd8e551c881baf8b7" + integrity sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-modules-amd@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz#1b9cddaf05d9e88b3aad339cb3e445c4f020a9b1" + integrity sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw== + dependencies: + "@babel/helper-module-transforms" "^7.10.5" + "@babel/helper-plugin-utils" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0" + integrity sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w== + dependencies: + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-simple-access" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz#6270099c854066681bae9e05f87e1b9cadbe8c85" + integrity sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw== + dependencies: + "@babel/helper-hoist-variables" "^7.10.4" + "@babel/helper-module-transforms" "^7.10.5" + "@babel/helper-plugin-utils" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz#9a8481fe81b824654b3a0b65da3df89f3d21839e" + integrity sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA== + dependencies: + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz#78b4d978810b6f3bcf03f9e318f2fc0ed41aecb6" + integrity sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + +"@babel/plugin-transform-new-target@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz#9097d753cb7b024cb7381a3b2e52e9513a9c6888" + integrity sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-object-super@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz#d7146c4d139433e7a6526f888c667e314a093894" + integrity sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + +"@babel/plugin-transform-parameters@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz#59d339d58d0b1950435f4043e74e2510005e2c4a" + integrity sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw== + dependencies: + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-property-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz#f6fe54b6590352298785b83edd815d214c42e3c0" + integrity sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-regenerator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz#2015e59d839074e76838de2159db421966fd8b63" + integrity sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz#8f2682bcdcef9ed327e1b0861585d7013f8a54dd" + integrity sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-shorthand-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz#9fd25ec5cdd555bb7f473e5e6ee1c971eede4dd6" + integrity sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-spread@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz#fa84d300f5e4f57752fe41a6d1b3c554f13f17cc" + integrity sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" + +"@babel/plugin-transform-sticky-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz#8f3889ee8657581130a29d9cc91d7c73b7c4a28d" + integrity sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + +"@babel/plugin-transform-template-literals@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz#78bc5d626a6642db3312d9d0f001f5e7639fde8c" + integrity sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-typeof-symbol@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz#9509f1a7eec31c4edbffe137c16cc33ff0bc5bfc" + integrity sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-typescript@^7.10.4": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.11.0.tgz#2b4879676af37342ebb278216dd090ac67f13abb" + integrity sha512-edJsNzTtvb3MaXQwj8403B7mZoGu9ElDJQZOKjGUnvilquxBA3IQoEIOvkX/1O8xfAsnHS/oQhe2w/IXrr+w0w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.5" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-typescript" "^7.10.4" + +"@babel/plugin-transform-unicode-escapes@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz#feae523391c7651ddac115dae0a9d06857892007" + integrity sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz#e56d71f9282fac6db09c82742055576d5e6d80a8" + integrity sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/preset-env@^7.1.6": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.11.5.tgz#18cb4b9379e3e92ffea92c07471a99a2914e4272" + integrity sha512-kXqmW1jVcnB2cdueV+fyBM8estd5mlNfaQi6lwLgRwCby4edpavgbFhiBNjmWA3JpB/yZGSISa7Srf+TwxDQoA== + dependencies: + "@babel/compat-data" "^7.11.0" + "@babel/helper-compilation-targets" "^7.10.4" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-proposal-async-generator-functions" "^7.10.4" + "@babel/plugin-proposal-class-properties" "^7.10.4" + "@babel/plugin-proposal-dynamic-import" "^7.10.4" + "@babel/plugin-proposal-export-namespace-from" "^7.10.4" + "@babel/plugin-proposal-json-strings" "^7.10.4" + "@babel/plugin-proposal-logical-assignment-operators" "^7.11.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" + "@babel/plugin-proposal-numeric-separator" "^7.10.4" + "@babel/plugin-proposal-object-rest-spread" "^7.11.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.10.4" + "@babel/plugin-proposal-optional-chaining" "^7.11.0" + "@babel/plugin-proposal-private-methods" "^7.10.4" + "@babel/plugin-proposal-unicode-property-regex" "^7.10.4" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.10.4" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.10.4" + "@babel/plugin-transform-arrow-functions" "^7.10.4" + "@babel/plugin-transform-async-to-generator" "^7.10.4" + "@babel/plugin-transform-block-scoped-functions" "^7.10.4" + "@babel/plugin-transform-block-scoping" "^7.10.4" + "@babel/plugin-transform-classes" "^7.10.4" + "@babel/plugin-transform-computed-properties" "^7.10.4" + "@babel/plugin-transform-destructuring" "^7.10.4" + "@babel/plugin-transform-dotall-regex" "^7.10.4" + "@babel/plugin-transform-duplicate-keys" "^7.10.4" + "@babel/plugin-transform-exponentiation-operator" "^7.10.4" + "@babel/plugin-transform-for-of" "^7.10.4" + "@babel/plugin-transform-function-name" "^7.10.4" + "@babel/plugin-transform-literals" "^7.10.4" + "@babel/plugin-transform-member-expression-literals" "^7.10.4" + "@babel/plugin-transform-modules-amd" "^7.10.4" + "@babel/plugin-transform-modules-commonjs" "^7.10.4" + "@babel/plugin-transform-modules-systemjs" "^7.10.4" + "@babel/plugin-transform-modules-umd" "^7.10.4" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.10.4" + "@babel/plugin-transform-new-target" "^7.10.4" + "@babel/plugin-transform-object-super" "^7.10.4" + "@babel/plugin-transform-parameters" "^7.10.4" + "@babel/plugin-transform-property-literals" "^7.10.4" + "@babel/plugin-transform-regenerator" "^7.10.4" + "@babel/plugin-transform-reserved-words" "^7.10.4" + "@babel/plugin-transform-shorthand-properties" "^7.10.4" + "@babel/plugin-transform-spread" "^7.11.0" + "@babel/plugin-transform-sticky-regex" "^7.10.4" + "@babel/plugin-transform-template-literals" "^7.10.4" + "@babel/plugin-transform-typeof-symbol" "^7.10.4" + "@babel/plugin-transform-unicode-escapes" "^7.10.4" + "@babel/plugin-transform-unicode-regex" "^7.10.4" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.11.5" + browserslist "^4.12.0" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-flow@^7.0.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.10.4.tgz#e0d9c72f8cb02d1633f6a5b7b16763aa2edf659f" + integrity sha512-XI6l1CptQCOBv+ZKYwynyswhtOKwpZZp5n0LG1QKCo8erRhqjoQV6nvx61Eg30JHpysWQSBwA2AWRU3pBbSY5g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-flow-strip-types" "^7.10.4" + +"@babel/preset-modules@^0.1.3": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" + integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" esutils "^2.0.2" - lodash "^4.2.0" + +"@babel/preset-typescript@^7.1.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.10.4.tgz#7d5d052e52a682480d6e2cc5aa31be61c8c25e36" + integrity sha512-SdYnvGPv+bLlwkF2VkJnaX/ni1sMNetcGI1+nThF1gyv6Ph8Qucc4ZZAjM5yZcE/AKRXIOTZz7eSRDWOEjPyRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-typescript" "^7.10.4" + +"@babel/register@^7.0.0": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.11.5.tgz#79becf89e0ddd0fba8b92bc279bc0f5d2d7ce2ea" + integrity sha512-CAml0ioKX+kOAvBQDHa/+t1fgOt3qkTIz0TrRtRAT6XY0m5qYZXR85k6/sLCNPMGhYDlCFHCYuU0ybTJbvlC6w== + dependencies: + find-cache-dir "^2.0.0" + lodash "^4.17.19" + make-dir "^2.1.0" + pirates "^4.0.0" + source-map-support "^0.5.16" + +"@babel/runtime-corejs3@^7.10.2": + version "7.11.2" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.11.2.tgz#02c3029743150188edeb66541195f54600278419" + integrity sha512-qh5IR+8VgFz83VBa6OkaET6uN/mJOhHONuy3m1sgF0CV6mXdPSEBdA7e1eUbVvyNtANjMbg22JUv71BaDXLY6A== + dependencies: + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.10.2", "@babel/runtime@^7.8.4": + version "7.11.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736" + integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.10.4", "@babel/template@^7.3.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" + integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.11.5": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.5.tgz#be777b93b518eb6d76ee2e1ea1d143daa11e61c3" + integrity sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.11.5" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/parser" "^7.11.5" + "@babel/types" "^7.11.5" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + +"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.11.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d" + integrity sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" to-fast-properties "^2.0.0" -"@octokit/rest@^15.2.6": - version "15.18.3" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-15.18.3.tgz#ff4ecbb784ca286c40cc1d568abceda6d99b36fc" - integrity sha512-oHABAvvC83tPIuvUfWRaw9eLThFrCxBgywl+KvEwfTFjoCrMOfEaMh0r39+Ub/EEbV345GJiMzN+zPZ4kqOvbA== +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@cnakazawa/watch@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== dependencies: - before-after-hook "^1.1.0" - btoa-lite "^1.0.0" - debug "^3.1.0" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.0" - lodash "^4.17.4" - node-fetch "^2.1.1" - universal-user-agent "^2.0.0" - url-template "^2.0.8" - -"@types/color-name@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== - -"@webassemblyjs/ast@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" - integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== - dependencies: - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - -"@webassemblyjs/floating-point-hex-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" - integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== - -"@webassemblyjs/helper-api-error@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" - integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== - -"@webassemblyjs/helper-buffer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" - integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== - -"@webassemblyjs/helper-code-frame@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" - integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== - dependencies: - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/helper-fsm@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" - integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== - -"@webassemblyjs/helper-module-context@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" - integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== - dependencies: - "@webassemblyjs/ast" "1.8.5" - mamacro "^0.0.3" - -"@webassemblyjs/helper-wasm-bytecode@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" - integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== - -"@webassemblyjs/helper-wasm-section@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" - integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - -"@webassemblyjs/ieee754@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" - integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== + exec-sh "^0.3.2" + minimist "^1.2.0" + +"@eslint/eslintrc@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.1.3.tgz#7d1a2b2358552cc04834c0979bd4275362e37085" + integrity sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + lodash "^4.17.19" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" + integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== + +"@jest/console@^26.5.2": + version "26.5.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.5.2.tgz#94fc4865b1abed7c352b5e21e6c57be4b95604a6" + integrity sha512-lJELzKINpF1v74DXHbCRIkQ/+nUV1M+ntj+X1J8LxCgpmJZjfLmhFejiMSbjjD66fayxl5Z06tbs3HMyuik6rw== + dependencies: + "@jest/types" "^26.5.2" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^26.5.2" + jest-util "^26.5.2" + slash "^3.0.0" + +"@jest/core@^26.5.3": + version "26.5.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.5.3.tgz#712ed4adb64c3bda256a3f400ff1d3eb2a031f13" + integrity sha512-CiU0UKFF1V7KzYTVEtFbFmGLdb2g4aTtY0WlyUfLgj/RtoTnJFhh50xKKr7OYkdmBUlGFSa2mD1TU3UZ6OLd4g== + dependencies: + "@jest/console" "^26.5.2" + "@jest/reporters" "^26.5.3" + "@jest/test-result" "^26.5.2" + "@jest/transform" "^26.5.2" + "@jest/types" "^26.5.2" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-changed-files "^26.5.2" + jest-config "^26.5.3" + jest-haste-map "^26.5.2" + jest-message-util "^26.5.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.5.2" + jest-resolve-dependencies "^26.5.3" + jest-runner "^26.5.3" + jest-runtime "^26.5.3" + jest-snapshot "^26.5.3" + jest-util "^26.5.2" + jest-validate "^26.5.3" + jest-watcher "^26.5.2" + micromatch "^4.0.2" + p-each-series "^2.1.0" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^26.5.2": + version "26.5.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.5.2.tgz#eba3cfc698f6e03739628f699c28e8a07f5e65fe" + integrity sha512-YjhCD/Zhkz0/1vdlS/QN6QmuUdDkpgBdK4SdiVg4Y19e29g4VQYN5Xg8+YuHjdoWGY7wJHMxc79uDTeTOy9Ngw== + dependencies: + "@jest/fake-timers" "^26.5.2" + "@jest/types" "^26.5.2" + "@types/node" "*" + jest-mock "^26.5.2" + +"@jest/fake-timers@^26.5.2": + version "26.5.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.5.2.tgz#1291ac81680ceb0dc7daa1f92c059307eea6400a" + integrity sha512-09Hn5Oraqt36V1akxQeWMVL0fR9c6PnEhpgLaYvREXZJAh2H2Y+QLCsl0g7uMoJeoWJAuz4tozk1prbR1Fc1sw== + dependencies: + "@jest/types" "^26.5.2" + "@sinonjs/fake-timers" "^6.0.1" + "@types/node" "*" + jest-message-util "^26.5.2" + jest-mock "^26.5.2" + jest-util "^26.5.2" + +"@jest/globals@^26.5.3": + version "26.5.3" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.5.3.tgz#90769b40e0af3fa0b28f6d8c5bbe3712467243fd" + integrity sha512-7QztI0JC2CuB+Wx1VdnOUNeIGm8+PIaqngYsZXQCkH2QV0GFqzAYc9BZfU0nuqA6cbYrWh5wkuMzyii3P7deug== + dependencies: + "@jest/environment" "^26.5.2" + "@jest/types" "^26.5.2" + expect "^26.5.3" + +"@jest/reporters@^26.5.3": + version "26.5.3" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.5.3.tgz#e810e9c2b670f33f1c09e9975749260ca12f1c17" + integrity sha512-X+vR0CpfMQzYcYmMFKNY9n4jklcb14Kffffp7+H/MqitWnb0440bW2L76NGWKAa+bnXhNoZr+lCVtdtPmfJVOQ== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^26.5.2" + "@jest/test-result" "^26.5.2" + "@jest/transform" "^26.5.2" + "@jest/types" "^26.5.2" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.2.4" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^4.0.3" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.2" + jest-haste-map "^26.5.2" + jest-resolve "^26.5.2" + jest-util "^26.5.2" + jest-worker "^26.5.0" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^6.0.1" + optionalDependencies: + node-notifier "^8.0.0" + +"@jest/source-map@^26.5.0": + version "26.5.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.5.0.tgz#98792457c85bdd902365cd2847b58fff05d96367" + integrity sha512-jWAw9ZwYHJMe9eZq/WrsHlwF8E3hM9gynlcDpOyCb9bR8wEd9ZNBZCi7/jZyzHxC7t3thZ10gO2IDhu0bPKS5g== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.4" + source-map "^0.6.0" + +"@jest/test-result@^26.5.2": + version "26.5.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.5.2.tgz#cc1a44cfd4db2ecee3fb0bc4e9fe087aa54b5230" + integrity sha512-E/Zp6LURJEGSCWpoMGmCFuuEI1OWuI3hmZwmULV0GsgJBh7u0rwqioxhRU95euUuviqBDN8ruX/vP/4bwYolXw== + dependencies: + "@jest/console" "^26.5.2" + "@jest/types" "^26.5.2" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^26.5.3": + version "26.5.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.5.3.tgz#9ae0ab9bc37d5171b28424029192e50229814f8d" + integrity sha512-Wqzb7aQ13L3T47xHdpUqYMOpiqz6Dx2QDDghp5AV/eUDXR7JieY+E1s233TQlNyl+PqtqgjVokmyjzX/HA51BA== + dependencies: + "@jest/test-result" "^26.5.2" + graceful-fs "^4.2.4" + jest-haste-map "^26.5.2" + jest-runner "^26.5.3" + jest-runtime "^26.5.3" + +"@jest/transform@^26.5.2": + version "26.5.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.5.2.tgz#6a0033a1d24316a1c75184d010d864f2c681bef5" + integrity sha512-AUNjvexh+APhhmS8S+KboPz+D3pCxPvEAGduffaAJYxIFxGi/ytZQkrqcKDUU0ERBAo5R7087fyOYr2oms1seg== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^26.5.2" + babel-plugin-istanbul "^6.0.0" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.4" + jest-haste-map "^26.5.2" + jest-regex-util "^26.0.0" + jest-util "^26.5.2" + micromatch "^4.0.2" + pirates "^4.0.1" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + +"@jest/types@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" + integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + +"@jest/types@^26.5.2": + version "26.5.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.5.2.tgz#44c24f30c8ee6c7f492ead9ec3f3c62a5289756d" + integrity sha512-QDs5d0gYiyetI8q+2xWdkixVQMklReZr4ltw7GFDtb4fuJIBCE6mzj2LnitGqCuAlLap6wPyb8fpoHgwZz5fdg== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.scandir@2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" + integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== + dependencies: + "@nodelib/fs.stat" "2.0.3" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" + integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" + integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== + dependencies: + "@nodelib/fs.scandir" "2.1.3" + fastq "^1.6.0" + +"@npmcli/move-file@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" + integrity sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw== + dependencies: + mkdirp "^1.0.4" + +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + +"@sindresorhus/is@^2.0.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-2.1.1.tgz#ceff6a28a5b4867c2dd4a1ba513de278ccbe8bb1" + integrity sha512-/aPsuoj/1Dw/kzhkgz+ES6TxG0zfTMGLwuK2ZG00k/iJzYHTLCE8mVU8EPqEOp/lmxPoq1C1C9RYToRKb2KEfg== + +"@sinonjs/commons@^1.7.0": + version "1.8.1" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.1.tgz#e7df00f98a203324f6dc7cc606cad9d4a8ab2217" + integrity sha512-892K+kWUUi3cl+LlqEWIDrhvLgdL79tECi8JZUyq6IviKy/DNhuzCRlbHUjxK89f4ypPMMaFnFuR9Ie6DoIMsw== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" + integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@stomp/stompjs@5.4.4": + version "5.4.4" + resolved "https://registry.yarnpkg.com/@stomp/stompjs/-/stompjs-5.4.4.tgz#f51d2edf9a00fac645dde3a494738d96ca17e5aa" + integrity sha512-RIzQ7MLRSJLUpTHcje1ZclnHH982amJSKC9bDxGO0wyu5OF9ROuuiLf7TxKxo1zUu7lGEYNedg9SEi87uMWDqg== + +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" + +"@szmarczak/http-timer@^4.0.0": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.5.tgz#bfbd50211e9dfa51ba07da58a14cdfd333205152" + integrity sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ== + dependencies: + defer-to-connect "^2.0.0" + +"@types/amqplib@0.5.14": + version "0.5.14" + resolved "https://registry.yarnpkg.com/@types/amqplib/-/amqplib-0.5.14.tgz#f9cb27707a9a0c7c493850c41d4e93520c51bf57" + integrity sha512-KYJjEZhUlDHIgYhm0f+ymt3FLXG22Bjl1DIjO1WkSAYJGLBbK5t2C3TQnEGD1T+hfapR93LTDfAmQMXO5qQM3g== + dependencies: + "@types/bluebird" "*" + "@types/node" "*" + +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": + version "7.1.10" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.10.tgz#ca58fc195dd9734e77e57c6f2df565623636ab40" + integrity sha512-x8OM8XzITIMyiwl5Vmo2B1cR1S1Ipkyv4mdlbJjMa1lmuKvKY9FrBbEANIaMlnWn5Rf7uO+rC/VgYabNkE17Hw== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.2.tgz#f3d71178e187858f7c45e30380f8f1b7415a12d8" + integrity sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.0.3" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.3.tgz#b8aaeba0a45caca7b56a5de9459872dde3727214" + integrity sha512-uCoznIPDmnickEi6D0v11SBpW0OuVqHJCa7syXqQHy5uktSCreIlt0iglsCnmvz8yCb38hGcWeseA8cWJSwv5Q== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.15.tgz#db9e4238931eb69ef8aab0ad6523d4d4caa39d03" + integrity sha512-Pzh9O3sTK8V6I1olsXpCfj2k/ygO2q1X0vhhnDrEQyYLHZesWz+zMZMVcwXLCYf0U36EtmyYaFGPfXlTtDHe3A== + dependencies: + "@babel/types" "^7.3.0" + +"@types/bluebird@*": + version "3.5.32" + resolved "https://registry.yarnpkg.com/@types/bluebird/-/bluebird-3.5.32.tgz#381e7b59e39f010d20bbf7e044e48f5caf1ab620" + integrity sha512-dIOxFfI0C+jz89g6lQ+TqhGgPQ0MxSnh/E4xuC0blhFtyW269+mPG5QeLgbdwst/LvdP8o1y0o/Gz5EHXLec/g== + +"@types/cacheable-request@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.1.tgz#5d22f3dded1fd3a84c0bbeb5039a7419c2c91976" + integrity sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "*" + "@types/node" "*" + "@types/responselike" "*" + +"@types/faker@5.1.2": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/faker/-/faker-5.1.2.tgz#3d5a97d5648502d7fb1eeb2809ca105edcd0d59b" + integrity sha512-a3FADSHjjinczCwr7tTejoMZzbSS5vi70VCyns4C1idxJrDSRGZCQG0s27YppXLcoWrBOkwBbBsZ9vDRDpQK7A== + +"@types/glob@^7.1.1": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" + integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/graceful-fs@^4.1.2": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" + integrity sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ== + dependencies: + "@types/node" "*" + +"@types/http-cache-semantics@*": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz#9140779736aa2655635ee756e2467d787cfe8a2a" + integrity sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A== + +"@types/humps@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/humps/-/humps-2.0.0.tgz#9ad07801cd34f9d9ce379fa66f62d3049937d815" + integrity sha512-bP/s9HUT2oTJ0c3XGcHGISwTNs6r8eUPNfU6DuOSU8EHgtHqwvoDEyj76jPhKT/0MszS1PF/hHolxRrHSLYUPQ== + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" + integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" + integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" + integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@26.0.14", "@types/jest@26.x": + version "26.0.14" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.14.tgz#078695f8f65cb55c5a98450d65083b2b73e5a3f3" + integrity sha512-Hz5q8Vu0D288x3iWXePSn53W7hAjP0H7EQ6QvDO9c7t46mR0lNOLlfuwQ+JkVxuhygHzlzPX+0jKdA3ZgSh+Vg== + dependencies: + jest-diff "^25.2.1" + pretty-format "^25.2.1" + +"@types/js-md5@0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@types/js-md5/-/js-md5-0.4.2.tgz#95b39911e2081bf2915436e61cc345e12459e5bb" + integrity sha512-FUPoQkpQTzA5wz9ebrdVRjsjQsFehr+cW1CVhLcI2UwD/SO/4NHPO1esrXPPbx7ux762U0POmWFSrUjQq2ophw== + +"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" + integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + +"@types/keyv@*", "@types/keyv@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.1.tgz#e45a45324fca9dab716ab1230ee249c9fb52cfa7" + integrity sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw== + dependencies: + "@types/node" "*" + +"@types/lodash.clonedeep@4.5.6": + version "4.5.6" + resolved "https://registry.yarnpkg.com/@types/lodash.clonedeep/-/lodash.clonedeep-4.5.6.tgz#3b6c40a0affe0799a2ce823b440a6cf33571d32b" + integrity sha512-cE1jYr2dEg1wBImvXlNtp0xDoS79rfEdGozQVgliDZj1uERH4k+rmEMTudP9b4VQ8O6nRb5gPqft0QzEQGMQgA== + dependencies: + "@types/lodash" "*" + +"@types/lodash@*": + version "4.14.162" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.162.tgz#65d78c397e0d883f44afbf1f7ba9867022411470" + integrity sha512-alvcho1kRUnnD1Gcl4J+hK0eencvzq9rmzvFPRmP5rPHx9VVsJj6bKLTATPVf9ktgv4ujzh7T+XWKp+jhuODig== + +"@types/md5@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@types/md5/-/md5-2.2.0.tgz#cd82e16b95973f94bb03dee40c5b6be4a7fb7fb4" + integrity sha512-JN8OVL/wiDlCWTPzplsgMPu0uE9Q6blwp68rYsfk2G8aokRUQ8XD9MEhZwihfAiQvoyE+m31m6i3GFXwYWomKQ== + dependencies: + "@types/node" "*" + +"@types/minimatch@*", "@types/minimatch@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/minimist@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6" + integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY= + +"@types/node@*", "@types/node@14.11.8": + version "14.11.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.11.8.tgz#fe2012f2355e4ce08bca44aeb3abbb21cf88d33f" + integrity sha512-KPcKqKm5UKDkaYPTuXSx8wEP7vE9GnuaXIZKijwRYcePpZFDVuy2a57LarFKiORbHOuTOOwYzxVxcUzsh2P2Pw== + +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/prettier@^2.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.1.2.tgz#4929992f87a0129f4960a110faeb526210562e7b" + integrity sha512-IiPhNnenzkqdSdQH3ifk9LoX7oQe61ZlDdDO4+MUv6FyWdPGDPr26gCPVs3oguZEMq//nFZZpwUZcVuNJsG+DQ== + +"@types/responselike@*": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" + integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + dependencies: + "@types/node" "*" + +"@types/stack-utils@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" + integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== + +"@types/url-join@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/url-join/-/url-join-4.0.0.tgz#72eff71648a429c7d4acf94e03780e06671369bd" + integrity sha512-awrJu8yML4E/xTwr2EMatC+HBnHGoDxc2+ImA9QyeUELI1S7dOCIZcyjki1rkwoA8P2D2NVgLAJLjnclkdLtAw== + +"@types/uuid@8.3.0": + version "8.3.0" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.0.tgz#215c231dff736d5ba92410e6d602050cce7e273f" + integrity sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ== + +"@types/yargs-parser@*": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" + integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + +"@types/yargs@^15.0.0": + version "15.0.8" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.8.tgz#7644904cad7427eb704331ea9bf1ee5499b82e23" + integrity sha512-b0BYzFUzBpOhPjpl1wtAHU994jBeKF4TKVlT7ssFv44T617XNcPdRoG4AzHLVshLzlrF7i3lTelH7UbuNYV58Q== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@4.4.1": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.4.1.tgz#b8acea0373bd2a388ac47df44652f00bf8b368f5" + integrity sha512-O+8Utz8pb4OmcA+Nfi5THQnQpHSD2sDUNw9AxNHpuYOo326HZTtG8gsfT+EAYuVrFNaLyNb2QnUNkmTRDskuRA== + dependencies: + "@typescript-eslint/experimental-utils" "4.4.1" + "@typescript-eslint/scope-manager" "4.4.1" + debug "^4.1.1" + functional-red-black-tree "^1.0.1" + regexpp "^3.0.0" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/experimental-utils@4.4.1": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.4.1.tgz#40613b9757fa0170de3e0043254dbb077cafac0c" + integrity sha512-Nt4EVlb1mqExW9cWhpV6pd1a3DkUbX9DeyYsdoeziKOpIJ04S2KMVDO+SEidsXRH/XHDpbzXykKcMTLdTXH6cQ== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/scope-manager" "4.4.1" + "@typescript-eslint/types" "4.4.1" + "@typescript-eslint/typescript-estree" "4.4.1" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + +"@typescript-eslint/parser@4.4.1": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.4.1.tgz#25fde9c080611f303f2f33cedb145d2c59915b80" + integrity sha512-S0fuX5lDku28Au9REYUsV+hdJpW/rNW0gWlc4SXzF/kdrRaAVX9YCxKpziH7djeWT/HFAjLZcnY7NJD8xTeUEg== + dependencies: + "@typescript-eslint/scope-manager" "4.4.1" + "@typescript-eslint/types" "4.4.1" + "@typescript-eslint/typescript-estree" "4.4.1" + debug "^4.1.1" + +"@typescript-eslint/scope-manager@4.4.1": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.4.1.tgz#d19447e60db2ce9c425898d62fa03b2cce8ea3f9" + integrity sha512-2oD/ZqD4Gj41UdFeWZxegH3cVEEH/Z6Bhr/XvwTtGv66737XkR4C9IqEkebCuqArqBJQSj4AgNHHiN1okzD/wQ== + dependencies: + "@typescript-eslint/types" "4.4.1" + "@typescript-eslint/visitor-keys" "4.4.1" + +"@typescript-eslint/types@4.4.1": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.4.1.tgz#c507b35cf523bc7ba00aae5f75ee9b810cdabbc1" + integrity sha512-KNDfH2bCyax5db+KKIZT4rfA8rEk5N0EJ8P0T5AJjo5xrV26UAzaiqoJCxeaibqc0c/IvZxp7v2g3difn2Pn3w== + +"@typescript-eslint/typescript-estree@4.4.1": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.4.1.tgz#598f6de488106c2587d47ca2462c60f6e2797cb8" + integrity sha512-wP/V7ScKzgSdtcY1a0pZYBoCxrCstLrgRQ2O9MmCUZDtmgxCO/TCqOTGRVwpP4/2hVfqMz/Vw1ZYrG8cVxvN3g== + dependencies: + "@typescript-eslint/types" "4.4.1" + "@typescript-eslint/visitor-keys" "4.4.1" + debug "^4.1.1" + globby "^11.0.1" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/visitor-keys@4.4.1": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.4.1.tgz#1769dc7a9e2d7d2cfd3318b77ed8249187aed5c3" + integrity sha512-H2JMWhLaJNeaylSnMSQFEhT/S/FsJbebQALmoJxMPMxLtlVAMy2uJP/Z543n9IizhjRayLSqoInehCeNW9rWcw== + dependencies: + "@typescript-eslint/types" "4.4.1" + eslint-visitor-keys "^2.0.0" + +"@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== + dependencies: + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + +"@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== + +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== + dependencies: + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== + +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" - integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" - integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== - -"@webassemblyjs/wasm-edit@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" - integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/helper-wasm-section" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-opt" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/wasm-gen@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" - integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wasm-opt@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" - integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - -"@webassemblyjs/wasm-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" - integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wast-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" - integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/floating-point-hex-parser" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-code-frame" "1.8.5" - "@webassemblyjs/helper-fsm" "1.8.5" +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" "@xtuc/long" "4.2.2" -"@webassemblyjs/wast-printer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" - integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" "@xtuc/long" "4.2.2" +"@webpack-cli/generators@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/generators/-/generators-1.0.1.tgz#3475689d1f8610923ae3d0180457d26409ac0a1e" + integrity sha512-MPaOezICviBfgYc+r8WBTkyM8gOe3qBR5t32roPqyhL4SJmN4f82ZYvVomLEx+YFBQ5uksCauSHAGoJNXinymg== + dependencies: + "@webpack-cli/utils" "^1.0.1" + "@webpack-cli/webpack-scaffold" "^1.0.1" + colorette "^1.2.1" + log-symbols "^4.0.0" + mkdirp "^1.0.4" + yeoman-generator "^4.12.0" + +"@webpack-cli/info@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.0.1.tgz#9e0fe0163637b7f95583669a39aec30c566bdd7c" + integrity sha512-C6OJTxTLgTjBuNKLlseQ2HHjgEGTcgIFcrJd67K3pM2LcYJNWT6VFaPzk9Go0yTZ9km9awm8sq2hW3Hm32NBeQ== + dependencies: + colorette "^1.2.1" + envinfo "^7.5.0" + prettyjson "^1.2.1" + +"@webpack-cli/init@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/init/-/init-1.0.1.tgz#c09da90b6d7cf57d3c5ce96d4a622696f15771e2" + integrity sha512-OmhDC1jjhhX13mNt+emTPR7u18nrAWKOk/nIAg8XRFdZU2VUBPJbOK3/6xmqXnWKByZVJClvaeUjvgVQBnQmZw== + dependencies: + "@webpack-cli/generators" "^1.0.1" + "@webpack-cli/utils" "^1.0.1" + +"@webpack-cli/serve@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.0.1.tgz#28abe7dcb18224ccd4b4e2d37f70e5be66c3d6a9" + integrity sha512-WGMaTMTK6NOe29Hw1WBEok9vGLfKg5C6jWzNOS/6HH1YadR+RL+TRWRcSyc81Dzulljhk/Ree9mrDM4Np9GGOQ== + +"@webpack-cli/utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/utils/-/utils-1.0.1.tgz#f5512693ea490e946aaed9e91f9502df7f4d4ede" + integrity sha512-G8UKA+B85/5X+pM85P0Knx43vwFS1W9WDseeif/15jbtDTib8jaNC+rD9SBvFcllmnqdfFXpkcrmWMW4A744dg== + dependencies: + colorette "^1.2.1" + cross-spawn "^7.0.3" + enquirer "^2.3.6" + execa "^4.0.0" + findup-sync "^4.0.0" + global-modules "^2.0.0" + got "^10.7.0" + jscodeshift "^0.7.0" + p-each-series "^2.1.0" + yeoman-environment "^2.8.1" + yeoman-generator "^4.7.2" + +"@webpack-cli/webpack-scaffold@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/webpack-scaffold/-/webpack-scaffold-1.0.1.tgz#6aed6a762433eb3888f0fd63ddf8d5d6b1ff18e5" + integrity sha512-AfnpwDJv2hxwpaM6Ljz0eNa7ayHVviPNWN/76RjlFxMGfT0K7O6IWw2oDvikqko227DClV4xO/5CL1/tz0LGhw== + dependencies: + jscodeshift "^0.7.0" + yeoman-generator "^4.7.2" + "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -279,17 +1728,25 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -"@zeit/schemas@2.6.0": - version "2.6.0" - resolved "https://registry.yarnpkg.com/@zeit/schemas/-/schemas-2.6.0.tgz#004e8e553b4cd53d538bd38eac7bcbf58a867fe3" - integrity sha512-uUrgZ8AxS+Lio0fZKAipJjAh415JyrOZowliZAzmnJSsf7piVL5w+G0+gFJ0KSu3QRhvui/7zuvpLz03YjXAhg== +JSONStream@^1.2.1, JSONStream@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +abab@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -accepts@~1.3.5, accepts@~1.3.7: +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== @@ -297,97 +1754,66 @@ accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn-jsx@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" - integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" -acorn-walk@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e" - integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ== +acorn-jsx@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== -acorn@^6.2.1: - version "6.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" - integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA== +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" - integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== +acorn@^6.4.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -acorn@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" - integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== +acorn@^7.1.1, acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -agent-base@4, agent-base@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" - integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: - es6-promisify "^5.0.0" + clean-stack "^2.0.0" + indent-string "^4.0.0" ajv-errors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== -ajv-keywords@^3.0.0, ajv-keywords@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" - integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv-keywords@^3.1.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d" - integrity sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw== - -ajv@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.11.0.tgz#c3607cbc8ae392d8a5a536f25b21f8e5f3f87fe9" - integrity sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA== +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.3.tgz#71a569d189ecf4f4f321224fecb166f071dd90f9" - integrity sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg== - dependencies: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^6.0.1, ajv@^6.10.0, ajv@^6.10.2: - version "6.10.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" - integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== - dependencies: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^6.1.0, ajv@^6.9.1: - version "6.10.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" - integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== - dependencies: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -amqplib@0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/amqplib/-/amqplib-0.5.5.tgz#698f0cb577e0591954a90572fcb3b8998a76fd40" - integrity sha512-sWx1hbfHbyKMw6bXOK2k6+lHL8TESWxjAx5hG8fBtT7wcxoXNIsFxZMnFyBjxt3yL14vn7WqBDe5U6BGOadtLg== +amqplib@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/amqplib/-/amqplib-0.6.0.tgz#87857c7c95d56d22438ced4cf1f7e5f0dc43b309" + integrity sha512-zXCh4jQ77TBZe1YtvZ1n7sUxnTjnNagpy8MVi2yc1ive239pS3iLwm4e4d5o4XZGx1BdTKQ/U0ZmaDU3c8MxYQ== dependencies: bitsyntax "~0.1.0" bluebird "^3.5.2" @@ -396,19 +1822,34 @@ amqplib@0.5.5: safe-buffer "~5.1.2" url-parse "~1.4.3" -ansi-align@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" - integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= +ansi-align@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" + integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== dependencies: - string-width "^2.0.0" + string-width "^3.0.0" -ansi-escapes@^4.2.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d" - integrity sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg== +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== dependencies: - type-fest "^0.8.1" + type-fest "^0.11.0" + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= ansi-regex@^2.0.0: version "2.1.1" @@ -430,11 +1871,6 @@ ansi-regex@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -442,22 +1878,13 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: - "@types/color-name" "^1.1.1" color-convert "^2.0.1" -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" - integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== - dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" - anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -466,28 +1893,23 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -aproba@^1.0.3, aproba@^1.1.1: +anymatch@^3.0.3, anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -arch@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.1.tgz#8f5c2731aa35a30929221bb0640eed65175ec84e" - integrity sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg== - -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -arg@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arg/-/arg-2.0.0.tgz#c06e7ff69ab05b3a4a03ebe0407fac4cba657545" - integrity sha512-XxNTUzKnz1ctK3ZIcI2XUPlD96wbHP2nGqkPKpvk/HNRlPveYrXIVSTk9m3LcqOgDPg3B1nMvdV/K8wZd7PG4w== +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== argparse@^1.0.7: version "1.0.10" @@ -496,19 +1918,20 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= +aria-query@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" + integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== dependencies: - arr-flatten "^1.0.1" + "@babel/runtime" "^7.10.2" + "@babel/runtime-corejs3" "^7.10.2" arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= -arr-flatten@^1.0.1, arr-flatten@^1.1.0: +arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== @@ -518,35 +1941,103 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-back@^4.0.0, array-back@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.1.tgz#9b80312935a52062e1a233a9c7abeb5481b30e90" + integrity sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg== + +array-differ@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" + integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-includes@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" + integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + is-string "^1.0.5" + +array-union@^1.0.1, array-union@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== +array.prototype.flat@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" + integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== dependencies: bn.js "^4.0.0" inherits "^2.0.1" minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= assert@^1.1.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" - integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== dependencies: + object-assign "^4.1.1" util "0.10.3" assign-symbols@^1.0.0: @@ -554,665 +2045,184 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + +ast-types@0.13.3: + version "0.13.3" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.3.tgz#50da3f28d17bdbc7969a3a2d83a0e4a72ae755a7" + integrity sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA== + astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== -async-each@^1.0.0, async-each@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.2.tgz#8b8a7ca2a658f927e9f307d6d1a42f4199f0f735" - integrity sha512-6xrbvN0MOBKSJDdonmSSz2OwFSgxRaVtBDes26mj9KIGtDo+g9xosFRSC+i1gQh2oAN/tQ62AI/pGZGQjVOiRg== +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== async-limiter@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" - integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== - -atob@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -axios@0.19.2: - version "0.19.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" - integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== +async-mqtt@2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/async-mqtt/-/async-mqtt-2.6.1.tgz#7cca37b0c766e00d7b0b33c9eb236e216ed06248" + integrity sha512-EkXAwRzwMaPC6ji0EvNeM5OMe6VjMhEKVJJUN7gu/hGzkcDpZtaI34nUwdwCMbjQB3pnuSOHqQMFKsUpg+D8kA== dependencies: - follow-redirects "1.5.10" + mqtt "^4.1.0" -babel-cli@6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1" - integrity sha1-UCq1SHTX24itALiHoGODzgPQAvE= - dependencies: - babel-core "^6.26.0" - babel-polyfill "^6.26.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - commander "^2.11.0" - convert-source-map "^1.5.0" - fs-readdir-recursive "^1.0.0" - glob "^7.1.2" - lodash "^4.17.4" - output-file-sync "^1.1.2" - path-is-absolute "^1.0.1" - slash "^1.0.0" - source-map "^0.5.6" - v8flags "^2.1.1" - optionalDependencies: - chokidar "^1.6.1" +async@0.9.x: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-core@6.26.3, babel-core@^6.26.0: - version "6.26.3" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" - integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.1" - debug "^2.6.9" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.8" - slash "^1.0.0" - source-map "^0.5.7" - -babel-eslint@8.2.6: - version "8.2.6" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.2.6.tgz#6270d0c73205628067c0f7ae1693a9e797acefd9" - integrity sha512-aCdHjhzcILdP8c9lej7hvXKvQieyRt20SF102SIGyY4cUIiw6UaAtK4j2o3dXX74jEmy0TJ0CEhv4fTIM3SzcA== - dependencies: - "@babel/code-frame" "7.0.0-beta.44" - "@babel/traverse" "7.0.0-beta.44" - "@babel/types" "7.0.0-beta.44" - babylon "7.0.0-beta.44" - eslint-scope "3.7.1" - eslint-visitor-keys "^1.0.0" - -babel-generator@^6.26.0: - version "6.26.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" - -babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" - integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= - dependencies: - babel-helper-explode-assignable-expression "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-define-map@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" - integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-explode-assignable-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" - integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo= - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-optimise-call-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" - integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-remap-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" - integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-replace-supers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo= - dependencies: - babel-helper-optimise-call-expression "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-loader@7.1.5: - version "7.1.5" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.5.tgz#e3ee0cd7394aa557e013b02d3e492bfd07aa6d68" - integrity sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw== - dependencies: - find-cache-dir "^1.0.0" - loader-utils "^1.0.2" - mkdirp "^0.5.1" + lodash "^4.17.14" -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-check-es2015-constants@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= - -babel-plugin-syntax-class-properties@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" - integrity sha1-1+sjt5oxf4VDlixQW4J8fWysJ94= - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= - -babel-plugin-syntax-flow@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" - integrity sha1-TDqyCiryaqIM0lmVw5jE63AxDI0= - -babel-plugin-syntax-object-rest-spread@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= - -babel-plugin-syntax-trailing-function-commas@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= - -babel-plugin-transform-async-to-generator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" - integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-class-properties@6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" - integrity sha1-anl2PqYdM9NvN7YRqp3vgagbRqw= - dependencies: - babel-helper-function-name "^6.24.1" - babel-plugin-syntax-class-properties "^6.8.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-arrow-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoping@^6.23.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" - integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= - dependencies: - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-plugin-transform-es2015-classes@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= - dependencies: - babel-helper-define-map "^6.24.1" - babel-helper-function-name "^6.24.1" - babel-helper-optimise-call-expression "^6.24.1" - babel-helper-replace-supers "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-computed-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-destructuring@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-duplicate-keys@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" - integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-for-of@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: - version "6.26.2" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" - integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-types "^6.26.0" - -babel-plugin-transform-es2015-modules-systemjs@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-umd@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg= - dependencies: - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-object-super@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40= - dependencies: - babel-helper-replace-supers "^6.24.1" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-parameters@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= - dependencies: - babel-helper-call-delegate "^6.24.1" - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-shorthand-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-template-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" - integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= - dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" - babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-flow-strip-types@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" - integrity sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988= - dependencies: - babel-plugin-syntax-flow "^6.18.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-object-rest-spread@6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" - integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.26.0" - -babel-plugin-transform-regenerator@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" - integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= - dependencies: - regenerator-transform "^0.10.0" +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -babel-plugin-transform-runtime@6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee" - integrity sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4= - dependencies: - babel-runtime "^6.22.0" +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= -babel-polyfill@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" - integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM= - dependencies: - babel-runtime "^6.26.0" - core-js "^2.5.0" - regenerator-runtime "^0.10.5" +aws4@^1.8.0: + version "1.10.1" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" + integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA== -babel-preset-env@1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" - integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-to-generator "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.23.0" - babel-plugin-transform-es2015-classes "^6.23.0" - babel-plugin-transform-es2015-computed-properties "^6.22.0" - babel-plugin-transform-es2015-destructuring "^6.23.0" - babel-plugin-transform-es2015-duplicate-keys "^6.22.0" - babel-plugin-transform-es2015-for-of "^6.23.0" - babel-plugin-transform-es2015-function-name "^6.22.0" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.22.0" - babel-plugin-transform-es2015-modules-commonjs "^6.23.0" - babel-plugin-transform-es2015-modules-systemjs "^6.23.0" - babel-plugin-transform-es2015-modules-umd "^6.23.0" - babel-plugin-transform-es2015-object-super "^6.22.0" - babel-plugin-transform-es2015-parameters "^6.23.0" - babel-plugin-transform-es2015-shorthand-properties "^6.22.0" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.22.0" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.23.0" - babel-plugin-transform-es2015-unicode-regex "^6.22.0" - babel-plugin-transform-exponentiation-operator "^6.22.0" - babel-plugin-transform-regenerator "^6.22.0" - browserslist "^3.2.6" - invariant "^2.2.2" - semver "^5.3.0" +axe-core@^3.5.4: + version "3.5.5" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-3.5.5.tgz#84315073b53fa3c0c51676c588d59da09a192227" + integrity sha512-5P0QZ6J5xGikH780pghEdbEKijCTrruK9KxtPZCFWUpef0f6GipO+xEZ5GKCb020mmqgbiNO6TcA55CriL784Q== -babel-preset-flow@6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d" - integrity sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0= +axios-mock-adapter@1.18.2: + version "1.18.2" + resolved "https://registry.yarnpkg.com/axios-mock-adapter/-/axios-mock-adapter-1.18.2.tgz#01fa9e88e692e8f1bbc1ad1200dde672486e03c7" + integrity sha512-e5aTsPy2Viov22zNpFTlid76W1Scz82pXeEwwCXdtO85LROhHAF8pHF2qDhiyMONLxKyY3lQ+S4UCsKgrlx8Hw== dependencies: - babel-plugin-transform-flow-strip-types "^6.22.0" + fast-deep-equal "^3.1.1" + is-buffer "^2.0.3" -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= +axios@0.20.0: + version "0.20.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.20.0.tgz#057ba30f04884694993a8cd07fa394cff11c50bd" + integrity sha512-ANA4rr2BDcmmAQLOKft2fufrtuvlqR+cXNNinUmvfeSNCOF98PZL+7M/v1zIdGo7OLjEA9J2gXJL+j4zGsl0bA== dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - -babel-runtime@6.26.0, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.24.1, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" + follow-redirects "^1.10.0" -babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= +axios@^0.18.0: + version "0.18.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3" + integrity sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g== dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon@7.0.0-beta.44: - version "7.0.0-beta.44" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.44.tgz#89159e15e6e30c5096e22d738d8c0af8a0e8ca1d" - integrity sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g== + follow-redirects "1.5.10" + is-buffer "^2.0.2" -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== +axobject-query@^2.1.2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" + integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== + +babel-core@^7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== + +babel-jest@^26.5.2: + version "26.5.2" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.5.2.tgz#164f367a35946c6cf54eaccde8762dec50422250" + integrity sha512-U3KvymF3SczA3vOL/cgiUFOznfMET+XDIXiWnoJV45siAp2pLMG8i2+/MGZlAC3f/F6Q40LR4M4qDrWZ9wkK8A== + dependencies: + "@jest/transform" "^26.5.2" + "@jest/types" "^26.5.2" + "@types/babel__core" "^7.1.7" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^26.5.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + slash "^3.0.0" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-istanbul@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" + integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^4.0.0" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^26.5.0: + version "26.5.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.5.0.tgz#3916b3a28129c29528de91e5784a44680db46385" + integrity sha512-ck17uZFD3CDfuwCLATWZxkkuGGFhMij8quP8CNhwj8ek1mqFgbFzRJ30xwC04LLscj/aKsVFfRST+b5PT7rSuw== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" + "@types/babel__traverse" "^7.0.6" + +babel-preset-current-node-syntax@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.4.tgz#826f1f8e7245ad534714ba001f84f7e906c3b615" + integrity sha512-5/INNCYhUGqw7VbVjT/hb3ucjgkVHKXY7lX3ZjlN4gm565VyFmJUrJ/h+h16ECVB38R/9SF6aACydpKMLZ/c9w== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +babel-preset-jest@^26.5.0: + version "26.5.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.5.0.tgz#f1b166045cd21437d1188d29f7fba470d5bdb0e7" + integrity sha512-F2vTluljhqkiGSJGBg/jOruA8vIIIL11YrxRcO7nviNTMbbofPSHwnm8mgP7d/wS7wRSexRoI6X1A6T74d4LQA== + dependencies: + babel-plugin-jest-hoist "^26.5.0" + babel-preset-current-node-syntax "^0.1.3" balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base64-js@^1.0.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" - integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== +base64-js@^1.0.2, base64-js@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== base@^0.11.1: version "0.11.2" @@ -1227,10 +2237,17 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" -before-after-hook@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-1.4.0.tgz#2b6bf23dca4f32e628fd2747c10a37c74a4b484d" - integrity sha512-l5r9ir56nda3qu14nAXIlyq1MmUSs0meCIaFAh8HwkFwP1F8eToOuS3ah2VAHHcY04jaYD7FpJC5JTXHYRbkzg== +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" bfj@^6.1.1: version "6.1.2" @@ -1242,11 +2259,6 @@ bfj@^6.1.1: hoopy "^0.1.4" tryer "^1.0.1" -big-integer@^1.6.17: - version "1.6.43" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.43.tgz#8ac15bf13e93e509500859061233e19d8d0d99d1" - integrity sha512-9dULc9jsKmXl0Aeunug8wbF+58n+hQoFjqClN7WeZwGLh0XJUWyJJ9Ee+Ep+Ql/J9fRsTVaeThp8MhiCCrY0Jg== - big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -1257,13 +2269,22 @@ binary-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== -binary@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" - integrity sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk= +binary-extensions@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" + integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== + +binaryextensions@^2.1.2: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.3.0.tgz#1d269cbf7e6243ea886aa41453c3651ccbe13c22" + integrity sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== dependencies: - buffers "~0.1.1" - chainsaw "~0.1.0" + file-uri-to-path "1.0.0" bitsyntax@~0.1.0: version "0.1.0" @@ -1274,33 +2295,29 @@ bitsyntax@~0.1.0: debug "~2.6.9" safe-buffer "~5.1.2" -bl@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" - integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== +bl@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489" + integrity sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg== dependencies: - readable-stream "^2.3.5" - safe-buffer "^5.1.1" + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" -bluebird@3.7.2: +bluebird@^3.5.2, bluebird@^3.5.5: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bluebird@^3.5.2, bluebird@^3.5.5: - version "3.5.5" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" - integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: + version "4.11.9" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" + integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== -bluebird@~3.4.1: - version "3.4.7" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" - integrity sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM= - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== +bn.js@^5.1.1: + version "5.1.3" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" + integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== body-parser@1.19.0: version "1.19.0" @@ -1318,18 +2335,31 @@ body-parser@1.19.0: raw-body "2.4.0" type-is "~1.6.17" -boxen@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" - integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= dependencies: - ansi-align "^2.0.0" - camelcase "^4.0.0" - chalk "^2.0.1" - cli-boxes "^1.0.0" - string-width "^2.0.0" - term-size "^1.2.0" - widest-line "^2.0.0" + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boxen@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" + integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^5.3.1" + chalk "^3.0.0" + cli-boxes "^2.2.0" + string-width "^4.1.0" + term-size "^2.1.0" + type-fest "^0.8.1" + widest-line "^3.1.0" brace-expansion@^1.1.7: version "1.1.11" @@ -1339,15 +2369,6 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -1364,11 +2385,23 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" +braces@^3.0.1, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -1400,7 +2433,7 @@ browserify-des@^1.0.0: inherits "^2.0.1" safe-buffer "^5.1.2" -browserify-rsa@^4.0.0: +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= @@ -1409,17 +2442,19 @@ browserify-rsa@^4.0.0: randombytes "^2.0.1" browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= - dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" browserify-zlib@^0.2.0: version "0.2.0" @@ -1428,57 +2463,73 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^3.2.6: - version "3.2.8" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" - integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== +browserslist@^4.12.0, browserslist@^4.8.5: + version "4.14.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.5.tgz#1c751461a102ddc60e40993639b709be7f2c4015" + integrity sha512-Z+vsCZIvCBvqLoYkBFTwEYH3v5MCQbsAjp50ERycpOjnPmolg1Gjy4+KaWWpm8QOJt9GHkhdqAl14NpCX73CWA== dependencies: - caniuse-lite "^1.0.30000844" - electron-to-chromium "^1.3.47" + caniuse-lite "^1.0.30001135" + electron-to-chromium "^1.3.571" + escalade "^3.1.0" + node-releases "^1.1.61" -btoa-lite@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" - integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc= +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" -buffer-from@^1.0.0: +buffer-from@1.x, buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -buffer-indexof-polyfill@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.1.tgz#a9fb806ce8145d5428510ce72f278bb363a638bf" - integrity sha1-qfuAbOgUXVQoUQznLyeLs2OmOL8= +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== buffer-more-ints@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz#ef4f8e2dddbad429ed3828a9c55d44f05c611422" integrity sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg== -buffer-shims@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" - integrity sha1-mXjOMXOIxkmth5MCjDR37wRKi1E= - buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= buffer@^4.3.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" - integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" isarray "^1.0.0" -buffers@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" - integrity sha1-skV5w77U1tOWru5tmorn9Ugqt7s= +buffer@^5.5.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" + integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + +bufferutil@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.1.tgz#3a177e8e5819a1243fe16b63a199951a7ad8d4a7" + integrity sha512-xowrxvpxojqkagPcWRQVXZl0YXhRhAtBEIq3VoER1NH5Mw1n1o0ojdspp+GS2J//2gCVyrzQDApQ4unGF+QOoA== + dependencies: + node-gyp-build "~3.7.0" builtin-status-codes@^3.0.0: version "3.0.0" @@ -1496,9 +2547,9 @@ bytes@3.1.0: integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== cacache@^12.0.2: - version "12.0.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" - integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== dependencies: bluebird "^3.5.5" chownr "^1.1.1" @@ -1516,6 +2567,29 @@ cacache@^12.0.2: unique-filename "^1.1.1" y18n "^4.0.0" +cacache@^15.0.5: + version "15.0.5" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" + integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== + dependencies: + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.0" + tar "^6.0.2" + unique-filename "^1.1.1" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -1531,6 +2605,45 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +cacheable-lookup@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-2.0.1.tgz#87be64a18b925234875e10a9bb1ebca4adce6b38" + integrity sha512-EMMbsiOTcdngM/K6gV/OxF2x0t07+vMOWxZNSCRQMjO2MY2nhZQ6OYhOOpyQrbhqsgtvKGI7hcq6xjnA92USjg== + dependencies: + "@types/keyv" "^3.1.1" + keyv "^4.0.0" + +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + +cacheable-request@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.1.tgz#062031c2856232782ed694a257fa35da93942a58" + integrity sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^4.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^2.0.0" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + callback-stream@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/callback-stream/-/callback-stream-1.1.0.tgz#4701a51266f06e06eaa71fc17233822d875f4908" @@ -1540,47 +2653,43 @@ callback-stream@^1.0.2: readable-stream "> 1.0.0 < 3.0.0" callsites@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.0.0.tgz#fb7eb569b72ad7a45812f93fd9430a3e410b3dd3" - integrity sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw== - -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= - -camelcase@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase@^5.0.0: +camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-lite@^1.0.30000844: - version "1.0.30000957" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000957.tgz#fb1026bf184d7d62c685205358c3b24b9e29f7b3" - integrity sha512-8wxNrjAzyiHcLXN/iunskqQnJquQQ6VX8JHfW5kLgAPRSiSuKZiNfmIkP5j7jgyXqAQBSoXyJxfnbCFS0ThSiQ== +camelcase@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.1.0.tgz#27dc176173725fb0adf8a48b647f4d7871944d78" + integrity sha512-WCMml9ivU60+8rEJgELlFp1gxFcEGxwYleE3bziHEDeqsqAWGHdimB7beBFGjLzVNgPGyDsfgXLQEYMpmIFnVQ== -chainsaw@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" - integrity sha1-XqtQsor+WAdNDVgpE4iCi15fvJg= - dependencies: - traverse ">=0.3.0 <0.4" +caniuse-lite@^1.0.30001135: + version "1.0.30001148" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001148.tgz#dc97c7ed918ab33bf8706ddd5e387287e015d637" + integrity sha512-E66qcd0KMKZHNJQt9hiLZGE3J4zuTqE1OnU53miEVtylFbwOEmeA5OsRu90noZful+XGSQOni1aT2tiqu/9yYw== -chalk@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" - integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" + rsvp "^4.8.4" + +capture-stack-trace@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" + integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1589,7 +2698,7 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4. escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@3.0.0: +chalk@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== @@ -1597,23 +2706,25 @@ chalk@3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -charenc@~0.0.1: +charenc@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= @@ -1623,26 +2734,10 @@ check-types@^8.0.3: resolved "https://registry.yarnpkg.com/check-types/-/check-types-8.0.3.tgz#3356cca19c889544f2d7a95ed49ce508a0ecf552" integrity sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ== -chokidar@^1.6.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - -chokidar@^2.0.2: - version "2.1.5" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.5.tgz#0ae8434d962281a5f56c72869e79cb6d9d86ad4d" - integrity sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A== +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== dependencies: anymatch "^2.0.0" async-each "^1.0.1" @@ -1658,10 +2753,30 @@ chokidar@^2.0.2: optionalDependencies: fsevents "^1.2.7" +chokidar@^3.2.2, chokidar@^3.4.1: + version "3.4.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" + integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.4.0" + optionalDependencies: + fsevents "~2.1.2" + chownr@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" - integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== chrome-trace-event@^1.0.2: version "1.0.2" @@ -1670,6 +2785,11 @@ chrome-trace-event@^1.0.2: dependencies: tslib "^1.9.0" +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -1688,10 +2808,15 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" - integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-boxes@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== cli-cursor@^3.1.0: version "3.1.0" @@ -1700,27 +2825,17 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" -cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= - -clipboardy@1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-1.2.3.tgz#0526361bf78724c1f20be248d428e365433c07ef" - integrity sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA== +cli-table@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" + integrity sha1-9TsFJmqLGguTSz0IIebi3FkUriM= dependencies: - arch "^2.1.0" - execa "^0.8.0" + colors "1.0.3" -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== cliui@^5.0.0: version "5.0.0" @@ -1731,10 +2846,64 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" + +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= + +clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + +cloneable-readable@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" + integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== + dependencies: + inherits "^2.0.1" + process-nextick-args "^2.0.0" + readable-stream "^2.3.5" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== collection-visit@^1.0.0: version "1.0.0" @@ -1768,21 +2937,48 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +colorette@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" + integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== + +colors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= + colors@^1.1.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" - integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" -commander@^2.11.0, commander@^2.20.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" - integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== +command-line-usage@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.0.tgz#f28376a3da3361ff3d36cfd31c3c22c9a64c7cb6" + integrity sha512-Ew1clU4pkUeo6AFVDFxCbnN7GIZfXl48HIOQeFQnkO3oOqvpI7wdqtLRwv9iOCZ/7A+z4csVZeiDdEcj8g6Wiw== + dependencies: + array-back "^4.0.0" + chalk "^2.4.2" + table-layout "^1.0.0" + typical "^5.2.0" -commander@^2.18.0: +commander@^2.18.0, commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commander@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.1.0.tgz#f8d722b78103141006b66f4c7ba1e97315ba75bc" + integrity sha512-wl7PNrYWd2y5mp1OK/LhTlv8Ff4kQJQRXXAvF+uU/TPNiVJUxZLRYGj/B0y/lPGAVcSbJqH2Za/cvHmrPMC8mA== + commist@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/commist/-/commist-1.1.0.tgz#17811ec6978f6c15ee4de80c45c9beb77cee35d5" @@ -1796,28 +2992,33 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= +compare-versions@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" + integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== + component-emitter@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== -compressible@~2.0.14: - version "2.0.17" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" - integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw== +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== dependencies: - mime-db ">= 1.40.0 < 2" + mime-db ">= 1.43.0 < 2" -compression@1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.3.tgz#27e0e176aaf260f7f2c2813c3e440adb9f1993db" - integrity sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg== +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== dependencies: accepts "~1.3.5" bytes "3.0.0" - compressible "~2.0.14" + compressible "~2.0.16" debug "2.6.9" - on-headers "~1.0.1" + on-headers "~1.0.2" safe-buffer "5.1.2" vary "~1.1.2" @@ -1836,27 +3037,42 @@ concat-stream@^1.5.0, concat-stream@^1.6.2: readable-stream "^2.2.2" typedarray "^0.0.6" -console-browserify@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" - integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= +configstore@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" + integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== dependencies: - date-now "^0.1.4" + dot-prop "^5.2.0" + graceful-fs "^4.1.2" + make-dir "^3.0.0" + unique-string "^2.0.0" + write-file-atomic "^3.0.0" + xdg-basedir "^4.0.0" -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= +confusing-browser-globals@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" + integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= content-disposition@0.5.3: version "0.5.3" @@ -1870,10 +3086,10 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.5.0, convert-source-map@^1.5.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" - integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== +convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: safe-buffer "~5.1.1" @@ -1904,25 +3120,51 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js@^2.4.0, core-js@^2.5.0: - version "2.6.5" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895" - integrity sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A== +core-js-compat@^3.6.2: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" + integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== + dependencies: + browserslist "^4.8.5" + semver "7.0.0" + +core-js-pure@^3.0.0: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" + integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA== -core-util-is@~1.0.0: +core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +cosmiconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== dependencies: bn.js "^4.1.0" - elliptic "^6.0.0" + elliptic "^6.5.3" + +create-error-class@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= + dependencies: + capture-stack-trace "^1.0.0" -create-hash@^1.1.0, create-hash@^1.1.2: +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== @@ -1933,7 +3175,7 @@ create-hash@^1.1.0, create-hash@^1.1.2: ripemd160 "^2.0.1" sha.js "^2.4.0" -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== @@ -1945,14 +3187,14 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -cross-env@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.0.tgz#5a3b2ddce51ec713ea58f2fb79ce22e65b4f5479" - integrity sha512-rV6M9ldNgmwP7bx5u6rZsTbYidzwvrwIYZnT08hSGLcQCcggofgFW+sNe7IhA1SRauPS0QuLbbX+wdNtpqE5CQ== +cross-env@7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.2.tgz#bd5ed31339a93a3418ac4f3ca9ca3403082ae5f9" + integrity sha512-KZP/bMEOJEDCkDQAyRhu3RL2ZO/SUVrxQVI0G3YEQ+OLbRA3c6zgixe8Mq8a/z7+HKlNEjo8oiLUs8iRijY2Rw== dependencies: cross-spawn "^7.0.1" -cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: +cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -1963,25 +3205,16 @@ cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" - integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== +cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" which "^2.0.1" -crypt@~0.0.1: +crypt@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= @@ -2003,78 +3236,181 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" -cyclist@~0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" - integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== -d@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" - integrity sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8= +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: - es5-ext "^0.10.9" + cssom "~0.3.6" -date-now@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" - integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +damerau-levenshtein@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" + integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== + +dargs@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-6.1.0.tgz#1f3b9b56393ecf8caa7cbfd6c31496ffcfb9b272" + integrity sha512-5dVBvpBLBnPwSsYXqfybFyehMmC/EenKEcf23AhCTgTf48JFBbmJKqoZBsERDnjL0FyiVTYWdFsRfTLHxLyKdQ== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" -debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9, debug@~2.6.9: +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== + dependencies: + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + +dateformat@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" + integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9, debug@~2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@3.1.0, debug@=3.1.0: +debug@=3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== dependencies: ms "2.0.0" -debug@^3.1.0: +debug@^3.1.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== dependencies: ms "^2.1.1" -debug@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" + integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== dependencies: - ms "^2.1.1" + ms "2.1.2" -decamelize@^1.1.1, decamelize@^1.2.0: +decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +decimal.js@^10.2.0: + version "10.2.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" + integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== + decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= -decompress-response@^3.2.0: +decompress-response@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= dependencies: mimic-response "^1.0.0" -deep-extend@^0.6.0: +decompress-response@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-5.0.0.tgz#7849396e80e3d1eba8cb2f75ef4930f76461cb0f" + integrity sha512-TLZWWybuxWgoW7Lykv+gq9xvzOsUjQ9tF09Tj6NSTYGMTCHNXzrPnD6Hi+TgZq19PyTAGH4Ll/NIM/eTGglnMw== + dependencies: + mimic-response "^2.0.0" + +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-extend@^0.6.0, deep-extend@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deep-is@~0.1.3: +deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + +defer-to-connect@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.0.tgz#83d6b199db041593ac84d781b5222308ccf4c2c1" + integrity sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg== + +define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" @@ -2097,10 +3433,23 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -delegates@^1.0.0: +del@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== + dependencies: + "@types/glob" "^7.1.1" + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" + +delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= depd@~1.1.2: version "1.1.2" @@ -2108,9 +3457,9 @@ depd@~1.1.2: integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= des.js@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" - integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== dependencies: inherits "^2.0.1" minimalistic-assert "^1.0.0" @@ -2125,17 +3474,35 @@ detect-file@^1.0.0: resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= - dependencies: - repeating "^2.0.0" +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= +detect-node@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + +diff-sequences@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" + integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== + +diff-sequences@^26.5.0: + version "26.5.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.5.0.tgz#ef766cf09d43ed40406611f11c6d8d9dd8b2fefd" + integrity sha512-ZXx86srb/iYy6jG71k++wBN9P9J05UNQ5hQHQd9MtMPvcqXPx/vKU69jfHV637D00Q2gSgPk2D+jSx3l1lDW/Q== + +diff@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== diffie-hellman@^5.0.0: version "5.0.3" @@ -2146,6 +3513,56 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" +dir-glob@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== + dependencies: + arrify "^1.0.1" + path-type "^3.0.0" + +dir-glob@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" + integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== + dependencies: + path-type "^3.0.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -2158,12 +3575,33 @@ domain-browser@^1.1.1: resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -duplexer2@~0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== dependencies: - readable-stream "^2.0.2" + webidl-conversions "^5.0.0" + +dot-prop@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + dependencies: + is-obj "^2.0.0" + +dotenv@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== + +download-stats@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/download-stats/-/download-stats-0.3.4.tgz#67ea0c32f14acd9f639da704eef509684ba2dae7" + integrity sha512-ic2BigbyUWx7/CBbsfGjf71zUNZB4edBGC3oRliSzsoNmvyVx3Ycfp1w3vp2Y78Ee0eIIkjIEO5KzW0zThDGaA== + dependencies: + JSONStream "^1.2.1" + lazy-cache "^2.0.1" + moment "^2.15.1" duplexer3@^0.1.4: version "0.1.4" @@ -2171,11 +3609,11 @@ duplexer3@^0.1.4: integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= duplexer@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -duplexify@^3.4.2, duplexify@^3.6.0, duplexify@^3.6.1: +duplexify@^3.4.2, duplexify@^3.6.0: version "3.7.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== @@ -2185,6 +3623,22 @@ duplexify@^3.4.2, duplexify@^3.6.0, duplexify@^3.6.1: readable-stream "^2.0.0" stream-shift "^1.0.0" +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +editions@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/editions/-/editions-2.3.1.tgz#3bc9962f1978e801312fbd0aebfed63b49bfe698" + integrity sha512-ptGvkwTvGdGfC0hfhKg0MT+TRLRKGtUiWGBInxOm5pz7ssADezahjCUaYuZ8Dr+C05FW0AECIIPt4WBxVINEhA== + dependencies: + errlop "^2.0.0" + semver "^6.3.0" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -2195,15 +3649,22 @@ ejs@^2.6.1: resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== -electron-to-chromium@^1.3.47: - version "1.3.122" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.122.tgz#b32a0805f48557bd3c3b8104eadc7fa511b14a9a" - integrity sha512-3RKoIyCN4DhP2dsmleuFvpJAIDOseWH88wFYBzb22CSwoFDSWRc4UAMfrtc9h8nBdJjTNIN3rogChgOy6eFInw== +ejs@^3.0.1: + version "3.1.5" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.5.tgz#aed723844dc20acb4b170cd9ab1017e476a0d93b" + integrity sha512-dldq3ZfFtgVTJMLjOe+/3sROTzALlL9E34V4/sDtUd/KlBSS0s6U1/+WPE1B4sj9CXHJpL1M6rhNJnc9Wbal9w== + dependencies: + jake "^10.6.1" + +electron-to-chromium@^1.3.571: + version "1.3.578" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.578.tgz#e6671936f4571a874eb26e2e833aa0b2c0b776e0" + integrity sha512-z4gU6dA1CbBJsAErW5swTGAaU2TBzc2mPAonJb00zqW1rOraDo2zfBMDRvaz9cVic+0JEZiYbHWPw/fTaZlG2Q== -elliptic@^6.0.0: - version "6.4.1" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" - integrity sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ== +elliptic@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" + integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== dependencies: bn.js "^4.4.0" brorand "^1.0.1" @@ -2213,6 +3674,11 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" +emittery@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.1.tgz#c02375a927a40948c0345cc903072597f5270451" + integrity sha512-d34LN4L6h18Bzz9xpoku2nPwKxCPlPMr3EEKTkoEBi+1/+b0lcRkRJ1UVyyZaKNeqGR3swcGl6s390DNO4YVgQ== + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -2223,10 +3689,15 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= +emoji-regex@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.0.0.tgz#48a2309cc8a1d2e9d23bc6a67c39b63032e76ea4" + integrity sha512-6p1NII1Vm62wni/VR/cUMauVQoxmLVb9csqQlvLz+hO2gk8U2UYDfXHQSUYIBKmZwAKz867IDqG7B+u0mj+M6w== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== encodeurl@~1.0.2: version "1.0.2" @@ -2234,21 +3705,38 @@ encodeurl@~1.0.2: integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" - integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" -enhanced-resolve@4.1.0, enhanced-resolve@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" - integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== +enhanced-resolve@^4.0.0, enhanced-resolve@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" + integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ== dependencies: graceful-fs "^4.1.2" - memory-fs "^0.4.0" + memory-fs "^0.5.0" tapable "^1.0.0" +enquirer@^2.3.4, enquirer@^2.3.5, enquirer@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +envinfo@^7.5.0: + version "7.7.3" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.3.tgz#4b2d8622e3e7366afb8091b23ed95569ea0208cc" + integrity sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA== + +errlop@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/errlop/-/errlop-2.2.0.tgz#1ff383f8f917ae328bebb802d6ca69666a42d21b" + integrity sha512-e64Qj9+4aZzjzzFpZC7p5kmm/ccCrbLhAJplhsDXQFs87XTsXwOpH4s1Io2s90Tau/8r2j9f4l/thhDevRjzxw== + errno@^0.1.3, errno@~0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" @@ -2256,21 +3744,72 @@ errno@^0.1.3, errno@~0.1.7: dependencies: prr "~1.0.1" -error-ex@^1.2.0: +error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" -es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.49" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.49.tgz#059a239de862c94494fec28f8150c977028c6c5e" - integrity sha512-3NMEhi57E31qdzmYp2jwRArIUsj1HI/RxbQ4bgnSB+AIKIxsAmTiK83bYMifIcpWvEc3P1X30DhUKOqEtF/kvg== +error@^7.0.2: + version "7.2.1" + resolved "https://registry.yarnpkg.com/error/-/error-7.2.1.tgz#eab21a4689b5f684fc83da84a0e390de82d94894" + integrity sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA== + dependencies: + string-template "~0.2.1" + +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: + version "1.17.7" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" + integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-abstract@^1.18.0-next.0, es-abstract@^1.18.0-next.1: + version "1.18.0-next.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" + integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-negative-zero "^2.0.0" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@~0.10.14: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== dependencies: es6-iterator "~2.0.3" - es6-symbol "~3.1.1" - next-tick "^1.0.0" + es6-symbol "~3.1.3" + next-tick "~1.0.0" es6-iterator@~2.0.1, es6-iterator@~2.0.3: version "2.0.3" @@ -2293,18 +3832,6 @@ es6-map@^0.1.5: es6-symbol "~3.1.1" event-emitter "~0.3.5" -es6-promise@^4.0.3: - version "4.2.6" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.6.tgz#b685edd8258886365ea62b57d30de28fadcd974f" - integrity sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q== - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= - dependencies: - es6-promise "^4.0.3" - es6-set@~0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" @@ -2316,7 +3843,7 @@ es6-set@~0.1.5: es6-symbol "3.1.1" event-emitter "~0.3.5" -es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1: +es6-symbol@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= @@ -2324,6 +3851,24 @@ es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1: d "1" es5-ext "~0.10.14" +es6-symbol@^3.1.1, es6-symbol@~3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +escalade@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-goat@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" + integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -2334,13 +3879,103 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -eslint-scope@3.7.1: - version "3.7.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" - integrity sha1-PWPD7f2gLgbgGkUq2IyqzHzctug= +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escodegen@^1.14.1: + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-airbnb-base@^14.2.0: + version "14.2.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.0.tgz#fe89c24b3f9dc8008c9c0d0d88c28f95ed65e9c4" + integrity sha512-Snswd5oC6nJaevs3nZoLSTvGJBvzTfnBqOIArkf3cbyTyq9UD79wOk8s+RiL6bhca0p/eRO6veczhf6A/7Jy8Q== + dependencies: + confusing-browser-globals "^1.0.9" + object.assign "^4.1.0" + object.entries "^1.1.2" + +eslint-config-airbnb@18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-18.2.0.tgz#8a82168713effce8fc08e10896a63f1235499dcd" + integrity sha512-Fz4JIUKkrhO0du2cg5opdyPKQXOI2MvF8KUvN2710nJMT6jaRUpRE2swrJftAjVGL7T1otLM5ieo5RqS1v9Udg== + dependencies: + eslint-config-airbnb-base "^14.2.0" + object.assign "^4.1.0" + object.entries "^1.1.2" + +eslint-import-resolver-node@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-loader@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-4.0.2.tgz#386a1e21bcb613b3cf2d252a3b708023ccfb41ec" + integrity sha512-EDpXor6lsjtTzZpLUn7KmXs02+nIjGcgees9BYjNkWra3jVq5vVa8IoCKgzT2M7dNNeoMBtaSG83Bd40N3poLw== + dependencies: + find-cache-dir "^3.3.1" + fs-extra "^8.1.0" + loader-utils "^2.0.0" + object-hash "^2.0.3" + schema-utils "^2.6.5" + +eslint-module-utils@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-import@2.22.1: + version "2.22.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" + integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== + dependencies: + array-includes "^3.1.1" + array.prototype.flat "^1.2.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.4" + eslint-module-utils "^2.6.0" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.1" + read-pkg-up "^2.0.0" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" + +eslint-plugin-jsx-a11y@6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.3.1.tgz#99ef7e97f567cc6a5b8dd5ab95a94a67058a2660" + integrity sha512-i1S+P+c3HOlBJzMFORRbC58tHa65Kbo8b52/TwCwSKLohwvpfT5rm2GjGWzOHTEuq4xxf2aRlHHTtmExDQOP+g== + dependencies: + "@babel/runtime" "^7.10.2" + aria-query "^4.2.2" + array-includes "^3.1.1" + ast-types-flow "^0.0.7" + axe-core "^3.5.4" + axobject-query "^2.1.2" + damerau-levenshtein "^1.0.6" + emoji-regex "^9.0.0" + has "^1.0.3" + jsx-ast-utils "^2.4.1" + language-tags "^1.0.5" eslint-scope@^4.0.3: version "4.0.3" @@ -2350,47 +3985,49 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" - integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== +eslint-scope@^5.0.0, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: - esrecurse "^4.1.0" + esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-utils@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== +eslint-utils@^2.0.0, eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" - integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -eslint-visitor-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" - integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== +eslint-visitor-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" + integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== -eslint@6.8.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" - integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== +eslint@7.11.0: + version "7.11.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.11.0.tgz#aaf2d23a0b5f1d652a08edacea0c19f7fadc0b3b" + integrity sha512-G9+qtYVCHaDi1ZuWzBsOWo2wSwd70TXnU6UHA3cTYHp7gCTXZcpggWFoUVAMRarg68qtPoNfFbzPh+VdOgmwmw== dependencies: "@babel/code-frame" "^7.0.0" + "@eslint/eslintrc" "^0.1.3" ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" + chalk "^4.0.0" + cross-spawn "^7.0.2" debug "^4.0.1" doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.4.3" - eslint-visitor-keys "^1.1.0" - espree "^6.1.2" - esquery "^1.0.1" + enquirer "^2.3.5" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.0" + esquery "^1.2.0" esutils "^2.0.2" file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" @@ -2399,62 +4036,65 @@ eslint@6.8.0: ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^7.0.0" is-glob "^4.0.0" js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.14" + levn "^0.4.1" + lodash "^4.17.19" minimatch "^3.0.4" - mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.3" + optionator "^0.9.1" progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" table "^5.2.3" text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^6.1.2: - version "6.1.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" - integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA== +espree@^7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348" + integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw== dependencies: - acorn "^7.1.0" - acorn-jsx "^5.1.0" - eslint-visitor-keys "^1.1.0" + acorn "^7.4.0" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.3.0" -esprima@^4.0.0: +esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" - integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== +esquery@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== dependencies: - estraverse "^4.0.0" + estraverse "^5.1.0" -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== +esrecurse@^4.1.0, esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: - estraverse "^4.1.0" + estraverse "^5.2.0" -estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= +estraverse@^4.1.1, estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== etag@~1.8.1: version "1.8.1" @@ -2469,10 +4109,22 @@ event-emitter@~0.3.5: d "1" es5-ext "~0.10.14" +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + events@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" - integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== + version "3.2.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" + integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== + +eventsource@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== + dependencies: + original "^1.0.0" evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" @@ -2482,45 +4134,11 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -execa@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50" - integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw== - dependencies: - cross-spawn "^6.0.0" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" - integrity sha1-2NdrvBtVIX7RkP1t1J08d07PyNo= - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - +exec-sh@^0.3.2: + version "0.3.4" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" + integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== + execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -2534,12 +4152,25 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= - dependencies: - is-posix-bracket "^0.1.0" +execa@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" + integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= expand-brackets@^2.1.4: version "2.1.4" @@ -2554,13 +4185,6 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= - dependencies: - fill-range "^2.1.0" - expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" @@ -2568,7 +4192,19 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -express@^4.16.3: +expect@^26.5.3: + version "26.5.3" + resolved "https://registry.yarnpkg.com/expect/-/expect-26.5.3.tgz#89d9795036f7358b0a9a5243238eb8086482d741" + integrity sha512-kkpOhGRWGOr+TEFUnYAjfGvv35bfP+OlPtqPIJpOCR9DVtv8QV+p8zG0Edqafh80fsjeE+7RBcVUq1xApnYglw== + dependencies: + "@jest/types" "^26.5.2" + ansi-styles "^4.0.0" + jest-get-type "^26.3.0" + jest-matcher-utils "^26.5.2" + jest-message-util "^26.5.2" + jest-regex-util "^26.0.0" + +express@^4.16.3, express@^4.17.1: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== @@ -2604,6 +4240,13 @@ express@^4.16.3: utils-merge "1.0.1" vary "~1.1.2" +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -2619,27 +4262,20 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0: +extend@^3.0.0, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== external-editor@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" - integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== dependencies: chardet "^0.7.0" iconv-lite "^0.4.24" tmp "^0.0.33" -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= - dependencies: - is-extglob "^1.0.0" - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -2654,42 +4290,97 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +faker@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/faker/-/faker-5.1.0.tgz#e10fa1dec4502551aee0eb771617a7e7b94692e8" + integrity sha512-RrWKFSSA/aNLP0g3o2WW1Zez7/MnMr7xkiZmoCfAGZmdkDQZ6l2KtuXHN5XjdvpRjDl8+3vf+Rrtl06Z352+Mw== fast-deep-equal@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" - integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= +fast-glob@^2.0.2, fast-glob@^2.2.6: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" -fast-levenshtein@~2.0.6: +fast-glob@^3.1.1: + version "3.2.4" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" + integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -fast-url-parser@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d" - integrity sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0= +fastq@^1.6.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" + integrity sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= dependencies: - punycode "^1.3.2" + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.1: + version "0.11.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" figgy-pudding@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" - integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== figures@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec" - integrity sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg== + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== dependencies: escape-string-regexp "^1.0.5" @@ -2700,27 +4391,23 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +filelist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.1.tgz#f10d1a3ae86c1694808e8f20906f43d4c9132dbb" + integrity sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ== + dependencies: + minimatch "^3.0.4" filesize@^3.6.1: version "3.6.1" resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== -fill-range@^2.1.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" - integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^3.0.0" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -2731,6 +4418,13 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + finalhandler@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" @@ -2744,16 +4438,7 @@ finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-cache-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" - integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8= - dependencies: - commondir "^1.0.1" - make-dir "^1.0.0" - pkg-dir "^2.0.0" - -find-cache-dir@^2.1.0: +find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== @@ -2762,15 +4447,16 @@ find-cache-dir@^2.1.0: make-dir "^2.0.0" pkg-dir "^3.0.0" -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= +find-cache-dir@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" -find-up@^2.1.0: +find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= @@ -2784,16 +4470,38 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -findup-sync@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" - integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-versions@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" + integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== + dependencies: + semver-regex "^2.0.0" + +findup-sync@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-4.0.0.tgz#956c9cdde804052b881b428512905c4a5f2cdef0" + integrity sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ== dependencies: detect-file "^1.0.0" is-glob "^4.0.0" - micromatch "^3.0.4" + micromatch "^4.0.2" resolve-dir "^1.0.1" +first-chunk-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70" + integrity sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA= + dependencies: + readable-stream "^2.0.2" + flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -2804,35 +4512,14 @@ flat-cache@^2.0.1: write "1.0.3" flatted@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" - integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== - -flow-bin@0.100.0: - version "0.100.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.100.0.tgz#729902726658cfa0a81425d6401f9625cf9f5534" - integrity sha512-jcethhgrslBJukH7Z7883ohFFpzLrdsOEwHxvn5NwuTWbNaE71GAl55/PEBRJwYpDvYkRlqgcNkANTv0x5XjqA== + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== -flow-typed@2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/flow-typed/-/flow-typed-2.5.1.tgz#0ff565cc94d2af8c557744ba364b6f14726a6b9f" - integrity sha1-D/VlzJTSr4xVd0S6NktvFHJqa58= - dependencies: - "@octokit/rest" "^15.2.6" - babel-polyfill "^6.26.0" - colors "^1.1.2" - fs-extra "^5.0.0" - glob "^7.1.2" - got "^7.1.0" - md5 "^2.1.0" - mkdirp "^0.5.1" - rimraf "^2.6.2" - semver "^5.5.0" - table "^4.0.2" - through "^2.3.8" - unzipper "^0.8.11" - which "^1.3.0" - yargs "^4.2.0" +flow-parser@0.*: + version "0.135.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.135.0.tgz#6fa98be0cd4d3b214cc9f121c86a070e312649ce" + integrity sha512-ev8SvmG+XU9D6WgHVezP4kY3Myr1tJvTUTEi7mbhhj+rn889K7YXdakte6oqXNLIJYJ2f5Fuw18zXTVa1NO8Kw== flush-write-stream@^1.0.0: version "1.1.1" @@ -2849,17 +4536,29 @@ follow-redirects@1.5.10: dependencies: debug "=3.1.0" -for-in@^1.0.1, for-in@^1.0.2: +follow-redirects@^1.0.0, follow-redirects@^1.10.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db" + integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA== + +for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: - for-in "^1.0.1" + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" forwarded@~0.1.2: version "0.1.2" @@ -2886,26 +4585,21 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -fs-extra@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd" - integrity sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ== +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== dependencies: - graceful-fs "^4.1.2" + graceful-fs "^4.2.0" jsonfile "^4.0.0" universalify "^0.1.0" -fs-minipass@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" - integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: - minipass "^2.2.1" - -fs-readdir-recursive@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" - integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== + minipass "^3.0.0" fs-write-stream-atomic@^1.0.8: version "1.0.10" @@ -2922,84 +4616,89 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.0.0, fsevents@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4" - integrity sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw== +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== dependencies: - nan "^2.9.2" - node-pre-gyp "^0.10.0" + bindings "^1.5.0" + nan "^2.12.1" -fstream@~1.0.10: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" - integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" +fsevents@^2.1.2, fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= -get-stream@^4.0.0: +get-stream@^4.0.0, get-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: pump "^3.0.0" +get-stream@^5.0.0, get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" + assert-plus "^1.0.0" -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= +gh-got@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/gh-got/-/gh-got-5.0.0.tgz#ee95be37106fd8748a96f8d1db4baea89e1bfa8a" + integrity sha1-7pW+NxBv2HSKlvjR20uuqJ4b+oo= + dependencies: + got "^6.2.0" + is-plain-obj "^1.1.0" + +github-username@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/github-username/-/github-username-3.0.0.tgz#0a772219b3130743429f2456d0bdd3db55dce7b1" + integrity sha1-CnciGbMTB0NCnyRW0L3T21Xc57E= dependencies: - is-glob "^2.0.0" + gh-got "^5.0.0" glob-parent@^3.1.0: version "3.1.0" @@ -3009,10 +4708,10 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954" - integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg== +glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== dependencies: is-glob "^4.0.1" @@ -3032,22 +4731,15 @@ glob-stream@^6.1.0: to-absolute-glob "^2.0.0" unique-stream "^2.0.2" -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= -glob@^7.1.4: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== +glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -3056,12 +4748,12 @@ glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -global-modules@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== +global-dirs@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" + integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== dependencies: - global-prefix "^3.0.0" + ini "^1.3.5" global-modules@^1.0.0: version "1.0.0" @@ -3072,6 +4764,13 @@ global-modules@^1.0.0: is-windows "^1.0.1" resolve-dir "^1.0.0" +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + global-prefix@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" @@ -3093,51 +4792,138 @@ global-prefix@^3.0.0: which "^1.3.1" globals@^11.1.0: - version "11.11.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e" - integrity sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw== + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^12.1.0: - version "12.3.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.3.0.tgz#1e564ee5c4dded2ab098b0f88f24702a3c56be13" - integrity sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw== + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== dependencies: type-fest "^0.8.1" -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== +globby@^11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" + integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globby@^8.0.1: + version "8.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" + integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== + dependencies: + array-union "^1.0.1" + dir-glob "2.0.0" + fast-glob "^2.0.2" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" -got@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" - integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== +globby@^9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" + integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== dependencies: - decompress-response "^3.2.0" + "@types/glob" "^7.1.1" + array-union "^1.0.2" + dir-glob "^2.2.2" + fast-glob "^2.2.6" + glob "^7.1.3" + ignore "^4.0.3" + pify "^4.0.1" + slash "^2.0.0" + +got@^10.7.0: + version "10.7.0" + resolved "https://registry.yarnpkg.com/got/-/got-10.7.0.tgz#62889dbcd6cca32cd6a154cc2d0c6895121d091f" + integrity sha512-aWTDeNw9g+XqEZNcTjMMZSy7B7yE9toWOFYip7ofFTLleJhvZwUxxTxkTpKvF+p1SAA4VHmuEy7PiHTHyq8tJg== + dependencies: + "@sindresorhus/is" "^2.0.0" + "@szmarczak/http-timer" "^4.0.0" + "@types/cacheable-request" "^6.0.1" + cacheable-lookup "^2.0.0" + cacheable-request "^7.0.1" + decompress-response "^5.0.0" + duplexer3 "^0.1.4" + get-stream "^5.0.0" + lowercase-keys "^2.0.0" + mimic-response "^2.1.0" + p-cancelable "^2.0.0" + p-event "^4.0.0" + responselike "^2.0.0" + to-readable-stream "^2.0.0" + type-fest "^0.10.0" + +got@^6.2.0: + version "6.7.1" + resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" + integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= + dependencies: + create-error-class "^3.0.0" duplexer3 "^0.1.4" get-stream "^3.0.0" - is-plain-obj "^1.1.0" + is-redirect "^1.0.0" is-retry-allowed "^1.0.0" is-stream "^1.0.0" - isurl "^1.0.0-alpha5" lowercase-keys "^1.0.0" - p-cancelable "^0.3.0" - p-timeout "^1.1.1" safe-buffer "^5.0.1" timed-out "^4.0.0" + unzip-response "^2.0.1" url-parse-lax "^1.0.0" - url-to-options "^1.0.1" -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6: - version "4.1.15" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" - integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== +got@^9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + +grouped-queue@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/grouped-queue/-/grouped-queue-1.1.0.tgz#63e3f9ca90af952269d1d40879e41221eacc74cb" + integrity sha512-rZOFKfCqLhsu5VqjBjEWiwrYqJR07KxIkH4mLZlNlGDfntbb4FbMyGFP14TlvRPrU9S3Hnn/sgxbC5ZeN0no3Q== + dependencies: + lodash "^4.17.15" -graceful-fs@^4.1.15: - version "4.2.0" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b" - integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg== +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= gzip-size@^5.0.0: version "5.1.1" @@ -3147,12 +4933,23 @@ gzip-size@^5.0.0: duplexer "^0.1.1" pify "^4.0.1" -has-ansi@^2.0.0: +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +har-schema@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: - ansi-regex "^2.0.0" + ajv "^6.12.3" + har-schema "^2.0.0" has-flag@^3.0.0: version "3.0.0" @@ -3164,22 +4961,10 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbol-support-x@^1.4.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" - integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== - -has-to-string-tag-x@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" - integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== - dependencies: - has-symbol-support-x "^1.4.1" - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= +has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== has-value@^0.3.1: version "0.3.1" @@ -3212,13 +4997,26 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" +has-yarn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" + integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.7" @@ -3247,14 +5045,6 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - homedir-polyfill@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" @@ -3268,9 +5058,46 @@ hoopy@^0.1.4: integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== hosted-git-info@^2.1.4: - version "2.8.4" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.4.tgz#44119abaf4bc64692a16ace34700fed9c03e2546" - integrity sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ== + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== + dependencies: + whatwg-encoding "^1.0.5" + +html-entities@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" + integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= http-errors@1.7.2: version "1.7.2" @@ -3283,6 +5110,16 @@ http-errors@1.7.2: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + http-errors@~1.7.2: version "1.7.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" @@ -3294,33 +5131,71 @@ http-errors@~1.7.2: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" -http-proxy-agent@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" - integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== +http-parser-js@>=0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" + integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ== + +http-proxy-middleware@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + +http-proxy@^1.17.0: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= dependencies: - agent-base "4" - debug "3.1.0" + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -https-proxy-agent@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" - integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== - dependencies: - agent-base "^4.1.0" - debug "^3.1.0" +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== humps@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/humps/-/humps-2.0.1.tgz#dd02ea6081bd0568dc5d073184463957ba9ef9aa" integrity sha1-3QLqYIG9BWjcXQcxhEY5V7qe+ao= -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: +husky@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/husky/-/husky-4.3.0.tgz#0b2ec1d66424e9219d359e26a51c58ec5278f0de" + integrity sha512-tTMeLCLqSBqnflBZnlVDhpaIMucSGaYyX6855jM4AguGeWCeSzNdb1mfyWduTZ3pe3SJVvVWGL0jO1iKZVPfTA== + dependencies: + chalk "^4.0.0" + ci-info "^2.0.0" + compare-versions "^3.6.0" + cosmiconfig "^7.0.0" + find-versions "^3.2.0" + opencollective-postinstall "^2.0.2" + pkg-dir "^4.2.0" + please-upgrade-node "^3.2.0" + slash "^3.0.0" + which-pm-runs "^1.0.0" + +iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -3337,27 +5212,40 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= -ignore-walk@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" - integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== - dependencies: - minimatch "^3.0.4" +ignore-by-default@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" + integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= -ignore@^4.0.6: +ignore@^3.3.5: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +ignore@^4.0.3, ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -import-fresh@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390" - integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ== +ignore@^5.1.4: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" -import-local@2.0.0: +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= + +import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== @@ -3365,12 +5253,25 @@ import-local@2.0.0: pkg-dir "^3.0.0" resolve-cwd "^2.0.0" +import-local@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" + integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -infer-owner@^1.0.3: +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +infer-owner@^1.0.3, infer-owner@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== @@ -3383,72 +5284,90 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== inherits@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= -inherits@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -inquirer@^7.0.0: - version "7.0.4" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" - integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ== +inquirer@^7.1.0: + version "7.3.3" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" + integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== dependencies: ansi-escapes "^4.2.1" - chalk "^2.4.2" + chalk "^4.1.0" cli-cursor "^3.1.0" - cli-width "^2.0.0" + cli-width "^3.0.0" external-editor "^3.0.3" figures "^3.0.0" - lodash "^4.17.15" + lodash "^4.17.19" mute-stream "0.0.8" - run-async "^2.2.0" - rxjs "^6.5.3" + run-async "^2.4.0" + rxjs "^6.6.0" string-width "^4.1.0" - strip-ansi "^5.1.0" + strip-ansi "^6.0.0" through "^2.3.6" -interpret@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -invariant@^2.2.0, invariant@^2.2.2: +interpret@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" + integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== + +invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: loose-envify "^1.0.0" -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= -ipaddr.js@1.9.1: +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + is-absolute@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" @@ -3471,6 +5390,11 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -3483,11 +5407,35 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" -is-buffer@^1.1.5, is-buffer@~1.1.1: +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^1.1.5, is-buffer@~1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +is-buffer@^2.0.2, is-buffer@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" + integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== + +is-callable@^1.1.4, is-callable@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" + integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -3502,6 +5450,11 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" @@ -3520,17 +5473,10 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= - dependencies: - is-primitive "^2.0.0" +is-docker@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" + integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" @@ -3544,30 +5490,11 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= - is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -3578,12 +5505,10 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= - dependencies: - is-extglob "^1.0.0" +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== is-glob@^3.1.0: version "3.1.0" @@ -3592,24 +5517,35 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0, is-glob@^4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== dependencies: is-extglob "^2.1.1" +is-installed-globally@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" + integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== + dependencies: + global-dirs "^2.0.1" + is-path-inside "^3.0.1" + is-negated-glob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= - dependencies: - kind-of "^3.0.2" +is-negative-zero@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" + integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= + +is-npm@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" + integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== is-number@^3.0.0: version "3.0.0" @@ -3618,42 +5554,68 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" - integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + +is-path-inside@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" + integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= -is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: +is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= +is-potential-custom-element-name@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" + integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= +is-redirect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= +is-regex@^1.0.4, is-regex@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" + integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== + dependencies: + has-symbols "^1.0.1" is-relative@^1.0.0: version "1.0.0" @@ -3663,16 +5625,40 @@ is-relative@^1.0.0: is-unc-path "^1.0.0" is-retry-allowed@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" - integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" + integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== + +is-scoped@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-scoped/-/is-scoped-1.0.0.tgz#449ca98299e713038256289ecb2b540dc437cb30" + integrity sha1-RJypgpnnEwOCViieyytUDcQ3yzA= + dependencies: + scoped-regex "^1.0.0" is-stream@^1.0.0, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= -is-typedarray@^1.0.0: +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= @@ -3684,7 +5670,7 @@ is-unc-path@^1.0.0: dependencies: unc-path-regex "^0.1.2" -is-utf8@^0.2.0: +is-utf8@^0.2.0, is-utf8@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= @@ -3699,6 +5685,18 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +is-yarn-global@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" + integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -3709,6 +5707,11 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +isbinaryfile@^4.0.0: + version "4.0.6" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.6.tgz#edcb62b224e2b4710830b67498c8e4e5a4d2610b" + integrity sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -3726,23 +5729,456 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -isurl@^1.0.0-alpha5: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" - integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +istanbul-lib-coverage@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== + +istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== dependencies: - has-to-string-tag-x "^1.2.0" - is-object "^1.0.1" + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" -js-md5@0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/js-md5/-/js-md5-0.7.3.tgz#b4f2fbb0b327455f598d6727e38ec272cd09c3f2" - integrity sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ== +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" + integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" -js-tokens@^3.0.0, js-tokens@^3.0.2: +istanbul-reports@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" + integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +istextorbinary@^2.5.1: + version "2.6.0" + resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-2.6.0.tgz#60776315fb0fa3999add276c02c69557b9ca28ab" + integrity sha512-+XRlFseT8B3L9KyjxxLjfXSLMuErKDsd8DBNrsaxoViABMEZlOSCstwmw0qpoFX3+U6yWU1yhLudAe6/lETGGA== + dependencies: + binaryextensions "^2.1.2" + editions "^2.2.0" + textextensions "^2.5.0" + +jake@^10.6.1: + version "10.8.2" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b" + integrity sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A== + dependencies: + async "0.9.x" + chalk "^2.4.2" + filelist "^1.0.1" + minimatch "^3.0.4" + +jest-changed-files@^26.5.2: + version "26.5.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.5.2.tgz#330232c6a5c09a7f040a5870e8f0a9c6abcdbed5" + integrity sha512-qSmssmiIdvM5BWVtyK/nqVpN3spR5YyvkvPqz1x3BR1bwIxsWmU/MGwLoCrPNLbkG2ASAKfvmJpOduEApBPh2w== + dependencies: + "@jest/types" "^26.5.2" + execa "^4.0.0" + throat "^5.0.0" + +jest-cli@^26.5.3: + version "26.5.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.5.3.tgz#f936b98f247b76b7bc89c7af50af82c88e356a80" + integrity sha512-HkbSvtugpSXBf2660v9FrNVUgxvPkssN8CRGj9gPM8PLhnaa6zziFiCEKQAkQS4uRzseww45o0TR+l6KeRYV9A== + dependencies: + "@jest/core" "^26.5.3" + "@jest/test-result" "^26.5.2" + "@jest/types" "^26.5.2" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.4" + import-local "^3.0.2" + is-ci "^2.0.0" + jest-config "^26.5.3" + jest-util "^26.5.2" + jest-validate "^26.5.3" + prompts "^2.0.1" + yargs "^15.4.1" + +jest-config@^26.5.3: + version "26.5.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.5.3.tgz#baf51c9be078c2c755c8f8a51ec0f06c762c1d3f" + integrity sha512-NVhZiIuN0GQM6b6as4CI5FSCyXKxdrx5ACMCcv/7Pf+TeCajJhJc+6dwgdAVPyerUFB9pRBIz3bE7clSrRge/w== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^26.5.3" + "@jest/types" "^26.5.2" + babel-jest "^26.5.2" + chalk "^4.0.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.4" + jest-environment-jsdom "^26.5.2" + jest-environment-node "^26.5.2" + jest-get-type "^26.3.0" + jest-jasmine2 "^26.5.3" + jest-regex-util "^26.0.0" + jest-resolve "^26.5.2" + jest-util "^26.5.2" + jest-validate "^26.5.3" + micromatch "^4.0.2" + pretty-format "^26.5.2" + +jest-diff@^25.2.1: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9" + integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A== + dependencies: + chalk "^3.0.0" + diff-sequences "^25.2.6" + jest-get-type "^25.2.6" + pretty-format "^25.5.0" + +jest-diff@^26.5.2: + version "26.5.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.5.2.tgz#8e26cb32dc598e8b8a1b9deff55316f8313c8053" + integrity sha512-HCSWDUGwsov5oTlGzrRM+UPJI/Dpqi9jzeV0fdRNi3Ch5bnoXhnyJMmVg2juv9081zLIy3HGPI5mcuGgXM2xRA== + dependencies: + chalk "^4.0.0" + diff-sequences "^26.5.0" + jest-get-type "^26.3.0" + pretty-format "^26.5.2" + +jest-docblock@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" + integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== + dependencies: + detect-newline "^3.0.0" + +jest-each@^26.5.2: + version "26.5.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.5.2.tgz#35e68d6906a7f826d3ca5803cfe91d17a5a34c31" + integrity sha512-w7D9FNe0m2D3yZ0Drj9CLkyF/mGhmBSULMQTypzAKR746xXnjUrK8GUJdlLTWUF6dd0ks3MtvGP7/xNFr9Aphg== + dependencies: + "@jest/types" "^26.5.2" + chalk "^4.0.0" + jest-get-type "^26.3.0" + jest-util "^26.5.2" + pretty-format "^26.5.2" + +jest-environment-jsdom@^26.5.2: + version "26.5.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.5.2.tgz#5feab05b828fd3e4b96bee5e0493464ddd2bb4bc" + integrity sha512-fWZPx0bluJaTQ36+PmRpvUtUlUFlGGBNyGX1SN3dLUHHMcQ4WseNEzcGGKOw4U5towXgxI4qDoI3vwR18H0RTw== + dependencies: + "@jest/environment" "^26.5.2" + "@jest/fake-timers" "^26.5.2" + "@jest/types" "^26.5.2" + "@types/node" "*" + jest-mock "^26.5.2" + jest-util "^26.5.2" + jsdom "^16.4.0" + +jest-environment-node@^26.5.2: + version "26.5.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.5.2.tgz#275a0f01b5e47447056f1541a15ed4da14acca03" + integrity sha512-YHjnDsf/GKFCYMGF1V+6HF7jhY1fcLfLNBDjhAOvFGvt6d8vXvNdJGVM7uTZ2VO/TuIyEFhPGaXMX5j3h7fsrA== + dependencies: + "@jest/environment" "^26.5.2" + "@jest/fake-timers" "^26.5.2" + "@jest/types" "^26.5.2" + "@types/node" "*" + jest-mock "^26.5.2" + jest-util "^26.5.2" + +jest-get-type@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" + integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== + +jest-get-type@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" + integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== + +jest-haste-map@^26.5.2: + version "26.5.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.5.2.tgz#a15008abfc502c18aa56e4919ed8c96304ceb23d" + integrity sha512-lJIAVJN3gtO3k4xy+7i2Xjtwh8CfPcH08WYjZpe9xzveDaqGw9fVNCpkYu6M525wKFVkLmyi7ku+DxCAP1lyMA== + dependencies: + "@jest/types" "^26.5.2" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + jest-regex-util "^26.0.0" + jest-serializer "^26.5.0" + jest-util "^26.5.2" + jest-worker "^26.5.0" + micromatch "^4.0.2" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.1.2" + +jest-jasmine2@^26.5.3: + version "26.5.3" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.5.3.tgz#baad2114ce32d16aff25aeb877d18bb4e332dc4c" + integrity sha512-nFlZOpnGlNc7y/+UkkeHnvbOM+rLz4wB1AimgI9QhtnqSZte0wYjbAm8hf7TCwXlXgDwZxAXo6z0a2Wzn9FoOg== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^26.5.2" + "@jest/source-map" "^26.5.0" + "@jest/test-result" "^26.5.2" + "@jest/types" "^26.5.2" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + expect "^26.5.3" + is-generator-fn "^2.0.0" + jest-each "^26.5.2" + jest-matcher-utils "^26.5.2" + jest-message-util "^26.5.2" + jest-runtime "^26.5.3" + jest-snapshot "^26.5.3" + jest-util "^26.5.2" + pretty-format "^26.5.2" + throat "^5.0.0" + +jest-leak-detector@^26.5.2: + version "26.5.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.5.2.tgz#83fcf9a4a6ef157549552cb4f32ca1d6221eea69" + integrity sha512-h7ia3dLzBFItmYERaLPEtEKxy3YlcbcRSjj0XRNJgBEyODuu+3DM2o62kvIFvs3PsaYoIIv+e+nLRI61Dj1CNw== + dependencies: + jest-get-type "^26.3.0" + pretty-format "^26.5.2" + +jest-matcher-utils@^26.5.2: + version "26.5.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.5.2.tgz#6aa2c76ce8b9c33e66f8856ff3a52bab59e6c85a" + integrity sha512-W9GO9KBIC4gIArsNqDUKsLnhivaqf8MSs6ujO/JDcPIQrmY+aasewweXVET8KdrJ6ADQaUne5UzysvF/RR7JYA== + dependencies: + chalk "^4.0.0" + jest-diff "^26.5.2" + jest-get-type "^26.3.0" + pretty-format "^26.5.2" + +jest-message-util@^26.5.2: + version "26.5.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.5.2.tgz#6c4c4c46dcfbabb47cd1ba2f6351559729bc11bb" + integrity sha512-Ocp9UYZ5Jl15C5PNsoDiGEk14A4NG0zZKknpWdZGoMzJuGAkVt10e97tnEVMYpk7LnQHZOfuK2j/izLBMcuCZw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/types" "^26.5.2" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.2" + slash "^3.0.0" + stack-utils "^2.0.2" + +jest-mock@^26.5.2: + version "26.5.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.5.2.tgz#c9302e8ef807f2bfc749ee52e65ad11166a1b6a1" + integrity sha512-9SiU4b5PtO51v0MtJwVRqeGEroH66Bnwtq4ARdNP7jNXbpT7+ByeWNAk4NeT/uHfNSVDXEXgQo1XRuwEqS6Rdw== + dependencies: + "@jest/types" "^26.5.2" + "@types/node" "*" + +jest-pnp-resolver@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + +jest-regex-util@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" + integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== + +jest-resolve-dependencies@^26.5.3: + version "26.5.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.5.3.tgz#11483f91e534bdcd257ab21e8622799e59701aba" + integrity sha512-+KMDeke/BFK+mIQ2IYSyBz010h7zQaVt4Xie6cLqUGChorx66vVeQVv4ErNoMwInnyYHi1Ud73tDS01UbXbfLQ== + dependencies: + "@jest/types" "^26.5.2" + jest-regex-util "^26.0.0" + jest-snapshot "^26.5.3" + +jest-resolve@^26.5.2: + version "26.5.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.5.2.tgz#0d719144f61944a428657b755a0e5c6af4fc8602" + integrity sha512-XsPxojXGRA0CoDD7Vis59ucz2p3cQFU5C+19tz3tLEAlhYKkK77IL0cjYjikY9wXnOaBeEdm1rOgSJjbZWpcZg== + dependencies: + "@jest/types" "^26.5.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + jest-pnp-resolver "^1.2.2" + jest-util "^26.5.2" + read-pkg-up "^7.0.1" + resolve "^1.17.0" + slash "^3.0.0" + +jest-runner@^26.5.3: + version "26.5.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.5.3.tgz#800787459ea59c68e7505952933e33981dc3db38" + integrity sha512-qproP0Pq7IIule+263W57k2+8kWCszVJTC9TJWGUz0xJBr+gNiniGXlG8rotd0XxwonD5UiJloYoSO5vbUr5FQ== + dependencies: + "@jest/console" "^26.5.2" + "@jest/environment" "^26.5.2" + "@jest/test-result" "^26.5.2" + "@jest/types" "^26.5.2" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.7.1" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-config "^26.5.3" + jest-docblock "^26.0.0" + jest-haste-map "^26.5.2" + jest-leak-detector "^26.5.2" + jest-message-util "^26.5.2" + jest-resolve "^26.5.2" + jest-runtime "^26.5.3" + jest-util "^26.5.2" + jest-worker "^26.5.0" + source-map-support "^0.5.6" + throat "^5.0.0" + +jest-runtime@^26.5.3: + version "26.5.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.5.3.tgz#5882ae91fd88304310f069549e6bf82f3f198bea" + integrity sha512-IDjalmn2s/Tc4GvUwhPHZ0iaXCdMRq5p6taW9P8RpU+FpG01O3+H8z+p3rDCQ9mbyyyviDgxy/LHPLzrIOKBkQ== + dependencies: + "@jest/console" "^26.5.2" + "@jest/environment" "^26.5.2" + "@jest/fake-timers" "^26.5.2" + "@jest/globals" "^26.5.3" + "@jest/source-map" "^26.5.0" + "@jest/test-result" "^26.5.2" + "@jest/transform" "^26.5.2" + "@jest/types" "^26.5.2" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.4" + jest-config "^26.5.3" + jest-haste-map "^26.5.2" + jest-message-util "^26.5.2" + jest-mock "^26.5.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.5.2" + jest-snapshot "^26.5.3" + jest-util "^26.5.2" + jest-validate "^26.5.3" + slash "^3.0.0" + strip-bom "^4.0.0" + yargs "^15.4.1" + +jest-serializer@^26.5.0: + version "26.5.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.5.0.tgz#f5425cc4c5f6b4b355f854b5f0f23ec6b962bc13" + integrity sha512-+h3Gf5CDRlSLdgTv7y0vPIAoLgX/SI7T4v6hy+TEXMgYbv+ztzbg5PSN6mUXAT/hXYHvZRWm+MaObVfqkhCGxA== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.4" + +jest-snapshot@^26.5.3: + version "26.5.3" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.5.3.tgz#f6b4b4b845f85d4b0dadd7cf119c55d0c1688601" + integrity sha512-ZgAk0Wm0JJ75WS4lGaeRfa0zIgpL0KD595+XmtwlIEMe8j4FaYHyZhP1LNOO+8fXq7HJ3hll54+sFV9X4+CGVw== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^26.5.2" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.0.0" + chalk "^4.0.0" + expect "^26.5.3" + graceful-fs "^4.2.4" + jest-diff "^26.5.2" + jest-get-type "^26.3.0" + jest-haste-map "^26.5.2" + jest-matcher-utils "^26.5.2" + jest-message-util "^26.5.2" + jest-resolve "^26.5.2" + natural-compare "^1.4.0" + pretty-format "^26.5.2" + semver "^7.3.2" + +jest-util@^26.1.0, jest-util@^26.5.2: + version "26.5.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.5.2.tgz#8403f75677902cc52a1b2140f568e91f8ed4f4d7" + integrity sha512-WTL675bK+GSSAYgS8z9FWdCT2nccO1yTIplNLPlP0OD8tUk/H5IrWKMMRudIQQ0qp8bb4k+1Qa8CxGKq9qnYdg== + dependencies: + "@jest/types" "^26.5.2" + "@types/node" "*" + chalk "^4.0.0" + graceful-fs "^4.2.4" + is-ci "^2.0.0" + micromatch "^4.0.2" + +jest-validate@^26.5.3: + version "26.5.3" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.5.3.tgz#eefd5a5c87059550548c5ad8d6589746c66929e3" + integrity sha512-LX07qKeAtY+lsU0o3IvfDdN5KH9OulEGOMN1sFo6PnEf5/qjS1LZIwNk9blcBeW94pQUI9dLN9FlDYDWI5tyaA== + dependencies: + "@jest/types" "^26.5.2" + camelcase "^6.0.0" + chalk "^4.0.0" + jest-get-type "^26.3.0" + leven "^3.1.0" + pretty-format "^26.5.2" + +jest-watcher@^26.5.2: + version "26.5.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.5.2.tgz#2957f4461007e0769d74b537379ecf6b7c696916" + integrity sha512-i3m1NtWzF+FXfJ3ljLBB/WQEp4uaNhX7QcQUWMokcifFTUQBDFyUMEwk0JkJ1kopHbx7Een3KX0Q7+9koGM/Pw== + dependencies: + "@jest/test-result" "^26.5.2" + "@jest/types" "^26.5.2" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^26.5.2" + string-length "^4.0.1" + +jest-worker@^26.5.0: + version "26.5.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.5.0.tgz#87deee86dbbc5f98d9919e0dadf2c40e3152fa30" + integrity sha512-kTw66Dn4ZX7WpjZ7T/SUDgRhapFRKWmisVAF0Rv4Fu8SLFD7eLbqpLvbxVqYhSgaWa7I+bW7pHnbyfNsH6stug== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest@26.5.3: + version "26.5.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-26.5.3.tgz#5e7a322d16f558dc565ca97639e85993ef5affe6" + integrity sha512-uJi3FuVSLmkZrWvaDyaVTZGLL8WcfynbRnFXyAHuEtYiSZ+ijDDIMOw1ytmftK+y/+OdAtsG9QrtbF7WIBmOyA== + dependencies: + "@jest/core" "^26.5.3" + import-local "^3.0.2" + jest-cli "^26.5.3" "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -3750,17 +6186,73 @@ js-tokens@^3.0.0, js-tokens@^3.0.2: integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@^3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + version "3.14.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== dependencies: argparse "^1.0.7" esprima "^4.0.0" -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jscodeshift@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.7.1.tgz#0236ad475d6f0770ca998a0160925d62b57d2507" + integrity sha512-YMkZSyoc8zg5woZL23cmWlnFLPH/mHilonGA7Qbzs7H6M4v4PH0Qsn4jeDyw+CHhVoAnm9UxQyB0Yw1OT+mktA== + dependencies: + "@babel/core" "^7.1.6" + "@babel/parser" "^7.1.6" + "@babel/plugin-proposal-class-properties" "^7.1.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/preset-env" "^7.1.6" + "@babel/preset-flow" "^7.0.0" + "@babel/preset-typescript" "^7.1.0" + "@babel/register" "^7.0.0" + babel-core "^7.0.0-bridge.0" + colors "^1.1.2" + flow-parser "0.*" + graceful-fs "^4.1.11" + micromatch "^3.1.10" + neo-async "^2.5.0" + node-dir "^0.1.17" + recast "^0.18.1" + temp "^0.8.1" + write-file-atomic "^2.3.0" + +jsdom@^16.4.0: + version "16.4.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" + integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w== + dependencies: + abab "^2.0.3" + acorn "^7.1.1" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.2.0" + data-urls "^2.0.0" + decimal.js "^10.2.0" + domexception "^2.0.1" + escodegen "^1.14.1" + html-encoding-sniffer "^2.0.1" + is-potential-custom-element-name "^1.0.0" + nwsapi "^2.2.0" + parse5 "5.1.1" + request "^2.88.2" + request-promise-native "^1.0.8" + saxes "^5.0.0" + symbol-tree "^3.2.4" + tough-cookie "^3.0.1" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + ws "^7.2.3" + xml-name-validator "^3.0.0" jsesc@^2.5.1: version "2.5.2" @@ -3772,25 +6264,57 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json3@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + +json5@2.x, json5@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + dependencies: + minimist "^1.2.5" json5@^1.0.1: version "1.0.1" @@ -3806,6 +6330,48 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +jsx-ast-utils@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz#1114a4c1209481db06c690c2b4f488cc665f657e" + integrity sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w== + dependencies: + array-includes "^3.1.1" + object.assign "^4.1.0" + +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" + +keyv@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.0.3.tgz#4f3aa98de254803cafcd2896734108daa35e4254" + integrity sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA== + dependencies: + json-buffer "3.0.1" + +killable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -3826,30 +6392,67 @@ kind-of@^5.0.0: integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +language-subtag-registry@~0.3.2: + version "0.3.20" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.20.tgz#a00a37121894f224f763268e431c55556b0c0755" + integrity sha512-KPMwROklF4tEx283Xw0pNKtfTj1gZ4UByp4EsIFWLgBavJltF4TiYPc39k06zSTsLzxTVXXDSpbwaQXaFB4Qeg== + +language-tags@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= dependencies: - invert-kv "^1.0.0" + language-subtag-registry "~0.3.2" -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== +latest-version@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" + integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== + dependencies: + package-json "^6.3.0" + +lazy-cache@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264" + integrity sha1-uRkKT5EzVGlIQIWfio9whNiCImQ= dependencies: - invert-kv "^2.0.0" + set-getter "^0.1.0" leven@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= -levn@^0.3.0, levn@~0.3.0: +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= @@ -3857,36 +6460,44 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -listenercount@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937" - integrity sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc= +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= dependencies: graceful-fs "^4.1.2" parse-json "^2.2.0" pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" + strip-bom "^3.0.0" loader-runner@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@1.2.3, loader-utils@^1.0.2, loader-utils@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== +loader-utils@^1.0.2, loader-utils@^1.2.3: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== dependencies: big.js "^5.2.2" - emojis-list "^2.0.0" + emojis-list "^3.0.0" json5 "^1.0.1" +loader-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" + integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -3903,20 +6514,51 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" -lodash.assign@^4.0.3, lodash.assign@^4.0.6: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" - integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.clonedeep@4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + +lodash.memoize@4.x: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + +log-symbols@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== + dependencies: + chalk "^2.0.1" -lodash@4.17.15, lodash@^4.17.14, lodash@^4.17.15: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== +log-symbols@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" + integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== + dependencies: + chalk "^4.0.0" -lodash@^4.17.11, lodash@^4.17.4, lodash@^4.2.0: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" - integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== +loglevel@^1.6.8: + version "1.7.0" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.0.tgz#728166855a740d59d38db01cf46f042caa041bb0" + integrity sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ== loose-envify@^1.0.0: version "1.4.0" @@ -3925,18 +6567,15 @@ loose-envify@^1.0.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -lowercase-keys@^1.0.0: +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== -lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== lru-cache@^5.1.1: version "5.1.1" @@ -3945,19 +6584,14 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" -macos-release@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.2.0.tgz#ab58d55dd4714f0a05ad4b0e90f4370fef5cdea8" - integrity sha512-iV2IDxZaX8dIcM7fG6cI46uNmHUxHE4yN+Z8tKHAW1TBPMZDIKHf/3L+YnOuj/FK9il14UaVdHmiQ1tsi90ltA== - -make-dir@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: - pify "^3.0.0" + yallist "^4.0.0" -make-dir@^2.0.0: +make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== @@ -3965,17 +6599,24 @@ make-dir@^2.0.0: pify "^4.0.1" semver "^5.6.0" -mamacro@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" - integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== +make-dir@^3.0.0, make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-error@1.x, make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= dependencies: - p-defer "^1.0.0" + tmpl "1.0.x" map-cache@^0.2.2: version "0.2.2" @@ -3989,11 +6630,6 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -math-random@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" - integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== - md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -4003,30 +6639,64 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" -md5@^2.0.0, md5@^2.1.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9" - integrity sha1-U6s41f48iJG6RlMp6iP6wFQBJvk= +md5@2.3.0, md5@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f" + integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g== dependencies: - charenc "~0.0.1" - crypt "~0.0.1" - is-buffer "~1.1.1" + charenc "0.0.2" + crypt "0.0.2" + is-buffer "~1.1.6" media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== +mem-fs-editor@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/mem-fs-editor/-/mem-fs-editor-6.0.0.tgz#d63607cf0a52fe6963fc376c6a7aa52db3edabab" + integrity sha512-e0WfJAMm8Gv1mP5fEq/Blzy6Lt1VbLg7gNnZmZak7nhrBTibs+c6nQ4SKs/ZyJYHS1mFgDJeopsLAv7Ow0FMFg== + dependencies: + commondir "^1.0.1" + deep-extend "^0.6.0" + ejs "^2.6.1" + glob "^7.1.4" + globby "^9.2.0" + isbinaryfile "^4.0.0" + mkdirp "^0.5.0" + multimatch "^4.0.0" + rimraf "^2.6.3" + through2 "^3.0.1" + vinyl "^2.2.0" + +mem-fs-editor@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/mem-fs-editor/-/mem-fs-editor-7.0.1.tgz#e0797802b7797acf43ef3c511f3d3ad5ea765783" + integrity sha512-eD8r4/d2ayp9HHIgBPHB6Ds0ggA8F9cf9HxcNtbqrwqJXfIDrOSMG5K4fV3+Ib3B+HIdrWqkeDDDvrO7i9EbvQ== + dependencies: + commondir "^1.0.1" + deep-extend "^0.6.0" + ejs "^3.0.1" + glob "^7.1.4" + globby "^9.2.0" + isbinaryfile "^4.0.0" + mkdirp "^1.0.0" + multimatch "^4.0.0" + rimraf "^3.0.0" + through2 "^3.0.1" + vinyl "^2.2.0" + +mem-fs@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mem-fs/-/mem-fs-1.2.0.tgz#5f29b2d02a5875cd14cd836c388385892d556cde" + integrity sha512-b8g0jWKdl8pM0LqAPdK9i8ERL7nYrzmJfRhxMiWH2uYdfYnb7uXnmwVb0ZGe7xyEl4lj+nLIU3yf4zPUT+XsVQ== dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" + through2 "^3.0.0" + vinyl "^2.0.1" + vinyl-file "^3.0.0" -memory-fs@^0.4.0, memory-fs@^0.4.1: +memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= @@ -4034,36 +6704,35 @@ memory-fs@^0.4.0, memory-fs@^0.4.1: errno "^0.1.3" readable-stream "^2.0.1" +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.2.3, merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^2.1.5: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: +micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -4082,6 +6751,14 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" +micromatch@^4.0.0, micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -4090,45 +6767,48 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.40.0, "mime-db@>= 1.40.0 < 2": - version "1.40.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" - integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== - -mime-db@~1.33.0: - version "1.33.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" - integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== +mime-db@1.44.0: + version "1.44.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" + integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== -mime-types@2.1.18: - version "2.1.18" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" - integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== - dependencies: - mime-db "~1.33.0" +"mime-db@>= 1.43.0 < 2": + version "1.45.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" + integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== -mime-types@~2.1.24: - version "2.1.24" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" - integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.27" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" + integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== dependencies: - mime-db "1.40.0" + mime-db "1.44.0" mime@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mimic-fn@^2.0.0, mimic-fn@^2.1.0: +mime@^2.4.4: + version "2.4.6" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" + integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== + +mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mimic-response@^1.0.0: +mimic-response@^1.0.0, mimic-response@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== +mimic-response@^2.0.0, mimic-response@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43" + integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -4139,37 +6819,53 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@3.0.4, minimatch@^3.0.4: +minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= +minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -minimist@1.2.0, minimist@^1.1.0, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" -minipass@^2.2.1, minipass@^2.3.4: - version "2.3.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" - integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" + minipass "^3.0.0" -minizlib@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" - integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== +minipass-pipeline@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + dependencies: + yallist "^4.0.0" + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== dependencies: - minipass "^2.2.1" + minipass "^3.0.0" + yallist "^4.0.0" mississippi@^3.0.0: version "3.0.0" @@ -4195,12 +6891,22 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= +mkdirp@1.x, mkdirp@^1.0.0, mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== dependencies: - minimist "0.0.8" + minimist "^1.2.5" + +moment@^2.15.1, moment@^2.24.0: + version "2.29.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" + integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== move-concurrently@^1.0.1: version "1.0.1" @@ -4214,34 +6920,35 @@ move-concurrently@^1.0.1: rimraf "^2.5.4" run-queue "^1.0.3" -mqtt-packet@^5.6.0: - version "5.6.1" - resolved "https://registry.yarnpkg.com/mqtt-packet/-/mqtt-packet-5.6.1.tgz#8ecafce091f5af460664268a22b22091c8915f7b" - integrity sha512-eaF9rO2uFrIYEHomJxziuKTDkbWW5psLBaIGCazQSKqYsTaB3n4SpvJ1PexKaDBiPnMLPIFWBIiTYT3IfEJfww== +mqtt-packet@^6.3.2: + version "6.6.0" + resolved "https://registry.yarnpkg.com/mqtt-packet/-/mqtt-packet-6.6.0.tgz#30126b6865992caaf223baae23c89e4061ad2e45" + integrity sha512-LvghnKMFC70hKWMVykmhJarlO5e7lT3t9s9A2qPCUx+lazL3Mq55U+eCV0eLi7/nRRQYvEUWo/2tTo89EjnCJQ== dependencies: - bl "^1.2.1" - inherits "^2.0.3" - process-nextick-args "^2.0.0" - safe-buffer "^5.1.0" + bl "^4.0.2" + debug "^4.1.1" + process-nextick-args "^2.0.1" -mqtt@2.18.8: - version "2.18.8" - resolved "https://registry.yarnpkg.com/mqtt/-/mqtt-2.18.8.tgz#9d213ccab92151accfb21ee8c0860dc6866ab259" - integrity sha512-3h6oHlPY/yWwtC2J3geraYRtVVoRM6wdI+uchF4nvSSafXPZnaKqF8xnX+S22SU/FcgEAgockVIlOaAX3fkMpA== +mqtt@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/mqtt/-/mqtt-4.2.1.tgz#7dbc4a01b5188186db90919c6fce318692c77004" + integrity sha512-Iv893r+jWlo5GkNcPOfCGwW8M49IixwHiKLFFYTociEymSibUVCORVEjPXWPGzSxhn7BdlUeHicbRmWiv0Crkg== dependencies: + base64-js "^1.3.0" commist "^1.0.0" concat-stream "^1.6.2" + debug "^4.1.1" end-of-stream "^1.4.1" es6-map "^0.1.5" help-me "^1.0.1" inherits "^2.0.3" - minimist "^1.2.0" - mqtt-packet "^5.6.0" + minimist "^1.2.5" + mqtt-packet "^6.3.2" pump "^3.0.0" readable-stream "^2.3.6" reinterval "^1.1.0" - split2 "^2.1.1" - websocket-stream "^5.1.2" + split2 "^3.1.0" + ws "^7.3.1" xtend "^4.0.1" ms@2.0.0: @@ -4249,20 +6956,49 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@2.1.1, ms@^2.1.1: +ms@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== +ms@2.1.2, ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +multimatch@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" + integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ== + dependencies: + "@types/minimatch" "^3.0.3" + array-differ "^3.0.0" + array-union "^2.1.0" + arrify "^2.0.1" + minimatch "^3.0.4" + mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nan@^2.11.0, nan@^2.9.2: - version "2.13.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7" - integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw== +nan@^2.12.1: + version "2.14.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" + integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== nanomatch@^1.2.9: version "1.2.13" @@ -4286,31 +7022,17 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -needle@^2.2.1: - version "2.2.4" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" - integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA== - dependencies: - debug "^2.1.2" - iconv-lite "^0.4.4" - sax "^1.2.4" - negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835" - integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA== - -neo-async@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== +neo-async@^2.5.0, neo-async@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -next-tick@^1.0.0: +next-tick@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= @@ -4320,10 +7042,27 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -node-fetch@^2.1.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.3.0.tgz#1a1d940bbfb916a1d3e0219f037e89e71f8c5fa5" - integrity sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA== +node-dir@^0.1.17: + version "0.1.17" + resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" + integrity sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU= + dependencies: + minimatch "^3.0.2" + +node-forge@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" + integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== + +node-gyp-build@~3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-3.7.0.tgz#daa77a4f547b9aed3e2aac779eaf151afd60ec8d" + integrity sha512-L/Eg02Epx6Si2NXmedx+Okg+4UHqmaf3TNcxd50SF9NQGcJaON3AtU++kax69XV7YWz4tUspqZSAsVofhFKG2w== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= node-libs-browser@^2.2.1: version "2.2.1" @@ -4354,31 +7093,52 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" -node-pre-gyp@^0.10.0: - version "0.10.3" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" - integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A== +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + +node-notifier@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.0.tgz#a7eee2d51da6d0f7ff5094bc7108c911240c1620" + integrity sha512-46z7DUmcjoYdaWyXouuFNNfUo6eFa94t23c53c+lG/9Cvauk4a98rAUp9672X5dxGdQmLpPzTxzu8f/OeEPaFA== + dependencies: + growly "^1.3.0" + is-wsl "^2.2.0" + semver "^7.3.2" + shellwords "^0.1.1" + uuid "^8.3.0" + which "^2.0.2" + +node-releases@^1.1.61: + version "1.1.61" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.61.tgz#707b0fca9ce4e11783612ba4a2fcba09047af16e" + integrity sha512-DD5vebQLg8jLCOzwupn954fbIiZht05DAZs0k2u8NStSe6h9XdsuIQL8hSRKYiU8WUQRznmSDrKGbv3ObOmC7g== + +nodemon@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.4.tgz#55b09319eb488d6394aa9818148c0c2d1c04c416" + integrity sha512-Ltced+hIfTmaS28Zjv1BM552oQ3dbwPqI4+zI0SLgq+wpJhSyqgYude/aZa/3i31VCQWMfXJVxvu86abcam3uQ== dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4" - -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= + chokidar "^3.2.2" + debug "^3.2.6" + ignore-by-default "^1.0.1" + minimatch "^3.0.4" + pstree.remy "^1.1.7" + semver "^5.7.1" + supports-color "^5.5.0" + touch "^3.1.0" + undefsafe "^2.0.2" + update-notifier "^4.0.0" + +nopt@~1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" + integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= dependencies: abbrev "1" - osenv "^0.1.4" -normalize-package-data@^2.3.2: +normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -4388,30 +7148,34 @@ normalize-package-data@^2.3.2: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: +normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= dependencies: remove-trailing-separator "^1.0.1" -normalize-path@^3.0.0: +normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -npm-bundled@^1.0.1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" - integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== +normalize-url@^4.1.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" + integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== -npm-packlist@^1.1.6: - version "1.4.1" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc" - integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw== +npm-api@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/npm-api/-/npm-api-1.0.0.tgz#6033c283bb04ddb0185344c1ad07ed4f67c77989" + integrity sha512-gtJhIhGq07g9H5sIAB9TZzTySW8MYtcYqg+e+J+5q1GmDsDLLVfyvVBL1VklzjtRsElph11GUtLBS191RDOJxQ== dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" + JSONStream "^1.3.5" + clone-deep "^4.0.1" + download-stats "^0.3.4" + moment "^2.24.0" + paged-request "^2.0.1" + request "^2.88.0" npm-run-path@^2.0.0: version "2.0.2" @@ -4420,22 +7184,24 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" + path-key "^3.0.0" -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= +nwsapi@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4.1.0: +object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -4449,6 +7215,29 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" +object-hash@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.0.3.tgz#d12db044e03cd2ca3d77c0570d87225b02e1e6ea" + integrity sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg== + +object-inspect@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" + integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== + +object-is@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.3.tgz#2e3b9e65560137455ee3bd62aec4d90a2ea1cc81" + integrity sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -4456,13 +7245,24 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= +object.assign@^4.1.0, object.assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.1.tgz#303867a666cdd41936ecdedfb1f8f3e32a478cdd" + integrity sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA== dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.0" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.entries@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add" + integrity sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + has "^1.0.3" object.pick@^1.3.0: version "1.3.0" @@ -4471,6 +7271,21 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" +object.values@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -4478,7 +7293,7 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -on-headers@~1.0.1: +on-headers@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== @@ -4491,18 +7306,30 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: wrappy "1" onetime@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" - integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" +opencollective-postinstall@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" + integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== + opener@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" - integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== + version "1.5.2" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== + +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" -optionator@^0.8.3: +optionator@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== @@ -4514,6 +7341,18 @@ optionator@^0.8.3: type-check "~0.3.2" word-wrap "~1.2.3" +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + ordered-read-streams@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" @@ -4521,82 +7360,50 @@ ordered-read-streams@^1.0.0: dependencies: readable-stream "^2.0.1" +original@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= - dependencies: - lcid "^1.0.0" - -os-locale@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - -os-name@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.0.0.tgz#e1434dbfddb8e74b44c98b56797d951b7648a5d9" - integrity sha512-7c74tib2FsdFbQ3W+qj8Tyd1R3Z6tuVRNNxXjJcZ4NgjIEQU9N/prVMqcW29XZPXGACqaXN3jq58/6hoaoXH6g== - dependencies: - macos-release "^2.0.0" - windows-release "^3.1.0" - -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== -output-file-sync@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" - integrity sha1-0KM+7+YaIF+suQCS6CZZjVJFznY= - dependencies: - graceful-fs "^4.1.4" - mkdirp "^0.5.1" - object-assign "^4.1.0" +p-cancelable@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.0.0.tgz#4a3740f5bdaf5ed5d7c3e34882c6fb5d6b266a6e" + integrity sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg== -p-cancelable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" - integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== +p-each-series@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" + integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= +p-event@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-4.2.0.tgz#af4b049c8acd91ae81083ebd1e6f5cae2044c1b5" + integrity sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ== + dependencies: + p-timeout "^3.1.0" p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -4604,10 +7411,17 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" - integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" + integrity sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg== dependencies: p-try "^2.0.0" @@ -4625,10 +7439,36 @@ p-locate@^3.0.0: dependencies: p-limit "^2.0.0" -p-timeout@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" - integrity sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y= +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + +p-timeout@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== dependencies: p-finally "^1.0.0" @@ -4637,22 +7477,39 @@ p-try@^1.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= -p-try@^2.0.0: +p-try@^2.0.0, p-try@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +package-json@^6.3.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" + integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== + dependencies: + got "^9.6.0" + registry-auth-token "^4.0.0" + registry-url "^5.0.0" + semver "^6.2.0" + +paged-request@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/paged-request/-/paged-request-2.0.1.tgz#91164f042231feb68643542d2530476a518ff4de" + integrity sha512-C0bB/PFk9rQskD1YEiz7uuchzqKDQGgdsEHN1ahify0UUWzgmMK4NDG9fhlQg2waogmNFwEvEeHfMRvJySpdVw== + dependencies: + axios "^0.18.0" + pako@~1.0.5: - version "1.0.10" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" - integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== parallel-transform@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" - integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY= + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== dependencies: - cyclist "~0.2.2" + cyclist "^1.0.1" inherits "^2.0.3" readable-stream "^2.1.5" @@ -4663,28 +7520,17 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0: - version "5.1.4" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc" - integrity sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw== +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== dependencies: - asn1.js "^4.0.0" + asn1.js "^5.2.0" browserify-aes "^1.0.0" - create-hash "^1.1.0" evp_bytestokey "^1.0.0" pbkdf2 "^3.0.3" safe-buffer "^5.1.1" -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" @@ -4692,12 +7538,27 @@ parse-json@^2.2.0: dependencies: error-ex "^1.2.0" +parse-json@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646" + integrity sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= -parseurl@~1.3.3: +parse5@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== + +parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== @@ -4717,24 +7578,22 @@ path-dirname@^1.0.0: resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= - dependencies: - pinkie-promise "^2.0.0" - path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@1.0.2: +path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= @@ -4744,10 +7603,10 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= -path-key@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.0.tgz#99a10d870a803bdd5ee6f0470e58dfcd2f9a54d3" - integrity sha512-8cChqz0RP6SHJkMt48FW0A7+qUOn+OsnOsVtzI59tZ8m+5bCSk7hzwET0pulwOM2YMn9J1efb07KB9l9f30SGg== +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.6: version "1.0.6" @@ -4759,24 +7618,29 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= -path-to-regexp@2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-2.2.1.tgz#90b617025a16381a879bc82a38d4e8bdeb2bcf45" - integrity sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ== - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= dependencies: - graceful-fs "^4.1.2" pify "^2.0.0" - pinkie-promise "^2.0.0" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== pbkdf2@^3.0.3: - version "3.0.17" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" - integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== + version "3.1.1" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" + integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -4784,7 +7648,17 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" -pify@^2.0.0: +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + +pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= @@ -4811,6 +7685,13 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= +pirates@^4.0.0, pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + pkg-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" @@ -4825,11 +7706,39 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +please-upgrade-node@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== + dependencies: + semver-compare "^1.0.0" + +portfinder@^1.0.26: + version "1.0.28" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" + integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.5" + posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -4840,25 +7749,53 @@ prepend-http@^1.0.1: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + +pretty-bytes@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.4.1.tgz#cd89f79bbcef21e3d21eb0da68ffe93f803e884b" + integrity sha512-s1Iam6Gwz3JI5Hweaz4GoCD1WUNUIyzePFy5+Js2hjwGVt2Z79wNN+ZKOZ2vB6C+Xs6njyB84Z1IthQg8d9LxA== + +pretty-format@^25.2.1, pretty-format@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" + integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== + dependencies: + "@jest/types" "^25.5.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + +pretty-format@^26.5.2: + version "26.5.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.5.2.tgz#5d896acfdaa09210683d34b6dc0e6e21423cd3e1" + integrity sha512-VizyV669eqESlkOikKJI8Ryxl/kPpbdLwNdPs2GrbQs18MpySB5S0Yo0N7zkg2xTRiFq4CFw8ct5Vg4a0xP0og== + dependencies: + "@jest/types" "^26.5.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + +prettyjson@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prettyjson/-/prettyjson-1.2.1.tgz#fcffab41d19cab4dfae5e575e64246619b12d289" + integrity sha1-/P+rQdGcq0365eV15kJGYZsS0ok= + dependencies: + colors "^1.1.2" + minimist "^1.2.0" -private@^0.1.6, private@^0.1.8: +private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== -process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" - integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== - -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= +process-nextick-args@^2.0.0, process-nextick-args@^2.0.1, process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== process@^0.11.10: version "0.11.10" @@ -4875,6 +7812,14 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= +prompts@^2.0.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" + integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.4" + proxy-addr@~2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" @@ -4888,10 +7833,15 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +pstree.remy@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" + integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== public-encrypt@^4.0.0: version "4.0.3" @@ -4935,21 +7885,33 @@ punycode@1.3.2: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -punycode@^1.2.4, punycode@^1.3.2: +punycode@^1.2.4: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= -punycode@^2.1.0: +punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +pupa@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.0.1.tgz#dbdc9ff48ffbea4a26a069b6f9f7abb051008726" + integrity sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA== + dependencies: + escape-goat "^2.0.0" + qs@6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -4961,20 +7923,11 @@ querystring@0.2.0: integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= querystringify@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" - integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== - -randomatic@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" - integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== - dependencies: - is-number "^4.0.0" - kind-of "^6.0.0" - math-random "^1.0.1" + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== @@ -4989,12 +7942,7 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -range-parser@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= - -range-parser@~1.2.1: +range-parser@^1.2.1, range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== @@ -5009,7 +7957,7 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: +rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -5019,27 +7967,67 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= +react-is@^16.12.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +read-chunk@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/read-chunk/-/read-chunk-3.2.0.tgz#2984afe78ca9bfbbdb74b19387bf9e86289c16ca" + integrity sha512-CEjy9LCzhmD7nUpJ1oVOE6s/hBkejlcJEgLQHVnQznOSilOPb+kpKktlLfFDK3/WP43+F80xkUTM2VOkYoSYvQ== + dependencies: + pify "^4.0.1" + with-open-file "^0.1.6" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-5.0.0.tgz#b6a6741cb144ed3610554f40162aa07a6db621b8" + integrity sha512-XBQjqOBtTzyol2CpsQOw8LHV0XbDZVG7xMMjmXAJomlVY03WOBRmYgDJETlvcg0H63AJvPRwT7GFi5rvOzUOKg== + dependencies: + find-up "^3.0.0" + read-pkg "^5.0.0" + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= +read-pkg@^5.0.0, read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" -"readable-stream@1 || 2", "readable-stream@> 1.0.0 < 3.0.0", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== +"readable-stream@1 || 2", "readable-stream@> 1.0.0 < 3.0.0", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -5059,29 +8047,16 @@ read-pkg@^1.0.0: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.3.0.tgz#cb8011aad002eb717bf040291feba8569c986fb9" - integrity sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw== +"readable-stream@2 || 3", readable-stream@^3.0.0, readable-stream@^3.0.6, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@~2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" - integrity sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA= - dependencies: - buffer-shims "^1.0.0" - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - -readdirp@^2.0.0, readdirp@^2.2.1: +readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== @@ -5090,36 +8065,65 @@ readdirp@^2.0.0, readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" -regenerate@^1.2.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== +readdirp@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" + integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== + dependencies: + picomatch "^2.2.1" -regenerator-runtime@^0.10.5: - version "0.10.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" - integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg= +recast@^0.18.1: + version "0.18.10" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.18.10.tgz#605ebbe621511eb89b6356a7e224bff66ed91478" + integrity sha512-XNvYvkfdAN9QewbrxeTOjgINkdY/odTgTS56ZNEWL9Ml0weT4T3sFtvnTuF+Gxyu46ANcRm1ntrF6F5LAJPAaQ== + dependencies: + ast-types "0.13.3" + esprima "~4.0.0" + private "^0.1.8" + source-map "~0.6.1" -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + dependencies: + resolve "^1.1.6" -regenerator-transform@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" - integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== +rechoir@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca" + integrity sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q== dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" - private "^0.1.6" + resolve "^1.9.0" -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== +reduce-flatten@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" + integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f" + integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A== + +regenerator-runtime@^0.13.4: + version "0.13.7" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" + integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== + +regenerator-transform@^0.14.2: + version "0.14.5" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== dependencies: - is-equal-shallow "^0.1.3" + "@babel/runtime" "^7.8.4" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -5129,44 +8133,54 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== - -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= +regexp.prototype.flags@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" -registry-auth-token@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" - integrity sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ== +regexpp@^3.0.0, regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +regexpu-core@^4.7.0: + version "4.7.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" + integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +registry-auth-token@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.0.tgz#1d37dffda72bbecd0f581e4715540213a65eb7da" + integrity sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w== dependencies: - rc "^1.1.6" - safe-buffer "^5.0.1" + rc "^1.2.8" -registry-url@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" - integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= +registry-url@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" + integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== dependencies: - rc "^1.0.1" + rc "^1.2.8" -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= +regjsgen@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== dependencies: jsesc "~0.5.0" @@ -5185,28 +8199,63 @@ repeat-element@^1.1.2: resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.5.2, repeat-string@^1.6.1: +repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= - dependencies: - is-finite "^1.0.0" +replace-ext@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a" + integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw== + +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== + dependencies: + lodash "^4.17.19" + +request-promise-native@^1.0.8: + version "1.0.9" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== + dependencies: + request-promise-core "1.1.4" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.88.0, request@^2.88.2: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -5224,6 +8273,13 @@ resolve-cwd@^2.0.0: dependencies: resolve-from "^3.0.0" +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + resolve-dir@^1.0.0, resolve-dir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" @@ -5242,18 +8298,37 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.10.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" - integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.9.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== dependencies: path-parse "^1.0.6" +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + +responselike@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.0.tgz#26391bcc3174f750f9a79eacc40a12a5c42d7723" + integrity sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw== + dependencies: + lowercase-keys "^2.0.0" + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -5267,20 +8342,37 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -rimraf@2, rimraf@2.6.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@2.6.3, rimraf@~2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== dependencies: glob "^7.1.3" -rimraf@3.0.2: +rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" +rimraf@^2.5.4, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -5289,12 +8381,20 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= - dependencies: - is-promise "^2.1.0" +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== + +run-async@^2.0.0, run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-parallel@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" + integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" @@ -5303,18 +8403,23 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -rxjs@^6.5.3: - version "6.5.4" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" - integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== +rxjs@^6.6.0: + version "6.6.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" + integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== dependencies: tslib "^1.9.0" -safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1, safe-buffer@~5.1.2: +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1, safe-buffer@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -5322,15 +8427,32 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3": +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== + dependencies: + "@cnakazawa/watch" "^1.0.3" + anymatch "^2.0.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + +saxes@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" schema-utils@^1.0.0: version "1.0.0" @@ -5341,17 +8463,74 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -"semver@2 || 3 || 4 || 5": +schema-utils@^2.6.5: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +schema-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" + integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA== + dependencies: + "@types/json-schema" "^7.0.6" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +scoped-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/scoped-regex/-/scoped-regex-1.0.0.tgz#a346bb1acd4207ae70bd7c0c7ca9e566b6baddb8" + integrity sha1-o0a7Gs1CB65wvXwMfKnlZra63bg= + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selfsigned@^1.10.7: + version "1.10.8" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30" + integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w== + dependencies: + node-forge "^0.10.0" + +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= + +semver-diff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" + integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== + dependencies: + semver "^6.3.0" + +semver-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" + integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== + +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@7.x, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== -semver@^6.1.2: +semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -5375,24 +8554,32 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" -serialize-javascript@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" - integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" -serve-handler@6.1.2: - version "6.1.2" - resolved "https://registry.yarnpkg.com/serve-handler/-/serve-handler-6.1.2.tgz#f05b0421a313fff2d257838cba00cbcc512cd2b6" - integrity sha512-RFh49wX7zJmmOVDcIjiDSJnMH+ItQEvyuYLYuDBVoA/xmQSCuj+uRmk1cmBB5QQlI3qOiWKp6p4DUGY+Z5AB2A== +serialize-javascript@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== dependencies: - bytes "3.0.0" - content-disposition "0.5.2" - fast-url-parser "1.1.3" - mime-types "2.1.18" - minimatch "3.0.4" - path-is-inside "1.0.2" - path-to-regexp "2.2.1" - range-parser "1.2.0" + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" serve-static@1.14.1: version "1.14.1" @@ -5404,51 +8591,38 @@ serve-static@1.14.1: parseurl "~1.3.3" send "0.17.1" -serve@11.3.0: - version "11.3.0" - resolved "https://registry.yarnpkg.com/serve/-/serve-11.3.0.tgz#1d342e13e310501ecf17b6602f1f35da640d6448" - integrity sha512-AU0g50Q1y5EVFX56bl0YX5OtVjUX1N737/Htj93dQGKuHiuLvVB45PD8Muar70W6Kpdlz8aNJfoUqTyAq9EE/A== - dependencies: - "@zeit/schemas" "2.6.0" - ajv "6.5.3" - arg "2.0.0" - boxen "1.3.0" - chalk "2.4.1" - clipboardy "1.2.3" - compression "1.7.3" - serve-handler "6.1.2" - update-check "1.5.2" - -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= -set-value@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" - integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= +set-getter@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.0.tgz#d769c182c9d5a51f409145f2fba82e5e86e80376" + integrity sha1-12nBgsnVpR9AkUXy+6guXoboA3Y= dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.1" to-object-path "^0.3.0" -set-value@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" - integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== dependencies: extend-shallow "^2.0.1" is-extendable "^0.1.1" is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@^1.0.4, setimmediate@~1.0.4: +setimmediate@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + setprototypeof@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" @@ -5462,6 +8636,13 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -5486,22 +8667,44 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +shelljs@^0.8.3: + version "0.8.4" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" + integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== + signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +sisteransi@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= -slice-ansi@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" - integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== - dependencies: - is-fullwidth-code-point "^2.0.0" +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== slice-ansi@^2.1.0: version "2.1.0" @@ -5542,41 +8745,47 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" +sockjs-client@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" + integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== + dependencies: + debug "^3.2.5" + eventsource "^1.0.7" + faye-websocket "~0.11.1" + inherits "^2.0.3" + json3 "^3.3.2" + url-parse "^1.4.3" + +sockjs@0.3.20: + version "0.3.20" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855" + integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== + dependencies: + faye-websocket "^0.10.0" + uuid "^3.4.0" + websocket-driver "0.6.5" + source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== source-map-resolve@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" - integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== dependencies: - atob "^2.1.1" + atob "^2.1.2" decode-uri-component "^0.2.0" resolve-url "^0.2.1" source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@0.5.16: - version "0.5.16" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" - integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== - dependencies: - source-map "^0.5.6" - -source-map-support@~0.5.12: - version "0.5.12" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" - integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== +source-map-support@0.5.19, source-map-support@^0.5.16, source-map-support@^0.5.17, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.19: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -5586,7 +8795,7 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= -source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: +source-map@^0.5.0, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -5596,31 +8805,59 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +source-map@^0.7.3, source-map@~0.7.2: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + spdx-correct@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" - integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" - integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" - integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + version "3.0.6" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz#c80757383c28abf7296744998cbc106ae8b854ce" + integrity sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" @@ -5629,18 +8866,33 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" -split2@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493" - integrity sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw== +split2@^3.1.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" + integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== dependencies: - through2 "^2.0.2" + readable-stream "^3.0.0" sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + ssri@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" @@ -5648,6 +8900,20 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" +ssri@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.0.tgz#79ca74e21f8ceaeddfcb4b90143c458b8d988808" + integrity sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA== + dependencies: + minipass "^3.1.1" + +stack-utils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593" + integrity sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg== + dependencies: + escape-string-regexp "^2.0.0" + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -5656,16 +8922,15 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -"statuses@>= 1.5.0 < 2", statuses@~1.5.0: +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -"stompjs@git://github.com/gfoiani/stomp-websocket.git#2.4.0": - version "2.4.0" - resolved "git://github.com/gfoiani/stomp-websocket.git#f7fe1d8fcdd9649f53c174f5e1a9470b23b36dfd" - optionalDependencies: - websocket latest +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= stream-browserify@^2.0.1: version "2.0.2" @@ -5695,34 +8960,30 @@ stream-http@^2.7.2: xtend "^4.0.0" stream-shift@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" - integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== -string-replace-loader@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/string-replace-loader/-/string-replace-loader-2.2.0.tgz#0a0e6543fcec783d85c353a3e96a23872d45a94f" - integrity sha512-Ukt4ZC8+xVWdBRut3/iwnPJCNL1yV8AbVKXn8UcWdYrHgtuW4UDDAbBSi/J/CQDEWQBt824AJvPYahF23eJLRg== +string-length@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" + integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw== dependencies: - loader-utils "^1.2.3" - schema-utils "^1.0.0" + char-regex "^1.0.2" + strip-ansi "^6.0.0" -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= +string-replace-loader@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/string-replace-loader/-/string-replace-loader-2.3.0.tgz#7f29be7d73c94dd92eccd5c5a15651181d7ecd3d" + integrity sha512-HYBIHStViMKLZC/Lehxy42OuwsBaPzX/LjcF5mkJlE2SnHXmW6SW6eiHABTXnY8ZCm/REbdJ8qnA0ptmIzN0Ng== dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" + loader-utils "^1.2.3" + schema-utils "^2.6.5" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" +string-template@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" + integrity sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0= string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" @@ -5733,7 +8994,7 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.1.0: +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== @@ -5742,12 +9003,28 @@ string-width@^4.1.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string.prototype.trimend@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" + integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string.prototype.trimstart@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" + integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" - integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: - safe-buffer "~5.1.0" + safe-buffer "~5.2.0" string_decoder@~0.10.x: version "0.10.31" @@ -5761,7 +9038,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: +strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= @@ -5789,6 +9066,21 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" +strip-bom-buf@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz#1cb45aaf57530f4caf86c7f75179d2c9a51dd572" + integrity sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI= + dependencies: + is-utf8 "^0.2.1" + +strip-bom-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz#f87db5ef2613f6968aa545abfe1ec728b6a829ca" + integrity sha1-+H217yYT9paKpUWr/h7HKLaoKco= + dependencies: + first-chunk-stream "^2.0.0" + strip-bom "^2.0.0" + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -5796,66 +9088,87 @@ strip-bom@^2.0.0: dependencies: is-utf8 "^0.2.0" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= -strip-json-comments@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" - integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -supports-color@6.1.0: +supports-color@^5.3.0, supports-color@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== dependencies: has-flag "^3.0.0" -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: - has-flag "^3.0.0" + has-flag "^4.0.0" -supports-color@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== +supports-hyperlinks@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" + integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== dependencies: has-flag "^4.0.0" + supports-color "^7.0.0" -table@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" - integrity sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg== +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +table-layout@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.1.tgz#8411181ee951278ad0638aea2f779a9ce42894f9" + integrity sha512-dEquqYNJiGwY7iPfZ3wbXDI944iqanTSchrACLL2nOB+1r+h1Nzu2eH+DuPPvWvm5Ry7iAPeFlgEtP5bIp5U7Q== dependencies: - ajv "^6.0.1" - ajv-keywords "^3.0.0" - chalk "^2.1.0" - lodash "^4.17.4" - slice-ansi "1.0.0" - string-width "^2.1.1" + array-back "^4.0.1" + deep-extend "~0.6.0" + typical "^5.2.0" + wordwrapjs "^4.0.0" table@^5.2.3: - version "5.4.0" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.0.tgz#d772a3216e68829920a41a32c18eda286c95d780" - integrity sha512-nHFDrxmbrkU7JAFKqKbDJXfzrX2UBsWmrieXFTGxiI5e4ncg3VqsZeI4EzNmX0ncp4XNGVeoxIWJXfCIXwrsvw== + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== dependencies: - ajv "^6.9.1" - lodash "^4.17.11" + ajv "^6.10.2" + lodash "^4.17.14" slice-ansi "^2.1.0" string-width "^3.0.0" @@ -5864,55 +9177,110 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tar@^4: - version "4.4.8" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" - integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== +tar@^6.0.2: + version "6.0.5" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.5.tgz#bde815086e10b39f1dcd298e89d596e1535e200f" + integrity sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg== dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.3.4" - minizlib "^1.1.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.2" + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" -term-size@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" - integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= +temp@^0.8.1: + version "0.8.4" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" + integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== + dependencies: + rimraf "~2.6.2" + +term-size@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" + integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== + +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== dependencies: - execa "^0.7.0" + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +terser-webpack-plugin@4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a" + integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== + dependencies: + cacache "^15.0.5" + find-cache-dir "^3.3.1" + jest-worker "^26.5.0" + p-limit "^3.0.2" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" + source-map "^0.6.1" + terser "^5.3.4" + webpack-sources "^1.4.3" terser-webpack-plugin@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" - integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== + version "1.4.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== dependencies: cacache "^12.0.2" find-cache-dir "^2.1.0" is-wsl "^1.1.0" schema-utils "^1.0.0" - serialize-javascript "^2.1.2" + serialize-javascript "^4.0.0" source-map "^0.6.1" terser "^4.1.2" webpack-sources "^1.4.0" worker-farm "^1.7.0" terser@^4.1.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.3.4.tgz#ad91bade95619e3434685d69efa621a5af5f877d" - integrity sha512-Kcrn3RiW8NtHBP0ssOAzwa2MsIRQ8lJWiBG/K7JgqPlomA3mtb2DEmp4/hrUA+Jujx+WZ02zqd7GYD+QRBB/2Q== + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== dependencies: commander "^2.20.0" source-map "~0.6.1" source-map-support "~0.5.12" +terser@^5.3.4: + version "5.3.5" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.3.5.tgz#9e080baa0568f96654621b20eb9effa440b1484e" + integrity sha512-Qw3CZAMmmfU824AoGKalx+riwocSI5Cs0PoGp9RdSLfmxkmJgyBxqLBP/isDNtFyhHnitikvRMZzyVgeq+U+Tg== + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.19" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= +textextensions@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-2.6.0.tgz#d7e4ab13fe54e32e08873be40d51b74229b00fc4" + integrity sha512-49WtAWS+tcsy93dRt6P0P3AMD2m5PvXRhuEA0kaXos5ZLlujtYmpmFsB+QvWUSxE1ZsstmYXfQ7L40+EcQgpAQ== + +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + through2-filter@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" @@ -5921,7 +9289,7 @@ through2-filter@^3.0.0: through2 "~2.0.0" xtend "~4.0.0" -through2@^2.0.0, through2@^2.0.1, through2@^2.0.2, through2@~2.0.0: +through2@^2.0.0, through2@^2.0.1, through2@~2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -5929,20 +9297,33 @@ through2@^2.0.0, through2@^2.0.1, through2@^2.0.2, through2@~2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -through@^2.3.6, through@^2.3.8: +through2@^3.0.0, through2@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4" + integrity sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ== + dependencies: + inherits "^2.0.4" + readable-stream "2 || 3" + +"through@>=2.2.7 <3", through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + timed-out@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= timers-browserify@^2.0.4: - version "2.0.10" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" - integrity sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg== + version "2.0.11" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" + integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== dependencies: setimmediate "^1.0.4" @@ -5953,6 +9334,11 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + to-absolute-glob@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" @@ -5966,11 +9352,6 @@ to-arraybuffer@^1.0.0: resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -5983,6 +9364,16 @@ to-object-path@^0.3.0: dependencies: kind-of "^3.0.2" +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + +to-readable-stream@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-2.1.0.tgz#82880316121bea662cdc226adb30addb50cb06e8" + integrity sha512-o3Qa6DGg1CEXshSdvWNX2sN4QHqg03SPq7U6jPXRahlQdl5dK8oXjkU/2/sGrnOZKeGV1zLSO8qPwyKklPPE7w== + to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" @@ -5991,6 +9382,13 @@ to-regex-range@^2.1.0: is-number "^3.0.0" repeat-string "^1.6.1" +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" @@ -6006,31 +9404,127 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -"traverse@>=0.3.0 <0.4": - version "0.3.9" - resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" - integrity sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk= +touch@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" + integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== + dependencies: + nopt "~1.0.10" + +tough-cookie@^2.3.3, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tough-cookie@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" + integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== + dependencies: + ip-regex "^2.1.0" + psl "^1.1.28" + punycode "^2.1.1" -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= +tr46@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" + integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== + dependencies: + punycode "^2.1.1" tryer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== -tslib@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== +ts-jest@26.4.1: + version "26.4.1" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.4.1.tgz#08ec0d3fc2c3a39e4a46eae5610b69fafa6babd0" + integrity sha512-F4aFq01aS6mnAAa0DljNmKr/Kk9y4HVZ1m6/rtJ0ED56cuxINGq3Q9eVAh+z5vcYKe5qnTMvv90vE8vUMFxomg== + dependencies: + "@types/jest" "26.x" + bs-logger "0.x" + buffer-from "1.x" + fast-json-stable-stringify "2.x" + jest-util "^26.1.0" + json5 "2.x" + lodash.memoize "4.x" + make-error "1.x" + mkdirp "1.x" + semver "7.x" + yargs-parser "20.x" + +ts-loader@8.0.5: + version "8.0.5" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-8.0.5.tgz#fa42b9305247eb964843df1ecb0e589b1bff0f77" + integrity sha512-MvLXmjDxl2Mhv17nvkrB6BrpC8FTwSb7K38oIgdUI6BMx4XgVbljmcoOzlrYn4wyjNTFQ3utd7s2TyigJyR3YA== + dependencies: + chalk "^2.3.0" + enhanced-resolve "^4.0.0" + loader-utils "^1.0.2" + micromatch "^4.0.0" + semver "^6.0.0" + +ts-node@9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.0.0.tgz#e7699d2a110cc8c0d3b831715e417688683460b3" + integrity sha512-/TqB4SnererCDR/vb4S/QvSZvzQMJN8daAslg7MeaiHvD8rDZsSfXmNeNumyZZzMned72Xoq/isQljYSt8Ynfg== + dependencies: + arg "^4.1.0" + diff "^4.0.1" + make-error "^1.1.1" + source-map-support "^0.5.17" + yn "3.1.1" + +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + +tslib@^1.8.1, tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tsutils@^3.17.1: + version "3.17.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" + integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== + dependencies: + tslib "^1.8.1" tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -6038,6 +9532,26 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.10.0.tgz#7f06b2b9fbfc581068d1341ffabd0349ceafc642" + integrity sha512-EUV9jo4sffrwlg8s0zDhP0T2WD3pru5Xi0+HTE3zTUmBaZNhfkite9PdSJwdXLwPVW0jnAHT56pZHIOYckPEiw== + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + type-fest@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" @@ -6051,6 +9565,16 @@ type-is@~1.6.17, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.1.0.tgz#9bdc22c648cf8cf86dd23d32336a41cfb6475e3f" + integrity sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA== + typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -6063,20 +9587,60 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +typescript@4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.3.tgz#153bbd468ef07725c1df9c77e8b453f8d36abba5" + integrity sha512-tEu6DGxGgRJPb/mVPIZ48e69xCn2yRmCgYmDugAVwmJ6o+0u1RI18eO7E7WBTLYLaEVVOhwQmcdhQHweux/WPg== + +typical@^5.0.0, typical@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" + integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== + unc-path-regex@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= +undefsafe@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae" + integrity sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A== + dependencies: + debug "^2.2.0" + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + union-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" - integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== dependencies: arr-union "^3.1.0" get-value "^2.0.6" is-extendable "^0.1.1" - set-value "^0.4.3" + set-value "^2.0.1" unique-filename@^1.1.1: version "1.1.1" @@ -6100,12 +9664,12 @@ unique-stream@^2.0.2: json-stable-stringify-without-jsonify "^1.0.1" through2-filter "^3.0.0" -universal-user-agent@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-2.0.3.tgz#9f6f09f9cc33de867bb720d84c08069b14937c6c" - integrity sha512-eRHEHhChCBHrZsA4WEhdgiOKgdvgrMIHwnwnqD0r5C6AO8kwKcG7qSku3iXdhvHL3YvsS9ZkSGN8h/hIpoFC8g== +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== dependencies: - os-name "^3.0.0" + crypto-random-string "^2.0.0" universalify@^0.1.0: version "0.1.2" @@ -6125,38 +9689,44 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -unzipper@^0.8.11: - version "0.8.14" - resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.8.14.tgz#ade0524cd2fc14d11b8de258be22f9d247d3f79b" - integrity sha512-8rFtE7EP5ssOwGpN2dt1Q4njl0N1hUXJ7sSPz0leU2hRdq6+pra57z4YPBlVqm40vcgv6ooKZEAx48fMTv9x4w== - dependencies: - big-integer "^1.6.17" - binary "~0.3.0" - bluebird "~3.4.1" - buffer-indexof-polyfill "~1.0.0" - duplexer2 "~0.1.4" - fstream "~1.0.10" - listenercount "~1.0.1" - readable-stream "~2.1.5" - setimmediate "~1.0.4" +untildify@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.3.tgz#1e7b42b140bcfd922b22e70ca1265bfe3634c7c9" + integrity sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA== -upath@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" - integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q== +unzip-response@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" + integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= -update-check@1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/update-check/-/update-check-1.5.2.tgz#2fe09f725c543440b3d7dabe8971f2d5caaedc28" - integrity sha512-1TrmYLuLj/5ZovwUS7fFd1jMH3NnFDN1y1A8dboedIDt7zs/zJMo6TwwlhYKkSeEwzleeiSBV5/3c9ufAQWDaQ== - dependencies: - registry-auth-token "3.3.2" - registry-url "3.1.0" +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +update-notifier@^4.0.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3" + integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A== + dependencies: + boxen "^4.2.0" + chalk "^3.0.0" + configstore "^5.0.1" + has-yarn "^2.1.0" + import-lazy "^2.1.0" + is-ci "^2.0.0" + is-installed-globally "^0.3.1" + is-npm "^4.0.0" + is-yarn-global "^0.3.0" + latest-version "^5.0.0" + pupa "^2.0.1" + semver-diff "^3.1.1" + xdg-basedir "^4.0.0" uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + version "4.4.0" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" + integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== dependencies: punycode "^2.1.0" @@ -6177,7 +9747,14 @@ url-parse-lax@^1.0.0: dependencies: prepend-http "^1.0.1" -url-parse@~1.4.3: +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + dependencies: + prepend-http "^2.0.0" + +url-parse@^1.4.3, url-parse@~1.4.3: version "1.4.7" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== @@ -6185,16 +9762,6 @@ url-parse@~1.4.3: querystringify "^2.1.1" requires-port "^1.0.0" -url-template@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" - integrity sha1-/FZaPMy/93MMd19WQflVV5FDnyE= - -url-to-options@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" - integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= - url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -6208,10 +9775,12 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -user-home@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" - integrity sha1-K1viOjK2Onyd640PKNSFcko98ZA= +utf-8-validate@5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.2.tgz#63cfbccd85dc1f2b66cf7a1d0eebc08ed056bfb3" + integrity sha512-SwV++i2gTD5qh2XqaPzBnNX88N6HdyhQrNNRykvcS0QKvItV9u3vPEJr+X5Hhfb1JC0r0e1alL0iB09rY8+nmw== + dependencies: + node-gyp-build "~3.7.0" util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" @@ -6237,27 +9806,29 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid-v4@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/uuid-v4/-/uuid-v4-0.1.0.tgz#62d7b310406f6cecfea1528c69f1e8e0bcec5a3a" - integrity sha1-YtezEEBvbOz+oVKMafHo4LzsWjo= - -v8-compile-cache@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" - integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w== +uuid@8.3.1, uuid@^8.3.0: + version "8.3.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.1.tgz#2ba2e6ca000da60fce5a196954ab241131e05a31" + integrity sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg== -v8-compile-cache@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" - integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== +uuid@^3.3.2, uuid@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -v8flags@^2.1.1: +v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" - integrity sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ= + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" + integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== + +v8-to-istanbul@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-6.0.1.tgz#7ef0e32faa10f841fe4c1b0f8de96ed067c0be1e" + integrity sha512-PzM1WlqquhBvsV+Gco6WSFeg1AGdD53ccMRkFeyHRE/KRZaVacPOmQYP3EeVgDBtKD2BJ8kgynBQ5OtKiHCH+w== dependencies: - user-home "^1.1.1" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" validate-npm-package-license@^3.0.1: version "3.0.4" @@ -6272,24 +9843,103 @@ vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vinyl-file@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/vinyl-file/-/vinyl-file-3.0.0.tgz#b104d9e4409ffa325faadd520642d0a3b488b365" + integrity sha1-sQTZ5ECf+jJfqt1SBkLQo7SIs2U= + dependencies: + graceful-fs "^4.1.2" + pify "^2.3.0" + strip-bom-buf "^1.0.0" + strip-bom-stream "^2.0.0" + vinyl "^2.0.1" + +vinyl@^2.0.1, vinyl@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.1.tgz#23cfb8bbab5ece3803aa2c0a1eb28af7cbba1974" + integrity sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw== + dependencies: + clone "^2.1.1" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + vm-browserify@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" - integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw== + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== -watchpack@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" - integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== + dependencies: + xml-name-validator "^3.0.0" + +walker@^1.0.7, walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + +watchpack-chokidar2@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" + integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.4.tgz#6e9da53b3c80bb2d6508188f5b200410866cd30b" + integrity sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg== dependencies: - chokidar "^2.0.2" graceful-fs "^4.1.2" neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.0" -webpack-bundle-analyzer@3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.7.0.tgz#84da434e89442899b884d9ad38e466d0db02a56f" - integrity sha512-mETdjZ30a3Yf+NTB/wqTgACK7rAYQl5uxKK0WVTNmF0sM3Uv8s3R58YZMW7Rhu0Lk2Rmuhdj5dcH5Q76zCDVdA== +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + +webpack-bundle-analyzer@3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz#f6f94db108fb574e415ad313de41a2707d33ef3c" + integrity sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA== dependencies: acorn "^7.1.1" acorn-walk "^7.1.1" @@ -6300,27 +9950,88 @@ webpack-bundle-analyzer@3.7.0: express "^4.16.3" filesize "^3.6.1" gzip-size "^5.0.0" - lodash "^4.17.15" + lodash "^4.17.19" mkdirp "^0.5.1" opener "^1.5.1" ws "^6.0.0" -webpack-cli@3.3.11: - version "3.3.11" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.11.tgz#3bf21889bf597b5d82c38f215135a411edfdc631" - integrity sha512-dXlfuml7xvAFwYUPsrtQAA9e4DOe58gnzSxhgrO/ZM/gyXTBowrsYeubyN4mqGhYdpXMFNyQ6emjJS9M7OBd4g== - dependencies: - chalk "2.4.2" - cross-spawn "6.0.5" - enhanced-resolve "4.1.0" - findup-sync "3.0.0" - global-modules "2.0.0" - import-local "2.0.0" - interpret "1.2.0" - loader-utils "1.2.3" - supports-color "6.1.0" - v8-compile-cache "2.0.3" - yargs "13.2.4" +webpack-cli@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.0.0.tgz#77ded6f871145439d87797cd39a65f9f782d4f93" + integrity sha512-c5NOm8jDp3qWa+Q4pDZTcT5IwPcPXdjU1ejN9e7LojHQN02sjNr4tzLrt5pwkY+zN8pQL40m14JsbC2Dh+ZJ/w== + dependencies: + "@webpack-cli/info" "^1.0.1" + "@webpack-cli/init" "^1.0.1" + "@webpack-cli/serve" "^1.0.1" + ansi-escapes "^4.3.1" + colorette "^1.2.1" + command-line-usage "^6.1.0" + commander "^6.0.0" + enquirer "^2.3.4" + execa "^4.0.0" + import-local "^3.0.2" + interpret "^2.0.0" + rechoir "^0.7.0" + v8-compile-cache "^2.1.0" + webpack-merge "^4.2.2" + +webpack-dev-middleware@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" + integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== + dependencies: + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@3.11.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c" + integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.3.1" + http-proxy-middleware "0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.8" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.26" + schema-utils "^1.0.0" + selfsigned "^1.10.7" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "0.3.20" + sockjs-client "1.4.0" + spdy "^4.0.2" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.2" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "^13.3.2" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" webpack-md5-hash@0.0.6: version "0.0.6" @@ -6329,7 +10040,14 @@ webpack-md5-hash@0.0.6: dependencies: md5 "^2.0.0" -webpack-sources@^1.4.0, webpack-sources@^1.4.1: +webpack-merge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" + integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== + dependencies: + lodash "^4.17.15" + +webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -6337,112 +10055,130 @@ webpack-sources@^1.4.0, webpack-sources@^1.4.1: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@4.41.6: - version "4.41.6" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.6.tgz#12f2f804bf6542ef166755050d4afbc8f66ba7e1" - integrity sha512-yxXfV0Zv9WMGRD+QexkZzmGIh54bsvEs+9aRWxnN8erLWEOehAKUTeNBoUbA6HPEZPlRo7KDi2ZcNveoZgK9MA== +webpack@4.44.1: + version "4.44.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.1.tgz#17e69fff9f321b8f117d1fda714edfc0b939cc21" + integrity sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ== dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/wasm-edit" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - acorn "^6.2.1" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" ajv "^6.10.2" ajv-keywords "^3.4.1" chrome-trace-event "^1.0.2" - enhanced-resolve "^4.1.0" + enhanced-resolve "^4.3.0" eslint-scope "^4.0.3" json-parse-better-errors "^1.0.2" loader-runner "^2.4.0" loader-utils "^1.2.3" memory-fs "^0.4.1" micromatch "^3.1.10" - mkdirp "^0.5.1" + mkdirp "^0.5.3" neo-async "^2.6.1" node-libs-browser "^2.2.1" schema-utils "^1.0.0" tapable "^1.1.3" terser-webpack-plugin "^1.4.3" - watchpack "^1.6.0" + watchpack "^1.7.4" webpack-sources "^1.4.1" -websocket-stream@^5.1.2: - version "5.3.0" - resolved "https://registry.yarnpkg.com/websocket-stream/-/websocket-stream-5.3.0.tgz#aeeb2919c437133082c915ab74d21ec7849dd618" - integrity sha512-L4kN0NYwZJc0q7QKVHyjS7oNx2TuLyx6P2RDVJwejuKRYklU72FwLMRmQP/1UEYwNVTJgjBtNpde4NvqeyswLQ== +websocket-driver@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" + integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= dependencies: - duplexify "^3.6.1" - inherits "^2.0.1" - readable-stream "^3.0.0" - safe-buffer "^5.1.2" - ws "^6.1.2" - xtend "^4.0.0" + websocket-extensions ">=0.1.1" -websocket@latest: - version "1.0.28" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.28.tgz#9e5f6fdc8a3fe01d4422647ef93abdd8d45a78d3" - integrity sha512-00y/20/80P7H4bCYkzuuvvfDvh+dgtXi5kzDf3UcZwN6boTYaKvsrtZ5lIYm1Gsg48siMErd9M4zjSYfYFHTrA== +websocket-driver@>=0.5.1: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== dependencies: - debug "^2.2.0" - nan "^2.11.0" - typedarray-to-buffer "^3.1.5" - yaeti "^0.0.6" + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^8.0.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.4.0.tgz#50fb9615b05469591d2b2bd6dfaed2942ed72837" + integrity sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^2.0.2" + webidl-conversions "^6.1.0" which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: +which-pm-runs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" + integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= + +which@^1.2.14, which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" -which@^2.0.1: +which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - -widest-line@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" - integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== dependencies: - string-width "^2.1.1" - -window-size@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" - integrity sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU= + string-width "^4.0.0" -windows-release@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.1.0.tgz#8d4a7e266cbf5a233f6c717dac19ce00af36e12e" - integrity sha512-hBb7m7acFgQPQc222uEQTmdcGLeBmQLNLFIh0rDk3CwFOBrfjefLzEfEfmpMq8Af/n/GnFf3eYf203FY1PmudA== +with-open-file@^0.1.6: + version "0.1.7" + resolved "https://registry.yarnpkg.com/with-open-file/-/with-open-file-0.1.7.tgz#e2de8d974e8a8ae6e58886be4fe8e7465b58a729" + integrity sha512-ecJS2/oHtESJ1t3ZfMI3B7KIDKyfN0O16miWxdn30zdh66Yd3LsRFebXZXq6GU4xfxLf6nVxp9kIqElb5fqczA== dependencies: - execa "^0.10.0" + p-finally "^1.0.0" + p-try "^2.1.0" + pify "^4.0.1" -word-wrap@~1.2.3: +word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +wordwrapjs@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.0.tgz#9aa9394155993476e831ba8e59fb5795ebde6800" + integrity sha512-Svqw723a3R34KvsMgpjFBYCgNOSdcW3mQFK4wIfhGQhtaFVOJmdYoXgi63ne3dTlWgatVcUc7t4HtQ/+bUVIzQ== + dependencies: + reduce-flatten "^2.0.0" + typical "^5.0.0" + worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" @@ -6450,14 +10186,6 @@ worker-farm@^1.7.0: dependencies: errno "~0.1.7" -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" @@ -6467,11 +10195,39 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= +write-file-atomic@^2.3.0: + version "2.4.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + write@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" @@ -6479,44 +10235,64 @@ write@1.0.3: dependencies: mkdirp "^0.5.1" -ws@^6.0.0, ws@^6.1.2: +ws@^6.0.0, ws@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== dependencies: async-limiter "~1.0.0" -xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= +ws@^7.2.3, ws@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" + integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= +xdg-basedir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" + integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== -yaeti@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" - integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yallist@^3.0.0, yallist@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" - integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== +yaml@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" + integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== + +yargs-parser@20.x: + version "20.2.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.1.tgz#28f3773c546cdd8a69ddae68116b48a5da328e77" + integrity sha512-yYsjuSkjbLMBp16eaOt7/siKTjNVjMm3SoJnIg3sEh/JsvqVVDyjRKmaJV4cl+lNIgq6QEco2i3gDebJl7/vLA== -yargs-parser@^13.1.0: +yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== @@ -6524,47 +10300,107 @@ yargs-parser@^13.1.0: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" - integrity sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ= +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== dependencies: - camelcase "^3.0.0" - lodash.assign "^4.0.6" + camelcase "^5.0.0" + decamelize "^1.2.0" -yargs@13.2.4: - version "13.2.4" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" - integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== dependencies: cliui "^5.0.0" find-up "^3.0.0" get-caller-file "^2.0.1" - os-locale "^3.1.0" require-directory "^2.1.1" require-main-filename "^2.0.0" set-blocking "^2.0.0" string-width "^3.0.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^13.1.0" - -yargs@^4.2.0: - version "4.8.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" - integrity sha1-wMQpJMpKqmsObaFznfshZDn53cA= - dependencies: - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - lodash.assign "^4.0.3" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" + yargs-parser "^13.1.2" + +yargs@^15.4.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" require-directory "^2.1.1" - require-main-filename "^1.0.1" + require-main-filename "^2.0.0" set-blocking "^2.0.0" - string-width "^1.0.1" - which-module "^1.0.0" - window-size "^0.2.0" - y18n "^3.2.1" - yargs-parser "^2.4.1" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yeoman-environment@^2.8.1, yeoman-environment@^2.9.5: + version "2.10.3" + resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-2.10.3.tgz#9d8f42b77317414434cc0e51fb006a4bdd54688e" + integrity sha512-pLIhhU9z/G+kjOXmJ2bPFm3nejfbH+f1fjYRSOteEXDBrv1EoJE/e+kuHixSXfCYfTkxjYsvRaDX+1QykLCnpQ== + dependencies: + chalk "^2.4.1" + debug "^3.1.0" + diff "^3.5.0" + escape-string-regexp "^1.0.2" + execa "^4.0.0" + globby "^8.0.1" + grouped-queue "^1.1.0" + inquirer "^7.1.0" + is-scoped "^1.0.0" + lodash "^4.17.10" + log-symbols "^2.2.0" + mem-fs "^1.1.0" + mem-fs-editor "^6.0.0" + npm-api "^1.0.0" + semver "^7.1.3" + strip-ansi "^4.0.0" + text-table "^0.2.0" + untildify "^3.0.3" + yeoman-generator "^4.8.2" + +yeoman-generator@^4.12.0, yeoman-generator@^4.7.2, yeoman-generator@^4.8.2: + version "4.12.0" + resolved "https://registry.yarnpkg.com/yeoman-generator/-/yeoman-generator-4.12.0.tgz#512e783a38b004c49265e71826a09ff7f1939f4b" + integrity sha512-lozwklVQHwUXMM1o8BgxEB8F5BB7vkHW4pjAo1Zt5sJ7FOlWhd6DJ4ZxJ2OK0w+gNYkY/ocPMkUV7DTz/uqEEg== + dependencies: + async "^2.6.2" + chalk "^2.4.2" + cli-table "^0.3.1" + cross-spawn "^6.0.5" + dargs "^6.1.0" + dateformat "^3.0.3" + debug "^4.1.1" + diff "^4.0.1" + error "^7.0.2" + find-up "^3.0.0" + github-username "^3.0.0" + istextorbinary "^2.5.1" + lodash "^4.17.11" + make-dir "^3.0.0" + mem-fs-editor "^7.0.1" + minimist "^1.2.5" + pretty-bytes "^5.2.0" + read-chunk "^3.2.0" + read-pkg-up "^5.0.0" + rimraf "^2.6.3" + run-async "^2.0.0" + semver "^7.2.1" + shelljs "^0.8.3" + text-table "^0.2.0" + through2 "^3.0.1" + optionalDependencies: + grouped-queue "^1.1.0" + yeoman-environment "^2.9.5" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==