diff --git a/.drone.yml b/.drone.yml index 54526d0d5..c61b621fd 100644 --- a/.drone.yml +++ b/.drone.yml @@ -8,8 +8,10 @@ pipeline: test: image: erxes/runner:latest environment: + - MONGO_URL=mongodb://mongo/erxes - TEST_MONGO_URL=mongodb://mongo/test - JWT_TOKEN_SECRET=token + - MAIN_APP_DOMAIN=http://localhost:3000 commands: - node -v - npm -v @@ -17,8 +19,8 @@ pipeline: - yarn install - yarn lint - yarn tsc - - mkdir src/private/xlsTemplateOutputs - yarn test + - mkdir src/private/xlsTemplateOutputs build: image: erxes/runner:latest diff --git a/.env.sample b/.env.sample index 1dfa43ae5..aa856a8af 100644 --- a/.env.sample +++ b/.env.sample @@ -18,18 +18,5 @@ RABBITMQ_HOST=amqp://localhost # ELASTICSEARCH ELASTICSEARCH_URL=http://localhost:9200 -# cron -PORT_CRONS=3600 - -# workers -PORT_WORKERS=3700 - -# erxes public facing domains -DOMAIN=http://localhost:3300 -MAIN_APP_DOMAIN=http://localhost:3000 -WIDGETS_DOMAIN=http://localhost:3200 -INTEGRATIONS_API_DOMAIN=http://localhost:3400 -CRONS_API_DOMAIN= -WORKERS_API_DOMAIN= -LOGS_API_DOMAIN= -ENGAGES_API_DOMAIN= +# frontend domain +MAIN_APP_DOMAIN=http://localhost:3000 \ No newline at end of file diff --git a/.snyk b/.snyk index 9229c9a0e..302303ca8 100644 --- a/.snyk +++ b/.snyk @@ -10,6 +10,56 @@ ignore: - firebase-admin > @google-cloud/firestore > lodash.merge: reason: None given expires: '2019-11-28T23:30:03.061Z' + SNYK-JS-MINIMIST-559764: + - '@axelspringer/graphql-google-pubsub > @google-cloud/pubsub > google-gax > grpc > node-pre-gyp > mkdirp > minimist': + reason: None given + expires: '2020-04-25T09:17:23.755Z' + - '@axelspringer/graphql-google-pubsub > @google-cloud/pubsub > google-gax > grpc > node-pre-gyp > tar > mkdirp > minimist': + reason: None given + expires: '2020-04-25T09:17:23.755Z' + - '@axelspringer/graphql-google-pubsub > @google-cloud/pubsub > google-gax > grpc-gcp > grpc > node-pre-gyp > mkdirp > minimist': + reason: None given + expires: '2020-04-25T09:17:23.755Z' + - '@axelspringer/graphql-google-pubsub > @google-cloud/pubsub > google-gax > grpc-gcp > grpc > node-pre-gyp > tar > mkdirp > minimist': + reason: None given + expires: '2020-04-25T09:17:23.755Z' + - '@axelspringer/graphql-google-pubsub > @google-cloud/pubsub > google-gax > grpc > node-pre-gyp > rc > minimist': + reason: None given + expires: '2020-04-25T09:17:23.755Z' + - '@axelspringer/graphql-google-pubsub > @google-cloud/pubsub > google-gax > grpc-gcp > grpc > node-pre-gyp > rc > minimist': + reason: None given + expires: '2020-04-25T09:17:23.755Z' + - minimist: + reason: None given + expires: '2020-04-25T09:17:23.755Z' + - mkdirp > minimist: + reason: None given + expires: '2020-04-25T09:17:23.755Z' + - node-pre-gyp > mkdirp > minimist: + reason: None given + expires: '2020-04-25T09:17:23.756Z' + - node-pre-gyp > tar > mkdirp > minimist: + reason: None given + expires: '2020-04-25T09:17:23.756Z' + - node-pre-gyp > rc > minimist: + reason: None given + expires: '2020-04-25T09:17:23.756Z' + - snyk > @snyk/update-notifier > latest-version > package-json > registry-auth-token > rc > minimist: + reason: None given + expires: '2020-04-25T09:17:23.756Z' + - snyk > @snyk/update-notifier > latest-version > package-json > registry-url > rc > minimist: + reason: None given + expires: '2020-04-25T09:17:23.756Z' + - handlebars > optimist > minimist: + reason: None given + expires: '2020-04-25T09:17:23.756Z' + SNYK-JS-BSON-561052: + - mongoose > bson: + reason: None given + expires: '2020-04-25T09:17:23.755Z' + - mongoose > mongodb > bson: + reason: None given + expires: '2020-04-25T09:17:23.755Z' # patches apply the minimum changes required to fix a vulnerability patch: SNYK-JS-HTTPSPROXYAGENT-469131: @@ -74,8 +124,6 @@ patch: SNYK-JS-LODASH-450202: - apollo-server-express > apollo-server-core > apollo-engine-reporting > lodash: patched: '2019-10-29T23:28:52.891Z' - '@snyk/dep-graph > graphlib > lodash': - patched: '2020-01-08T11:18:38.625Z' - apollo-server-express > apollo-server-core > lodash: patched: '2019-10-29T23:28:52.891Z' - firebase-admin > @google-cloud/storage > async > lodash: @@ -98,6 +146,8 @@ patch: patched: '2019-10-29T23:34:16.286Z' - snyk > snyk-go-plugin > graphlib > lodash: patched: '2019-10-29T23:34:16.286Z' + - '@snyk/dep-graph > graphlib > lodash': + patched: '2020-01-08T11:18:38.625Z' SNYK-JS-TREEKILL-536781: - snyk > snyk-sbt-plugin > tree-kill: patched: '2020-01-08T11:06:24.493Z' diff --git a/CHANGELOG.md b/CHANGELOG.md index c479885ad..8a2501dc4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,27 @@ +# [0.13.0](https://github.com/erxes/erxes-api/compare/0.12.5...0.13.0) (2020-03-17) + + +### Bug Fixes + +* **activity-log:** checked empty content ([ce3daea](https://github.com/erxes/erxes-api/commit/ce3daeac23631dceb745ec4be20127b46097f7c9)) +* **conversation:** counting left, joined messages in messsageCount field ([9f8201d](https://github.com/erxes/erxes-api/commit/9f8201d9e4e57e07a5b07ea030e929139bd76ddd)), closes [#694](https://github.com/erxes/erxes-api/issues/694) +* **importHistory:** cannot remove contacts if there are too many contacts ([be6ee64](https://github.com/erxes/erxes-api/commit/be6ee64d0602b230b0230de12ce3686a287729fd)), closes [erxes/erxes#1681](https://github.com/erxes/erxes/issues/1681) +* remove account only when there is no integration ([1e33a60](https://github.com/erxes/erxes-api/commit/1e33a60256d2d2ee10534803e57dea7172383281)) + + +### Features + +* **board:** add archive functionality ([49e09f7](https://github.com/erxes/erxes-api/commit/49e09f7eb23dde1c5c0211b9b20240d52feecca3)), closes [erxes/erxes#1625](https://github.com/erxes/erxes/issues/1625) +* **email-verification:** added email verification service ([d509e99](https://github.com/erxes/erxes-api/commit/d509e999f04b961ef38e0eb9c98cf64cdf656d3d)), closes [#1662](https://github.com/erxes/erxes-api/issues/1662) +* **users:** filter by brand ([9dca98e](https://github.com/erxes/erxes-api/commit/9dca98e9e4ff369fea01c2a3272b534a077396d3)), closes [#681](https://github.com/erxes/erxes-api/issues/681) +* **videoCall:** add video call integration using daily.co ([bb25bf9](https://github.com/erxes/erxes-api/commit/bb25bf96e70df43b0ee572f4b1e9eef6d490980d)), closes [erxes/erxes#1638](https://github.com/erxes/erxes/issues/1638) + + +### Performance Improvements + +* **customer:** export pop-ups data for customer list when filtering by pop ups ([9fb2574](https://github.com/erxes/erxes-api/commit/9fb25749c0c75b35b5968aa29acbd05bc084a787)), closes [erxes/erxes#1674](https://github.com/erxes/erxes/issues/1674) +* **merge-repos:** merged logger & engage-mail-sender repos ([6d2d8dd](https://github.com/erxes/erxes-api/commit/6d2d8dd85510f475d13ad49ea986fa4d9d89f276)), closes [#736](https://github.com/erxes/erxes-api/issues/736) + ## [0.12.5](https://github.com/erxes/erxes-api/compare/0.12.4...0.12.5) (2020-03-06) diff --git a/README.md b/README.md index edb183053..7cd3fd44b 100644 --- a/README.md +++ b/README.md @@ -2,66 +2,35 @@ erxes is an open source growth marketing platform. Marketing, sales, and customer service platform designed to help your business attract more engaged customers. Replace Hubspot with the mission and community-driven ecosystem. -Live demo | Join us on RocketChat +Live demo | Join us on RocketChat ![Docker Pulls](https://img.shields.io/docker/pulls/erxes/erxes-api) ![Build Status](https://drone.erxes.io/api/badges/erxes/erxes-api/status.svg?branch=master) [![Coverage Status](https://coveralls.io/repos/github/erxes/erxes-api/badge.svg?branch=master)](https://coveralls.io/github/erxes/erxes-widgets-api?branch=master) [![Known Vulnerabilities](https://snyk.io/test/github/erxes/erxes-api/badge.svg)](https://snyk.io/test/github/erxes/erxes-api) -## Running the server +Open Source Growth Marketing Platform -#### 1. Node (version >= 4) and NPM need to be installed. +## Features -Make sure your MongoDB and Redis server is running. + -#### 2. Clone and install dependencies. +erxes helps you attract and engage more customers while giving you high lead conversion. With erxes, all your marketing, sales and customer service tools are merged into one platform for greater output. Replace Hubspot with the mission and community-driven ecosystem. -```Shell -git clone https://github.com/erxes/erxes-api.git -cd erxes-api -yarn install -``` - -#### 3. Create configuration from sample file. We use [dotenv](https://github.com/motdotla/dotenv) for this. - -```Shell -cp .env.sample .env -``` - -.env file description - -```.env -NODE_ENV=development (Node environment: development | production) -PORT=3300 (Server port) - -MONGO_URL=mongodb://localhost/erxes (MongoDB url) -TEST_MONGO_URL=mongodb://localhost/test - -REDIS_HOST=localhost (Redis server url) -REDIS_PORT=6379 (Redis server port) - -MAIN_APP_DOMAIN=http://localhost:3000 (erxes project url) -``` - -#### 4. Start the server. - -For development: - -```Shell -yarn dev -``` - -For production: - -```Shell -yarn build -yarn start -``` - -#### 5. Running servers -- GraphQL server: [http://localhost:3300/graphql](http://localhost:3300/graphql) -- Websocket subscriptions server: [ws://localhost:3300/subscriptions](ws://localhost:3300/subscriptions) +* **Growth Hacking:** Managing your entire growth operation made easy. From ideas to actual performance, making sure everything recorded, prioritized and centralized in the single platform to get tested with pool of analysis and learnings, which made the growing as pleasure. +* **Email & SMS Marketing:** Reach your customer with personalized messaging. Keeping your customers hooked is definitely a challenge. Start converting your prospects into potential customers through email, SMS, Live chat, and In-app-messaging or more interactions to drive them to a successful close. You can connect to your customers in a whole new way with Erxes! +* **Pop-ups & Forms:** Create Stylish Pop-ups and Forms that Bring Leads. Turn regular visitors into qualified leads by capturing them with a customizable pop-ups, forms, and embedded placements. Erxes helps you to create stylish and contextual pop-ups, banners and bars fit all your marketing needs. +* **Sales Pipeline:** Track your entire sales pipeline from one dashboard. All your customer information and sales process in one board to follow up flawlessly. Have your sales managers to know everything needed to deliver increased levels of personalization before they contact customers. +* **Contact Management:** Manage Visitors, Customers, and Companies. Access our all-in-one CRM system in one go so that itโ€™s easier to coordinate and manage your contacts and interactions with your customers. Erxes Contacts provides whole segmentation tools for you to work more effiecently. +* **Lead Scoring:** Identify and Target Sales-Ready Leads. +* **Shared Team Inbox:** Communicate faster and easier with your customers via one truly omnichannel platform. Combine real-time client and team communication with in-app messaging, live chat, email and form, so your customers can reach you however and wherever they want. +* **Messenger:** Talk to Your Customers in Continuous Omnichannel Conversations. Enable businesses to capture every single customer feedback and communicate in real time. You can educate your customers through knowledge-base from the erxes Messenger. +* **Knowledge base:** Create Help Articles for Customer Self-service. Educate both your customers and staff by creating a help center related to your brands, products and services to reach higher level of satisfactions. +* **Task Management:** Work More Collaboratively and Get More Done. Save time, manage your projects, monitor your team and increase your productivity in just a few clicks. Erxes helps to turn chaos into clarity and make everything perfect. +## Documentation + * Install erxes
+ * erxes documentation
+ * Contributing to erxes
## Contributors @@ -75,7 +44,6 @@ Thank you to all our backers! ๐Ÿ™ [[Become a backer](https://opencollective.com - ## Sponsors Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/erxes#sponsor)] @@ -85,11 +53,8 @@ Support this project by becoming a sponsor. Your logo will show up here with a l - - - ## In-kind sponsors @@ -100,4 +65,4 @@ Support this project by becoming a sponsor. Your logo will show up here with a l ## License -GNU General Public License v3.0 +GNU General Public License v3.0 diff --git a/app.json b/app.json index e20d1c9e6..66e562d59 100644 --- a/app.json +++ b/app.json @@ -21,10 +21,6 @@ "description": "A port number that erxes api will be running on", "value": "3300" }, - "DOMAIN": { - "description": "Erxes API URL", - "value": "https://erxes-api.herokuapp.com" - }, "MAIN_APP_DOMAIN": { "description": "Erxes URL", "value": "https://erxes.herokuapp.com" diff --git a/elkSyncer/main.py b/elkSyncer/main.py index 414317ffb..49904073e 100644 --- a/elkSyncer/main.py +++ b/elkSyncer/main.py @@ -14,6 +14,9 @@ client = Elasticsearch([ELASTICSEARCH_URL]) customer_mapping = { + 'state': { + 'type': 'keyword', + }, 'primaryEmail': { 'type': 'text', 'analyzer': 'uax_url_email_analyzer', @@ -36,9 +39,6 @@ 'leadStatus': { 'type': 'keyword', }, - 'lifecycleState': { - 'type': 'keyword', - }, 'tagIds': { 'type': 'keyword', }, @@ -51,6 +51,9 @@ 'status': { 'type': 'keyword', }, + 'emailValidationStatus': { + 'type': 'keyword', + }, } company_mapping = { @@ -73,12 +76,6 @@ 'ownerId': { 'type': 'keyword', }, - 'leadStatus': { - 'type': 'keyword', - }, - 'lifecycleState': { - 'type': 'keyword', - }, 'tagIds': { 'type': 'keyword', }, diff --git a/email-verifier/.env.sample b/email-verifier/.env.sample new file mode 100644 index 000000000..05798b64f --- /dev/null +++ b/email-verifier/.env.sample @@ -0,0 +1,11 @@ +# general +NODE_ENV=development +PORT=4100 + +# MongoDB +MONGO_URL=mongodb://localhost/erxes-email-verifier + +# RabbitMQ +RABBITMQ_HOST=amqp://localhost + +TRUE_MAIL_API_KEY= \ No newline at end of file diff --git a/email-verifier/Dockerfile b/email-verifier/Dockerfile new file mode 100644 index 000000000..ef70cb19e --- /dev/null +++ b/email-verifier/Dockerfile @@ -0,0 +1,7 @@ +FROM node:10.16.0-slim +WORKDIR /erxes-email-verifier +RUN chown -R node:node /erxes-email-verifier +COPY --chown=node:node . /erxes-email-verifier +USER node +EXPOSE 4100 +ENTRYPOINT ["node", "--max_old_space_size=8192", "dist"] \ No newline at end of file diff --git a/email-verifier/package.json b/email-verifier/package.json new file mode 100644 index 000000000..bbb2d4471 --- /dev/null +++ b/email-verifier/package.json @@ -0,0 +1,35 @@ +{ + "name": "erxes-email-verifier", + "private": true, + "scripts": { + "start": "node dist", + "dev": "NODE_ENV=development DEBUG=erxes-email-verifier:* node_modules/.bin/ts-node-dev --experimental-worker --respawn src", + "build": "tsc -p tsconfig.prod.json", + "checkAndGetBulkEmails": "ts-node ./src/commands/checkAndGetBulkEmails.ts" + }, + "dependencies": { + "amqplib": "^0.5.5", + "body-parser": "^1.19.0", + "debug": "^4.1.1", + "dotenv": "^4.0.0", + "email-deep-validator": "^3.3.0", + "express": "^4.16.4", + "mongoose": "5.7.5", + "requestify": "^0.2.5", + "xss": "^1.0.6" + }, + "peerOptionalDependencies": { + "kerberos": "^1.0.0" + }, + "devDependencies": { + "@types/dotenv": "^4.0.3", + "@types/express": "^4.16.0", + "@types/mongodb": "^3.1.2", + "@types/mongoose": "^5.2.1", + "@types/node": "^10.12.18", + "@types/q": "^1.5.0", + "ts-node": "8.0.3", + "ts-node-dev": "^1.0.0-pre.32", + "typescript": "^3.7.2" + } +} diff --git a/email-verifier/src/api.ts b/email-verifier/src/api.ts new file mode 100644 index 000000000..98d224d6e --- /dev/null +++ b/email-verifier/src/api.ts @@ -0,0 +1,118 @@ +import * as EmailValidator from 'email-deep-validator'; +import { sendMessage } from './messageBroker'; +import { EMAIL_VALIDATION_STATUSES, Emails } from './models'; +import { debugBase, sendRequest } from './utils'; + +const { TRUE_MAIL_API_KEY, EMAIL_VERIFICATION_TYPE = 'truemail' } = process.env; + +const sendSingleMessage = async (doc: { email: string; status: string }, isRest: boolean, create?: boolean) => { + if (create) { + await Emails.createEmail(doc); + } + + if (isRest) { + return doc.status; + } + + return sendMessage('emailVerifierNotification', { action: 'emailVerify', data: [doc] }); +}; + +const singleTrueMail = async (email: string) => { + try { + const url = `https://truemail.io/api/v1/verify/single?access_token=${TRUE_MAIL_API_KEY}&email=${email}`; + + const response = await sendRequest({ + url, + method: 'GET', + }); + + return JSON.parse(response); + } catch (e) { + debugBase(`Error occured during single true mail validation ${e.message}`); + throw e; + } +}; + +const bulkTrueMail = async (unverifiedEmails: string[]) => { + const url = `https://truemail.io/api/v1/tasks/bulk?access_token=${TRUE_MAIL_API_KEY}`; + + try { + const result = await sendRequest({ + url, + method: 'POST', + body: { + file: unverifiedEmails, + }, + }); + + sendMessage('emailVerifierBulkEmailNotification', { action: 'bulk', data: result }); + } catch (e) { + sendMessage('emailVerifierBulkEmailNotification', { action: 'bulk', data: e.message }); + } +}; + +export const single = async (email: string, isRest = false) => { + const emailOnDb = await Emails.findOne({ email }); + + if (emailOnDb) { + return sendSingleMessage({ email, status: emailOnDb.status }, isRest); + } + + const emailValidator = new EmailValidator(); + const { validDomain, validMailbox } = await emailValidator.verify(email); + + if (validDomain && validMailbox) { + return sendSingleMessage({ email, status: EMAIL_VALIDATION_STATUSES.VALID }, isRest, true); + } + + let response: { status?: string; result?: string } = {}; + + if (EMAIL_VERIFICATION_TYPE === 'truemail') { + try { + response = await singleTrueMail(email); + } catch (_e) { + return sendSingleMessage({ email, status: EMAIL_VALIDATION_STATUSES.UNKNOWN }, isRest); + } + } + + if (response.status === 'success') { + return sendSingleMessage({ email, status: response.result }, isRest, true); + } + + // if status is not success + return sendSingleMessage({ email, status: EMAIL_VALIDATION_STATUSES.INVALID }, isRest); +}; + +export const bulk = async (emails: string[]) => { + const unverifiedEmails: any[] = []; + const verifiedEmails: any[] = []; + + for (const email of emails) { + const found = await Emails.findOne({ email }); + + if (found) { + verifiedEmails.push({ email: found.email, status: found.status }); + } else { + unverifiedEmails.push({ email }); + } + } + + if (verifiedEmails.length > 0) { + sendMessage('emailVerifierNotification', { action: 'emailVerify', data: verifiedEmails }); + } + + if (unverifiedEmails.length > 0) { + switch (EMAIL_VERIFICATION_TYPE) { + case 'truemail': { + await bulkTrueMail(unverifiedEmails); + + break; + } + } + } else { + sendMessage('emailVerifierBulkNotification', { + action: 'bulk', + data: 'There are no emails to verify on the email verification system', + }); + } +}; diff --git a/email-verifier/src/commands/checkAndGetBulkEmails.ts b/email-verifier/src/commands/checkAndGetBulkEmails.ts new file mode 100644 index 000000000..020b7409b --- /dev/null +++ b/email-verifier/src/commands/checkAndGetBulkEmails.ts @@ -0,0 +1,110 @@ +import * as amqplib from 'amqplib'; +import { connect, disconnect } from '../connection'; +import { Emails } from '../models'; +import { sendRequest } from '../utils'; + +console.log('Instruction: yarn checkAndGetBulkEmails taskId'); + +const { RABBITMQ_HOST = 'amqp://localhost', TRUE_MAIL_API_KEY, EMAIL_VERIFICATION_TYPE = 'truemail' } = process.env; + +if (!TRUE_MAIL_API_KEY) { + console.log('Please configure TRUEMAIL API KEY'); + + disconnect(); + process.exit(); +} + +connect().then(async () => { + const getTrueMailBulk = async (taskId: string) => { + const connection = await amqplib.connect(RABBITMQ_HOST); + const channel = await connection.createChannel(); + + const url = `https://truemail.io/api/v1/tasks/${taskId}/download?access_token=${TRUE_MAIL_API_KEY}&timeout=30000`; + + const response = await sendRequest({ + url, + method: 'GET', + }); + + const rows = response.split('\n'); + const emails: Array<{ email: string; status: string }> = []; + + for (const row of rows) { + const rowArray = row.split(','); + + if (rowArray.length > 2) { + const email = rowArray[0]; + const status = rowArray[2]; + + emails.push({ + email, + status, + }); + + const found = await Emails.findOne({ email }); + + if (!found) { + const doc = { + email, + status, + created: new Date(), + }; + + await Emails.create(doc); + } + } + } + + const args = { action: 'emailVerify', data: emails }; + + await channel.assertQueue('emailVerifierNotification'); + await channel.sendToQueue('emailVerifierNotification', Buffer.from(JSON.stringify(args))); + + console.log('Successfully get the following emails : \n', emails); + + setTimeout(() => { + channel.connection.close(); + + disconnect(); + process.exit(); + }, 500); + }; + + const check = async () => { + const argv = process.argv; + + if (argv.length < 3) { + console.log('Please put taskId after yarn checkAndGetBulkEmails'); + + disconnect(); + process.exit(); + } + + const taskId = argv[2]; + + switch (EMAIL_VERIFICATION_TYPE) { + case 'truemail': { + const url = `https://truemail.io/api/v1/tasks/${taskId}/status?access_token=${TRUE_MAIL_API_KEY}`; + + const response = await sendRequest({ + url, + method: 'GET', + }); + + const data = JSON.parse(response).data; + console.log(data); + + if (data.status === 'finished') { + await getTrueMailBulk(taskId); + } else { + disconnect(); + process.exit(); + } + + break; + } + } + }; + + await check(); +}); diff --git a/email-verifier/src/connection.ts b/email-verifier/src/connection.ts new file mode 100644 index 000000000..29e744ea0 --- /dev/null +++ b/email-verifier/src/connection.ts @@ -0,0 +1,29 @@ +import * as dotenv from 'dotenv'; +import mongoose = require('mongoose'); +import { debugBase } from './utils'; + +dotenv.config(); + +mongoose.Promise = global.Promise; +mongoose.set('useFindAndModify', false); + +const { MONGO_URL } = process.env; + +mongoose.connection + .on('connected', () => { + debugBase(`Connected to the database: ${MONGO_URL}`); + }) + .on('disconnected', () => { + debugBase(`Disconnected from the database: ${MONGO_URL}`); + }) + .on('error', error => { + debugBase(`Database connection error: ${MONGO_URL}`, error); + }); + +export const connect = (URL?: string) => { + return mongoose.connect(URL || MONGO_URL, { useNewUrlParser: true, useCreateIndex: true }); +}; + +export function disconnect() { + return mongoose.connection.close(); +} diff --git a/email-verifier/src/index.ts b/email-verifier/src/index.ts new file mode 100644 index 000000000..9936b2454 --- /dev/null +++ b/email-verifier/src/index.ts @@ -0,0 +1,47 @@ +import * as bodyParser from 'body-parser'; +import * as dotenv from 'dotenv'; +import * as express from 'express'; +import { filterXSS } from 'xss'; +import { single } from './api'; +import { connect } from './connection'; +import { initConsumer } from './messageBroker'; +import { debugBase, debugRequest } from './utils'; + +// load environment variables +dotenv.config(); + +const app = express(); + +app.use(bodyParser.json()); +app.use(bodyParser.urlencoded({ extended: true })); + +app.post('/verify-single', async (req, res, next) => { + debugRequest(debugBase, req); + + const { email } = req.body; + + try { + const status = await single(email, true); + + return res.json({ status }); + } catch (e) { + return next(new Error(e)); + } +}); + +// Error handling middleware +app.use((error, _req, res, _next) => { + const msg = filterXSS(error.message); + + debugBase(`Error: `, msg); + res.status(500).send(msg); +}); + +const { PORT } = process.env; + +app.listen(PORT, async () => { + await initConsumer(); + await connect(); + + debugBase(`Email verifier server is running on port ${PORT}`); +}); diff --git a/email-verifier/src/messageBroker.ts b/email-verifier/src/messageBroker.ts new file mode 100644 index 000000000..b49c60da5 --- /dev/null +++ b/email-verifier/src/messageBroker.ts @@ -0,0 +1,58 @@ +import * as amqplib from 'amqplib'; +import * as dotenv from 'dotenv'; +import { bulk, single } from './api'; +import { debugBase } from './utils'; + +dotenv.config(); + +const { NODE_ENV, RABBITMQ_HOST = 'amqp://localhost' } = process.env; + +let conn; +let channel; + +export const initConsumer = async () => { + try { + conn = await amqplib.connect(RABBITMQ_HOST); + channel = await conn.createChannel(); + + // listen for erxes api =========== + await channel.assertQueue('erxes-api:email-verifier-notification'); + + channel.consume('erxes-api:email-verifier-notification', async msg => { + if (msg !== null) { + const { action, data } = JSON.parse(msg.content.toString()); + + debugBase(`Receiving queue data from erxes-api`, action, data); + + if (action === 'emailVerify') { + const { emails, email } = data; + email ? single(email) : bulk(emails); + } + + channel.ack(msg); + } + }); + } catch (e) { + debugBase(e.message); + } +}; + +interface IQueueData { + action: string; + data: any; +} + +export const sendMessage = async (queueName: string, data: IQueueData) => { + if (NODE_ENV === 'test') { + return; + } + + debugBase(`Sending data from email verifier to ${queueName}`, data); + + try { + await channel.assertQueue(queueName); + await channel.sendToQueue(queueName, Buffer.from(JSON.stringify(data || {}))); + } catch (e) { + debugBase(e.message); + } +}; diff --git a/email-verifier/src/models.ts b/email-verifier/src/models.ts new file mode 100644 index 000000000..2ccb2aac6 --- /dev/null +++ b/email-verifier/src/models.ts @@ -0,0 +1,56 @@ +import { Document, Model, model, Schema } from 'mongoose'; + +export const EMAIL_VALIDATION_STATUSES = { + VALID: 'valid', + INVALID: 'invalid', + ACCEPT_ALL_UNVERIFIABLE: 'accept_all_unverifiable', + UNKNOWN: 'unknown', + DISPOSABLE: 'disposable', + CATCHALL: 'catchall', + BAD_SYNTAX: 'badsyntax', + UNVERIFIABLE: 'unverifiable', + ALL: [ + 'valid', + 'invalid', + 'accept_all_unverifiable', + 'unknown', + 'disposable', + 'catchall', + 'badsyntax', + 'unverifiable', + ], +}; + +interface IEmail { + email: string; + status: string; +} + +interface IEmailDocument extends IEmail, Document { + _id: string; +} + +const emailSchema = new Schema({ + email: { type: String, unique: true }, + status: { type: String, enum: EMAIL_VALIDATION_STATUSES.ALL }, + created: { type: Date, default: Date.now() }, +}); + +interface IEmailModel extends Model { + createEmail(doc: IEmail): Promise; +} + +export const loadClass = () => { + class Email { + public static createEmail(doc: IEmail) { + return Emails.create(doc); + } + } + + emailSchema.loadClass(Email); +}; + +loadClass(); + +// tslint:disable-next-line +export const Emails = model('emails', emailSchema); diff --git a/email-verifier/src/utils.ts b/email-verifier/src/utils.ts new file mode 100644 index 000000000..391ff91e9 --- /dev/null +++ b/email-verifier/src/utils.ts @@ -0,0 +1,60 @@ +import * as debug from 'debug'; +import * as requestify from 'requestify'; + +export const debugBase = debug('erxes-email-verifier:base'); + +export const debugRequest = (debugInstance, req) => + debugInstance(` + Receiving ${req.path} request from ${req.headers.origin} + body: ${JSON.stringify(req.body || {})} + queryParams: ${JSON.stringify(req.query)} + `); + +interface IRequestParams { + url?: string; + path?: string; + method?: string; + headers?: { [key: string]: string }; + params?: { [key: string]: string }; + body?: { [key: string]: any }; + form?: { [key: string]: string }; +} + +/** + * Sends post request to specific url + */ +export const sendRequest = async ({ url, method, form, body, params }: IRequestParams, errorMessage?: string) => { + debugBase(` + Sending request to + url: ${url} + method: ${method} + body: ${JSON.stringify(body)} + params: ${JSON.stringify(params)} + `); + + try { + const response = await requestify.request(url, { + method, + headers: { 'Content-Type': 'application/json' }, + form, + body, + params, + }); + + const responseBody = response.getBody(); + + debugBase(` + Success from : ${url} + responseBody: ${JSON.stringify(responseBody)} + `); + + return responseBody; + } catch (e) { + if (e.code === 'ECONNREFUSED' || e.code === 'ENOTFOUND') { + throw new Error(errorMessage); + } else { + const message = e.body || e.message; + throw new Error(message); + } + } +}; diff --git a/email-verifier/tsconfig.json b/email-verifier/tsconfig.json new file mode 100644 index 000000000..5d28d8b76 --- /dev/null +++ b/email-verifier/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "outDir": "./dist", + "allowJs": true, + "target": "es6", + "moduleResolution": "node", + "module": "commonjs", + "lib": ["es2015", "es6", "es7", "esnext.asynciterable"], + "sourceMap": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "skipLibCheck": true + }, + "include": ["./src/**/*"], + "exclude": ["node_modules", "dist"] +} diff --git a/email-verifier/tsconfig.prod.json b/email-verifier/tsconfig.prod.json new file mode 100644 index 000000000..fd8086ccf --- /dev/null +++ b/email-verifier/tsconfig.prod.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["node_modules", "dist", "src/__tests__"] +} diff --git a/email-verifier/yarn.lock b/email-verifier/yarn.lock new file mode 100644 index 000000000..b147bd278 --- /dev/null +++ b/email-verifier/yarn.lock @@ -0,0 +1,1278 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@types/body-parser@*": + version "1.19.0" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" + integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bson@*": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/bson/-/bson-4.0.1.tgz#2bfc80819e7055b76d5496d5344ed23e5d12bbb2" + integrity sha512-K6VAEdLVJFBxKp8m5cRTbUfeZpuSvOuLKJLrgw9ANIXo00RiyGzgH4BKWWR4F520gV4tWmxG7q9sKQRVDuzrBw== + dependencies: + "@types/node" "*" + +"@types/connect@*": + version "3.4.33" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.33.tgz#31610c901eca573b8713c3330abc6e6b9f588546" + integrity sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A== + dependencies: + "@types/node" "*" + +"@types/dotenv@^4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/dotenv/-/dotenv-4.0.3.tgz#ebcfc40da7bc0728b705945b7db48485ec5b4b67" + integrity sha512-mmhpINC/HcLGQK5ikFJlLXINVvcxhlrV+ZOUJSN7/ottYl+8X4oSXzS9lBtDkmWAl96EGyGyLrNvk9zqdSH8Fw== + dependencies: + "@types/node" "*" + +"@types/express-serve-static-core@*": + version "4.17.2" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.2.tgz#f6f41fa35d42e79dbf6610eccbb2637e6008a0cf" + integrity sha512-El9yMpctM6tORDAiBwZVLMcxoTMcqqRO9dVyYcn7ycLWbvR8klrDn8CAOwRfZujZtWD7yS/mshTdz43jMOejbg== + dependencies: + "@types/node" "*" + "@types/range-parser" "*" + +"@types/express@^4.16.0": + version "4.17.3" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.3.tgz#38e4458ce2067873b09a73908df488870c303bd9" + integrity sha512-I8cGRJj3pyOLs/HndoP+25vOqhqWkAZsWMEmq1qXy/b/M3ppufecUwaK2/TVDVxcV61/iSdhykUjQQ2DLSrTdg== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "*" + "@types/serve-static" "*" + +"@types/mime@*": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.1.tgz#dc488842312a7f075149312905b5e3c0b054c79d" + integrity sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw== + +"@types/mongodb@*", "@types/mongodb@^3.1.2": + version "3.5.2" + resolved "https://registry.yarnpkg.com/@types/mongodb/-/mongodb-3.5.2.tgz#2d815ebb9de9019dd12eb72e8ed1a5121619bf0a" + integrity sha512-/p4+HjfQqmNtq88rlLJ9XgUROhmbdUEU0yeVPCPIt8/vA1fSO1dSjwsRcGNaGuPMUSDRuRm8tDlXeGpWUVF71w== + dependencies: + "@types/bson" "*" + "@types/node" "*" + +"@types/mongoose@^5.2.1": + version "5.7.6" + resolved "https://registry.yarnpkg.com/@types/mongoose/-/mongoose-5.7.6.tgz#c08d41b33a4a5e1984fc4d3c7bc2a76cc6e17ffc" + integrity sha512-+GMPd3MRem1A7fw97PkE2aQwWoyYMMZ55lyr7slaCnAvz24+c2WQ2zGHafT9toW/gOciN2yDTY1e0xGLeKHgRA== + dependencies: + "@types/mongodb" "*" + "@types/node" "*" + +"@types/node@*": + version "13.9.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.1.tgz#96f606f8cd67fb018847d9b61e93997dabdefc72" + integrity sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ== + +"@types/node@^10.12.18": + version "10.17.17" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.17.tgz#7a183163a9e6ff720d86502db23ba4aade5999b8" + integrity sha512-gpNnRnZP3VWzzj5k3qrpRC6Rk3H/uclhAVo1aIvwzK5p5cOrs9yEyQ8H/HBsBY0u5rrWxXEiVPQ0dEB6pkjE8Q== + +"@types/q@^1.5.0": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" + integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== + +"@types/range-parser@*": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" + integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== + +"@types/serve-static@*": + version "1.13.3" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.3.tgz#eb7e1c41c4468272557e897e9171ded5e2ded9d1" + integrity sha512-oprSwp094zOglVrXdlo/4bAHtKTAxX6VT8FOZlBKrmyLbNvE1zxZyJ6yikMVtHIvwP45+ZQGJn+FdXGKTozq0g== + dependencies: + "@types/express-serve-static-core" "*" + "@types/mime" "*" + +"@types/strip-bom@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2" + integrity sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I= + +"@types/strip-json-comments@0.0.30": + version "0.0.30" + resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1" + integrity sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ== + +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== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.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== + dependencies: + bitsyntax "~0.1.0" + bluebird "^3.5.2" + buffer-more-ints "~1.0.0" + readable-stream "1.x >=1.1.9" + safe-buffer "~5.1.2" + url-parse "~1.4.3" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + +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= + +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= + +bitsyntax@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/bitsyntax/-/bitsyntax-0.1.0.tgz#b0c59acef03505de5a2ed62a2f763c56ae1d6205" + integrity sha512-ikAdCnrloKmFOugAfxWws89/fPc+nw0OOG1IzIE72uSOg/A3cYptKCjSUhDTuj7fhsJtzkzlv7l3b8PzRHLN0Q== + dependencies: + buffer-more-ints "~1.0.0" + debug "~2.6.9" + safe-buffer "~5.1.2" + +bluebird@3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" + integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA== + +bluebird@^3.5.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +body-parser@1.19.0, body-parser@^1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +bson@^1.1.1, bson@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/bson/-/bson-1.1.3.tgz#aa82cb91f9a453aaa060d6209d0675114a8154d3" + integrity sha512-TdiJxMVnodVS7r0BdL42y/pqC9cL2iKynVwA0Ho3qbsQYr428veL3l7BQyuqiw+Q5SqqoT0m4srSY/BlZ9AxXg== + +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-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== + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +commander@^2.9.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== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +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= + +cssfilter@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" + integrity sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4= + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= + dependencies: + array-find-index "^1.0.1" + +dateformat@~1.0.4-1.2.3: + version "1.0.12" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" + integrity sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk= + dependencies: + get-stdin "^4.0.1" + meow "^3.3.0" + +debounce@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131" + integrity sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg== + +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: + 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@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +diff@^3.1.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== + +dotenv@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d" + integrity sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0= + +dynamic-dedupe@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz#06e44c223f5e4e94d78ef9db23a6515ce2f962a1" + integrity sha1-BuRMIj9eTpTXjvnbI6ZRXOL5YqE= + dependencies: + xtend "^4.0.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +email-deep-validator@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/email-deep-validator/-/email-deep-validator-3.3.0.tgz#095e2a725ca730c4a75b34c90f665b87df80768b" + integrity sha512-iTthLvoKphPK56T2ge5uTxDFixcXfVMfjPQyJewSv9ZbbocdfmYyoB6rZQYEK5uCOsId2tYsY2/+5J9vbr2spw== + dependencies: + loglevel "^1.6.1" + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +error-ex@^1.2.0: + 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" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +express@^4.16.4: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +filewatcher@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/filewatcher/-/filewatcher-3.0.1.tgz#f4a1957355ddaf443ccd78a895f3d55e23c8a034" + integrity sha1-9KGVc1Xdr0Q8zXiolfPVXiPIoDQ= + dependencies: + debounce "^1.0.0" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.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= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= + +glob@^7.1.3: + 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" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +graceful-fs@^4.1.2: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + +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= + +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +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== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= + dependencies: + repeating "^2.0.0" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@~2.0.1: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ipaddr.js@1.9.1: + 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-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-finite@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +jquery@^3.1.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2" + integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw== + +kareem@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.3.1.tgz#def12d9c941017fabfb00f873af95e9c99e1be87" + integrity sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw== + +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= + 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" + +loglevel@^1.6.1: + version "1.6.7" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.7.tgz#b3e034233188c68b889f5b862415306f565e2c56" + integrity sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A== + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + +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= + +meow@^3.3.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +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= + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +mime-db@1.43.0: + version "1.43.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" + integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== + +mime-types@~2.1.24: + version "2.1.26" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" + integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== + dependencies: + mime-db "1.43.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== + +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.3: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mkdirp@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +mongodb@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.3.2.tgz#ff086b5f552cf07e24ce098694210f3d42d668b2" + integrity sha512-fqJt3iywelk4yKu/lfwQg163Bjpo5zDKhXiohycvon4iQHbrfflSAz9AIlRE6496Pm/dQKQK5bMigdVo2s6gBg== + dependencies: + bson "^1.1.1" + require_optional "^1.0.1" + safe-buffer "^5.1.2" + +mongoose-legacy-pluralize@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz#3ba9f91fa507b5186d399fb40854bff18fb563e4" + integrity sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ== + +mongoose@5.7.5: + version "5.7.5" + resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.7.5.tgz#b787b47216edf62036aa358c3ef0f1869c46cdc2" + integrity sha512-BZ4FxtnbTurc/wcm/hLltLdI4IDxo4nsE0D9q58YymTdZwreNzwO62CcjVtaHhmr8HmJtOInp2W/T12FZaMf8g== + dependencies: + bson "~1.1.1" + kareem "2.3.1" + mongodb "3.3.2" + mongoose-legacy-pluralize "1.0.2" + mpath "0.6.0" + mquery "3.2.2" + ms "2.1.2" + regexp-clone "1.0.0" + safe-buffer "5.1.2" + sift "7.0.1" + sliced "1.0.1" + +mpath@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.6.0.tgz#aa922029fca4f0f641f360e74c5c1b6a4c47078e" + integrity sha512-i75qh79MJ5Xo/sbhxrDrPSEG0H/mr1kcZXJ8dH6URU5jD/knFxCVqVC/gVSW7GIXL/9hHWlT9haLbCXWOll3qw== + +mquery@3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/mquery/-/mquery-3.2.2.tgz#e1383a3951852ce23e37f619a9b350f1fb3664e7" + integrity sha512-XB52992COp0KP230I3qloVUbkLUxJIu328HBP2t2EsxSFtf4W1HPSOBWOXf1bqxK4Xbb66lfMJ+Bpfd9/yZE1Q== + dependencies: + bluebird "3.5.1" + debug "3.1.0" + regexp-clone "^1.0.0" + safe-buffer "5.1.2" + sliced "1.0.1" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +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== + +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== + +node-notifier@^5.4.0: + version "5.4.3" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" + integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== + dependencies: + growly "^1.3.0" + is-wsl "^1.1.0" + semver "^5.5.0" + shellwords "^0.1.1" + which "^1.3.0" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +object-assign@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +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== + +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-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-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +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= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +proxy-addr@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.1" + +q@^0.9.7: + version "0.9.7" + resolved "https://registry.yarnpkg.com/q/-/q-0.9.7.tgz#4de2e6cb3b29088c9e4cbc03bf9d42fb96ce2f75" + integrity sha1-TeLmyzspCIyeTLwDv51C+5bOL3U= + +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== + +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== + +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== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +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= + dependencies: + find-up "^1.0.0" + read-pkg "^1.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= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +"readable-stream@1.x >=1.1.9": + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +regexp-clone@1.0.0, regexp-clone@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/regexp-clone/-/regexp-clone-1.0.0.tgz#222db967623277056260b992626354a04ce9bf63" + integrity sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw== + +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" + +requestify@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/requestify/-/requestify-0.2.5.tgz#80249f1ca7dfdf79fa2a6048aeac37d43e23c905" + integrity sha1-gCSfHKff33n6KmBIrqw31D4jyQU= + dependencies: + jquery "^3.1.0" + q "^0.9.7" + underscore "^1.8.3" + +require_optional@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.1.tgz#4cf35a4247f64ca3df8c2ef208cc494b1ca8fc2e" + integrity sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g== + dependencies: + resolve-from "^2.0.0" + semver "^5.1.0" + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-from@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" + integrity sha1-lICrIOlP+h2egKgEx+oUdhGWa1c= + +resolve@^1.0.0, resolve@^1.10.0: + version "1.15.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" + integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== + dependencies: + path-parse "^1.0.6" + +rimraf@^2.6.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +safe-buffer@5.1.2, 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.2: + version "5.2.0" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" + integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +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== + +sift@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/sift/-/sift-7.0.1.tgz#47d62c50b159d316f1372f8b53f9c10cd21a4b08" + integrity sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g== + +signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +sliced@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" + integrity sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E= + +source-map-support@^0.5.12, source-map-support@^0.5.6: + 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@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +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== + 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== + +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== + 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== + +"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= + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + 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-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= + dependencies: + get-stdin "^4.0.1" + +strip-json-comments@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +tree-kill@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= + +ts-node-dev@^1.0.0-pre.32: + version "1.0.0-pre.44" + resolved "https://registry.yarnpkg.com/ts-node-dev/-/ts-node-dev-1.0.0-pre.44.tgz#2f4d666088481fb9c4e4f5bc8f15995bd8b06ecb" + integrity sha512-M5ZwvB6FU3jtc70i5lFth86/6Qj5XR5nMMBwVxZF4cZhpO7XcbWw6tbNiJo22Zx0KfjEj9py5DANhwLOkPPufw== + dependencies: + dateformat "~1.0.4-1.2.3" + dynamic-dedupe "^0.3.0" + filewatcher "~3.0.0" + minimist "^1.1.3" + mkdirp "^0.5.1" + node-notifier "^5.4.0" + resolve "^1.0.0" + rimraf "^2.6.1" + source-map-support "^0.5.12" + tree-kill "^1.2.1" + ts-node "*" + tsconfig "^7.0.0" + +ts-node@*: + version "8.6.2" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.6.2.tgz#7419a01391a818fbafa6f826a33c1a13e9464e35" + integrity sha512-4mZEbofxGqLL2RImpe3zMJukvEvcO1XP8bj8ozBPySdCUXEcU5cIRwR0aM3R+VoZq7iXc8N86NC0FspGRqP4gg== + dependencies: + arg "^4.1.0" + diff "^4.0.1" + make-error "^1.1.1" + source-map-support "^0.5.6" + yn "3.1.1" + +ts-node@8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.0.3.tgz#aa60b836a24dafd8bf21b54766841a232fdbc641" + integrity sha512-2qayBA4vdtVRuDo11DEFSsD/SFsBXQBRZZhbRGSIkmYmVkWjULn/GGMdG10KVqkaGndljfaTD8dKjWgcejO8YA== + dependencies: + arg "^4.1.0" + diff "^3.1.0" + make-error "^1.1.1" + source-map-support "^0.5.6" + yn "^3.0.0" + +tsconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7" + integrity sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw== + dependencies: + "@types/strip-bom" "^3.0.0" + "@types/strip-json-comments" "0.0.30" + strip-bom "^3.0.0" + strip-json-comments "^2.0.0" + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typescript@^3.7.2: + version "3.8.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" + integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== + +underscore@^1.8.3: + version "1.9.2" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.2.tgz#0c8d6f536d6f378a5af264a72f7bec50feb7cf2f" + integrity sha512-D39qtimx0c1fI3ya1Lnhk3E9nONswSKhnffBI0gME9C99fYOkNi04xs8K6pePLhvl1frbDemkaBQ5ikWllR2HQ== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +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== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +which@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +xss@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.6.tgz#eaf11e9fc476e3ae289944a1009efddd8a124b51" + integrity sha512-6Q9TPBeNyoTRxgZFk5Ggaepk/4vUOYdOsIUYvLehcsIZTFjaavbVnsuAkLA5lIFuug5hw8zxcB9tm01gsjph2A== + dependencies: + commander "^2.9.0" + cssfilter "0.0.10" + +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +yn@3.1.1, yn@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== diff --git a/engages-email-sender/.dockerignore b/engages-email-sender/.dockerignore new file mode 100644 index 000000000..da8243926 --- /dev/null +++ b/engages-email-sender/.dockerignore @@ -0,0 +1,9 @@ +*.md +*.yml +.dockerignore +.git* +.prettierrc +Dockerfile* +src +*.tar.gz + diff --git a/engages-email-sender/.drone.yml b/engages-email-sender/.drone.yml new file mode 100644 index 000000000..eed2e73eb --- /dev/null +++ b/engages-email-sender/.drone.yml @@ -0,0 +1,98 @@ +pipeline: + test: + image: node:10.16.0-slim + environment: + - TEST_MONGO_URL=mongodb://mongo/test + commands: + - yarn install + - yarn tsc + + build: + image: node:10.16.0-slim + commands: + - yarn build + when: + branch: + - master + - develop + - staging + event: + - push + + build_tag: + image: node:10.16.0-slim + commands: + - yarn build + - tar -zcf ${DRONE_REPO_NAME}_${DRONE_TAG}.tar.gz dist .env.sample package.json yarn.lock + when: + event: + - tag + + github_prerelease: + image: plugins/github-release + secrets: [ github_token ] + prerelease: true + files: + - ${DRONE_REPO_NAME}_${DRONE_TAG}.tar.gz + checksum: + - sha256 + when: + event: + - tag + ref: + include: + - "refs/tags/*rc*" + - "refs/tags/*alpha*" + - "refs/tags/*beta*" + + github_release: + image: plugins/github-release + secrets: [ github_token ] + files: + - ${DRONE_REPO_NAME}_${DRONE_TAG}.tar.gz + checksum: + - sha256 + when: + event: + - tag + ref: + include: + - "refs/tags/*" + exclude: + - "refs/tags/*rc*" + - "refs/tags/*alpha*" + - "refs/tags/*beta*" + + docker_publish: + image: plugins/docker + repo: ${DRONE_REPO_OWNER}/${DRONE_REPO_NAME} + dockerfile: Dockerfile + secrets: + - source: docker_hub_username + target: docker_username + - source: docker_hub_password + target: docker_password + tags: + - ${DRONE_BRANCH} + when: + branch: + - master + - develop + - staging + event: + - push + + docker_publish_tag: + image: plugins/docker + repo: ${DRONE_REPO_OWNER}/${DRONE_REPO_NAME} + dockerfile: Dockerfile + secrets: + - source: docker_hub_username + target: docker_username + - source: docker_hub_password + target: docker_password + tags: + - ${DRONE_TAG} + when: + event: + - tag diff --git a/engages-email-sender/.env.sample b/engages-email-sender/.env.sample new file mode 100644 index 000000000..5788c99b6 --- /dev/null +++ b/engages-email-sender/.env.sample @@ -0,0 +1,18 @@ +# general +NODE_ENV=development +PORT=3900 + +# public urls +MAIN_API_DOMAIN=http://localhost:3300 + +# MongoDB +MONGO_URL=mongodb://localhost/erxes-engages +TEST_MONGO_URL=mongodb://localhost/erxes-engages-test + +# RabbitMQ +RABBITMQ_HOST=amqp://localhost + +# Redis +REDIS_HOST=localhost +REDIS_PORT=6379 +REDIS_PASSWORD= \ No newline at end of file diff --git a/engages-email-sender/.snyk b/engages-email-sender/.snyk new file mode 100644 index 000000000..29509a00b --- /dev/null +++ b/engages-email-sender/.snyk @@ -0,0 +1,4 @@ +# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities. +version: v1.13.5 +ignore: {} +patch: {} diff --git a/engages-email-sender/Dockerfile b/engages-email-sender/Dockerfile new file mode 100644 index 000000000..17de6cb31 --- /dev/null +++ b/engages-email-sender/Dockerfile @@ -0,0 +1,7 @@ +FROM node:10.16.0-slim +WORKDIR /erxes-engages +RUN chown -R node:node /erxes-engages +COPY --chown=node:node . /erxes-engages +USER node +EXPOSE 3900 +ENTRYPOINT ["node", "--max_old_space_size=8192", "--experimental-worker", "dist"] diff --git a/engages-email-sender/Dockerfile.dev b/engages-email-sender/Dockerfile.dev new file mode 100644 index 000000000..0931d85b2 --- /dev/null +++ b/engages-email-sender/Dockerfile.dev @@ -0,0 +1,5 @@ +FROM erxes/runner +WORKDIR /erxes-engages-email-sender +COPY yarn.lock package.json ./ +RUN yarn install +CMD ["yarn", "dev"] diff --git a/engages-email-sender/package.json b/engages-email-sender/package.json new file mode 100644 index 000000000..0d28d22c3 --- /dev/null +++ b/engages-email-sender/package.json @@ -0,0 +1,45 @@ +{ + "name": "erxes-engages", + "private": true, + "scripts": { + "start": "node dist", + "dev": "NODE_ENV=development DEBUG=erxes-engages:* node_modules/.bin/ts-node-dev --experimental-worker --respawn src", + "build": "tsc -p tsconfig.prod.json", + "test": "jest --coverage --forceExit --runInBand" + }, + "dependencies": { + "amqplib": "^0.5.5", + "aws-sdk": "^2.493.0", + "body-parser": "^1.17.1", + "debug": "^4.1.1", + "dotenv": "^4.0.0", + "express": "^4.16.4", + "meteor-random": "^0.0.3", + "mongoose": "5.7.5", + "nodemailer": "^6.2.1", + "redis": "^2.8.0", + "requestify": "^0.2.5", + "xss": "^1.0.6" + }, + "peerOptionalDependencies": { + "kerberos": "^1.0.0" + }, + "devDependencies": { + "@types/body-parser": "^1.17.0", + "@types/cors": "^2.8.4", + "@types/dotenv": "^4.0.3", + "@types/express": "^4.16.0", + "@types/jest": "^24.0.23", + "@types/mongodb": "^3.1.2", + "@types/mongoose": "^5.2.1", + "@types/node": "^10.12.18", + "@types/q": "^1.5.0", + "faker": "^4.1.0", + "jest": "^24.9.0", + "snyk": "^1.239.5", + "ts-jest": "^24.2.0", + "ts-node": "8.0.3", + "ts-node-dev": "^1.0.0-pre.32", + "typescript": "^3.7.2" + } +} diff --git a/engages-email-sender/src/__tests__/configsDb.test.ts b/engages-email-sender/src/__tests__/configsDb.test.ts new file mode 100644 index 000000000..2a97b00a4 --- /dev/null +++ b/engages-email-sender/src/__tests__/configsDb.test.ts @@ -0,0 +1,56 @@ +import { Configs } from '../models'; +import { configFactory } from './factories'; +import './setup'; + +test('updateConfig', async done => { + await Configs.updateConfigs({ + accessKeyId: 'accessKeyId', + secretAccessKey: 'secretAccessKey', + region: 'region', + }); + + const accessKeyId = await Configs.findOne({ code: 'accessKeyId' }); + + const secretAccessKey = await Configs.findOne({ code: 'secretAccessKey' }); + + const region = await Configs.findOne({ code: 'region' }); + + expect(accessKeyId).toBeDefined(); + expect(accessKeyId.value).toBe('accessKeyId'); + expect(secretAccessKey).toBeDefined(); + expect(secretAccessKey.value).toBe('secretAccessKey'); + expect(region).toBeDefined(); + expect(region.value).toBe('region'); + + done(); +}); + +test('getConfigs', async done => { + const accessKeyId = await configFactory({ + code: 'accessKeyId', + }); + + const secretAccessKey = await configFactory({ + code: 'secretAccessKey', + }); + + const region = await configFactory({ + code: 'region', + }); + + let configs = await Configs.getSESConfigs(); + + expect(configs.secretAccessKey).toBe(secretAccessKey.value); + expect(configs.accessKeyId).toBe(accessKeyId.value); + expect(configs.region).toBe(region.value); + + await Configs.deleteMany({}); + + configs = await Configs.getSESConfigs(); + + expect(configs.secretAccessKey).toBe(''); + expect(configs.accessKeyId).toBe(''); + expect(configs.region).toBe(''); + + done(); +}); diff --git a/engages-email-sender/src/__tests__/deliveryReportsDb.test.ts b/engages-email-sender/src/__tests__/deliveryReportsDb.test.ts new file mode 100644 index 000000000..43742985c --- /dev/null +++ b/engages-email-sender/src/__tests__/deliveryReportsDb.test.ts @@ -0,0 +1,37 @@ +import { DeliveryReports, Stats } from '../models'; +import { statsFactory } from './factories'; +import './setup'; + +test('Stats: updateStats', async done => { + const statsObj = await statsFactory({ engageMessageId: 'engageMessageId' }); + await Stats.updateStats('engageMessageId', 'bounce'); + + const stats = await Stats.findOne({ engageMessageId: 'engageMessageId' }); + + expect(stats.bounce).toBe(statsObj.bounce + 1); + + done(); +}); + +test('DeliveryReports: updateOrCreateReport', async done => { + const headers = { + engageMessageId: '123', + mailId: 'mailid123', + customerId: 'customer', + }; + + const deliveryReport = await DeliveryReports.updateOrCreateReport(headers, 'open'); + + expect(deliveryReport).toBeDefined(); + expect(deliveryReport).toBeTruthy(); + + const result = await DeliveryReports.updateOrCreateReport(headers, 'complaint'); + + expect(result).toBe('reject'); + + const deliveryReportObj = await DeliveryReports.findOne({ customerId: 'customer' }); + + expect(deliveryReportObj.status).toBe('complaint'); + + done(); +}); diff --git a/engages-email-sender/src/__tests__/factories.ts b/engages-email-sender/src/__tests__/factories.ts new file mode 100644 index 000000000..b9d8b7851 --- /dev/null +++ b/engages-email-sender/src/__tests__/factories.ts @@ -0,0 +1,28 @@ +import * as faker from 'faker'; +import { Configs, Stats } from '../models'; + +export const configFactory = params => { + const configObj = new Configs({ + code: params.code || faker.random.word(), + value: params.value || faker.random.word(), + }); + + return configObj.save(); +}; + +export const statsFactory = params => { + const statsObj = new Stats({ + engageMessageId: params.engageMessageId || faker.random.id(), + open: params.open || faker.random.number(), + click: params.click || faker.random.number(), + complaint: params.complaint || faker.random.number(), + delivery: params.delivery || faker.random.number(), + bounce: params.bounce || faker.random.number(), + reject: params.reject || faker.random.number(), + send: params.send || faker.random.number(), + renderingfailure: params.renderingfailure || faker.random.number(), + total: params.total || faker.random.number(), + }); + + return statsObj.save(); +}; diff --git a/engages-email-sender/src/__tests__/setup.ts b/engages-email-sender/src/__tests__/setup.ts new file mode 100644 index 000000000..f3fcdbbdf --- /dev/null +++ b/engages-email-sender/src/__tests__/setup.ts @@ -0,0 +1,43 @@ +import * as dotenv from 'dotenv'; +import * as mongoose from 'mongoose'; + +dotenv.config(); + +let db; + +const getCollections = () => { + return Object.keys(db.connection.collections); +}; + +const getCollectionByName = collectionName => { + return db.connection.collections[collectionName]; +}; + +beforeAll(async done => { + db = await mongoose.connect(process.env.TEST_MONGO_URL); + done(); +}); + +afterEach(async () => { + for (const collectionName of getCollections()) { + await getCollectionByName(collectionName).deleteMany({}); + } +}); + +afterAll(async () => { + for (const collectionName of getCollections()) { + try { + await getCollectionByName(collectionName).drop(); + } catch (error) { + if (error.message === 'ns not found') { + return; + } + } + } + + db.connection.removeAllListeners('open'); + + db.connection.db.dropDatabase(); + + db.connection.close(); +}); diff --git a/engages-email-sender/src/api/configs.ts b/engages-email-sender/src/api/configs.ts new file mode 100644 index 000000000..762e65064 --- /dev/null +++ b/engages-email-sender/src/api/configs.ts @@ -0,0 +1,85 @@ +import { Router } from 'express'; +import { debugEngages, debugRequest } from '../debuggers'; +import { Configs } from '../models'; +import { awsRequests } from '../trackers/engageTracker'; +import { createTransporter, updateConfigs } from '../utils'; + +const router = Router(); + +router.post('/save', async (req, res, next) => { + debugRequest(debugEngages, req); + + const { configsMap } = req.body; + + try { + await updateConfigs(configsMap); + } catch (e) { + return next(new Error(e)); + } + + return res.json({ status: 'ok' }); +}); + +router.get('/detail', async (req, res) => { + debugRequest(debugEngages, req); + + const configs = await Configs.find({}); + + return res.json(configs); +}); + +router.get('/get-verified-emails', async (req, res, next) => { + debugRequest(debugEngages, req); + + try { + const emails = await awsRequests.getVerifiedEmails(); + return res.json(emails); + } catch (e) { + return next(new Error(e)); + } +}); + +router.post('/verify-email', async (req, res, next) => { + debugRequest(debugEngages, req); + + try { + const response = await awsRequests.verifyEmail(req.body.email); + return res.json(JSON.stringify(response)); + } catch (e) { + return next(new Error(e)); + } +}); + +router.post('/remove-verified-email', async (req, res, next) => { + debugRequest(debugEngages, req); + + try { + const response = await awsRequests.removeVerifiedEmail(req.body.email); + return res.json(JSON.stringify(response)); + } catch (e) { + return next(new Error(e)); + } +}); + +router.post('/send-test-email', async (req, res, next) => { + debugRequest(debugEngages, req); + + const { from, to, content } = req.body; + + const transporter = await createTransporter(); + + try { + const response = await transporter.sendMail({ + from, + to, + subject: content, + html: content, + }); + + return res.json(JSON.stringify(response)); + } catch (e) { + return next(new Error(e)); + } +}); + +export default router; diff --git a/engages-email-sender/src/api/deliveryReports.ts b/engages-email-sender/src/api/deliveryReports.ts new file mode 100644 index 000000000..cccc24adf --- /dev/null +++ b/engages-email-sender/src/api/deliveryReports.ts @@ -0,0 +1,42 @@ +import { Router } from 'express'; + +const router = Router(); + +import { debugEngages, debugRequest } from '../debuggers'; +import { DeliveryReports, Logs, Stats } from '../models'; + +router.get('/statsList/:engageMessageId', async (req, res) => { + debugRequest(debugEngages, req); + + const { engageMessageId } = req.params; + + const stats = await Stats.findOne({ engageMessageId }); + + if (!stats) { + return res.json({}); + } + + return res.json(stats); +}); + +router.get(`/reportsList/:engageMessageId`, async (req, res) => { + debugRequest(debugEngages, req); + + const deliveryReports = await DeliveryReports.findOne({ engageMessageId: req.params.engageMessageId }); + + if (!deliveryReports) { + return res.json({}); + } + + return res.json(deliveryReports); +}); + +router.get(`/logs/:engageMessageId`, async (req, res) => { + debugRequest(debugEngages, req); + + const logs = await Logs.find({ engageMessageId: req.params.engageMessageId }); + + return res.json(logs); +}); + +export default router; diff --git a/engages-email-sender/src/connection.ts b/engages-email-sender/src/connection.ts new file mode 100644 index 000000000..a7f53078f --- /dev/null +++ b/engages-email-sender/src/connection.ts @@ -0,0 +1,29 @@ +import * as dotenv from 'dotenv'; +import mongoose = require('mongoose'); +import { debugDb } from './debuggers'; +import { getEnv } from './utils'; + +dotenv.config(); + +mongoose.Promise = global.Promise; +mongoose.set('useFindAndModify', false); +const MONGO_URL = getEnv({ name: 'MONGO_URL' }); + +mongoose.connection + .on('connected', () => { + debugDb(`Connected to the database: ${MONGO_URL}`); + }) + .on('disconnected', () => { + debugDb(`Disconnected from the database: ${MONGO_URL}`); + }) + .on('error', error => { + debugDb(`Database connection error: ${MONGO_URL}`, error); + }); + +export const connect = (URL?: string) => { + return mongoose.connect(URL || MONGO_URL, { useNewUrlParser: true, useCreateIndex: true }); +}; + +export function disconnect() { + return mongoose.connection.close(); +} diff --git a/engages-email-sender/src/debuggers.ts b/engages-email-sender/src/debuggers.ts new file mode 100644 index 000000000..31c8acfc3 --- /dev/null +++ b/engages-email-sender/src/debuggers.ts @@ -0,0 +1,15 @@ +import * as debug from 'debug'; + +export const debugInit = debug('erxes-engages:init'); +export const debugDb = debug('erxes-engages:db'); +export const debugBase = debug('erxes-engages:base'); +export const debugEngages = debug('erxes-engages:engages'); +export const debugWorkers = debug('erxes-engages:worker'); +export const debugExternalRequests = debug('erxes-engages:external-requests'); + +export const debugRequest = (debugInstance, req) => + debugInstance(` + Receiving ${req.path} request from ${req.headers.origin} + body: ${JSON.stringify(req.body || {})} + queryParams: ${JSON.stringify(req.query)} + `); diff --git a/engages-email-sender/src/index.ts b/engages-email-sender/src/index.ts new file mode 100644 index 000000000..dc1c8bfe9 --- /dev/null +++ b/engages-email-sender/src/index.ts @@ -0,0 +1,57 @@ +import * as bodyParser from 'body-parser'; +import * as dotenv from 'dotenv'; +import * as express from 'express'; +import { filterXSS } from 'xss'; +import configs from './api/configs'; +import deliveryReports from './api/deliveryReports'; +import { initRedis } from './redisClient'; + +initRedis(); + +// load environment variables +dotenv.config(); + +import { connect } from './connection'; +import { debugBase, debugInit } from './debuggers'; +import { initConsumer } from './messageQueue'; +import { trackEngages } from './trackers/engageTracker'; + +connect(); + +initConsumer(); + +const app = express(); + +app.disable('x-powered-by'); +app.use((req: any, _res, next) => { + req.rawBody = ''; + + req.on('data', chunk => { + req.rawBody += chunk.toString().replace(/\//g, '/'); + }); + + next(); +}); + +app.use(bodyParser.json()); +app.use(bodyParser.urlencoded({ extended: true })); + +// Insert routes below +app.use('/configs', configs); +app.use('/deliveryReports', deliveryReports); + +trackEngages(app); + +// Error handling middleware +app.use((error, _req, res, _next) => { + const msg = filterXSS(error.message); + + debugBase(`Error: `, msg); + res.status(500).send(msg); +}); + +const { PORT } = process.env; + +app.listen(PORT, () => { + debugInit(`Engages server is running on port ${PORT}`); +}); diff --git a/engages-email-sender/src/messageQueue.ts b/engages-email-sender/src/messageQueue.ts new file mode 100644 index 000000000..edf07a7e0 --- /dev/null +++ b/engages-email-sender/src/messageQueue.ts @@ -0,0 +1,57 @@ +import * as amqplib from 'amqplib'; +import * as dotenv from 'dotenv'; +import { debugBase } from './debuggers'; +import { start } from './workers'; + +dotenv.config(); + +const { NODE_ENV, RABBITMQ_HOST = 'amqp://localhost' } = process.env; + +let conn; +let channel; + +export const initConsumer = async () => { + try { + conn = await amqplib.connect(RABBITMQ_HOST); + channel = await conn.createChannel(); + + // listen for erxes api =========== + await channel.assertQueue('erxes-api:engages-notification'); + + channel.consume('erxes-api:engages-notification', async msg => { + if (msg !== null) { + const { action, data } = JSON.parse(msg.content.toString()); + + debugBase(`Receiving queue data from erxes-api`, data); + + if (action === 'sendEngage') { + await start(data); + } + + channel.ack(msg); + } + }); + } catch (e) { + debugBase(e.message); + } +}; + +interface IQueueData { + action: string; + data: any; +} + +export const sendMessage = async (queueName: string, data: IQueueData) => { + if (NODE_ENV === 'test') { + return; + } + + debugBase(`Sending data to engagesApi queue`, data); + + try { + await channel.assertQueue(queueName); + await channel.sendToQueue(queueName, Buffer.from(JSON.stringify(data || {}))); + } catch (e) { + debugBase(e.message); + } +}; diff --git a/engages-email-sender/src/models/Configs.ts b/engages-email-sender/src/models/Configs.ts new file mode 100644 index 000000000..a346d4586 --- /dev/null +++ b/engages-email-sender/src/models/Configs.ts @@ -0,0 +1,104 @@ +import { Document, Model, model, Schema } from 'mongoose'; +import { getValueAsString } from '../utils'; + +export interface IConfig { + code: string; + value: string; +} + +export interface ISESConfig { + accessKeyId: string; + region: string; + secretAccessKey: string; +} +export interface IConfigDocument extends IConfig, Document { + _id: string; +} + +export const configsSchema = new Schema({ + code: { type: String }, + value: { type: String }, +}); + +export interface IConfigModel extends Model { + getConfig(code: string): Promise; + updateConfigs(configsMap): Promise; + createOrUpdateConfig({ code, value }: IConfig): IConfigDocument; + getSESConfigs(): Promise; +} + +export const loadClass = () => { + class Config { + /* + * Get a Config + */ + public static async getConfig(code: string) { + const config = await Configs.findOne({ code }); + + if (!config) { + return { value: '' }; + } + + return config; + } + + /** + * Create or update config + */ + public static async createOrUpdateConfig({ code, value }: { code: string; value: string[] }) { + const obj = await Configs.findOne({ code }); + + if (obj) { + await Configs.updateOne({ _id: obj._id }, { $set: { value } }); + + return Configs.findOne({ _id: obj._id }); + } + + return Configs.create({ code, value }); + } + + /** + * Update configs + */ + public static async updateConfigs(configsMap) { + const codes = Object.keys(configsMap); + + for (const code of codes) { + if (!code) { + continue; + } + + const value = configsMap[code]; + const doc = { code, value }; + + await Configs.createOrUpdateConfig(doc); + } + } + + /* + * Get a Config + */ + public static async getSESConfigs() { + const accessKeyId = await getValueAsString('accessKeyId'); + const secretAccessKey = await getValueAsString('secretAccessKey'); + const region = await getValueAsString('region'); + + return { + accessKeyId, + secretAccessKey, + region, + }; + } + } + + configsSchema.loadClass(Config); + + return configsSchema; +}; + +loadClass(); + +// tslint:disable-next-line +const Configs = model('configs', configsSchema); + +export default Configs; diff --git a/engages-email-sender/src/models/DeliveryReports.ts b/engages-email-sender/src/models/DeliveryReports.ts new file mode 100644 index 000000000..f80ddf9f6 --- /dev/null +++ b/engages-email-sender/src/models/DeliveryReports.ts @@ -0,0 +1,112 @@ +import { Document, Model, model, Schema } from 'mongoose'; + +export interface IStats { + open: number; + click: number; + complaint: number; + delivery: number; + bounce: number; + reject: number; + send: number; + renderingfailure: number; + total: number; + engageMessageId: string; +} + +export interface IStatsDocument extends IStats, Document {} + +export const statsSchema = new Schema({ + engageMessageId: { type: String }, + open: { type: Number, default: 0 }, + click: { type: Number, default: 0 }, + complaint: { type: Number, default: 0 }, + delivery: { type: Number, default: 0 }, + bounce: { type: Number, default: 0 }, + reject: { type: Number, default: 0 }, + send: { type: Number, default: 0 }, + renderingfailure: { type: Number, default: 0 }, + total: { type: Number, default: 0 }, +}); + +export interface IDeliveryReports { + engageMessageId: string; + mailId: string; + status: string; + customerId: string; +} + +export interface IDeliveryReportsDocument extends IDeliveryReports, Document {} + +export const deliveryReportsSchema = new Schema({ + customerId: { type: String }, + mailId: { type: String, optional: true }, + status: { type: String, optional: true }, + engageMessageId: { type: String, optional: true }, +}); + +export interface IStatsModel extends Model { + updateStats(engageMessageId: string, stat: string): Promise; +} + +export const loadStatsClass = () => { + class Stat { + /** + * Increase stat by 1 + */ + public static async updateStats(engageMessageId: string, stat: string) { + return Stats.updateOne({ engageMessageId }, { $inc: { [stat]: 1 } }); + } + } + + statsSchema.loadClass(Stat); + + return statsSchema; +}; + +loadStatsClass(); + +// tslint:disable-next-line +const Stats = model('engage_stats', statsSchema); + +export interface IDeliveryReportModel extends Model { + updateOrCreateReport(headers: any, status: string): Promise; +} + +export const loadDeliveryReportsClass = () => { + class DeliveryReport { + /** + * Change delivery report status + */ + public static async updateOrCreateReport(headers: any, status: string) { + const { engageMessageId, mailId, customerId } = headers; + + const deliveryReports = await DeliveryReports.findOne({ customerId }); + + if (deliveryReports) { + await DeliveryReports.update({ customerId }, { $set: { engageMessageId, mailId, status } }); + } else { + await DeliveryReports.create({ customerId, mailId, engageMessageId, status }); + } + + if (status === 'complaint' || status === 'bounce' || status === 'reject') { + return 'reject'; + } + + return true; + } + } + + deliveryReportsSchema.loadClass(DeliveryReport); + + return deliveryReportsSchema; +}; + +loadDeliveryReportsClass(); + +// tslint:disable-next-line +const DeliveryReports = model( + 'delivery_reports', + deliveryReportsSchema, +); + +export { Stats, DeliveryReports }; diff --git a/engages-email-sender/src/models/Logs.ts b/engages-email-sender/src/models/Logs.ts new file mode 100644 index 000000000..497f859a7 --- /dev/null +++ b/engages-email-sender/src/models/Logs.ts @@ -0,0 +1,40 @@ +import { Document, Model, model, Schema } from 'mongoose'; + +export type MessageType = 'regular' | 'success' | 'failure'; + +export interface ILog { + engageMessageId: string; + message: string; + type: MessageType; +} + +export interface ILogDocument extends ILog, Document {} + +export interface ILogModel extends Model { + createLog(engageMessageId: string, type: MessageType, message: string): Promise; +} + +export const logSchema = new Schema({ + engageMessageId: { type: String }, + message: { type: String }, + type: { type: String }, +}); + +export const loadLogClass = () => { + class Log { + public static async createLog(engageMessageId: string, type: MessageType, message: string) { + return Logs.create({ engageMessageId, message, type }); + } + } + + logSchema.loadClass(Log); + + return logSchema; +}; + +loadLogClass(); + +// tslint:disable-next-line +const Logs = model('engage_logs', logSchema); + +export default Logs; diff --git a/engages-email-sender/src/models/index.ts b/engages-email-sender/src/models/index.ts new file mode 100644 index 000000000..e412b427e --- /dev/null +++ b/engages-email-sender/src/models/index.ts @@ -0,0 +1,5 @@ +import Configs from './Configs'; +import { DeliveryReports, Stats } from './DeliveryReports'; +import Logs from './Logs'; + +export { Configs, Stats, DeliveryReports, Logs }; diff --git a/engages-email-sender/src/redisClient.ts b/engages-email-sender/src/redisClient.ts new file mode 100644 index 000000000..1d0a84527 --- /dev/null +++ b/engages-email-sender/src/redisClient.ts @@ -0,0 +1,84 @@ +import * as dotenv from 'dotenv'; +import * as redis from 'redis'; + +// load environment variables +dotenv.config(); + +const { + REDIS_HOST = 'localhost', + REDIS_PORT = 6379, + REDIS_PASSWORD, + NODE_ENV, +}: { + REDIS_HOST?: string; + REDIS_PORT?: number; + REDIS_PASSWORD?: string; + NODE_ENV?: string; +} = process.env; + +let client; + +export const initRedis = (callback?: (client) => void) => { + client = redis.createClient({ + host: REDIS_HOST, + port: REDIS_PORT, + password: REDIS_PASSWORD, + connect_timeout: 15000, + enable_offline_queue: true, + retry_unfulfilled_commands: true, + retry_strategy: options => { + // reconnect after + return Math.max(options.attempt * 100, 3000); + }, + }); + + if (callback) { + callback(client); + } +}; + +/* + * Get item + */ +export const get = (key: string, defaultValue?: any): Promise => { + return new Promise((resolve, reject) => { + if (NODE_ENV === 'test') { + return resolve(defaultValue || ''); + } + + client.get(key, (error, reply) => { + if (error) { + return reject(error); + } + + return resolve(reply && reply !== 'nil' ? reply : defaultValue); + }); + }); +}; + +/* + * Set item + */ +export const set = (key: string, value: any) => { + if (NODE_ENV === 'test') { + return; + } + + client.set(key, value); +}; + +/* + * Get array + */ +export const getArray = async (key: string): Promise => { + const value = await get(key, '[]'); + + return JSON.parse(value); +}; + +/* + * Set array + */ +export const setArray = (key: string, value: any[]) => { + client.set(key, JSON.stringify(value)); +}; diff --git a/engages-email-sender/src/trackers/engageTracker.ts b/engages-email-sender/src/trackers/engageTracker.ts new file mode 100644 index 000000000..79555445d --- /dev/null +++ b/engages-email-sender/src/trackers/engageTracker.ts @@ -0,0 +1,143 @@ +import * as AWS from 'aws-sdk'; +import { debugBase } from '../debuggers'; +import { sendMessage } from '../messageQueue'; +import { Configs, DeliveryReports, Stats } from '../models'; +import { ISESConfig } from '../models/Configs'; + +export const getApi = async (type: string): Promise => { + const config: ISESConfig = await Configs.getSESConfigs(); + + if (!config) { + return; + } + + AWS.config.update(config); + + if (type === 'ses') { + return new AWS.SES(); + } + + return new AWS.SNS(); +}; + +/* + * Receives notification from amazon simple notification service + * And updates engage message status and stats + */ +const handleMessage = async message => { + let obj = message; + + try { + obj = JSON.parse(message); + } catch (e) { + console.log(e.message); + } + + const { eventType, mail } = obj; + const { headers } = mail; + + const engageMessageId = headers.find(header => header.name === 'Engagemessageid'); + + const mailId = headers.find(header => header.name === 'Mailmessageid'); + + const customerId = headers.find(header => header.name === 'Customerid'); + + const mailHeaders = { + engageMessageId: engageMessageId.value, + mailId: mailId.value, + customerId: customerId.value, + }; + + const type = eventType.toLowerCase(); + + await Stats.updateStats(mailHeaders.engageMessageId, type); + + const rejected = await DeliveryReports.updateOrCreateReport(mailHeaders, type); + + if (rejected === 'reject') { + await sendMessage('engagesNotification', { + action: 'setDoNotDisturb', + data: { customerId: mail.customerId }, + }); + } + + return true; +}; + +export const trackEngages = expressApp => { + expressApp.post(`/service/engage/tracker`, async (req, res) => { + const chunks: any = []; + + req.setEncoding('utf8'); + + req.on('data', chunk => { + chunks.push(chunk); + }); + + req.on('end', async () => { + const message = JSON.parse(chunks.join('')); + + debugBase('receiving on tracker:', message); + + const { Type = '', Message = {}, Token = '', TopicArn = '' } = message; + + if (Type === 'SubscriptionConfirmation') { + await getApi('sns').then(api => api.confirmSubscription({ Token, TopicArn }).promise()); + + return res.end('success'); + } + + if (Message === 'Successfully validated SNS topic for Amazon SES event publishing.') { + res.end('success'); + } + + await handleMessage(Message); + + return res.end('success'); + }); + }); +}; + +export const awsRequests = { + async getVerifiedEmails() { + const api = await getApi('ses'); + + return new Promise((resolve, reject) => { + api.listVerifiedEmailAddresses((error, data) => { + if (error) { + return reject(error); + } + + return resolve(data.VerifiedEmailAddresses); + }); + }); + }, + + async verifyEmail(email: string) { + const api = await getApi('ses'); + + return new Promise((resolve, reject) => { + api.verifyEmailAddress({ EmailAddress: email }, (error, data) => { + if (error) { + return reject(error); + } + + return resolve(data); + }); + }); + }, + + async removeVerifiedEmail(email: string) { + const api = await getApi('ses'); + + return new Promise((resolve, reject) => { + api.deleteVerifiedEmailAddress({ EmailAddress: email }, (error, data) => { + if (error) { + return reject(error); + } + + return resolve(data); + }); + }); + }, +}; diff --git a/engages-email-sender/src/utils.ts b/engages-email-sender/src/utils.ts new file mode 100644 index 000000000..9828a9a90 --- /dev/null +++ b/engages-email-sender/src/utils.ts @@ -0,0 +1,203 @@ +import * as AWS from 'aws-sdk'; +import * as nodemailer from 'nodemailer'; +import { debugBase } from './debuggers'; +import Configs, { ISESConfig } from './models/Configs'; +import { get, set } from './redisClient'; +import { getApi } from './trackers/engageTracker'; + +export const createTransporter = async () => { + const config: ISESConfig = await Configs.getSESConfigs(); + + AWS.config.update(config); + + return nodemailer.createTransport({ + SES: new AWS.SES({ apiVersion: '2010-12-01' }), + }); +}; + +export interface ICustomer { + name: string; + _id: string; + email: string; +} + +export interface IUser { + name: string; + position: string; + email: string; +} + +/** + * Dynamic content tags + */ +export const replaceKeys = ({ + content, + customer, + user, +}: { + content: string; + customer: ICustomer; + user: IUser; +}): string => { + let result = content; + // replace customer fields + result = result.replace(/{{\s?customer.name\s?}}/gi, customer.name); + result = result.replace(/{{\s?customer.email\s?}}/gi, customer.email || ''); + + // replace user fields + result = result.replace(/{{\s?user.fullName\s?}}/gi, user.name || ''); + result = result.replace(/{{\s?user.position\s?}}/gi, user.position || ''); + result = result.replace(/{{\s?user.email\s?}}/gi, user.email || ''); + + return result; +}; + +export const getEnv = ({ name, defaultValue }: { name: string; defaultValue?: string }): string => { + const value = process.env[name]; + + if (!value && typeof defaultValue !== 'undefined') { + return defaultValue; + } + + if (!value) { + debugBase(`Missing environment variable configuration for ${name}`); + } + + return value || ''; +}; + +export const subscribeEngage = () => { + return new Promise(async (resolve, reject) => { + const snsApi = await getApi('sns'); + const sesApi = await getApi('ses'); + const configSet = await getConfig('configSet', 'erxes'); + + const MAIN_API_DOMAIN = getEnv({ name: 'MAIN_API_DOMAIN' }); + + const topicArn = await snsApi + .createTopic({ Name: configSet }) + .promise() + .catch(e => { + return reject(e.message); + }); + + if (!topicArn) { + return reject('Error occured'); + } + + await snsApi + .subscribe({ + TopicArn: topicArn.TopicArn, + Protocol: 'https', + Endpoint: `${MAIN_API_DOMAIN}/service/engage/tracker`, + }) + .promise() + .catch(e => { + return reject(e.message); + }); + + await sesApi + .createConfigurationSet({ + ConfigurationSet: { + Name: configSet, + }, + }) + .promise() + .catch(e => { + if (e.message.includes('already exists')) { + return; + } + + return reject(e.message); + }); + + await sesApi + .createConfigurationSetEventDestination({ + ConfigurationSetName: configSet, + EventDestination: { + MatchingEventTypes: [ + 'send', + 'reject', + 'bounce', + 'complaint', + 'delivery', + 'open', + 'click', + 'renderingFailure', + ], + Name: configSet, + Enabled: true, + SNSDestination: { + TopicARN: topicArn.TopicArn, + }, + }, + }) + .promise() + .catch(e => { + if (e.message.includes('already exists')) { + return; + } + + return reject(e.message); + }); + + return resolve(true); + }); +}; + +export const getValueAsString = async name => { + const entry = await Configs.getConfig(name); + + if (entry.value) { + return entry.value.toString(); + } + + return entry.value; +}; + +export const resetConfigsCache = () => { + set('configs_erxes_engages', ''); +}; + +export const updateConfigs = async (configsMap): Promise => { + const prevSESConfigs = await Configs.getSESConfigs(); + + await Configs.updateConfigs(configsMap); + + const updatedSESConfigs = await Configs.getSESConfigs(); + + resetConfigsCache(); + + if (JSON.stringify(prevSESConfigs) !== JSON.stringify(updatedSESConfigs)) { + await subscribeEngage(); + } +}; + +export const getConfigs = async () => { + const configsCache = await get('configs_erxes_engages'); + + if (configsCache && configsCache !== '{}') { + return JSON.parse(configsCache); + } + + const configsMap = {}; + const configs = await Configs.find({}); + + for (const config of configs) { + configsMap[config.code] = config.value; + } + + set('configs_erxes_engages', JSON.stringify(configsMap)); + + return configsMap; +}; + +export const getConfig = async (code, defaultValue?) => { + const configs = await getConfigs(); + + if (!configs[code]) { + return defaultValue; + } + + return configs[code]; +}; diff --git a/engages-email-sender/src/workers/index.ts b/engages-email-sender/src/workers/index.ts new file mode 100644 index 000000000..ff9073bc4 --- /dev/null +++ b/engages-email-sender/src/workers/index.ts @@ -0,0 +1,34 @@ +import * as dotenv from 'dotenv'; +import * as path from 'path'; +import { debugWorkers } from '../debuggers'; +import { Stats } from '../models'; +import { createWorkers, splitToCore } from './utils'; + +dotenv.config(); + +export const start = async data => { + debugWorkers('received', data); + + const { user, email, engageMessageId, customers } = data; + + const results: string[] = splitToCore(customers); + + const workerFile = + process.env.NODE_ENV === 'production' + ? `./dist/workers/sendEmail.worker.js` + : './src/workers/sendEmail.worker.import.js'; + + const workerPath = path.resolve(workerFile); + + const workerData = { + user, + email, + engageMessageId, + }; + + await Stats.create({ engageMessageId }); + + await createWorkers(workerPath, workerData, results); + + return true; +}; diff --git a/engages-email-sender/src/workers/sendEmail.worker.import.js b/engages-email-sender/src/workers/sendEmail.worker.import.js new file mode 100644 index 000000000..afbc10bc3 --- /dev/null +++ b/engages-email-sender/src/workers/sendEmail.worker.import.js @@ -0,0 +1,19 @@ +const path = require('path'); + +try { + require('ts-node').register({ + compilerOptions: { + experimentalDecorators: false, + }, + files: ['./sendEmail.worker.ts'], + transpileOnly: true, + }); +} catch (e) { + console.log('register error', e); +} + +try { + require(path.resolve(__dirname, './sendEmail.worker.ts')); +} catch (e) { + console.log(e); +} diff --git a/engages-email-sender/src/workers/sendEmail.worker.ts b/engages-email-sender/src/workers/sendEmail.worker.ts new file mode 100644 index 000000000..c02195c2b --- /dev/null +++ b/engages-email-sender/src/workers/sendEmail.worker.ts @@ -0,0 +1,93 @@ +import * as Random from 'meteor-random'; +import * as mongoose from 'mongoose'; +import { debugWorkers } from '../debuggers'; +import { Logs, Stats } from '../models'; +import { createTransporter, getEnv, replaceKeys } from '../utils'; +import { connect } from './utils'; + +// tslint:disable-next-line +const { parentPort, workerData } = require('worker_threads'); + +let cancel = false; + +parentPort.once('message', message => { + if (message === 'cancel') { + parentPort.postMessage('Cancelled'); + cancel = true; + } +}); + +connect().then(async () => { + if (cancel) { + return; + } + + const { user, email, result, engageMessageId } = workerData; + + const { content, subject, attachments } = email; + + const transporter = await createTransporter(); + + const customerEmails = result.map(customer => customer.email); + + if (customerEmails.length > 0) { + await Logs.createLog(engageMessageId, 'regular', `Preparing to send emails to ${customerEmails}`); + } + + for (const customer of result) { + const mailMessageId = Random.id(); + + let mailAttachment = []; + + if (attachments.length > 0) { + mailAttachment = attachments.map(file => { + return { + filename: file.name || '', + path: file.url || '', + }; + }); + } + + let replacedContent = replaceKeys({ content, customer, user }); + + const MAIN_API_DOMAIN = getEnv({ name: 'MAIN_API_DOMAIN' }); + + const unSubscribeUrl = `${MAIN_API_DOMAIN}/unsubscribe/?cid=${customer._id}`; + + replacedContent += `
If you want to use service like this click here to read more. Also you can opt out from our email subscription here.
ยฉ 2019 erxes inc Growth Marketing Platform
`; + + try { + await transporter.sendMail({ + from: user.email, + to: customer.email, + subject, + attachments: mailAttachment, + html: replacedContent, + headers: { + 'X-SES-CONFIGURATION-SET': 'erxes', + EngageMessageId: engageMessageId, + CustomerId: customer._id, + MailMessageId: mailMessageId, + }, + }); + const msg = `Sent email to: ${customer.email}`; + debugWorkers(msg); + await Logs.createLog(engageMessageId, 'success', msg); + } catch (e) { + debugWorkers(e.message); + await Logs.createLog( + engageMessageId, + 'failure', + `Error occurred while sending email to ${customer.email}: ${e.message}`, + ); + cancel = true; + parentPort.postMessage('Error occurred'); + } + + await Stats.updateOne({ engageMessageId }, { $inc: { total: 1 } }); + } + + mongoose.connection.close(); + + parentPort.postMessage('Successfully finished job'); +}); diff --git a/engages-email-sender/src/workers/utils.ts b/engages-email-sender/src/workers/utils.ts new file mode 100644 index 000000000..2e9f7b121 --- /dev/null +++ b/engages-email-sender/src/workers/utils.ts @@ -0,0 +1,100 @@ +import * as dotenv from 'dotenv'; +import * as mongoose from 'mongoose'; +import * as os from 'os'; +import { debugWorkers } from '../debuggers'; + +dotenv.config(); + +let workers: any[] = []; +let intervals: any[] = []; + +export const createWorkers = (workerPath: string, workerData: any, results: string[]) => { + return new Promise((resolve, reject) => { + // tslint:disable-next-line + const Worker = require('worker_threads').Worker; + + if (workers.length > 0) { + return reject(new Error('Workers are busy')); + } + + const interval = setImmediate(() => { + results.forEach(result => { + try { + const worker = new Worker(workerPath, { + workerData: { + ...workerData, + result, + }, + }); + + workers.push(worker); + + worker.on('message', () => { + removeWorker(worker); + }); + + worker.on('error', e => { + debugWorkers(e); + removeWorker(worker); + }); + + worker.on('exit', code => { + if (code !== 0) { + debugWorkers(`Worker stopped with exit code ${code}`); + } + }); + } catch (e) { + reject(new Error(e)); + } + }); + + clearIntervals(); + }); + + intervals.push(interval); + + resolve(true); + }); +}; + +export const splitToCore = (datas: any[]) => { + const cpuCount = os.cpus().length; + + const results: any[] = []; + + const calc = Math.ceil(datas.length / cpuCount); + + for (let index = 0; index < cpuCount; index++) { + const start = index * calc; + const end = start + calc; + const row = datas.slice(start, end); + + results.push(row); + } + + return results; +}; + +export const removeWorker = worker => { + workers = workers.filter(workerObj => { + return worker.threadId !== workerObj.threadId; + }); +}; + +export const removeWorkers = () => { + workers.forEach(worker => { + worker.postMessage('cancel'); + }); +}; + +export const clearIntervals = () => { + intervals.forEach(interval => { + clearImmediate(interval); + }); + + intervals = []; +}; + +const { MONGO_URL } = process.env; + +export const connect = () => mongoose.connect(MONGO_URL, { useNewUrlParser: true, useCreateIndex: true }); diff --git a/engages-email-sender/tsconfig.json b/engages-email-sender/tsconfig.json new file mode 100644 index 000000000..5d28d8b76 --- /dev/null +++ b/engages-email-sender/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "outDir": "./dist", + "allowJs": true, + "target": "es6", + "moduleResolution": "node", + "module": "commonjs", + "lib": ["es2015", "es6", "es7", "esnext.asynciterable"], + "sourceMap": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "skipLibCheck": true + }, + "include": ["./src/**/*"], + "exclude": ["node_modules", "dist"] +} diff --git a/engages-email-sender/tsconfig.prod.json b/engages-email-sender/tsconfig.prod.json new file mode 100644 index 000000000..fd8086ccf --- /dev/null +++ b/engages-email-sender/tsconfig.prod.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["node_modules", "dist", "src/__tests__"] +} diff --git a/engages-email-sender/yarn.lock b/engages-email-sender/yarn.lock new file mode 100644 index 000000000..abfc648fb --- /dev/null +++ b/engages-email-sender/yarn.lock @@ -0,0 +1,5931 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== + dependencies: + "@babel/highlight" "^7.8.3" + +"@babel/core@^7.1.0": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.7.tgz#b69017d221ccdeb203145ae9da269d72cf102f3b" + integrity sha512-rBlqF3Yko9cynC5CCFy6+K/w2N+Sq/ff2BPy+Krp7rHlABIr5epbA7OxVeKoMHB39LZOp1UY5SuLjy6uWi35yA== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.7" + "@babel/helpers" "^7.8.4" + "@babel/parser" "^7.8.7" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.7" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.0" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.4.0", "@babel/generator@^7.8.6", "@babel/generator@^7.8.7": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.8.tgz#cdcd58caab730834cee9eeadb729e833b625da3e" + integrity sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg== + dependencies: + "@babel/types" "^7.8.7" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/helper-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" + integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-get-function-arity@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" + integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" + integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== + +"@babel/helper-split-export-declaration@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" + integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helpers@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.4.tgz#754eb3ee727c165e0a240d6c207de7c455f36f73" + integrity sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w== + dependencies: + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.4" + "@babel/types" "^7.8.3" + +"@babel/highlight@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" + integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.8.6", "@babel/parser@^7.8.7": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.8.tgz#4c3b7ce36db37e0629be1f0d50a571d2f86f6cd4" + integrity sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA== + +"@babel/plugin-syntax-object-rest-spread@^7.0.0": + 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/template@^7.4.0", "@babel/template@^7.8.3", "@babel/template@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.8.4", "@babel/traverse@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.6.tgz#acfe0c64e1cd991b3e32eae813a6eb564954b5ff" + integrity sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.6" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.7.tgz#1fc9729e1acbb2337d5b6977a63979b4819f5d1d" + integrity sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw== + dependencies: + esutils "^2.0.2" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@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: + exec-sh "^0.3.2" + minimist "^1.2.0" + +"@jest/console@^24.7.1", "@jest/console@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" + integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== + dependencies: + "@jest/source-map" "^24.9.0" + chalk "^2.0.1" + slash "^2.0.0" + +"@jest/core@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" + integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== + dependencies: + "@jest/console" "^24.7.1" + "@jest/reporters" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-changed-files "^24.9.0" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-resolve-dependencies "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + jest-watcher "^24.9.0" + micromatch "^3.1.10" + p-each-series "^1.0.0" + realpath-native "^1.1.0" + rimraf "^2.5.4" + slash "^2.0.0" + strip-ansi "^5.0.0" + +"@jest/environment@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" + integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== + dependencies: + "@jest/fake-timers" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + +"@jest/fake-timers@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" + integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== + dependencies: + "@jest/types" "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + +"@jest/reporters@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" + integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" + istanbul-lib-coverage "^2.0.2" + istanbul-lib-instrument "^3.0.1" + istanbul-lib-report "^2.0.4" + istanbul-lib-source-maps "^3.0.1" + istanbul-reports "^2.2.6" + jest-haste-map "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + node-notifier "^5.4.2" + slash "^2.0.0" + source-map "^0.6.0" + string-length "^2.0.0" + +"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" + integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" + +"@jest/test-result@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" + integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== + dependencies: + "@jest/console" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/istanbul-lib-coverage" "^2.0.0" + +"@jest/test-sequencer@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" + integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== + dependencies: + "@jest/test-result" "^24.9.0" + jest-haste-map "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + +"@jest/transform@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" + integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^24.9.0" + babel-plugin-istanbul "^5.1.0" + chalk "^2.0.1" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.1.15" + jest-haste-map "^24.9.0" + jest-regex-util "^24.9.0" + jest-util "^24.9.0" + micromatch "^3.1.10" + pirates "^4.0.1" + realpath-native "^1.1.0" + slash "^2.0.0" + source-map "^0.6.1" + write-file-atomic "2.4.1" + +"@jest/types@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" + integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^13.0.0" + +"@snyk/cli-interface@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@snyk/cli-interface/-/cli-interface-1.5.0.tgz#b9dbe6ebfb86e67ffabf29d4e0d28a52670ac456" + integrity sha512-+Qo+IO3YOXWgazlo+CKxOuWFLQQdaNCJ9cSfhFQd687/FuesaIxWdInaAdfpsLScq0c6M1ieZslXgiZELSzxbg== + dependencies: + tslib "^1.9.3" + +"@snyk/cli-interface@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@snyk/cli-interface/-/cli-interface-2.2.0.tgz#5536bc913917c623d16d727f9f3759521a916026" + integrity sha512-sA7V2JhgqJB9z5uYotgQc5iNDv//y+Mdm39rANxmFjtZMSYJZHkP80arzPjw1mB5ni/sWec7ieYUUFeySZBfVg== + dependencies: + tslib "^1.9.3" + +"@snyk/cli-interface@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@snyk/cli-interface/-/cli-interface-2.3.0.tgz#9d38f815a5cf2be266006954c2a058463d531e08" + integrity sha512-ecbylK5Ol2ySb/WbfPj0s0GuLQR+KWKFzUgVaoNHaSoN6371qRWwf2uVr+hPUP4gXqCai21Ug/RDArfOhlPwrQ== + dependencies: + tslib "^1.9.3" + +"@snyk/cli-interface@2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@snyk/cli-interface/-/cli-interface-2.3.1.tgz#73f2f4bd717b9f03f096ede3ff5830eb8d2f3716" + integrity sha512-JZvsmhDXSyjv1dkc12lPI3tNTNYlIaOiIQMYFg2RgqF3QmWjTyBUgRZcF7LoKyufHtS4dIudM6k1aHBpSaDrhw== + dependencies: + tslib "^1.9.3" + +"@snyk/cli-interface@2.3.2", "@snyk/cli-interface@^2.0.3": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@snyk/cli-interface/-/cli-interface-2.3.2.tgz#e93afa82de15b912e657f1ba86f9d7963983e594" + integrity sha512-jmZyxVHqzYU1GfdnWCGdd68WY/lAzpPVyqalHazPj4tFJehrSfEFc82RMTYAMgXEJuvFRFIwhsvXh3sWUhIQmg== + dependencies: + tslib "^1.9.3" + +"@snyk/cocoapods-lockfile-parser@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@snyk/cocoapods-lockfile-parser/-/cocoapods-lockfile-parser-3.0.0.tgz#514b744cedd9d3d3efb2a5d06fce1662fec2ff1a" + integrity sha512-AebCc+v9vtOL9tFkU4/tommgVsXxqdx6t45kCkBW+FC4PaYvfYEg9Eg/9GqlY9+nFrLFo/uTr+E/aR0AF/KqYA== + dependencies: + "@snyk/dep-graph" "^1.11.0" + "@snyk/ruby-semver" "^2.0.4" + "@types/js-yaml" "^3.12.1" + core-js "^3.2.0" + js-yaml "^3.13.1" + source-map-support "^0.5.7" + tslib "^1.9.3" + +"@snyk/composer-lockfile-parser@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@snyk/composer-lockfile-parser/-/composer-lockfile-parser-1.2.0.tgz#62c6d88c6a39c55dda591854f5380923a993182f" + integrity sha512-kZT+HTqgNcQMeoE5NM9M3jj463M8zI7ZxqZXLw9WoyVs5JTt9g0qFWxIG1cNwZdGVI+y7tzZbNWw9BlMD1vCCQ== + dependencies: + lodash "^4.17.13" + +"@snyk/configstore@3.2.0-rc1", "@snyk/configstore@^3.2.0-rc1": + version "3.2.0-rc1" + resolved "https://registry.yarnpkg.com/@snyk/configstore/-/configstore-3.2.0-rc1.tgz#385c050d11926a26d0335a4b3be9e55f90f6e0ac" + integrity sha512-CV3QggFY8BY3u8PdSSlUGLibqbqCG1zJRmGM2DhnhcxQDRRPTGTP//l7vJphOVsUP1Oe23+UQsj7KRWpRUZiqg== + dependencies: + dot-prop "^5.2.0" + graceful-fs "^4.1.2" + make-dir "^1.0.0" + unique-string "^1.0.0" + write-file-atomic "^2.0.0" + xdg-basedir "^3.0.0" + +"@snyk/dep-graph@1.13.1": + version "1.13.1" + resolved "https://registry.yarnpkg.com/@snyk/dep-graph/-/dep-graph-1.13.1.tgz#45721f7e21136b62d1cdd99b3319e717d9071dfb" + integrity sha512-Ww2xvm5UQgrq9eV0SdTBCh+w/4oI2rCx5vn1IOSeypaR0CO4p+do1vm3IDZ2ugg4jLSfHP8+LiD6ORESZMkQ2w== + dependencies: + graphlib "^2.1.5" + lodash "^4.7.14" + object-hash "^1.3.1" + semver "^6.0.0" + source-map-support "^0.5.11" + tslib "^1.9.3" + +"@snyk/dep-graph@^1.11.0", "@snyk/dep-graph@^1.13.1": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@snyk/dep-graph/-/dep-graph-1.16.0.tgz#6a0b0aae1737a4b1110bcff0f22e542bcca2b255" + integrity sha512-qPYvLhGVeYNxoRbXygHj9pnkw3IyhD8FaQhFKzqYO3y9rqho/SYq2uw5C43G4CxrwTMuu5TJn7scnGKv9C3/rw== + dependencies: + graphlib "^2.1.5" + lodash "^4.7.14" + object-hash "^1.3.1" + semver "^6.0.0" + source-map-support "^0.5.11" + tslib "^1.10.0" + +"@snyk/gemfile@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@snyk/gemfile/-/gemfile-1.2.0.tgz#919857944973cce74c650e5428aaf11bcd5c0457" + integrity sha512-nI7ELxukf7pT4/VraL4iabtNNMz8mUo7EXlqCFld8O5z6mIMLX9llps24iPpaIZOwArkY3FWA+4t+ixyvtTSIA== + +"@snyk/ruby-semver@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@snyk/ruby-semver/-/ruby-semver-2.0.4.tgz#457686ea7a4d60b10efddde99587efb3a53ba884" + integrity sha512-ceMD4CBS3qtAg+O0BUvkKdsheUNCqi+/+Rju243Ul8PsUgZnXmGiqfk/2z7DCprRQnxUTra4+IyeDQT7wAheCQ== + dependencies: + lodash "^4.17.14" + +"@snyk/snyk-cocoapods-plugin@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@snyk/snyk-cocoapods-plugin/-/snyk-cocoapods-plugin-2.0.1.tgz#be8660c854d551a56baa9d072bb4ae7f188cc1cd" + integrity sha512-XVkvaMvMzQ3miJi/YZmsRJSAUfDloYhfg6pXPgzAeAugB4p+cNi01Z68pT62ypB8U/Ugh1Xx2pb9aoOFqBbSjA== + dependencies: + "@snyk/cli-interface" "1.5.0" + "@snyk/cocoapods-lockfile-parser" "3.0.0" + "@snyk/dep-graph" "^1.13.1" + source-map-support "^0.5.7" + tslib "^1.9.3" + +"@snyk/update-notifier@^2.5.1-rc2": + version "2.5.1-rc2" + resolved "https://registry.yarnpkg.com/@snyk/update-notifier/-/update-notifier-2.5.1-rc2.tgz#14bf816114b5698a255289d7170157f254202fad" + integrity sha512-dlled3mfpnAt3cQb5hxkFiqfPCj4Yk0xV8Yl5P8PeVv1pUmO7vI4Ka4Mjs4r6CYM5f9kZhviFPQQcWOIDlMRcw== + dependencies: + "@snyk/configstore" "3.2.0-rc1" + boxen "^1.3.0" + chalk "^2.3.2" + import-lazy "^2.1.0" + is-ci "^1.0.10" + is-installed-globally "^0.1.0" + is-npm "^1.0.0" + latest-version "^3.1.0" + semver-diff "^2.0.0" + xdg-basedir "^3.0.0" + +"@types/agent-base@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@types/agent-base/-/agent-base-4.2.0.tgz#00644e8b395b40e1bf50aaf1d22cabc1200d5051" + integrity sha512-8mrhPstU+ZX0Ugya8tl5DsDZ1I5ZwQzbL/8PA0z8Gj0k9nql7nkaMzmPVLj+l/nixWaliXi+EBiLA8bptw3z7Q== + dependencies: + "@types/events" "*" + "@types/node" "*" + +"@types/babel__core@^7.1.0": + version "7.1.6" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.6.tgz#16ff42a5ae203c9af1c6e190ed1f30f83207b610" + integrity sha512-tTnhWszAqvXnhW7m5jQU9PomXSiKXk2sFxpahXvI20SZKu9ylPi8WtIxueZ6ehDWikPT0jeFujMj3X4ZHuf3Tg== + 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.1" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" + integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" + integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.9.tgz#be82fab304b141c3eee81a4ce3b034d0eba1590a" + integrity sha512-jEFQ8L1tuvPjOI8lnpaf73oCJe+aoxL6ygqSy6c8LcW98zaC+4mzWuQIRCEvKeCOu+lbqdXcg4Uqmm1S8AP1tw== + dependencies: + "@babel/types" "^7.3.0" + +"@types/body-parser@*", "@types/body-parser@^1.17.0": + version "1.19.0" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" + integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bson@*": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/bson/-/bson-4.0.1.tgz#2bfc80819e7055b76d5496d5344ed23e5d12bbb2" + integrity sha512-K6VAEdLVJFBxKp8m5cRTbUfeZpuSvOuLKJLrgw9ANIXo00RiyGzgH4BKWWR4F520gV4tWmxG7q9sKQRVDuzrBw== + dependencies: + "@types/node" "*" + +"@types/bunyan@*": + version "1.8.6" + resolved "https://registry.yarnpkg.com/@types/bunyan/-/bunyan-1.8.6.tgz#6527641cca30bedec5feb9ab527b7803b8000582" + integrity sha512-YiozPOOsS6bIuz31ilYqR5SlLif4TBWsousN2aCWLi5233nZSX19tFbcQUPdR7xJ8ypPyxkCGNxg0CIV5n9qxQ== + dependencies: + "@types/node" "*" + +"@types/connect@*": + version "3.4.33" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.33.tgz#31610c901eca573b8713c3330abc6e6b9f588546" + integrity sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A== + dependencies: + "@types/node" "*" + +"@types/cors@^2.8.4": + version "2.8.6" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.6.tgz#cfaab33c49c15b1ded32f235111ce9123009bd02" + integrity sha512-invOmosX0DqbpA+cE2yoHGUlF/blyf7nB0OGYBBiH27crcVm5NmFaZkLP4Ta1hGaesckCi5lVLlydNJCxkTOSg== + dependencies: + "@types/express" "*" + +"@types/debug@^4.1.4": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd" + integrity sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ== + +"@types/dotenv@^4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/dotenv/-/dotenv-4.0.3.tgz#ebcfc40da7bc0728b705945b7db48485ec5b4b67" + integrity sha512-mmhpINC/HcLGQK5ikFJlLXINVvcxhlrV+ZOUJSN7/ottYl+8X4oSXzS9lBtDkmWAl96EGyGyLrNvk9zqdSH8Fw== + dependencies: + "@types/node" "*" + +"@types/events@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + +"@types/express-serve-static-core@*": + version "4.17.2" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.2.tgz#f6f41fa35d42e79dbf6610eccbb2637e6008a0cf" + integrity sha512-El9yMpctM6tORDAiBwZVLMcxoTMcqqRO9dVyYcn7ycLWbvR8klrDn8CAOwRfZujZtWD7yS/mshTdz43jMOejbg== + dependencies: + "@types/node" "*" + "@types/range-parser" "*" + +"@types/express@*", "@types/express@^4.16.0": + version "4.17.2" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.2.tgz#a0fb7a23d8855bac31bc01d5a58cadd9b2173e6c" + integrity sha512-5mHFNyavtLoJmnusB8OKJ5bshSzw+qkMIBAobLrIM48HJvunFva9mOa6aBwh64lBFyNwBbs0xiEFuj4eU/NjCA== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "*" + "@types/serve-static" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" + integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== + +"@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.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" + integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + +"@types/jest@^24.0.23": + version "24.9.1" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.9.1.tgz#02baf9573c78f1b9974a5f36778b366aa77bd534" + integrity sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q== + dependencies: + jest-diff "^24.3.0" + +"@types/js-yaml@^3.12.1": + version "3.12.2" + resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-3.12.2.tgz#a35a1809c33a68200fb6403d1ad708363c56470a" + integrity sha512-0CFu/g4mDSNkodVwWijdlr8jH7RoplRWNgovjFLEZeT+QEbbZXjBmCe3HwaWheAlCbHwomTwzZoSedeOycABug== + +"@types/mime@*": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.1.tgz#dc488842312a7f075149312905b5e3c0b054c79d" + integrity sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw== + +"@types/mongodb@*", "@types/mongodb@^3.1.2": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@types/mongodb/-/mongodb-3.5.0.tgz#3876f0884dda1f73b31b76ea5978817b1e18adff" + integrity sha512-wHk5o4zM9Md1us5GcNw6dogf9Oyfu4SmIt/TCVWX4W+YetRu913LBF/Grf+pa2Uvb9UIXftyY8YWeDwyIvR7GQ== + dependencies: + "@types/bson" "*" + "@types/node" "*" + +"@types/mongoose@^5.2.1": + version "5.7.3" + resolved "https://registry.yarnpkg.com/@types/mongoose/-/mongoose-5.7.3.tgz#2fc7f26cb0fda43d8ff46b5ab6ad13068370f268" + integrity sha512-kZR/hBOft/Nm6aFP/1k0aBrfaYZQBM8I7eynpiOdgON2GqzSTd0S1kSGLUkeDLrm5NLcJ6wbXyrbYRm/nWZvlA== + dependencies: + "@types/mongodb" "*" + "@types/node" "*" + +"@types/node@*": + version "13.7.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.7.7.tgz#1628e6461ba8cc9b53196dfeaeec7b07fa6eea99" + integrity sha512-Uo4chgKbnPNlxQwoFmYIwctkQVkMMmsAoGGU4JKwLuvBefF0pCq4FybNSnfkfRCpC7ZW7kttcC/TrRtAJsvGtg== + +"@types/node@^10.12.18": + version "10.17.17" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.17.tgz#7a183163a9e6ff720d86502db23ba4aade5999b8" + integrity sha512-gpNnRnZP3VWzzj5k3qrpRC6Rk3H/uclhAVo1aIvwzK5p5cOrs9yEyQ8H/HBsBY0u5rrWxXEiVPQ0dEB6pkjE8Q== + +"@types/node@^6.14.4": + version "6.14.9" + resolved "https://registry.yarnpkg.com/@types/node/-/node-6.14.9.tgz#733583e21ef0eab85a9737dfafbaa66345a92ef0" + integrity sha512-leP/gxHunuazPdZaCvsCefPQxinqUDsCxCR5xaDUrY2MkYxQRFZZwU5e7GojyYsGB7QVtCi7iVEl/hoFXQYc+w== + +"@types/q@^1.5.0": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" + integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== + +"@types/range-parser@*": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" + integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== + +"@types/restify@^4.3.6": + version "4.3.6" + resolved "https://registry.yarnpkg.com/@types/restify/-/restify-4.3.6.tgz#5da5889b65c34c33937a67686bab591325dde806" + integrity sha512-4l4f0EXnleXQttlhRCXtTuJ8UelsKiAKIK2AAEd2epBHu41aEbM0U2z6E5tUrNwlbxz7qaNBISduGMeg+G3PaA== + dependencies: + "@types/bunyan" "*" + "@types/node" "*" + +"@types/semver@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-5.5.0.tgz#146c2a29ee7d3bae4bf2fcb274636e264c813c45" + integrity sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ== + +"@types/serve-static@*": + version "1.13.3" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.3.tgz#eb7e1c41c4468272557e897e9171ded5e2ded9d1" + integrity sha512-oprSwp094zOglVrXdlo/4bAHtKTAxX6VT8FOZlBKrmyLbNvE1zxZyJ6yikMVtHIvwP45+ZQGJn+FdXGKTozq0g== + dependencies: + "@types/express-serve-static-core" "*" + "@types/mime" "*" + +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== + +"@types/strip-bom@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2" + integrity sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I= + +"@types/strip-json-comments@0.0.30": + version "0.0.30" + resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1" + integrity sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ== + +"@types/xml2js@0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@types/xml2js/-/xml2js-0.4.3.tgz#2f41bfc74d5a4022511721f872ed395a210ad3b7" + integrity sha512-Pv2HGRE4gWLs31In7nsyXEH4uVVsd0HNV9i2dyASvtDIlOtSTr1eczPLDpdEuyv5LWH5LT20GIXwPjkshKWI1g== + dependencies: + "@types/events" "*" + "@types/node" "*" + +"@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@^13.0.0": + version "13.0.8" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.8.tgz#a38c22def2f1c2068f8971acb3ea734eb3c64a99" + integrity sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA== + dependencies: + "@types/yargs-parser" "*" + +"@yarnpkg/lockfile@^1.0.2": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + +abab@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" + integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== + +abbrev@^1.1.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.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-globals@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== + dependencies: + acorn "^6.0.1" + acorn-walk "^6.0.1" + +acorn-walk@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== + +acorn@^5.5.3: + version "5.7.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" + integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== + +acorn@^6.0.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== + +agent-base@4, agent-base@^4.2.0, agent-base@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" + integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== + dependencies: + es6-promisify "^5.0.0" + +agent-base@~4.2.1: + 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== + dependencies: + es6-promisify "^5.0.0" + +ajv@^6.5.5: + version "6.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" + integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== + 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" + +amqplib@^0.5.5: + version "0.5.5" + resolved "https://registry.yarnpkg.com/amqplib/-/amqplib-0.5.5.tgz#698f0cb577e0591954a90572fcb3b8998a76fd40" + integrity sha512-sWx1hbfHbyKMw6bXOK2k6+lHL8TESWxjAx5hG8fBtT7wcxoXNIsFxZMnFyBjxt3yL14vn7WqBDe5U6BGOadtLg== + dependencies: + bitsyntax "~0.1.0" + bluebird "^3.5.2" + buffer-more-ints "~1.0.0" + readable-stream "1.x >=1.1.9" + 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= + dependencies: + string-width "^2.0.0" + +ansi-escapes@3.2.0, ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.0.0, ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansicolors@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" + integrity sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk= + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.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.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== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + +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.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +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= + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +ast-types@0.x.x: + version "0.13.2" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.2.tgz#df39b677a911a83f3a049644fb74fdded23cea48" + integrity sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA== + +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-limiter@~1.0.0: + 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== + +async@^1.4.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +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== + +aws-sdk@^2.493.0: + version "2.631.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.631.0.tgz#31f5327ea9afb55f1e60ba594727fc16a04e8cf0" + integrity sha512-oGYe21pc8b1rxJFZMETZIhY4e/QBJv8Keq4RCef3D/GNXR+oxDQsEDk9KchbkW0WJDxiglj3LnZzPYUhISnBbw== + dependencies: + buffer "4.9.1" + events "1.1.1" + ieee754 "1.1.13" + jmespath "0.15.0" + querystring "0.2.0" + sax "1.2.1" + url "0.10.3" + uuid "3.3.2" + xml2js "0.4.19" + +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= + +aws4@^1.8.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" + integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== + +babel-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" + integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== + dependencies: + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/babel__core" "^7.1.0" + babel-plugin-istanbul "^5.1.0" + babel-preset-jest "^24.9.0" + chalk "^2.4.2" + slash "^2.0.0" + +babel-plugin-istanbul@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" + integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + find-up "^3.0.0" + istanbul-lib-instrument "^3.3.0" + test-exclude "^5.2.3" + +babel-plugin-jest-hoist@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" + integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== + dependencies: + "@types/babel__traverse" "^7.0.6" + +babel-preset-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" + integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== + dependencies: + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + babel-plugin-jest-hoist "^24.9.0" + +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.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" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +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" + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bitsyntax@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/bitsyntax/-/bitsyntax-0.1.0.tgz#b0c59acef03505de5a2ed62a2f763c56ae1d6205" + integrity sha512-ikAdCnrloKmFOugAfxWws89/fPc+nw0OOG1IzIE72uSOg/A3cYptKCjSUhDTuj7fhsJtzkzlv7l3b8PzRHLN0Q== + dependencies: + buffer-more-ints "~1.0.0" + debug "~2.6.9" + safe-buffer "~5.1.2" + +bl@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-3.0.0.tgz#3611ec00579fd18561754360b21e9f784500ff88" + integrity sha512-EUAyP5UHU5hxF8BPT0LKW8gjYLhq1DQIcneOX/pL/m2Alo+OYDQAJlHq+yseMP50Os2nHXOSic6Ss3vSQeyf4A== + dependencies: + readable-stream "^3.0.1" + +bluebird@3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" + integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA== + +bluebird@^3.5.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +body-parser@1.19.0, body-parser@^1.17.1: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.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== + 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" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +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== + +browser-resolve@^1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== + dependencies: + resolve "1.1.7" + +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" + +bson@^1.1.1, bson@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/bson/-/bson-1.1.3.tgz#aa82cb91f9a453aaa060d6209d0675114a8154d3" + integrity sha512-TdiJxMVnodVS7r0BdL42y/pqC9cL2iKynVwA0Ho3qbsQYr428veL3l7BQyuqiw+Q5SqqoT0m4srSY/BlZ9AxXg== + +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-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@4.9.1: + version "4.9.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^2.0.0, camelcase@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +camelcase@^4.0.0, camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + +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== + +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: + 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.0.0, chalk@^2.0.1, chalk@^2.3.2, 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== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +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== + +ci-info@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" + integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== + +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== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.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= + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-spinner@0.2.10: + version "0.2.10" + resolved "https://registry.yarnpkg.com/cli-spinner/-/cli-spinner-0.2.10.tgz#f7d617a36f5c47a7bc6353c697fc9338ff782a47" + integrity sha512-U0sSQ+JJvSLi1pAYuJykwiA8Dsr15uHEy85iCJ6A+0DjVxivr3d+N2Wjvodeg89uP5K6TswFkKBfAD7B3YSn/Q== + +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= + +cliui@^3.0.3: + 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" + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +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= + +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= + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +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.9.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== + +component-emitter@^1.2.1: + 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== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-type@~1.0.4: + version "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.4.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" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js@^3.2.0: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.4.tgz#440a83536b458114b9cb2ac1580ba377dc470647" + integrity sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw== + +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= + +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" + +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@^6.0.0: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= + +crypto@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/crypto/-/crypto-0.0.3.tgz#470a81b86be4c5ee17acc8207a1f5315ae20dbb0" + integrity sha1-RwqBuGvkxe4XrMggeh9TFa4g27A= + +cssfilter@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" + integrity sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4= + +cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" + integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== + dependencies: + cssom "0.3.x" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= + dependencies: + array-find-index "^1.0.1" + +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" + +data-uri-to-buffer@1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz#77163ea9c20d8641b4707e8f18abdf9a78f34835" + integrity sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ== + +data-urls@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== + dependencies: + abab "^2.0.0" + whatwg-mimetype "^2.2.0" + whatwg-url "^7.0.0" + +dateformat@~1.0.4-1.2.3: + version "1.0.12" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" + integrity sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk= + dependencies: + get-stdin "^4.0.1" + meow "^3.3.0" + +debounce@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131" + integrity sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg== + +debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, 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: + 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@4, debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +debug@^3.1.0, 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" + +decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +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= + +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: + 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= + +define-properties@^1.1.2, 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" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +degenerator@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-1.0.4.tgz#fcf490a37ece266464d9cc431ab98c5819ced095" + integrity sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU= + dependencies: + ast-types "0.x.x" + escodegen "1.x.x" + esprima "3.x.x" + +delayed-stream@~1.0.0: + version "1.0.0" + 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" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-newline@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + +diff-sequences@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" + integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== + +diff@^3.1.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== + +dockerfile-ast@0.0.19: + version "0.0.19" + resolved "https://registry.yarnpkg.com/dockerfile-ast/-/dockerfile-ast-0.0.19.tgz#b1e21138eba995d7bf5576dc30ba1130c15995c3" + integrity sha512-iDRNFeAB2j4rh/Ecc2gh3fjciVifCMsszfCfHlYF5Wv8yybjZLiRDZUBt/pS3xrAz8uWT8fCHLq4pOQMmwCDwA== + dependencies: + vscode-languageserver-types "^3.5.0" + +domexception@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== + dependencies: + webidl-conversions "^4.0.2" + +dot-prop@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" + integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== + dependencies: + is-obj "^2.0.0" + +dotenv@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d" + integrity sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0= + +dotnet-deps-parser@4.9.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/dotnet-deps-parser/-/dotnet-deps-parser-4.9.0.tgz#d14f9f92ae9a64062cd215c8863d1e77e80236f0" + integrity sha512-V0O+7pI7Ei+iL5Kgy6nYq1UTwzrpqci5K/zf8cXyP5RWBSQBUl/JOE9I67zLUkKiwOdfPhbMQgcRj/yGA+NL1A== + dependencies: + "@types/xml2js" "0.4.3" + lodash "^4.17.11" + source-map-support "^0.5.7" + tslib "^1.10.0" + xml2js "0.4.19" + +double-ended-queue@^2.1.0-0: + version "2.1.0-0" + resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c" + integrity sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw= + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + +dynamic-dedupe@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz#06e44c223f5e4e94d78ef9db23a6515ce2f962a1" + integrity sha1-BuRMIj9eTpTXjvnbI6ZRXOL5YqE= + dependencies: + xtend "^4.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" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +email-validator@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/email-validator/-/email-validator-2.0.4.tgz#b8dfaa5d0dae28f1b03c95881d904d4e40bfe7ed" + integrity sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ== + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.1.0, end-of-stream@^1.4.1: + 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" + +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" + +es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: + version "1.17.4" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184" + integrity sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.1.5" + is-regex "^1.0.5" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.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" + +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +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" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escodegen@1.x.x, escodegen@^1.9.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" + integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +esprima@3.x.x: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +esutils@^2.0.2: + 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" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +event-loop-spinner@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/event-loop-spinner/-/event-loop-spinner-1.1.0.tgz#96de9c70e6e2b0b3e257b0901e25e792e3c9c8d0" + integrity sha512-YVFs6dPpZIgH665kKckDktEVvSBccSYJmoZUfhNUdv5d3Xv+Q+SKF4Xis1jolq9aBzuW1ZZhQh/m/zU/TPdDhw== + dependencies: + tslib "^1.10.0" + +events@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= + +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@^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@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.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" + +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" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expect@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" + integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== + dependencies: + "@jest/types" "^24.9.0" + ansi-styles "^3.2.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.9.0" + +express@^4.16.4: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +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.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@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +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@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/faker/-/faker-4.1.0.tgz#1e45bbbecc6774b3c195fad2835109c6d748cc3f" + integrity sha1-HkW7vsxndLPBlfrSg1EJxtdIzD8= + +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== + +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: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +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" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + +file-uri-to-path@1, 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== + +filewatcher@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/filewatcher/-/filewatcher-3.0.1.tgz#f4a1957355ddaf443ccd78a895f3d55e23c8a034" + integrity sha1-9KGVc1Xdr0Q8zXiolfPVXiPIoDQ= + dependencies: + debounce "^1.0.0" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.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= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +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= + +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: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.7: + version "1.2.11" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.11.tgz#67bf57f4758f02ede88fb2a1712fef4d15358be3" + integrity sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +ftp@~0.3.10: + version "0.3.10" + resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" + integrity sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0= + dependencies: + readable-stream "1.1.x" + xregexp "2.0.0" + +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== + +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-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= + +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: + 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-uri@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-2.0.4.tgz#d4937ab819e218d4cb5ae18e4f5962bef169cc6a" + integrity sha512-v7LT/s8kVjs+Tx0ykk1I+H/rbpzkHvuIq87LmeXptcf5sNWm9uQiwjNAt94SJPA1zOlCntmnOlJvVWKmzsxG8Q== + dependencies: + data-uri-to-buffer "1" + debug "2" + extend "~3.0.2" + file-uri-to-path "1" + ftp "~0.3.10" + readable-stream "2" + +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= + +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: + assert-plus "^1.0.0" + +git-up@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.1.tgz#cb2ef086653640e721d2042fe3104857d89007c0" + integrity sha512-LFTZZrBlrCrGCG07/dm1aCjjpL1z9L3+5aEeI9SBhAqSc+kiA9Or1bgZhQFNppJX6h/f5McrvJt1mQXTFm6Qrw== + dependencies: + is-ssh "^1.3.0" + parse-url "^5.0.0" + +git-url-parse@11.1.2: + version "11.1.2" + resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-11.1.2.tgz#aff1a897c36cc93699270587bea3dbcbbb95de67" + integrity sha512-gZeLVGY8QVKMIkckncX+iCq2/L8PlwncvDFKiWkBn9EtCfYDbliRTTp6qzyQ1VMdITUfq7293zDzfpjdiGASSQ== + dependencies: + git-up "^4.0.0" + +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: + 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" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-dirs@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" + integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= + dependencies: + ini "^1.3.4" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +got@^6.7.1: + 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-redirect "^1.0.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + unzip-response "^2.0.1" + url-parse-lax "^1.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + +graphlib@^2.1.1, graphlib@^2.1.5: + version "2.1.8" + resolved "https://registry.yarnpkg.com/graphlib/-/graphlib-2.1.8.tgz#5761d414737870084c92ec7b5dbcb0592c9d35da" + integrity sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A== + dependencies: + lodash "^4.17.15" + +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= + +har-schema@^2.0.0: + version "2.0.0" + 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.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-symbols@^1.0.0, 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" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +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" + +hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +html-encoding-sniffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== + dependencies: + whatwg-encoding "^1.0.1" + +html-escaper@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.0.tgz#71e87f931de3fe09e56661ab9a29aadec707b491" + integrity sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig== + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@1.7.3, http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + 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== + dependencies: + agent-base "4" + debug "3.1.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: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-proxy-agent@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz#b8c286433e87602311b01c8ea34413d856a4af81" + integrity sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg== + dependencies: + agent-base "^4.3.0" + debug "^3.1.0" + +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ieee754@1.1.13, ieee754@^1.1.4: + version "1.1.13" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= + +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== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.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= + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= + dependencies: + repeating "^2.0.0" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.3, 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.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.0, ini@^1.3.4, 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@^6.2.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" + integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.12" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +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@1.1.5, 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: + 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-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4, is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== + +is-ci@^1.0.10: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" + integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== + dependencies: + ci-info "^1.5.0" + +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" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + 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" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-finite@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== + +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" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +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-installed-globally@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" + integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= + dependencies: + global-dirs "^0.1.0" + is-path-inside "^1.0.0" + +is-npm@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" + integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +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-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= + dependencies: + path-is-inside "^1.0.1" + +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-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-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-regex@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== + dependencies: + has "^1.0.3" + +is-retry-allowed@^1.0.0: + 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-ssh@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.1.tgz#f349a8cadd24e65298037a522cf7520f2e81a0f3" + integrity sha512-0eRIASHZt1E68/ixClI8bp2YK2wmBPVWEismTs6M+M099jKgrzl/3E976zIbImSIob48N2/XGe9y7ZiYdImSlg== + dependencies: + protocols "^1.1.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-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: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +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@^2.0.2, istanbul-lib-coverage@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" + integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== + +istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" + integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== + dependencies: + "@babel/generator" "^7.4.0" + "@babel/parser" "^7.4.3" + "@babel/template" "^7.4.0" + "@babel/traverse" "^7.4.3" + "@babel/types" "^7.4.0" + istanbul-lib-coverage "^2.0.5" + semver "^6.0.0" + +istanbul-lib-report@^2.0.4: + version "2.0.8" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" + integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== + dependencies: + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + supports-color "^6.1.0" + +istanbul-lib-source-maps@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" + integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + rimraf "^2.6.3" + source-map "^0.6.1" + +istanbul-reports@^2.2.6: + version "2.2.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" + integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== + dependencies: + html-escaper "^2.0.0" + +jest-changed-files@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" + integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== + dependencies: + "@jest/types" "^24.9.0" + execa "^1.0.0" + throat "^4.0.0" + +jest-cli@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" + integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== + dependencies: + "@jest/core" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + import-local "^2.0.0" + is-ci "^2.0.0" + jest-config "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + prompts "^2.0.1" + realpath-native "^1.1.0" + yargs "^13.3.0" + +jest-config@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" + integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^24.9.0" + "@jest/types" "^24.9.0" + babel-jest "^24.9.0" + chalk "^2.0.1" + glob "^7.1.1" + jest-environment-jsdom "^24.9.0" + jest-environment-node "^24.9.0" + jest-get-type "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + micromatch "^3.1.10" + pretty-format "^24.9.0" + realpath-native "^1.1.0" + +jest-diff@^24.3.0, jest-diff@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" + integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== + dependencies: + chalk "^2.0.1" + diff-sequences "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-docblock@^24.3.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" + integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== + dependencies: + detect-newline "^2.1.0" + +jest-each@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" + integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== + dependencies: + "@jest/types" "^24.9.0" + chalk "^2.0.1" + jest-get-type "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + +jest-environment-jsdom@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" + integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" + jsdom "^11.5.1" + +jest-environment-node@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" + integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" + +jest-get-type@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" + integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== + +jest-haste-map@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" + integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== + dependencies: + "@jest/types" "^24.9.0" + anymatch "^2.0.0" + fb-watchman "^2.0.0" + graceful-fs "^4.1.15" + invariant "^2.2.4" + jest-serializer "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.9.0" + micromatch "^3.1.10" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^1.2.7" + +jest-jasmine2@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" + integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + co "^4.6.0" + expect "^24.9.0" + is-generator-fn "^2.0.0" + jest-each "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + throat "^4.0.0" + +jest-leak-detector@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" + integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== + dependencies: + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-matcher-utils@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" + integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== + dependencies: + chalk "^2.0.1" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-message-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" + integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/stack-utils" "^1.0.1" + chalk "^2.0.1" + micromatch "^3.1.10" + slash "^2.0.0" + stack-utils "^1.0.1" + +jest-mock@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" + integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== + dependencies: + "@jest/types" "^24.9.0" + +jest-pnp-resolver@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" + integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== + +jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" + integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== + +jest-resolve-dependencies@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" + integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== + dependencies: + "@jest/types" "^24.9.0" + jest-regex-util "^24.3.0" + jest-snapshot "^24.9.0" + +jest-resolve@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" + integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== + dependencies: + "@jest/types" "^24.9.0" + browser-resolve "^1.11.3" + chalk "^2.0.1" + jest-pnp-resolver "^1.2.1" + realpath-native "^1.1.0" + +jest-runner@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" + integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.4.2" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-docblock "^24.3.0" + jest-haste-map "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-leak-detector "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + source-map-support "^0.5.6" + throat "^4.0.0" + +jest-runtime@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" + integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/source-map" "^24.3.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + realpath-native "^1.1.0" + slash "^2.0.0" + strip-bom "^3.0.0" + yargs "^13.3.0" + +jest-serializer@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" + integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== + +jest-snapshot@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" + integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + expect "^24.9.0" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + pretty-format "^24.9.0" + semver "^6.2.0" + +jest-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" + integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== + dependencies: + "@jest/console" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/source-map" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + callsites "^3.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.15" + is-ci "^2.0.0" + mkdirp "^0.5.1" + slash "^2.0.0" + source-map "^0.6.0" + +jest-validate@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" + integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== + dependencies: + "@jest/types" "^24.9.0" + camelcase "^5.3.1" + chalk "^2.0.1" + jest-get-type "^24.9.0" + leven "^3.1.0" + pretty-format "^24.9.0" + +jest-watcher@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" + integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== + dependencies: + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + jest-util "^24.9.0" + string-length "^2.0.0" + +jest-worker@^24.6.0, jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + +jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" + integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== + dependencies: + import-local "^2.0.0" + jest-cli "^24.9.0" + +jmespath@0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" + integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc= + +jquery@^3.1.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2" + integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsdom@^11.5.1: + version "11.12.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" + integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== + dependencies: + abab "^2.0.0" + acorn "^5.5.3" + acorn-globals "^4.1.0" + array-equal "^1.0.0" + cssom ">= 0.3.2 < 0.4.0" + cssstyle "^1.0.0" + data-urls "^1.0.0" + domexception "^1.0.1" + escodegen "^1.9.1" + html-encoding-sniffer "^1.0.2" + left-pad "^1.3.0" + nwsapi "^2.0.7" + parse5 "4.0.0" + pn "^1.1.0" + request "^2.87.0" + request-promise-native "^1.0.5" + sax "^1.2.4" + symbol-tree "^3.2.2" + tough-cookie "^2.3.4" + w3c-hr-time "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.3" + whatwg-mimetype "^2.1.0" + whatwg-url "^6.4.1" + ws "^5.2.0" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +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= + +json5@2.x, json5@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6" + integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ== + dependencies: + minimist "^1.2.0" + +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" + +jszip@^3.1.5: + version "3.2.2" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.2.2.tgz#b143816df7e106a9597a94c77493385adca5bd1d" + integrity sha512-NmKajvAFQpbg3taXQXr/ccS2wcucR1AZ+NtyWp2Nq7HHVsXhcJFR8p0Baf32C2yVvBylFWVeKf+WI2AnvlPhpA== + dependencies: + lie "~3.3.0" + pako "~1.0.2" + readable-stream "~2.3.6" + set-immediate-shim "~1.0.1" + +kareem@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.3.1.tgz#def12d9c941017fabfb00f873af95e9c99e1be87" + integrity sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw== + +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" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + 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== + +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== + +latest-version@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" + integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= + dependencies: + package-json "^4.0.0" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +left-pad@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" + integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== + +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== + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lie@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" + integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== + dependencies: + immediate "~3.0.5" + +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= + 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" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +lodash.assign@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" + integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= + +lodash.assignin@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2" + integrity sha1-uo31+4QesKPoBEIysOJjqNxqKKI= + +lodash.clone@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" + integrity sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y= + +lodash.clonedeep@^4.3.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.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= + +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + +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.set@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" + integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM= + +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.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.7.14: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lowercase-keys@^1.0.0: + 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.0, lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +macos-release@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" + integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA== + +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== + dependencies: + pify "^3.0.0" + +make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-error@1.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== + +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +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= + +meow@^3.3.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +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== + +meteor-random@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/meteor-random/-/meteor-random-0.0.3.tgz#0d1489ecdb9bcb58bb52decebfbceddf54473a68" + integrity sha1-DRSJ7Nuby1i7Ut7Ov7zt31RHOmg= + dependencies: + crypto "0.0.3" + +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@^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== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +mime-db@1.43.0: + version "1.43.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" + integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== + +mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.26" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" + integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== + dependencies: + mime-db "1.43.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@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +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.1: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@0.x, mkdirp@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +mongodb@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.3.2.tgz#ff086b5f552cf07e24ce098694210f3d42d668b2" + integrity sha512-fqJt3iywelk4yKu/lfwQg163Bjpo5zDKhXiohycvon4iQHbrfflSAz9AIlRE6496Pm/dQKQK5bMigdVo2s6gBg== + dependencies: + bson "^1.1.1" + require_optional "^1.0.1" + safe-buffer "^5.1.2" + +mongoose-legacy-pluralize@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz#3ba9f91fa507b5186d399fb40854bff18fb563e4" + integrity sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ== + +mongoose@5.7.5: + version "5.7.5" + resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.7.5.tgz#b787b47216edf62036aa358c3ef0f1869c46cdc2" + integrity sha512-BZ4FxtnbTurc/wcm/hLltLdI4IDxo4nsE0D9q58YymTdZwreNzwO62CcjVtaHhmr8HmJtOInp2W/T12FZaMf8g== + dependencies: + bson "~1.1.1" + kareem "2.3.1" + mongodb "3.3.2" + mongoose-legacy-pluralize "1.0.2" + mpath "0.6.0" + mquery "3.2.2" + ms "2.1.2" + regexp-clone "1.0.0" + safe-buffer "5.1.2" + sift "7.0.1" + sliced "1.0.1" + +mpath@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.6.0.tgz#aa922029fca4f0f641f360e74c5c1b6a4c47078e" + integrity sha512-i75qh79MJ5Xo/sbhxrDrPSEG0H/mr1kcZXJ8dH6URU5jD/knFxCVqVC/gVSW7GIXL/9hHWlT9haLbCXWOll3qw== + +mquery@3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/mquery/-/mquery-3.2.2.tgz#e1383a3951852ce23e37f619a9b350f1fb3664e7" + integrity sha512-XB52992COp0KP230I3qloVUbkLUxJIu328HBP2t2EsxSFtf4W1HPSOBWOXf1bqxK4Xbb66lfMJ+Bpfd9/yZE1Q== + dependencies: + bluebird "3.5.1" + debug "3.1.0" + regexp-clone "^1.0.0" + safe-buffer "5.1.2" + sliced "1.0.1" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +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== + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + +nan@^2.12.1: + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +nconf@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/nconf/-/nconf-0.10.0.tgz#da1285ee95d0a922ca6cee75adcf861f48205ad2" + integrity sha512-fKiXMQrpP7CYWJQzKkPPx9hPgmq+YLDyxcG9N8RpiE9FoCkCbzD0NyW0YhE3xn3Aupe7nnDeIx4PFzYehpHT9Q== + dependencies: + async "^1.4.0" + ini "^1.3.0" + secure-keys "^1.0.0" + yargs "^3.19.0" + +needle@^2.2.4: + version "2.3.3" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.3.tgz#a041ad1d04a871b0ebb666f40baaf1fb47867117" + integrity sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw== + dependencies: + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" + +needle@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" + integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== + dependencies: + debug "^3.2.6" + 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== + +netmask@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" + integrity sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU= + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +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-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@^5.4.0, node-notifier@^5.4.2: + version "5.4.3" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" + integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== + dependencies: + growly "^1.3.0" + is-wsl "^1.1.0" + semver "^5.5.0" + shellwords "^0.1.1" + which "^1.3.0" + +nodemailer@^6.2.1: + version "6.4.4" + resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.4.4.tgz#f4bb26a833786e8908b3ac8afbf2d0382ac24feb" + integrity sha512-2GqGu5o3FBmDibczU3+LZh9lCEiKmNx7LvHl512p8Kj+Kn5FQVOICZv85MDFz/erK0BDd5EJp3nqQLpWCZD1Gg== + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +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-url@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.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.0.7: + 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.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-hash@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" + integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== + +object-inspect@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== + +object-keys@^1.0.11, 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" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.getownpropertydescriptors@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +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.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +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-name@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" + integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== + dependencies: + macos-release "^2.2.0" + windows-release "^3.1.0" + +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= + +p-each-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" + integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= + dependencies: + p-reduce "^1.0.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-limit@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" + integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== + dependencies: + p-try "^2.0.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-map@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pac-proxy-agent@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-3.0.1.tgz#115b1e58f92576cac2eba718593ca7b0e37de2ad" + integrity sha512-44DUg21G/liUZ48dJpUSjZnFfZro/0K5JTyFYLBcmh9+T6Ooi4/i4efwUiEy0+4oQusCBqWdhv16XohIj1GqnQ== + dependencies: + agent-base "^4.2.0" + debug "^4.1.1" + get-uri "^2.0.0" + http-proxy-agent "^2.1.0" + https-proxy-agent "^3.0.0" + pac-resolver "^3.0.0" + raw-body "^2.2.0" + socks-proxy-agent "^4.0.1" + +pac-resolver@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-3.0.0.tgz#6aea30787db0a891704deb7800a722a7615a6f26" + integrity sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA== + dependencies: + co "^4.6.0" + degenerator "^1.0.4" + ip "^1.1.5" + netmask "^1.0.6" + thunkify "^2.1.2" + +package-json@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" + integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= + dependencies: + got "^6.7.1" + registry-auth-token "^3.0.1" + registry-url "^3.0.3" + semver "^5.1.0" + +pako@~1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.1.tgz#0ec769704949778cb3b8eda5e994c32073a1adff" + integrity sha512-d7yhga0Oc+PwNXDvQ0Jv1BuWkLVPXcAoQ/WREgd6vNNoKYaW52KI+RdOFjI63wjkmps9yUE8VS4veP+AgpQ/hA== + dependencies: + is-ssh "^1.3.0" + protocols "^1.4.0" + +parse-url@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-5.0.1.tgz#99c4084fc11be14141efa41b3d117a96fcb9527f" + integrity sha512-flNUPP27r3vJpROi0/R3/2efgKkyXqnXwyP1KQ2U0SfFRgdizOdWfvrrvJg1LuOoxs7GQhmxJlq23IpQ/BkByg== + dependencies: + is-ssh "^1.3.0" + normalize-url "^3.3.0" + parse-path "^4.0.0" + protocols "^1.4.0" + +parse5@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== + +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== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +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: + 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.1: + 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= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +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= + 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" + +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= + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +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@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== + +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.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +pretty-format@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" + integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== + dependencies: + "@jest/types" "^24.9.0" + ansi-regex "^4.0.0" + ansi-styles "^3.2.0" + react-is "^16.8.4" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +"promise@>=3.2 <8": + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +prompts@^2.0.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.1.tgz#b63a9ce2809f106fa9ae1277c275b167af46ea05" + integrity sha512-qIP2lQyCwYbdzcqHIUi2HAxiWixhoM9OdLCWf8txXsapC/X9YdsCoeyRIXE/GP+Q0J37Q7+XN/MFqbUa7IzXNA== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.4" + +protocols@^1.1.0, protocols@^1.4.0: + version "1.4.7" + resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.7.tgz#95f788a4f0e979b291ffefcf5636ad113d037d32" + integrity sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg== + +proxy-addr@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.1" + +proxy-agent@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-3.1.1.tgz#7e04e06bf36afa624a1540be247b47c970bd3014" + integrity sha512-WudaR0eTsDx33O3EJE16PjBRZWcX8GqCEeERw1W3hZJgH/F2a46g7jty6UGty6NeJ4CKQy8ds2CJPMiyeqaTvw== + dependencies: + agent-base "^4.2.0" + debug "4" + http-proxy-agent "^2.1.0" + https-proxy-agent "^3.0.0" + lru-cache "^5.1.1" + pac-proxy-agent "^3.0.1" + proxy-from-env "^1.0.0" + socks-proxy-agent "^4.0.1" + +proxy-from-env@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" + integrity sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4= + +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.7.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" + integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +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== + +q@^0.9.7: + version "0.9.7" + resolved "https://registry.yarnpkg.com/q/-/q-0.9.7.tgz#4de2e6cb3b29088c9e4cbc03bf9d42fb96ce2f75" + integrity sha1-TeLmyzspCIyeTLwDv51C+5bOL3U= + +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@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + 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== + +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== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +raw-body@^2.2.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" + integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== + dependencies: + bytes "3.1.0" + http-errors "1.7.3" + iconv-lite "0.4.24" + unpipe "1.0.0" + +rc@^1.0.1, rc@^1.1.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-is@^16.8.4: + version "16.13.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.0.tgz#0f37c3613c34fe6b37cd7f763a0d6293ab15c527" + integrity sha512-GFMtL0vHkiBv9HluwNZTggSn/sCyEt9n02aM0dSAjGGyqyNlAyftYm4phPxdvCigG15JreC5biwxCgTAJZ7yAA== + +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= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== + dependencies: + find-up "^3.0.0" + read-pkg "^3.0.0" + +read-pkg@^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= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +readable-stream@1.1.x, "readable-stream@1.x >=1.1.9": + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@2, 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" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.1, readable-stream@^3.1.1: + 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" + +realpath-native@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" + integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== + dependencies: + util.promisify "^1.0.0" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +redis-commands@^1.2.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.5.0.tgz#80d2e20698fe688f227127ff9e5164a7dd17e785" + integrity sha512-6KxamqpZ468MeQC3bkWmCB1fp56XL64D4Kf0zJSwDZbVLLm7KFkoIcHrgRvQ+sk8dnhySs7+yBg94yIkAK7aJg== + +redis-parser@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-2.6.0.tgz#52ed09dacac108f1a631c07e9b69941e7a19504b" + integrity sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs= + +redis@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/redis/-/redis-2.8.0.tgz#202288e3f58c49f6079d97af7a10e1303ae14b02" + integrity sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A== + dependencies: + double-ended-queue "^2.1.0-0" + redis-commands "^1.2.0" + redis-parser "^2.6.0" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp-clone@1.0.0, regexp-clone@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/regexp-clone/-/regexp-clone-1.0.0.tgz#222db967623277056260b992626354a04ce9bf63" + integrity sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw== + +registry-auth-token@^3.0.1: + version "3.4.0" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e" + integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A== + dependencies: + rc "^1.1.6" + safe-buffer "^5.0.1" + +registry-url@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= + dependencies: + rc "^1.0.1" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +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" + +request-promise-core@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" + integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== + dependencies: + lodash "^4.17.15" + +request-promise-native@^1.0.5: + version "1.0.8" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" + integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== + dependencies: + request-promise-core "1.1.3" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.87.0: + 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" + +requestify@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/requestify/-/requestify-0.2.5.tgz#80249f1ca7dfdf79fa2a6048aeac37d43e23c905" + integrity sha1-gCSfHKff33n6KmBIrqw31D4jyQU= + dependencies: + jquery "^3.1.0" + q "^0.9.7" + underscore "^1.8.3" + +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@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +require_optional@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.1.tgz#4cf35a4247f64ca3df8c2ef208cc494b1ca8fc2e" + integrity sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g== + dependencies: + resolve-from "^2.0.0" + semver "^5.1.0" + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-from@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" + integrity sha1-lICrIOlP+h2egKgEx+oUdhGWa1c= + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +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.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= + +resolve@1.x, resolve@^1.0.0, resolve@^1.10.0, resolve@^1.3.2: + version "1.15.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" + integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== + dependencies: + path-parse "^1.0.6" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +rimraf@^2.5.4, rimraf@^2.6.1, 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" + +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.2.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" + integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg== + dependencies: + is-promise "^2.1.0" + +rxjs@^6.4.0: + version "6.5.4" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" + integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== + dependencies: + tslib "^1.9.0" + +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.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" + integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"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== + +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" + +sax@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" + integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o= + +sax@>=0.6.0, 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== + +secure-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/secure-keys/-/secure-keys-1.0.0.tgz#f0c82d98a3b139a8776a8808050b824431087fca" + integrity sha1-8MgtmKOxOah3aogIBQuCRDEIf8o= + +semver-diff@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= + dependencies: + semver "^5.0.3" + +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.4.1, semver@^5.5, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +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-immediate-shim@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= + +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" + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +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== + +sift@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/sift/-/sift-7.0.1.tgz#47d62c50b159d316f1372f8b53f9c10cd21a4b08" + integrity sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g== + +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= + +sisteransi@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.4.tgz#386713f1ef688c7c0304dc4c0632898941cad2e3" + integrity sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig== + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +sliced@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" + integrity sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E= + +smart-buffer@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" + integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +snyk-config@^2.2.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/snyk-config/-/snyk-config-2.2.3.tgz#8e09bb98602ad044954d30a9fc1695ab5b6042fa" + integrity sha512-9NjxHVMd1U1LFw66Lya4LXgrsFUiuRiL4opxfTFo0LmMNzUoU5Bk/p0zDdg3FE5Wg61r4fP2D8w+QTl6M8CGiw== + dependencies: + debug "^3.1.0" + lodash "^4.17.15" + nconf "^0.10.0" + +snyk-docker-plugin@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/snyk-docker-plugin/-/snyk-docker-plugin-2.2.0.tgz#eb15f4854c53d96f591b99b8c8574fbf7ba6014b" + integrity sha512-adoerkNsYNNZFKnvtjJLJeEgjUf2js0hnG32aUJSRtbDN1Ejgbj88a0UYc90C+s2xZJaulJgImy9/5IsG5/omg== + dependencies: + debug "^4.1.1" + dockerfile-ast "0.0.19" + event-loop-spinner "^1.1.0" + semver "^6.1.0" + tar-stream "^2.1.0" + tslib "^1" + +snyk-go-parser@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/snyk-go-parser/-/snyk-go-parser-1.4.0.tgz#0fa7e4b9f2cf14c95dbc09206416ac4676436c70" + integrity sha512-zcLA8u/WreycCjFKBblYfxszg7Fmnemuu9Ug/CE/jqF0yBXsI5DCWMteUvFkoa8DRntfGTlgf98TRl2aTSc2MQ== + dependencies: + toml "^3.0.0" + tslib "^1.10.0" + +snyk-go-plugin@1.13.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/snyk-go-plugin/-/snyk-go-plugin-1.13.0.tgz#7d0c7efa3151a893f6744939285f318a9a242c1e" + integrity sha512-6lN9S8uO6LE1Y6ZJMZm3EZ8kvvI/vZh8r+JJGAPfVO2C265xymEpFBJ4Nn2or0Q0LlqZ8W8lWi1HUMXXid6k+w== + dependencies: + debug "^4.1.1" + graphlib "^2.1.1" + snyk-go-parser "1.4.0" + tmp "0.1.0" + tslib "^1.10.0" + +snyk-gradle-plugin@3.2.5: + version "3.2.5" + resolved "https://registry.yarnpkg.com/snyk-gradle-plugin/-/snyk-gradle-plugin-3.2.5.tgz#a0be7ddec568bfec62e7ebf7a6431aa74eec1d27" + integrity sha512-XxPi/B16dGkV1USoyFbpn6LlSJ9SUC6Y6z/4lWuF4spLnKtWwpEb1bwTdBFsxnkUfqzIRtPr0+wcxxXvv9Rvcw== + dependencies: + "@snyk/cli-interface" "2.3.0" + "@types/debug" "^4.1.4" + chalk "^2.4.2" + debug "^4.1.1" + tmp "0.0.33" + tslib "^1.9.3" + +snyk-module@1.9.1, snyk-module@^1.6.0, snyk-module@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/snyk-module/-/snyk-module-1.9.1.tgz#b2a78f736600b0ab680f1703466ed7309c980804" + integrity sha512-A+CCyBSa4IKok5uEhqT+hV/35RO6APFNLqk9DRRHg7xW2/j//nPX8wTSZUPF8QeRNEk/sX+6df7M1y6PBHGSHA== + dependencies: + debug "^3.1.0" + hosted-git-info "^2.7.1" + +snyk-mvn-plugin@2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/snyk-mvn-plugin/-/snyk-mvn-plugin-2.9.0.tgz#f5839c0d01756b9268dae3142f5b0639555a65de" + integrity sha512-FBl78wCHNm0P/QOlipvOxzN2LrXlS6NBN0zXWYZ09P0hG65rmA3gKTg0QsHUjIBh1Pg9bw5aG4r/AHle6a6g6w== + dependencies: + "@snyk/cli-interface" "2.3.1" + debug "^4.1.1" + lodash "^4.17.15" + needle "^2.4.0" + tmp "^0.1.0" + tslib "1.9.3" + +snyk-nodejs-lockfile-parser@1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/snyk-nodejs-lockfile-parser/-/snyk-nodejs-lockfile-parser-1.17.0.tgz#709e1d8c83faccae3bfdac5c10620dcedbf8c4ac" + integrity sha512-i4GAYFj9TJLOQ8F+FbIJuJWdGymi8w/XcrEX0FzXk7DpYUCY3mWibyKhw8RasfYBx5vLwUzEvRMaQuc2EwlyfA== + dependencies: + "@yarnpkg/lockfile" "^1.0.2" + graphlib "^2.1.5" + lodash "^4.17.14" + p-map "2.1.0" + source-map-support "^0.5.7" + tslib "^1.9.3" + uuid "^3.3.2" + +snyk-nuget-plugin@1.16.0: + version "1.16.0" + resolved "https://registry.yarnpkg.com/snyk-nuget-plugin/-/snyk-nuget-plugin-1.16.0.tgz#241c6c8a417429c124c3ebf6db314a14eb8eed89" + integrity sha512-OEusK3JKKpR4Yto5KwuqjQGgb9wAhmDqBWSQomWdtKQVFrzn5B6BMzOFikUzmeMTnUGGON7gurQBLXeZZLhRqg== + dependencies: + debug "^3.1.0" + dotnet-deps-parser "4.9.0" + jszip "^3.1.5" + lodash "^4.17.14" + snyk-paket-parser "1.5.0" + tslib "^1.9.3" + xml2js "^0.4.17" + +snyk-paket-parser@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/snyk-paket-parser/-/snyk-paket-parser-1.5.0.tgz#a0e96888d9d304b1ae6203a0369971575f099548" + integrity sha512-1CYMPChJ9D9LBy3NLqHyv8TY7pR/LMISSr08LhfFw/FpfRZ+gTH8W6bbxCmybAYrOFNCqZkRprqOYDqZQFHipA== + dependencies: + tslib "^1.9.3" + +snyk-php-plugin@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/snyk-php-plugin/-/snyk-php-plugin-1.7.0.tgz#cf1906ed8a10db134c803be3d6e4be0cbdc5fe33" + integrity sha512-mDe90xkqSEVrpx1ZC7ItqCOc6fZCySbE+pHVI+dAPUmf1C1LSWZrZVmAVeo/Dw9sJzJfzmcdAFQl+jZP8/uV0A== + dependencies: + "@snyk/cli-interface" "2.2.0" + "@snyk/composer-lockfile-parser" "1.2.0" + tslib "1.9.3" + +snyk-policy@1.13.5: + version "1.13.5" + resolved "https://registry.yarnpkg.com/snyk-policy/-/snyk-policy-1.13.5.tgz#c5cf262f759879a65ab0810dd58d59c8ec7e9e47" + integrity sha512-KI6GHt+Oj4fYKiCp7duhseUj5YhyL/zJOrrJg0u6r59Ux9w8gmkUYT92FHW27ihwuT6IPzdGNEuy06Yv2C9WaQ== + dependencies: + debug "^3.1.0" + email-validator "^2.0.4" + js-yaml "^3.13.1" + lodash.clonedeep "^4.5.0" + semver "^6.0.0" + snyk-module "^1.9.1" + snyk-resolve "^1.0.1" + snyk-try-require "^1.3.1" + then-fs "^2.0.0" + +snyk-python-plugin@1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/snyk-python-plugin/-/snyk-python-plugin-1.17.0.tgz#9bc38ba3c799c3cbef7676a1081f52608690d254" + integrity sha512-EKdVOUlvhiVpXA5TeW8vyxYVqbITAfT+2AbL2ZRiiUNLP5ae+WiNYaPy7aB5HAS9IKBKih+IH8Ag65Xu1IYSYA== + dependencies: + "@snyk/cli-interface" "^2.0.3" + tmp "0.0.33" + +snyk-resolve-deps@4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/snyk-resolve-deps/-/snyk-resolve-deps-4.4.0.tgz#ef20fb578a4c920cc262fb73dd292ff21215f52d" + integrity sha512-aFPtN8WLqIk4E1ulMyzvV5reY1Iksz+3oPnUVib1jKdyTHymmOIYF7z8QZ4UUr52UsgmrD9EA/dq7jpytwFoOQ== + dependencies: + "@types/node" "^6.14.4" + "@types/semver" "^5.5.0" + ansicolors "^0.3.2" + debug "^3.2.5" + lodash.assign "^4.2.0" + lodash.assignin "^4.2.0" + lodash.clone "^4.5.0" + lodash.flatten "^4.4.0" + lodash.get "^4.4.2" + lodash.set "^4.3.2" + lru-cache "^4.0.0" + semver "^5.5.1" + snyk-module "^1.6.0" + snyk-resolve "^1.0.0" + snyk-tree "^1.0.0" + snyk-try-require "^1.1.1" + then-fs "^2.0.0" + +snyk-resolve@1.0.1, snyk-resolve@^1.0.0, snyk-resolve@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/snyk-resolve/-/snyk-resolve-1.0.1.tgz#eaa4a275cf7e2b579f18da5b188fe601b8eed9ab" + integrity sha512-7+i+LLhtBo1Pkth01xv+RYJU8a67zmJ8WFFPvSxyCjdlKIcsps4hPQFebhz+0gC5rMemlaeIV6cqwqUf9PEDpw== + dependencies: + debug "^3.1.0" + then-fs "^2.0.0" + +snyk-sbt-plugin@2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/snyk-sbt-plugin/-/snyk-sbt-plugin-2.11.0.tgz#f5469dcf5589e34575fc901e2064475582cc3e48" + integrity sha512-wUqHLAa3MzV6sVO+05MnV+lwc+T6o87FZZaY+43tQPytBI2Wq23O3j4POREM4fa2iFfiQJoEYD6c7xmhiEUsSA== + dependencies: + debug "^4.1.1" + semver "^6.1.2" + tmp "^0.1.0" + tree-kill "^1.2.2" + tslib "^1.10.0" + +snyk-tree@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/snyk-tree/-/snyk-tree-1.0.0.tgz#0fb73176dbf32e782f19100294160448f9111cc8" + integrity sha1-D7cxdtvzLngvGRAClBYESPkRHMg= + dependencies: + archy "^1.0.0" + +snyk-try-require@1.3.1, snyk-try-require@^1.1.1, snyk-try-require@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/snyk-try-require/-/snyk-try-require-1.3.1.tgz#6e026f92e64af7fcccea1ee53d524841e418a212" + integrity sha1-bgJvkuZK9/zM6h7lPVJIQeQYohI= + dependencies: + debug "^3.1.0" + lodash.clonedeep "^4.3.0" + lru-cache "^4.0.0" + then-fs "^2.0.0" + +snyk@^1.239.5: + version "1.297.3" + resolved "https://registry.yarnpkg.com/snyk/-/snyk-1.297.3.tgz#f62b86c40bb4dab15d724bddb284ebb180450a09" + integrity sha512-lJ0QWvst+rX+b9ppuAlPxIGmJQssAOafPAszoZ3c4AC42I8ks8Wr04Y9HJnA2Y7kO3SciIpCauL1Sg3lk1XHEw== + dependencies: + "@snyk/cli-interface" "2.3.2" + "@snyk/configstore" "^3.2.0-rc1" + "@snyk/dep-graph" "1.13.1" + "@snyk/gemfile" "1.2.0" + "@snyk/snyk-cocoapods-plugin" "2.0.1" + "@snyk/update-notifier" "^2.5.1-rc2" + "@types/agent-base" "^4.2.0" + "@types/restify" "^4.3.6" + abbrev "^1.1.1" + ansi-escapes "3.2.0" + chalk "^2.4.2" + cli-spinner "0.2.10" + debug "^3.1.0" + diff "^4.0.1" + git-url-parse "11.1.2" + glob "^7.1.3" + inquirer "^6.2.2" + lodash "^4.17.14" + needle "^2.2.4" + opn "^5.5.0" + os-name "^3.0.0" + proxy-agent "^3.1.1" + proxy-from-env "^1.0.0" + semver "^6.0.0" + snyk-config "^2.2.1" + snyk-docker-plugin "2.2.0" + snyk-go-plugin "1.13.0" + snyk-gradle-plugin "3.2.5" + snyk-module "1.9.1" + snyk-mvn-plugin "2.9.0" + snyk-nodejs-lockfile-parser "1.17.0" + snyk-nuget-plugin "1.16.0" + snyk-php-plugin "1.7.0" + snyk-policy "1.13.5" + snyk-python-plugin "1.17.0" + snyk-resolve "1.0.1" + snyk-resolve-deps "4.4.0" + snyk-sbt-plugin "2.11.0" + snyk-tree "^1.0.0" + snyk-try-require "1.3.1" + source-map-support "^0.5.11" + strip-ansi "^5.2.0" + tempfile "^2.0.0" + then-fs "^2.0.0" + uuid "^3.3.2" + wrap-ansi "^5.1.0" + +socks-proxy-agent@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" + integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg== + dependencies: + agent-base "~4.2.1" + socks "~2.3.2" + +socks@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3" + integrity sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA== + dependencies: + ip "1.1.5" + smart-buffer "^4.1.0" + +source-map-resolve@^0.5.0: + 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.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.11, source-map-support@^0.5.12, source-map-support@^0.5.6, source-map-support@^0.5.7: + 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-url@^0.4.0: + version "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: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +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== + 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== + +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== + 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== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^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" + +stack-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" + integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"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= + +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= + +string-length@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" + integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= + dependencies: + astral-regex "^1.0.0" + strip-ansi "^4.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= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0, string-width@^2.1.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-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string.prototype.trimleft@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" + integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string.prototype.trimright@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" + integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string_decoder@^1.1.1: + 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.2.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0, 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= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + 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-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-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= + dependencies: + get-stdin "^4.0.1" + +strip-json-comments@^2.0.0, 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@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +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" + +symbol-tree@^3.2.2: + 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== + +tar-stream@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.0.tgz#d1aaa3661f05b38b5acc9b7020efdca5179a2cc3" + integrity sha512-+DAn4Nb4+gz6WZigRzKEZl1QuJVOLtAwwF+WUxy1fJ6X63CaGaUAxJRD2KEn1OMfcbCjySTYpNC6WmfQoIEOdw== + dependencies: + bl "^3.0.0" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= + +tempfile@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-2.0.0.tgz#6b0446856a9b1114d1856ffcbe509cccb0977265" + integrity sha1-awRGhWqbERTRhW/8vlCczLCXcmU= + dependencies: + temp-dir "^1.0.0" + uuid "^3.0.1" + +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= + dependencies: + execa "^0.7.0" + +test-exclude@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" + integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== + dependencies: + glob "^7.1.3" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^2.0.0" + +then-fs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/then-fs/-/then-fs-2.0.0.tgz#72f792dd9d31705a91ae19ebfcf8b3f968c81da2" + integrity sha1-cveS3Z0xcFqRrhnr/Piz+WjIHaI= + dependencies: + promise ">=3.2 <8" + +throat@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= + +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= + +thunkify@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/thunkify/-/thunkify-2.1.2.tgz#faa0e9d230c51acc95ca13a361ac05ca7e04553d" + integrity sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0= + +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= + +tmp@0.0.33, tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmp@0.1.0, tmp@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877" + integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw== + dependencies: + rimraf "^2.6.3" + +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +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" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +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" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +toml@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" + integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== + +tough-cookie@^2.3.3, tough-cookie@^2.3.4, 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" + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + +tree-kill@^1.2.1, tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= + +ts-jest@^24.2.0: + version "24.3.0" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-24.3.0.tgz#b97814e3eab359ea840a1ac112deae68aa440869" + integrity sha512-Hb94C/+QRIgjVZlJyiWwouYUF+siNJHJHknyspaOcZ+OQAIdFG/UrdQVXw/0B8Z3No34xkUXZJpOTy9alOWdVQ== + dependencies: + bs-logger "0.x" + buffer-from "1.x" + fast-json-stable-stringify "2.x" + json5 "2.x" + lodash.memoize "4.x" + make-error "1.x" + mkdirp "0.x" + resolve "1.x" + semver "^5.5" + yargs-parser "10.x" + +ts-node-dev@^1.0.0-pre.32: + version "1.0.0-pre.44" + resolved "https://registry.yarnpkg.com/ts-node-dev/-/ts-node-dev-1.0.0-pre.44.tgz#2f4d666088481fb9c4e4f5bc8f15995bd8b06ecb" + integrity sha512-M5ZwvB6FU3jtc70i5lFth86/6Qj5XR5nMMBwVxZF4cZhpO7XcbWw6tbNiJo22Zx0KfjEj9py5DANhwLOkPPufw== + dependencies: + dateformat "~1.0.4-1.2.3" + dynamic-dedupe "^0.3.0" + filewatcher "~3.0.0" + minimist "^1.1.3" + mkdirp "^0.5.1" + node-notifier "^5.4.0" + resolve "^1.0.0" + rimraf "^2.6.1" + source-map-support "^0.5.12" + tree-kill "^1.2.1" + ts-node "*" + tsconfig "^7.0.0" + +ts-node@*: + version "8.6.2" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.6.2.tgz#7419a01391a818fbafa6f826a33c1a13e9464e35" + integrity sha512-4mZEbofxGqLL2RImpe3zMJukvEvcO1XP8bj8ozBPySdCUXEcU5cIRwR0aM3R+VoZq7iXc8N86NC0FspGRqP4gg== + dependencies: + arg "^4.1.0" + diff "^4.0.1" + make-error "^1.1.1" + source-map-support "^0.5.6" + yn "3.1.1" + +ts-node@8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.0.3.tgz#aa60b836a24dafd8bf21b54766841a232fdbc641" + integrity sha512-2qayBA4vdtVRuDo11DEFSsD/SFsBXQBRZZhbRGSIkmYmVkWjULn/GGMdG10KVqkaGndljfaTD8dKjWgcejO8YA== + dependencies: + arg "^4.1.0" + diff "^3.1.0" + make-error "^1.1.1" + source-map-support "^0.5.6" + yn "^3.0.0" + +tsconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7" + integrity sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw== + dependencies: + "@types/strip-bom" "^3.0.0" + "@types/strip-json-comments" "0.0.30" + strip-bom "^3.0.0" + strip-json-comments "^2.0.0" + +tslib@1.9.3: + version "1.9.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== + +tslib@^1, tslib@^1.10.0, tslib@^1.9.0, tslib@^1.9.3: + version "1.11.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" + integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== + +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.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typescript@^3.7.2: + version "3.8.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" + integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== + +underscore@^1.8.3: + version "1.9.2" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.2.tgz#0c8d6f536d6f378a5af264a72f7bec50feb7cf2f" + integrity sha512-D39qtimx0c1fI3ya1Lnhk3E9nONswSKhnffBI0gME9C99fYOkNi04xs8K6pePLhvl1frbDemkaBQ5ikWllR2HQ== + +union-value@^1.0.0: + 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 "^2.0.1" + +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= + dependencies: + crypto-random-string "^1.0.0" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +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= + +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== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= + dependencies: + prepend-http "^1.0.1" + +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== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" + integrity sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== + +uuid@^3.0.1, uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@~1.1.2: + version "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" + +vscode-languageserver-types@^3.5.0: + version "3.15.1" + resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz#17be71d78d2f6236d414f0001ce1ef4d23e6b6de" + integrity sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ== + +w3c-hr-time@^1.0.1: + 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" + +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" + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: + 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.1.0, whatwg-mimetype@^2.2.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@^6.4.1: + version "6.5.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" + integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +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.9, which@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +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== + dependencies: + string-width "^2.1.1" + +window-size@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" + integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= + +windows-release@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.2.0.tgz#8122dad5afc303d833422380680a79cdfa91785f" + integrity sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA== + dependencies: + execa "^1.0.0" + +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== + +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" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.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.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" + integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write-file-atomic@^2.0.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" + +ws@^5.2.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" + integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== + dependencies: + async-limiter "~1.0.0" + +xdg-basedir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" + integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= + +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== + +xml2js@0.4.19: + version "0.4.19" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" + integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== + dependencies: + sax ">=0.6.0" + xmlbuilder "~9.0.1" + +xml2js@^0.4.17: + version "0.4.23" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" + integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + +xmlbuilder@~9.0.1: + version "9.0.7" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= + +xregexp@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" + integrity sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM= + +xss@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.6.tgz#eaf11e9fc476e3ae289944a1009efddd8a124b51" + integrity sha512-6Q9TPBeNyoTRxgZFk5Ggaepk/4vUOYdOsIUYvLehcsIZTFjaavbVnsuAkLA5lIFuug5hw8zxcB9tm01gsjph2A== + dependencies: + commander "^2.9.0" + cssfilter "0.0.10" + +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + +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== + +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@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yargs-parser@10.x: + version "10.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" + integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== + dependencies: + camelcase "^4.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== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^13.3.0: + 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" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@^3.19.0: + version "3.32.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" + integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU= + dependencies: + camelcase "^2.0.1" + cliui "^3.0.3" + decamelize "^1.1.1" + os-locale "^1.4.0" + string-width "^1.0.1" + window-size "^0.1.4" + y18n "^3.2.0" + +yn@3.1.1, yn@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== diff --git a/logger/.gitignore b/logger/.gitignore deleted file mode 100644 index dbaa4ef21..000000000 --- a/logger/.gitignore +++ /dev/null @@ -1,14 +0,0 @@ -node_modules -dist -static -.DS_Store -npm-debug.log* -.env -coverage -dump.rdb -*.un~ -*.swp -*.swo -.migrate - -oplog.timestamp diff --git a/logger/.prettierrc b/logger/.prettierrc deleted file mode 100644 index 4b9a2d97d..000000000 --- a/logger/.prettierrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "printWidth": 120, - "singleQuote": true, - "trailingComma": "all" -} diff --git a/logger/.release-it.json b/logger/.release-it.json deleted file mode 100644 index 98b076f89..000000000 --- a/logger/.release-it.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "git": { - "tagName": "%s", - "tagAnnotation": "Release ${version}", - "commitMessage": "Release ${version}", - "requireCleanWorkingDir": false - }, - "github": { - "release": true, - "releaseName": "Release ${version}", - "draft": false - }, - "npm": { - "publish": false - }, - "plugins": { - "@release-it/conventional-changelog": { - "preset": "angular", - "infile": "CHANGELOG.md" - } - } -} diff --git a/logger/CHANGELOG.md b/logger/CHANGELOG.md deleted file mode 100644 index 50bffd567..000000000 --- a/logger/CHANGELOG.md +++ /dev/null @@ -1,13 +0,0 @@ -# [0.12.0](https://github.com/erxes/erxes-logger/compare/0.11.2...0.12.0) (2020-01-08) - -## [0.11.2](https://github.com/erxes/erxes-logger/compare/0.11.0...0.11.2) (2019-12-15) - -# [0.11.0](https://github.com/erxes/erxes-logger/compare/0.10.0...0.11.0) (2019-11-01) - -# [0.10.0](https://github.com/erxes/erxes-logger/compare/0.9.17...0.10.0) (2019-08-15) - -## 0.9.17 (2019-07-09) - -## 0.9.17 (2019-07-09) - -Initial release diff --git a/logger/README.md b/logger/README.md deleted file mode 100644 index 92c9574ec..000000000 --- a/logger/README.md +++ /dev/null @@ -1 +0,0 @@ -Log recorder api \ No newline at end of file diff --git a/logger/package.json b/logger/package.json index f47fc8518..b4c201c5b 100644 --- a/logger/package.json +++ b/logger/package.json @@ -1,13 +1,12 @@ { "name": "erxes-logger", - "version": "0.12.0", "description": "Logger module for erxes", "homepage": "https://erxes.io", "repository": { "type": "git", - "url": "https://github.com/erxes/erxes-logger" + "url": "https://github.com/erxes/erxes-api" }, - "bugs": "https://github.com/erxes/erxes-logger/issues", + "bugs": "https://github.com/erxes/erxes-api/issues", "keywords": [ "node", "express", @@ -20,52 +19,29 @@ "dev": "DEBUG=erxes-logger:* node_modules/.bin/ts-node-dev --respawn src", "test": "NODE_ENV=test jest --runInBand --forceExit", "build": "tsc -p tsconfig.prod.json", - "lint": "tslint 'src/*.ts'", - "format": "prettier --write 'src/*.ts'", - "precommit": "lint-staged", - "release": "release-it", "migrate": "NODE_ENV=command migrate --migrations-dir='./dist/migrations' --store='./db-migrate-store.js' up" }, - "lint-staged": { - "*.ts": [ - "prettier --write", - "git add" - ] - }, "dependencies": { "amqplib": "^0.5.5", "body-parser": "^1.17.1", "debug": "^4.1.1", "dotenv": "^4.0.0", "express": "^4.16.4", - "mongoose": "5.7.10", - "requestify": "^0.2.5" + "mongoose": "5.7.10" }, "devDependencies": { - "@release-it/conventional-changelog": "^1.1.0", "@types/body-parser": "^1.17.0", "@types/cors": "^2.8.4", "@types/dotenv": "^4.0.3", "@types/express": "^4.16.0", - "@types/jest": "^23.3.0", "@types/mongodb": "^3.1.2", "@types/mongoose": "^5.2.1", "@types/node": "^10.12.18", "@types/q": "^1.5.0", - "faker": "^4.1.0", - "husky": "^0.13.4", - "jest": "22.0.4", - "lint-staged": "^3.6.0", "migrate": "^1.6.2", - "prettier": "^1.13.7", - "release-it": "^12.4.3", "snyk": "^1.239.5", - "ts-jest": "22.0.4", "ts-node": "^7.0.0", "ts-node-dev": "^1.0.0-pre.32", - "tslint": "^5.8.0", - "tslint-config-prettier": "^1.1.0", - "tslint-config-standard": "^7.0.0", "typescript": "^2.9.2" } } diff --git a/logger/tslint.json b/logger/tslint.json deleted file mode 100644 index 05878e136..000000000 --- a/logger/tslint.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": [ - "tslint:latest", - "tslint-config-prettier" - ], - "rules": { - "object-literal-sort-keys": false, - "no-console": false, - "no-implicit-dependencies": [true, "dev"], - "variable-name": [true, "ban-keywords", "check-format", "allow-leading-underscore"] - } -} diff --git a/logger/yarn.lock b/logger/yarn.lock index 2fa485428..0624e58c5 100644 --- a/logger/yarn.lock +++ b/logger/yarn.lock @@ -2,121 +2,6 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.0.0-beta.35": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" - integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== - dependencies: - "@babel/highlight" "^7.0.0" - -"@babel/highlight@^7.0.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" - integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ== - dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^4.0.0" - -"@iarna/toml@2.2.3": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.3.tgz#f060bf6eaafae4d56a7dac618980838b0696e2ab" - integrity sha512-FmuxfCuolpLl0AnQ2NHSzoUKWEJDFl63qXjzdoWBVyFCXzMGm1spBzk7LeHNoVCiWCF7mRVms9e6jEV9+MoPbg== - -"@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.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" - -"@octokit/endpoint@^5.5.0": - version "5.5.1" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-5.5.1.tgz#2eea81e110ca754ff2de11c79154ccab4ae16b3f" - integrity sha512-nBFhRUb5YzVTCX/iAK1MgQ4uWo89Gu0TH00qQHoYRCsE12dWcG1OiLd7v2EIo2+tpUKPMOQ62QFy9hy9Vg2ULg== - dependencies: - "@octokit/types" "^2.0.0" - is-plain-object "^3.0.0" - universal-user-agent "^4.0.0" - -"@octokit/request-error@^1.0.1", "@octokit/request-error@^1.0.2": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-1.2.0.tgz#a64d2a9d7a13555570cd79722de4a4d76371baaa" - integrity sha512-DNBhROBYjjV/I9n7A8kVkmQNkqFAMem90dSxqvPq57e2hBr7mNTX98y3R2zDpqMQHVRpBDjsvsfIGgBzy+4PAg== - dependencies: - "@octokit/types" "^2.0.0" - deprecation "^2.0.0" - once "^1.4.0" - -"@octokit/request@^5.0.0": - version "5.3.1" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.3.1.tgz#3a1ace45e6f88b1be4749c5da963b3a3b4a2f120" - integrity sha512-5/X0AL1ZgoU32fAepTfEoggFinO3rxsMLtzhlUX+RctLrusn/CApJuGFCd0v7GMFhF+8UiCsTTfsu7Fh1HnEJg== - dependencies: - "@octokit/endpoint" "^5.5.0" - "@octokit/request-error" "^1.0.1" - "@octokit/types" "^2.0.0" - deprecation "^2.0.0" - is-plain-object "^3.0.0" - node-fetch "^2.3.0" - once "^1.4.0" - universal-user-agent "^4.0.0" - -"@octokit/rest@16.33.0": - version "16.33.0" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.33.0.tgz#13c1404b24c9871419eb31029de177e82f3eb851" - integrity sha512-t4jMR+odsfooQwmHiREoTQixVTX2DfdbSaO+lKrW9R5XBuk0DW+5T/JdfwtxAGUAHgvDDpWY/NVVDfEPTzxD6g== - dependencies: - "@octokit/request" "^5.0.0" - "@octokit/request-error" "^1.0.2" - atob-lite "^2.0.0" - before-after-hook "^2.0.0" - btoa-lite "^1.0.0" - deprecation "^2.0.0" - lodash.get "^4.4.2" - lodash.set "^4.3.2" - lodash.uniq "^4.5.0" - octokit-pagination-methods "^1.1.0" - once "^1.4.0" - universal-user-agent "^4.0.0" - -"@octokit/types@^2.0.0": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.0.2.tgz#0888497f5a664e28b0449731d5e88e19b2a74f90" - integrity sha512-StASIL2lgT3TRjxv17z9pAqbnI7HGu9DrJlg3sEBFfCLaMEqp+O3IQPUF6EZtQ4xkAu2ml6kMBBCtGxjvmtmuQ== - dependencies: - "@types/node" ">= 8" - -"@release-it/conventional-changelog@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@release-it/conventional-changelog/-/conventional-changelog-1.1.0.tgz#42e33ceff37d6ae4ad1667b4a1b1586b75e58fca" - integrity sha512-3uyHg2hgCEJMFjIbRTnGgqU//PK9u89dBlKRUmbSNALARCXiKN4XvJOWni54TsFeDSWmM3IUh9bgoGvj55ia4A== - dependencies: - concat-stream "^2.0.0" - conventional-changelog "^3.1.8" - conventional-recommended-bump "^5.0.0" - prepend-file "^1.3.1" - release-it "^12.2.1" - -"@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== - "@snyk/cli-interface@1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@snyk/cli-interface/-/cli-interface-1.5.0.tgz#b9dbe6ebfb86e67ffabf29d4e0d28a52670ac456" @@ -205,13 +90,6 @@ source-map-support "^0.5.7" tslib "^1.9.3" -"@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" - "@types/agent-base@^4.2.0": version "4.2.0" resolved "https://registry.yarnpkg.com/@types/agent-base/-/agent-base-4.2.0.tgz#00644e8b395b40e1bf50aaf1d22cabc1200d5051" @@ -290,20 +168,6 @@ "@types/express-serve-static-core" "*" "@types/serve-static" "*" -"@types/glob@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" - integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== - dependencies: - "@types/events" "*" - "@types/minimatch" "*" - "@types/node" "*" - -"@types/jest@^23.3.0": - version "23.3.14" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-23.3.14.tgz#37daaf78069e7948520474c87b80092ea912520a" - integrity sha512-Q5hTcfdudEL2yOmluA1zaSyPbzWPmJ3XfSWeP3RyoYvS9hnje1ZyagrZOuQ6+1nQC1Gw+7gap3pLNL3xL6UBug== - "@types/js-yaml@^3.12.1": version "3.12.1" resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-3.12.1.tgz#5c6f4a1eabca84792fbd916f0cb40847f123c656" @@ -314,11 +178,6 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.1.tgz#dc488842312a7f075149312905b5e3c0b054c79d" integrity sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw== -"@types/minimatch@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== - "@types/mongodb@*", "@types/mongodb@^3.1.2": version "3.3.12" resolved "https://registry.yarnpkg.com/@types/mongodb/-/mongodb-3.3.12.tgz#c5afa2de5ee5558603ecee8c9366e86e24576703" @@ -335,7 +194,7 @@ "@types/mongodb" "*" "@types/node" "*" -"@types/node@*", "@types/node@>= 8": +"@types/node@*": version "12.12.16" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.16.tgz#3ebcbd7bf978fa4c5120fee8be57083271a8b3ac" integrity sha512-vRuMyoOr5yfNf8QWxXegOjeyjpWJxFePzHzmBOIzDIzo+rSqF94RW0PkS6y4T2+VjAWLXHWrfbIJY3E3aS7lUw== @@ -404,20 +263,7 @@ resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== -JSONStream@^1.0.4: - 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.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" - integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== - -abbrev@1, abbrev@^1.1.1: +abbrev@^1.1.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== @@ -430,29 +276,6 @@ accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn-globals@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" - integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== - dependencies: - acorn "^6.0.1" - acorn-walk "^6.0.1" - -acorn-walk@^6.0.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== - -acorn@^5.5.3: - version "5.7.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" - integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== - -acorn@^6.0.1: - version "6.4.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" - integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw== - agent-base@4, agent-base@^4.2.0, agent-base@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" @@ -467,16 +290,6 @@ agent-base@~4.2.1: dependencies: es6-promisify "^5.0.0" -ajv@^6.5.5: - 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" - amqplib@^0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/amqplib/-/amqplib-0.5.5.tgz#698f0cb577e0591954a90572fcb3b8998a76fd40" @@ -496,30 +309,11 @@ ansi-align@^2.0.0: dependencies: string-width "^2.0.0" -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 "^3.0.0" - -ansi-escapes@3.2.0, ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: +ansi-escapes@3.2.0, ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== -ansi-escapes@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" - integrity sha1-06ioOzGapneTZisT52HHkRQiMG4= - -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== - dependencies: - type-fest "^0.8.1" - ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -535,11 +329,6 @@ ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== -ansi-regex@^5.0.0: - version "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" @@ -557,52 +346,11 @@ ansicolors@^0.3.2: resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" integrity sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk= -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" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -app-root-path@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.2.1.tgz#d0df4a682ee408273583d43f6f79e9892624bc9a" - integrity sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA== - -append-transform@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" - integrity sha1-126/jKlNJ24keja61EpLdKthGZE= - dependencies: - default-require-extensions "^1.0.0" - -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - archy@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= -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@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.2.tgz#e70c90579e02c63d80e3ad4e31d8bfdb8bd50064" @@ -615,33 +363,6 @@ 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= - dependencies: - arr-flatten "^1.0.1" - -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: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= - array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -652,27 +373,7 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= -array-ify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" - integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= - -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-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-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= - -arrify@^1.0.0, arrify@^1.0.1: +arrify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= @@ -682,301 +383,21 @@ asap@~2.0.3: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= -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= - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - ast-types@0.x.x: version "0.13.2" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.2.tgz#df39b677a911a83f3a049644fb74fdded23cea48" integrity sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA== -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: - 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.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async-retry@1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.2.3.tgz#a6521f338358d322b1a0012b79030c6f411d1ce0" - integrity sha512-tfDb02Th6CE6pJUF2gjW5ZVjsgwlucVXOEQMvEX9JgSJMs9gAX+Nz3xRuJBKuUYjTSYORqvDBORdAQ3LU59g7Q== - dependencies: - retry "0.12.0" - async@^1.4.0: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= -async@^2.1.4: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -atob-lite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696" - integrity sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY= - -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== - -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= - -aws4@^1.8.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.0.tgz#24390e6ad61386b0a747265754d2a17219de862c" - integrity sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A== - -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= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-core@^6.0.0, babel-core@^6.24.1, 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-generator@^6.18.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-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-jest@^22.4.4: - version "22.4.4" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-22.4.4.tgz#977259240420e227444ebe49e226a61e49ea659d" - integrity sha512-A9NB6/lZhYyypR9ATryOSDcqBaqNdzq4U+CN+/wcMsLcmKkPxQEoTKLajGfd3IkxNyVBT8NewUK2nWyGbSzHEQ== - dependencies: - babel-plugin-istanbul "^4.1.5" - babel-preset-jest "^22.4.4" - -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-istanbul@^4.1.4, babel-plugin-istanbul@^4.1.5: - version "4.1.6" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" - integrity sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ== - dependencies: - babel-plugin-syntax-object-rest-spread "^6.13.0" - find-up "^2.1.0" - istanbul-lib-instrument "^1.10.1" - test-exclude "^4.2.1" - -babel-plugin-jest-hoist@^22.4.4: - version "22.4.4" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.4.tgz#b9851906eab34c7bf6f8c895a2b08bea1a844c0b" - integrity sha512-DUvGfYaAIlkdnygVIEl0O4Av69NtuQWcrjMOv6DODPuhuGLDnbsARz3AwiiI/EkIMMlxQDUcrZ9yoyJvTNjcVQ== - -babel-plugin-syntax-object-rest-spread@^6.13.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-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-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" - -babel-preset-jest@^22.0.1, babel-preset-jest@^22.4.4: - version "22.4.4" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-22.4.4.tgz#ec9fbd8bcd7dfd24b8b5320e0e688013235b7c39" - integrity sha512-+dxMtOFwnSYWfum0NaEc0O03oSdwBsjx4tMSChRDPGwu/4wSY6Q6ANW3wkjKpJzzguaovRs/DODcT4hbSN8yiA== - dependencies: - babel-plugin-jest-hoist "^22.4.4" - babel-plugin-syntax-object-rest-spread "^6.13.0" - -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= - 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.22.0, babel-runtime@^6.26.0, babel-runtime@^6.9.2: - 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.16.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.18.0, 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" - -babel-types@^6.18.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= - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -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== - 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= -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -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" - -before-after-hook@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" - integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - bitsyntax@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/bitsyntax/-/bitsyntax-0.1.0.tgz#b0c59acef03505de5a2ed62a2f763c56ae1d6205" @@ -1032,20 +453,6 @@ boxen@^1.2.1: term-size "^1.2.0" widest-line "^2.0.0" -boxen@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-3.2.0.tgz#fbdff0de93636ab4450886b6ff45b92d098f45eb" - integrity sha512-cU4J/+NodM3IHdSL2yN8bqYqnmlBTidDR4RC7nJs61ZmtGz8VZzM3HLQX0zY5mrSmPtR3xWwsq2jOUQqFZN8+A== - dependencies: - ansi-align "^3.0.0" - camelcase "^5.3.1" - chalk "^2.4.2" - cli-boxes "^2.2.0" - string-width "^3.0.0" - term-size "^1.2.0" - type-fest "^0.3.0" - widest-line "^2.0.0" - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1054,67 +461,11 @@ 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: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1: - 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" - -browser-process-hrtime@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" - integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw== - -browser-resolve@^1.11.2: - version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== - dependencies: - resolve "1.1.7" - -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" - bson@^1.1.1, bson@~1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/bson/-/bson-1.1.3.tgz#aa82cb91f9a453aaa060d6209d0675114a8154d3" integrity sha512-TdiJxMVnodVS7r0BdL42y/pqC9cL2iKynVwA0Ho3qbsQYr428veL3l7BQyuqiw+Q5SqqoT0m4srSY/BlZ9AxXg== -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= - buffer-from@^1.0.0, buffer-from@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -1125,63 +476,11 @@ buffer-more-ints@~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== -builtin-modules@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= - bytes@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.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" - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= - camelcase-keys@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" @@ -1190,57 +489,22 @@ camelcase-keys@^2.0.0: camelcase "^2.0.0" map-obj "^1.0.0" -camelcase-keys@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" - integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c= - dependencies: - camelcase "^4.1.0" - map-obj "^2.0.0" - quick-lru "^1.0.0" - camelcase@^2.0.0, camelcase@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= -camelcase@^4.0.0, camelcase@^4.1.0: +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= -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== - -capture-exit@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f" - integrity sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28= - dependencies: - rsvp "^3.3.3" - 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.3.0, 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== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: +chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= @@ -1251,74 +515,30 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -changelog-filename-regex@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/changelog-filename-regex/-/changelog-filename-regex-1.1.2.tgz#19e98e38248cff0c1cf3ae3bf51bfb22c48592d6" - integrity sha512-kpOfKlZ9x2UpeC4at6FAXHLKfi/JEUqUqkPCb1JUCa5FnNbJIzOHRM9RfeQ1QDcpj+Gxuc/UoHqASgmEeFDejQ== +chalk@^2.0.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== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" 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== -chokidar@^1.6.0: - 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" - -chownr@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" - integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== - ci-info@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== -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== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.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= -cli-boxes@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" - integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== - -cli-cursor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" - integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc= - dependencies: - restore-cursor "^1.0.1" - cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" @@ -1326,36 +546,11 @@ cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - cli-spinner@0.2.10: version "0.2.10" resolved "https://registry.yarnpkg.com/cli-spinner/-/cli-spinner-0.2.10.tgz#f7d617a36f5c47a7bc6353c697fc9338ff782a47" integrity sha512-U0sSQ+JJvSLi1pAYuJykwiA8Dsr15uHEy85iCJ6A+0DjVxivr3d+N2Wjvodeg89uP5K6TswFkKBfAD7B3YSn/Q== -cli-spinners@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c" - integrity sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw= - -cli-spinners@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.2.0.tgz#e8b988d9206c692302d8ee834e7a85c0144d8f77" - integrity sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ== - -cli-truncate@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" - integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= - dependencies: - slice-ansi "0.0.4" - string-width "^1.0.1" - cli-width@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" @@ -1370,15 +565,6 @@ cliui@^3.0.3: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - clone-deep@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.3.0.tgz#348c61ae9cdbe0edfe053d91ff4cc521d790ede8" @@ -1389,18 +575,6 @@ clone-deep@^0.3.0: kind-of "^3.2.2" shallow-clone "^0.1.2" -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@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -1411,14 +585,6 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -1431,46 +597,16 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -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.12.1, commander@^2.9.0, commander@~2.20.3: +commander@^2.9.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== -compare-func@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.2.tgz#99dd0ba457e1f9bc722b12c08ec33eeab31fa648" - integrity sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg= - dependencies: - array-ify "^1.0.0" - dot-prop "^3.0.0" - -component-emitter@^1.2.1: - 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== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" - integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.0.2" - typedarray "^0.0.6" - configstore@^3.0.0, configstore@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" @@ -1483,23 +619,6 @@ configstore@^3.0.0, configstore@^3.1.2: write-file-atomic "^2.0.0" xdg-basedir "^3.0.0" -configstore@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-4.0.0.tgz#5933311e95d3687efb592c528b922d9262d227e7" - integrity sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ== - dependencies: - dot-prop "^4.1.0" - graceful-fs "^4.1.2" - make-dir "^1.0.0" - unique-string "^1.0.0" - write-file-atomic "^2.0.0" - xdg-basedir "^3.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= - content-disposition@0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" @@ -1512,172 +631,6 @@ 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== -conventional-changelog-angular@^5.0.6: - version "5.0.6" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.6.tgz#269540c624553aded809c29a3508fdc2b544c059" - integrity sha512-QDEmLa+7qdhVIv8sFZfVxU1VSyVvnXPsxq8Vam49mKUcO1Z8VTLEJk9uI21uiJUsnmm0I4Hrsdc9TgkOQo9WSA== - dependencies: - compare-func "^1.3.1" - q "^1.5.1" - -conventional-changelog-atom@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-2.0.3.tgz#3bd14280aa09fe3ec49a0e8fe97b5002db02aad4" - integrity sha512-szZe2ut97qNO6vCCMkm1I/tWu6ol4Rr8a9Lx0y/VlpDnpY0PNp+oGpFgU55lplhx+I3Lro9Iv4/gRj0knfgjzg== - dependencies: - q "^1.5.1" - -conventional-changelog-codemirror@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.3.tgz#ebc088154684f8f5171446b8d546ba6b460d46f2" - integrity sha512-t2afackdgFV2yBdHhWPqrKbpaQeVnz2hSJKdWqjasPo5EpIB6TBL0er3cOP1mnGQmuzk9JSvimNSuqjWGDtU5Q== - dependencies: - q "^1.5.1" - -conventional-changelog-conventionalcommits@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.2.3.tgz#22855b32d57d0328951c1c2dc01b172a5f24ea37" - integrity sha512-atGa+R4vvEhb8N/8v3IoW59gCBJeeFiX6uIbPu876ENAmkMwsenyn0R21kdDHJFLQdy6zW4J6b4xN8KI3b9oww== - dependencies: - compare-func "^1.3.1" - lodash "^4.17.15" - q "^1.5.1" - -conventional-changelog-core@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-4.1.1.tgz#956f1a2fb476ef2f66c93f673ac040a4159de167" - integrity sha512-fBre5P6U9n914Da6Cj82vIfRU2DhTLGr1eDPXWA7AamxTpd4cd0jgdS7Aieas5Vn5WXOJNFRDNl6PrYLEonImg== - dependencies: - conventional-changelog-writer "^4.0.11" - conventional-commits-parser "^3.0.8" - dateformat "^3.0.0" - get-pkg-repo "^1.0.0" - git-raw-commits "2.0.0" - git-remote-origin-url "^2.0.0" - git-semver-tags "^3.0.1" - lodash "^4.17.15" - normalize-package-data "^2.3.5" - q "^1.5.1" - read-pkg "^3.0.0" - read-pkg-up "^3.0.0" - through2 "^3.0.0" - -conventional-changelog-ember@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-2.0.4.tgz#c29b78e4af7825cbecb6c3fd6086ca5c09471ac1" - integrity sha512-q1u73sO9uCnxN4TSw8xu6MRU8Y1h9kpwtcdJuNRwu/LSKI1IE/iuNSH5eQ6aLlQ3HTyrIpTfUuVybW4W0F17rA== - dependencies: - q "^1.5.1" - -conventional-changelog-eslint@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.4.tgz#8f4736a23e0cd97e890e76fccc287db2f205f2ff" - integrity sha512-CPwTUENzhLGl3auunrJxiIEWncAGaby7gOFCdj2gslIuOFJ0KPJVOUhRz4Da/I53sdo/7UncUJkiLg94jEsjxg== - dependencies: - q "^1.5.1" - -conventional-changelog-express@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-2.0.1.tgz#fea2231d99a5381b4e6badb0c1c40a41fcacb755" - integrity sha512-G6uCuCaQhLxdb4eEfAIHpcfcJ2+ao3hJkbLrw/jSK/eROeNfnxCJasaWdDAfFkxsbpzvQT4W01iSynU3OoPLIw== - dependencies: - q "^1.5.1" - -conventional-changelog-jquery@^3.0.6: - version "3.0.6" - resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.6.tgz#460236ad8fb1d29ff932a14fe4e3a45379b63c5e" - integrity sha512-gHAABCXUNA/HjnZEm+vxAfFPJkgtrZvCDIlCKfdPVXtCIo/Q0lN5VKpx8aR5p8KdVRQFF3OuTlvv5kv6iPuRqA== - dependencies: - q "^1.5.1" - -conventional-changelog-jshint@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.3.tgz#ef6e2caf2ee6ffdfda78fcdf7ce87cf6c512d728" - integrity sha512-Pc2PnMPcez634ckzr4EOWviwRSpZcURaK7bjyD9oK6N5fsC/a+3G7LW5m/JpcHPhA9ZxsfIbm7uqZ3ZDGsQ/sw== - dependencies: - compare-func "^1.3.1" - q "^1.5.1" - -conventional-changelog-preset-loader@^2.1.1, conventional-changelog-preset-loader@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.0.tgz#580fa8ab02cef22c24294d25e52d7ccd247a9a6a" - integrity sha512-/rHb32J2EJnEXeK4NpDgMaAVTFZS3o1ExmjKMtYVgIC4MQn0vkNSbYpdGRotkfGGRWiqk3Ri3FBkiZGbAfIfOQ== - -conventional-changelog-writer@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.11.tgz#9f56d2122d20c96eb48baae0bf1deffaed1edba4" - integrity sha512-g81GQOR392I+57Cw3IyP1f+f42ME6aEkbR+L7v1FBBWolB0xkjKTeCWVguzRrp6UiT1O6gBpJbEy2eq7AnV1rw== - dependencies: - compare-func "^1.3.1" - conventional-commits-filter "^2.0.2" - dateformat "^3.0.0" - handlebars "^4.4.0" - json-stringify-safe "^5.0.1" - lodash "^4.17.15" - meow "^5.0.0" - semver "^6.0.0" - split "^1.0.0" - through2 "^3.0.0" - -conventional-changelog@^3.1.8: - version "3.1.15" - resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-3.1.15.tgz#103d0b550436cf83e8a59ba88be82ece2613cd9f" - integrity sha512-CoWM+Z9bYyF00QzNpTnxkCLiuLAeRocJz3C/foFjvhsdltdtkJgMChp7GytQNjm4pT7JFBVJTpqLHTpxNtOzaA== - dependencies: - conventional-changelog-angular "^5.0.6" - conventional-changelog-atom "^2.0.3" - conventional-changelog-codemirror "^2.0.3" - conventional-changelog-conventionalcommits "^4.2.3" - conventional-changelog-core "^4.1.1" - conventional-changelog-ember "^2.0.4" - conventional-changelog-eslint "^3.0.4" - conventional-changelog-express "^2.0.1" - conventional-changelog-jquery "^3.0.6" - conventional-changelog-jshint "^2.0.3" - conventional-changelog-preset-loader "^2.3.0" - -conventional-commits-filter@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.2.tgz#f122f89fbcd5bb81e2af2fcac0254d062d1039c1" - integrity sha512-WpGKsMeXfs21m1zIw4s9H5sys2+9JccTzpN6toXtxhpw2VNF2JUXwIakthKBy+LN4DvJm+TzWhxOMWOs1OFCFQ== - dependencies: - lodash.ismatch "^4.4.0" - modify-values "^1.0.0" - -conventional-commits-parser@^3.0.3, conventional-commits-parser@^3.0.8: - version "3.0.8" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.0.8.tgz#23310a9bda6c93c874224375e72b09fb275fe710" - integrity sha512-YcBSGkZbYp7d+Cr3NWUeXbPDFUN6g3SaSIzOybi8bjHL5IJ5225OSCxJJ4LgziyEJ7AaJtE9L2/EU6H7Nt/DDQ== - dependencies: - JSONStream "^1.0.4" - is-text-path "^1.0.1" - lodash "^4.17.15" - meow "^5.0.0" - split2 "^2.0.0" - through2 "^3.0.0" - trim-off-newlines "^1.0.0" - -conventional-recommended-bump@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-5.0.1.tgz#5af63903947b6e089e77767601cb592cabb106ba" - integrity sha512-RVdt0elRcCxL90IrNP0fYCpq1uGt2MALko0eyeQ+zQuDVWtMGAy9ng6yYn3kax42lCj9+XBxQ8ZN6S9bdKxDhQ== - dependencies: - concat-stream "^2.0.0" - conventional-changelog-preset-loader "^2.1.1" - conventional-commits-filter "^2.0.2" - conventional-commits-parser "^3.0.3" - git-raw-commits "2.0.0" - git-semver-tags "^2.0.3" - meow "^4.0.0" - q "^1.5.1" - -convert-source-map@^1.4.0, convert-source-map@^1.5.1: - 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" - cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -1688,67 +641,16 @@ cookie@0.4.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== -copy-descriptor@^0.1.0: - version "0.1.1" - 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.11" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" - integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== - core-js@^3.2.0: version "3.4.8" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.4.8.tgz#e0fc0c61f2ef90cbc10c531dbffaa46dfb7152dd" integrity sha512-b+BBmCZmVgho8KnBUOXpvlqEMguko+0P+kXCwD4vIprsXC6ht1qgPxtb1OK6XgSlrySF71wkwBQ0Hv695bk9gQ== -core-util-is@1.0.2, core-util-is@~1.0.0: +core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cosmiconfig@5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -cosmiconfig@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-1.1.0.tgz#0dea0f9804efdfb929fbb1b188e25553ea053d37" - integrity sha1-DeoPmATv37kp+7GxiOJVU+oFPTc= - dependencies: - graceful-fs "^4.1.2" - js-yaml "^3.4.3" - minimist "^1.2.0" - object-assign "^4.0.1" - os-homedir "^1.0.1" - parse-json "^2.2.0" - pinkie-promise "^2.0.0" - require-from-string "^1.1.0" - -cpx@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/cpx/-/cpx-1.5.0.tgz#185be018511d87270dedccc293171e37655ab88f" - integrity sha1-GFvgGFEdhycN7czCkxceN2VauI8= - dependencies: - babel-runtime "^6.9.2" - chokidar "^1.6.0" - duplexer "^0.1.1" - glob "^7.0.5" - glob2base "^0.0.12" - minimatch "^3.0.2" - mkdirp "^0.5.1" - resolve "^1.1.7" - safe-buffer "^5.0.1" - shell-quote "^1.6.1" - subarg "^1.0.0" - 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" @@ -1781,18 +683,6 @@ crypto-random-string@^1.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" - integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== - dependencies: - cssom "0.3.x" - currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -1800,49 +690,16 @@ currently-unhandled@^0.4.1: dependencies: array-find-index "^1.0.1" -dargs@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" - integrity sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc= - dependencies: - number-is-nan "^1.0.0" - -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" - data-uri-to-buffer@1: version "1.2.0" resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz#77163ea9c20d8641b4707e8f18abdf9a78f34835" integrity sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ== -data-urls@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" - integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== - dependencies: - abab "^2.0.0" - whatwg-mimetype "^2.2.0" - whatwg-url "^7.0.0" - -date-fns@^1.27.2: - version "1.30.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" - integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== - dateformat@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" integrity sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI= -dateformat@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" - integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== - dateformat@~1.0.4-1.2.3: version "1.0.12" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" @@ -1856,7 +713,7 @@ debounce@^1.0.0: resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131" integrity sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg== -debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9, debug@~2.6.9: +debug@2, 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== @@ -1870,7 +727,7 @@ debug@3.1.0: dependencies: ms "2.0.0" -debug@4, debug@4.1.1, debug@^4.1.1: +debug@4, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== @@ -1884,31 +741,11 @@ debug@^3.1.0, debug@^3.2.5, debug@^3.2.6: dependencies: ms "^2.1.1" -decamelize-keys@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" - integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= - dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" - -decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: +decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -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.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: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" @@ -1919,25 +756,6 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -default-require-extensions@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" - integrity sha1-836hXT4T/9m0N9M+GnW1+5eHTLg= - dependencies: - strip-bom "^2.0.0" - -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= - dependencies: - clone "^1.0.2" - -defer-to-connect@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.1.tgz#88ae694b93f67b81815a2c8c769aef6574ac8f2f" - integrity sha512-J7thop4u3mRTkYRQ+Vpfwy2G5Ehoy82I14+14W4YMDLKdWloI9gSzRbV30s/NckQGVJtPkWNcW4oMAUigTdqiQ== - define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -1945,28 +763,6 @@ define-properties@^1.1.2, define-properties@^1.1.3: 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" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - degenerator@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-1.0.4.tgz#fcf490a37ece266464d9cc431ab98c5819ced095" @@ -1976,67 +772,17 @@ degenerator@^1.0.4: escodegen "1.x.x" esprima "3.x.x" -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= -deprecated-obj@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/deprecated-obj/-/deprecated-obj-1.0.1.tgz#d7051278d2c141dc672ac3410d06642e990003b7" - integrity sha512-igs766xNtF7Fv/R//gT644e6dr+bT6kJrg+qyJA9affCyvf70UUNKIUIMUSROBg1sPUrBnENPsDdDHcBLI5wFQ== - dependencies: - flat "^4.1.0" - lodash "^4.17.11" - -deprecation@^2.0.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" - integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== - destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -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-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-newline@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" - integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= - -detect-repo-changelog@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/detect-repo-changelog/-/detect-repo-changelog-1.0.1.tgz#c2108cbbf0964da7bc074645b6ad1d3b80a6bd6d" - integrity sha1-whCMu/CWTae8B0ZFtq0dO4CmvW0= - dependencies: - changelog-filename-regex "^1.1.0" - is-regular-file "^1.0.1" - lodash.find "^4.6.0" - pify "^2.3.0" - -diff@^3.1.0, diff@^3.2.0: +diff@^3.1.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== @@ -2046,13 +792,6 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.1.tgz#0c667cb467ebbb5cea7f14f135cc2dba7780a8ff" integrity sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q== -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" - dockerfile-ast@0.0.16: version "0.0.16" resolved "https://registry.yarnpkg.com/dockerfile-ast/-/dockerfile-ast-0.0.16.tgz#10b329d343329dab1de70375833495f85ad65913" @@ -2060,28 +799,6 @@ dockerfile-ast@0.0.16: dependencies: vscode-languageserver-types "^3.5.0" -doctrine@0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-0.7.2.tgz#7cb860359ba3be90e040b26b729ce4bfa654c523" - integrity sha1-fLhgNZujvpDgQLJrcpzkv6ZUxSM= - dependencies: - esutils "^1.1.6" - isarray "0.0.1" - -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== - dependencies: - webidl-conversions "^4.0.2" - -dot-prop@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" - integrity sha1-G3CK8JSknJoOfbyteQq6U52sEXc= - dependencies: - is-obj "^1.0.0" - dot-prop@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" @@ -2110,11 +827,6 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" 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= - dynamic-dedupe@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz#06e44c223f5e4e94d78ef9db23a6515ce2f962a1" @@ -2122,24 +834,11 @@ dynamic-dedupe@^0.3.0: dependencies: xtend "^4.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" - ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -elegant-spinner@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" - integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= - email-validator@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/email-validator/-/email-validator-2.0.4.tgz#b8dfaa5d0dae28f1b03c95881d904d4e40bfe7ed" @@ -2150,11 +849,6 @@ emoji-regex@^7.0.1: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -2167,7 +861,7 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" -error-ex@^1.2.0, error-ex@^1.3.1: +error-ex@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== @@ -2221,7 +915,7 @@ 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= -escodegen@1.x.x, escodegen@^1.9.1: +escodegen@1.x.x: version "1.12.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.0.tgz#f763daf840af172bb3a2b6dd7219c0e17f7ff541" integrity sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg== @@ -2248,11 +942,6 @@ estraverse@^4.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -esutils@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.1.6.tgz#c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375" - integrity sha1-wBzKqa5LiXxtDD4hCuUvPHqEQ3U= - esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -2263,13 +952,6 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -exec-sh@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36" - integrity sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw== - dependencies: - merge "^1.2.0" - execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" @@ -2296,55 +978,6 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -exit-hook@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" - integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= - -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@^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" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - 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" - -expect@^22.4.0: - version "22.4.3" - resolved "https://registry.yarnpkg.com/expect/-/expect-22.4.3.tgz#d5a29d0a0e1fb2153557caef2674d4547e914674" - integrity sha512-XcNXEPehqn8b/jm8FYotdX0YrXn36qp4HWlrVT4ktwQas1l1LPxiVWncYnnL2eyMtKAmVIaG0XAp0QlrqJaxaA== - dependencies: - ansi-styles "^3.2.0" - jest-diff "^22.4.3" - jest-get-type "^22.4.3" - jest-matcher-utils "^22.4.3" - jest-message-util "^22.4.3" - jest-regex-util "^22.4.3" - express@^4.16.4: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" @@ -2381,21 +1014,6 @@ express@^4.16.4: utils-merge "1.0.1" vary "~1.1.2" -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" @@ -2410,90 +1028,11 @@ external-editor@^3.0.3: 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" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -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@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/faker/-/faker-4.1.0.tgz#1e45bbbecc6774b3c195fad2835109c6d748cc3f" - integrity sha1-HkW7vsxndLPBlfrSg1EJxtdIzD8= - -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= - -fast-glob@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.1.1.tgz#87ee30e9e9f3eb40d6f254a7997655da753d7c82" - integrity sha512-nTCREpBY8w8r+boyFYAx21iL6faSsQynliPHM4Uf56SbkyohCNxpVPEH9xrF5TXKy+IsjkPUHDKiUkzBVRXn9g== - 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" - -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-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= -fastq@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.6.0.tgz#4ec8a38f4ac25f21492673adb7eae9cfef47d1c2" - integrity sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA== - dependencies: - reusify "^1.0.0" - -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" - -figures@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" @@ -2501,31 +1040,11 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -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== - dependencies: - escape-string-regexp "^1.0.5" - file-uri-to-path@1: 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== -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= - -fileset@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" - integrity sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA= - dependencies: - glob "^7.0.3" - minimatch "^3.0.3" - filewatcher@~3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/filewatcher/-/filewatcher-3.0.1.tgz#f4a1957355ddaf443ccd78a895f3d55e23c8a034" @@ -2533,34 +1052,6 @@ filewatcher@~3.0.0: dependencies: debounce "^1.0.0" -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" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.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" @@ -2574,24 +1065,6 @@ finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-index@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" - integrity sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ= - -find-parent-dir@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54" - integrity sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ= - -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-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -2600,37 +1073,16 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.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= - dependencies: - locate-path "^2.0.0" - -flat@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" - integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== - dependencies: - is-buffer "~2.0.3" - for-in@^0.1.3: version "0.1.8" resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= -for-in@^1.0.1, for-in@^1.0.2: +for-in@^1.0.1: 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= - dependencies: - for-in "^1.0.1" - for-own@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" @@ -2638,41 +1090,11 @@ for-own@^1.0.0: dependencies: for-in "^1.0.1" -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -form-data@2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" - integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" @@ -2683,35 +1105,11 @@ fs-constants@^1.0.0: resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-extra@4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - fs.realpath@^1.0.0: version "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.3: - version "1.2.9" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" - integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== - dependencies: - nan "^2.12.1" - node-pre-gyp "^0.12.0" - ftp@~0.3.10: version "0.3.10" resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" @@ -2725,36 +1123,6 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -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== - -get-pkg-repo@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" - integrity sha1-xztInAbYDMVTbCyFP54FIyBWly0= - dependencies: - hosted-git-info "^2.1.4" - meow "^3.3.0" - normalize-package-data "^2.3.0" - parse-github-repo-url "^1.3.0" - through2 "^2.0.0" - get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" @@ -2765,20 +1133,13 @@ get-stream@^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.1.0: +get-stream@^4.0.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.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" - integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== - dependencies: - pump "^3.0.0" - get-uri@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-2.0.4.tgz#d4937ab819e218d4cb5ae18e4f5962bef169cc6a" @@ -2791,53 +1152,6 @@ get-uri@^2.0.0: ftp "~0.3.10" readable-stream "2" -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= - -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: - assert-plus "^1.0.0" - -git-raw-commits@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.0.tgz#d92addf74440c14bcc5c83ecce3fb7f8a79118b5" - integrity sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg== - dependencies: - dargs "^4.0.1" - lodash.template "^4.0.2" - meow "^4.0.0" - split2 "^2.0.0" - through2 "^2.0.0" - -git-remote-origin-url@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" - integrity sha1-UoJlna4hBxRaERJhEq0yFuxfpl8= - dependencies: - gitconfiglocal "^1.0.0" - pify "^2.3.0" - -git-semver-tags@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-2.0.3.tgz#48988a718acf593800f99622a952a77c405bfa34" - integrity sha512-tj4FD4ww2RX2ae//jSrXZzrocla9db5h0V7ikPl1P/WwoZar9epdUhwR7XHXSgc+ZkNq72BEEerqQuicoEQfzA== - dependencies: - meow "^4.0.0" - semver "^6.0.0" - -git-semver-tags@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-3.0.1.tgz#9cb9e4974437de1f71f32da3bfe74f4d35afb1b9" - integrity sha512-Hzd1MOHXouITfCasrpVJbRDg9uvW7LfABk3GQmXYZByerBDrfrEMP9HXpNT7RxAbieiocP6u+xq20DkvjwxnCA== - dependencies: - meow "^5.0.0" - semver "^6.0.0" - git-up@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.1.tgz#cb2ef086653640e721d2042fe3104857d89007c0" @@ -2853,43 +1167,7 @@ git-url-parse@11.1.2: dependencies: git-up "^4.0.0" -gitconfiglocal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" - integrity sha1-QdBF84UaXqiPA/JMocYXgRRGS5s= - dependencies: - ini "^1.3.2" - -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= - dependencies: - glob-parent "^2.0.0" - is-glob "^2.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= - dependencies: - is-glob "^2.0.0" - -glob-parent@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" - integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== - dependencies: - is-glob "^4.0.1" - -glob2base@^0.0.12: - version "0.0.12" - resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" - integrity sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY= - dependencies: - find-index "^0.1.1" - -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: +glob@^7.1.3: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -2908,42 +1186,6 @@ global-dirs@^0.1.0: dependencies: ini "^1.3.4" -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@10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.1.tgz#4782c34cb75dd683351335c5829cc3420e606b22" - integrity sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A== - dependencies: - "@types/glob" "^7.1.1" - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.0.3" - glob "^7.1.3" - ignore "^5.1.1" - merge2 "^1.2.3" - slash "^3.0.0" - -got@9.6.0, 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" - got@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" @@ -2961,7 +1203,7 @@ got@^6.7.1: unzip-response "^2.0.1" url-parse-lax "^1.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: +graceful-fs@^4.1.11, graceful-fs@^4.1.2: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== @@ -2978,30 +1220,6 @@ growly@^1.3.0: resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= -handlebars@^4.0.3, handlebars@^4.4.0: - version "4.5.3" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.3.tgz#5cf75bd8714f7605713511a56be7c349becb0482" - integrity sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA== - dependencies: - neo-async "^2.6.0" - optimist "^0.6.1" - source-map "^0.6.1" - optionalDependencies: - uglify-js "^3.1.4" - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.0: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== - dependencies: - ajv "^6.5.5" - har-schema "^2.0.0" - has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -3009,67 +1227,16 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - 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-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-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - 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.1, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -3077,31 +1244,11 @@ has@^1.0.1, has@^1.0.3: dependencies: function-bind "^1.1.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" - hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: version "2.8.5" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c" integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg== -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== - dependencies: - whatwg-encoding "^1.0.1" - -http-cache-semantics@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz#495704773277eeef6e43f9ab2c2c7d259dda25c5" - integrity sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew== - http-errors@1.7.2: version "1.7.2" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" @@ -3132,15 +1279,6 @@ http-proxy-agent@^2.1.0: agent-base "4" debug "3.1.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: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - https-proxy-agent@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz#b8c286433e87602311b01c8ea34413d856a4af81" @@ -3149,16 +1287,6 @@ https-proxy-agent@^3.0.0: agent-base "^4.3.0" debug "^3.1.0" -husky@^0.13.4: - version "0.13.4" - resolved "https://registry.yarnpkg.com/husky/-/husky-0.13.4.tgz#48785c5028de3452a51c48c12c4f94b2124a1407" - integrity sha1-SHhcUCjeNFKlHEjBLE+UshJKFAc= - dependencies: - chalk "^1.1.3" - find-parent-dir "^0.3.0" - is-ci "^1.0.9" - normalize-path "^1.0.0" - iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -3166,58 +1294,16 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: dependencies: safer-buffer ">= 2.1.2 < 3" -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - -ignore@^5.1.1: - version "5.1.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" - integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== - immediate@~3.0.5: version "3.0.6" resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= -import-cwd@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-3.0.0.tgz#20845547718015126ea9b3676b7592fb8bd4cf92" - integrity sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg== - dependencies: - import-from "^3.0.0" - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - -import-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" - integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== - dependencies: - resolve-from "^5.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@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" - integrity sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ== - dependencies: - pkg-dir "^2.0.0" - resolve-cwd "^2.0.0" - imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -3230,11 +1316,6 @@ indent-string@^2.1.0: dependencies: repeating "^2.0.0" -indent-string@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -3243,7 +1324,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.3, 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== @@ -3253,30 +1334,11 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.0, ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: +ini@^1.3.0, ini@^1.3.4, 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.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.0.tgz#9e2b032dde77da1db5db804758b8fea3a970519a" - integrity sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ== - dependencies: - ansi-escapes "^4.2.1" - chalk "^2.4.2" - cli-cursor "^3.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.15" - mute-stream "0.0.8" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^4.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - inquirer@^6.2.2: version "6.5.2" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" @@ -3296,28 +1358,11 @@ inquirer@^6.2.2: strip-ansi "^5.1.0" through "^2.3.6" -interpret@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== - -invariant@^2.2.2: - 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= -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.5, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -3328,137 +1373,38 @@ ipaddr.js@1.9.0: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - is-buffer@^1.0.2, is-buffer@^1.1.5: 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.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: version "1.1.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== -is-ci@2.0.0, 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-ci@^1.0.10, is-ci@^1.0.9: +is-ci@^1.0.10: version "1.2.1" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== dependencies: ci-info "^1.5.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" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - is-date-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - -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-extendable@^0.1.0, is-extendable@^0.1.1: +is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - 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.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" @@ -3478,30 +1424,6 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" - integrity sha1-lp1J4bszKfa7fwkIm+JleLLd1Go= - -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-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.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" @@ -3510,45 +1432,11 @@ is-installed-globally@^0.1.0: global-dirs "^0.1.0" is-path-inside "^1.0.0" -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - is-npm@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= -is-npm@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-3.0.0.tgz#ec9147bfb629c43f494cf67936a961edec7e8053" - integrity sha512-wsigDr1Kkschp2opC4G3yA6r9EgVA6NjRpWzIi9axXqeIaAATPRJc4uLujXe3Nd9uO8KoDyA4MD6aZSeXTADhA== - -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-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - 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-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" @@ -3561,35 +1449,13 @@ is-path-inside@^1.0.0: dependencies: path-is-inside "^1.0.1" -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.1: 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-plain-object@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.0.tgz#47bfc5da1b5d50d64110806c199359482e75a928" - integrity sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg== - dependencies: - isobject "^4.0.0" - -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-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-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" @@ -3607,11 +1473,6 @@ is-regex@^1.0.4: dependencies: has "^1.0.1" -is-regular-file@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-regular-file/-/is-regular-file-1.1.1.tgz#ffcf9cae56ec63bc55b17d6fed1af441986dab66" - integrity sha512-+1U3MZrVwC4HM6VUKk3L5fiHtNd2d9kayzEJhmQ+B+uIBPE/p8Fy8QVdkx0HIr3o9J5TOKJY40eI5GfTfBqbdA== - is-retry-allowed@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" @@ -3636,44 +1497,22 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.1" -is-text-path@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" - integrity sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4= - dependencies: - text-extensions "^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= - is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - is-wsl@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= -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" integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= -isarray@1.0.0, isarray@~1.0.0: +isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -3683,397 +1522,12 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: +isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -isobject@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" - integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== - -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-api@^1.1.14: - version "1.3.7" - resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.7.tgz#a86c770d2b03e11e3f778cd7aedd82d2722092aa" - integrity sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA== - dependencies: - async "^2.1.4" - fileset "^2.0.2" - istanbul-lib-coverage "^1.2.1" - istanbul-lib-hook "^1.2.2" - istanbul-lib-instrument "^1.10.2" - istanbul-lib-report "^1.1.5" - istanbul-lib-source-maps "^1.2.6" - istanbul-reports "^1.5.1" - js-yaml "^3.7.0" - mkdirp "^0.5.1" - once "^1.4.0" - -istanbul-lib-coverage@^1.1.1, istanbul-lib-coverage@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0" - integrity sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ== - -istanbul-lib-hook@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz#bc6bf07f12a641fbf1c85391d0daa8f0aea6bf86" - integrity sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw== - dependencies: - append-transform "^0.4.0" - -istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.10.2, istanbul-lib-instrument@^1.8.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz#1f55ed10ac3c47f2bdddd5307935126754d0a9ca" - integrity sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A== - dependencies: - babel-generator "^6.18.0" - babel-template "^6.16.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - babylon "^6.18.0" - istanbul-lib-coverage "^1.2.1" - semver "^5.3.0" - -istanbul-lib-report@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz#f2a657fc6282f96170aaf281eb30a458f7f4170c" - integrity sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw== - dependencies: - istanbul-lib-coverage "^1.2.1" - mkdirp "^0.5.1" - path-parse "^1.0.5" - supports-color "^3.1.2" - -istanbul-lib-source-maps@^1.2.1, istanbul-lib-source-maps@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz#37b9ff661580f8fca11232752ee42e08c6675d8f" - integrity sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg== - dependencies: - debug "^3.1.0" - istanbul-lib-coverage "^1.2.1" - mkdirp "^0.5.1" - rimraf "^2.6.1" - source-map "^0.5.3" - -istanbul-reports@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.5.1.tgz#97e4dbf3b515e8c484caea15d6524eebd3ff4e1a" - integrity sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw== - dependencies: - handlebars "^4.0.3" - -jest-changed-files@^22.2.0: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-22.4.3.tgz#8882181e022c38bd46a2e4d18d44d19d90a90fb2" - integrity sha512-83Dh0w1aSkUNFhy5d2dvqWxi/y6weDwVVLU6vmK0cV9VpRxPzhTeGimbsbRDSnEoszhF937M4sDLLeS7Cu/Tmw== - dependencies: - throat "^4.0.0" - -jest-cli@^22.0.4: - version "22.4.4" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-22.4.4.tgz#68cd2a2aae983adb1e6638248ca21082fd6d9e90" - integrity sha512-I9dsgkeyjVEEZj9wrGrqlH+8OlNob9Iptyl+6L5+ToOLJmHm4JwOPatin1b2Bzp5R5YRQJ+oiedx7o1H7wJzhA== - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.1" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.1.11" - import-local "^1.0.0" - is-ci "^1.0.10" - istanbul-api "^1.1.14" - istanbul-lib-coverage "^1.1.1" - istanbul-lib-instrument "^1.8.0" - istanbul-lib-source-maps "^1.2.1" - jest-changed-files "^22.2.0" - jest-config "^22.4.4" - jest-environment-jsdom "^22.4.1" - jest-get-type "^22.1.0" - jest-haste-map "^22.4.2" - jest-message-util "^22.4.0" - jest-regex-util "^22.1.0" - jest-resolve-dependencies "^22.1.0" - jest-runner "^22.4.4" - jest-runtime "^22.4.4" - jest-snapshot "^22.4.0" - jest-util "^22.4.1" - jest-validate "^22.4.4" - jest-worker "^22.2.2" - micromatch "^2.3.11" - node-notifier "^5.2.1" - realpath-native "^1.0.0" - rimraf "^2.5.4" - slash "^1.0.0" - string-length "^2.0.0" - strip-ansi "^4.0.0" - which "^1.2.12" - yargs "^10.0.3" - -jest-config@^22.0.1, jest-config@^22.4.4: - version "22.4.4" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-22.4.4.tgz#72a521188720597169cd8b4ff86934ef5752d86a" - integrity sha512-9CKfo1GC4zrXSoMLcNeDvQBfgtqGTB1uP8iDIZ97oB26RCUb886KkKWhVcpyxVDOUxbhN+uzcBCeFe7w+Iem4A== - dependencies: - chalk "^2.0.1" - glob "^7.1.1" - jest-environment-jsdom "^22.4.1" - jest-environment-node "^22.4.1" - jest-get-type "^22.1.0" - jest-jasmine2 "^22.4.4" - jest-regex-util "^22.1.0" - jest-resolve "^22.4.2" - jest-util "^22.4.1" - jest-validate "^22.4.4" - pretty-format "^22.4.0" - -jest-diff@^22.4.0, jest-diff@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-22.4.3.tgz#e18cc3feff0aeef159d02310f2686d4065378030" - integrity sha512-/QqGvCDP5oZOF6PebDuLwrB2BMD8ffJv6TAGAdEVuDx1+uEgrHpSFrfrOiMRx2eJ1hgNjlQrOQEHetVwij90KA== - dependencies: - chalk "^2.0.1" - diff "^3.2.0" - jest-get-type "^22.4.3" - pretty-format "^22.4.3" - -jest-docblock@^22.4.0, jest-docblock@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-22.4.3.tgz#50886f132b42b280c903c592373bb6e93bb68b19" - integrity sha512-uPKBEAw7YrEMcXueMKZXn/rbMxBiSv48fSqy3uEnmgOlQhSX+lthBqHb1fKWNVmFqAp9E/RsSdBfiV31LbzaOg== - dependencies: - detect-newline "^2.1.0" - -jest-environment-jsdom@^22.4.1: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-22.4.3.tgz#d67daa4155e33516aecdd35afd82d4abf0fa8a1e" - integrity sha512-FviwfR+VyT3Datf13+ULjIMO5CSeajlayhhYQwpzgunswoaLIPutdbrnfUHEMyJCwvqQFaVtTmn9+Y8WCt6n1w== - dependencies: - jest-mock "^22.4.3" - jest-util "^22.4.3" - jsdom "^11.5.1" - -jest-environment-node@^22.4.1: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-22.4.3.tgz#54c4eaa374c83dd52a9da8759be14ebe1d0b9129" - integrity sha512-reZl8XF6t/lMEuPWwo9OLfttyC26A5AMgDyEQ6DBgZuyfyeNUzYT8BFo6uxCCP/Av/b7eb9fTi3sIHFPBzmlRA== - dependencies: - jest-mock "^22.4.3" - jest-util "^22.4.3" - -jest-get-type@^22.1.0, jest-get-type@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" - integrity sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w== - -jest-haste-map@^22.4.2: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-22.4.3.tgz#25842fa2ba350200767ac27f658d58b9d5c2e20b" - integrity sha512-4Q9fjzuPVwnaqGKDpIsCSoTSnG3cteyk2oNVjBX12HHOaF1oxql+uUiqZb5Ndu7g/vTZfdNwwy4WwYogLh29DQ== - dependencies: - fb-watchman "^2.0.0" - graceful-fs "^4.1.11" - jest-docblock "^22.4.3" - jest-serializer "^22.4.3" - jest-worker "^22.4.3" - micromatch "^2.3.11" - sane "^2.0.0" - -jest-jasmine2@^22.4.4: - version "22.4.4" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-22.4.4.tgz#c55f92c961a141f693f869f5f081a79a10d24e23" - integrity sha512-nK3vdUl50MuH7vj/8at7EQVjPGWCi3d5+6aCi7Gxy/XMWdOdbH1qtO/LjKbqD8+8dUAEH+BVVh7HkjpCWC1CSw== - dependencies: - chalk "^2.0.1" - co "^4.6.0" - expect "^22.4.0" - graceful-fs "^4.1.11" - is-generator-fn "^1.0.0" - jest-diff "^22.4.0" - jest-matcher-utils "^22.4.0" - jest-message-util "^22.4.0" - jest-snapshot "^22.4.0" - jest-util "^22.4.1" - source-map-support "^0.5.0" - -jest-leak-detector@^22.4.0: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-22.4.3.tgz#2b7b263103afae8c52b6b91241a2de40117e5b35" - integrity sha512-NZpR/Ls7+ndO57LuXROdgCGz2RmUdC541tTImL9bdUtU3WadgFGm0yV+Ok4Fuia/1rLAn5KaJ+i76L6e3zGJYQ== - dependencies: - pretty-format "^22.4.3" - -jest-matcher-utils@^22.4.0, jest-matcher-utils@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz#4632fe428ebc73ebc194d3c7b65d37b161f710ff" - integrity sha512-lsEHVaTnKzdAPR5t4B6OcxXo9Vy4K+kRRbG5gtddY8lBEC+Mlpvm1CJcsMESRjzUhzkz568exMV1hTB76nAKbA== - dependencies: - chalk "^2.0.1" - jest-get-type "^22.4.3" - pretty-format "^22.4.3" - -jest-message-util@^22.4.0, jest-message-util@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-22.4.3.tgz#cf3d38aafe4befddbfc455e57d65d5239e399eb7" - integrity sha512-iAMeKxhB3Se5xkSjU0NndLLCHtP4n+GtCqV0bISKA5dmOXQfEbdEmYiu2qpnWBDCQdEafNDDU6Q+l6oBMd/+BA== - dependencies: - "@babel/code-frame" "^7.0.0-beta.35" - chalk "^2.0.1" - micromatch "^2.3.11" - slash "^1.0.0" - stack-utils "^1.0.1" - -jest-mock@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-22.4.3.tgz#f63ba2f07a1511772cdc7979733397df770aabc7" - integrity sha512-+4R6mH5M1G4NK16CKg9N1DtCaFmuxhcIqF4lQK/Q1CIotqMs/XBemfpDPeVZBFow6iyUNu6EBT9ugdNOTT5o5Q== - -jest-regex-util@^22.1.0, jest-regex-util@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-22.4.3.tgz#a826eb191cdf22502198c5401a1fc04de9cef5af" - integrity sha512-LFg1gWr3QinIjb8j833bq7jtQopiwdAs67OGfkPrvy7uNUbVMfTXXcOKXJaeY5GgjobELkKvKENqq1xrUectWg== - -jest-resolve-dependencies@^22.1.0: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-22.4.3.tgz#e2256a5a846732dc3969cb72f3c9ad7725a8195e" - integrity sha512-06czCMVToSN8F2U4EvgSB1Bv/56gc7MpCftZ9z9fBgUQM7dzHGCMBsyfVA6dZTx8v0FDcnALf7hupeQxaBCvpA== - dependencies: - jest-regex-util "^22.4.3" - -jest-resolve@^22.4.2: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-22.4.3.tgz#0ce9d438c8438229aa9b916968ec6b05c1abb4ea" - integrity sha512-u3BkD/MQBmwrOJDzDIaxpyqTxYH+XqAXzVJP51gt29H8jpj3QgKof5GGO2uPGKGeA1yTMlpbMs1gIQ6U4vcRhw== - dependencies: - browser-resolve "^1.11.2" - chalk "^2.0.1" - -jest-runner@^22.4.4: - version "22.4.4" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-22.4.4.tgz#dfca7b7553e0fa617e7b1291aeb7ce83e540a907" - integrity sha512-5S/OpB51igQW9xnkM5Tgd/7ZjiAuIoiJAVtvVTBcEBiXBIFzWM3BAMPBM19FX68gRV0KWyFuGKj0EY3M3aceeQ== - dependencies: - exit "^0.1.2" - jest-config "^22.4.4" - jest-docblock "^22.4.0" - jest-haste-map "^22.4.2" - jest-jasmine2 "^22.4.4" - jest-leak-detector "^22.4.0" - jest-message-util "^22.4.0" - jest-runtime "^22.4.4" - jest-util "^22.4.1" - jest-worker "^22.2.2" - throat "^4.0.0" - -jest-runtime@^22.4.4: - version "22.4.4" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-22.4.4.tgz#9ba7792fc75582a5be0f79af6f8fe8adea314048" - integrity sha512-WRTj9m///npte1YjuphCYX7GRY/c2YvJImU9t7qOwFcqHr4YMzmX6evP/3Sehz5DKW2Vi8ONYPCFWe36JVXxfw== - dependencies: - babel-core "^6.0.0" - babel-jest "^22.4.4" - babel-plugin-istanbul "^4.1.5" - chalk "^2.0.1" - convert-source-map "^1.4.0" - exit "^0.1.2" - graceful-fs "^4.1.11" - jest-config "^22.4.4" - jest-haste-map "^22.4.2" - jest-regex-util "^22.1.0" - jest-resolve "^22.4.2" - jest-util "^22.4.1" - jest-validate "^22.4.4" - json-stable-stringify "^1.0.1" - micromatch "^2.3.11" - realpath-native "^1.0.0" - slash "^1.0.0" - strip-bom "3.0.0" - write-file-atomic "^2.1.0" - yargs "^10.0.3" - -jest-serializer@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-22.4.3.tgz#a679b81a7f111e4766235f4f0c46d230ee0f7436" - integrity sha512-uPaUAppx4VUfJ0QDerpNdF43F68eqKWCzzhUlKNDsUPhjOon7ZehR4C809GCqh765FoMRtTVUVnGvIoskkYHiw== - -jest-snapshot@^22.4.0: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-22.4.3.tgz#b5c9b42846ffb9faccb76b841315ba67887362d2" - integrity sha512-JXA0gVs5YL0HtLDCGa9YxcmmV2LZbwJ+0MfyXBBc5qpgkEYITQFJP7XNhcHFbUvRiniRpRbGVfJrOoYhhGE0RQ== - dependencies: - chalk "^2.0.1" - jest-diff "^22.4.3" - jest-matcher-utils "^22.4.3" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - pretty-format "^22.4.3" - -jest-util@^22.4.1, jest-util@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-22.4.3.tgz#c70fec8eec487c37b10b0809dc064a7ecf6aafac" - integrity sha512-rfDfG8wyC5pDPNdcnAlZgwKnzHvZDu8Td2NJI/jAGKEGxJPYiE4F0ss/gSAkG4778Y23Hvbz+0GMrDJTeo7RjQ== - dependencies: - callsites "^2.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.11" - is-ci "^1.0.10" - jest-message-util "^22.4.3" - mkdirp "^0.5.1" - source-map "^0.6.0" - -jest-validate@^22.4.4: - version "22.4.4" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-22.4.4.tgz#1dd0b616ef46c995de61810d85f57119dbbcec4d" - integrity sha512-dmlf4CIZRGvkaVg3fa0uetepcua44DHtktHm6rcoNVtYlpwe6fEJRkMFsaUVcFHLzbuBJ2cPw9Gl9TKfnzMVwg== - dependencies: - chalk "^2.0.1" - jest-config "^22.4.4" - jest-get-type "^22.1.0" - leven "^2.1.0" - pretty-format "^22.4.0" - -jest-worker@^22.2.2, jest-worker@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-22.4.3.tgz#5c421417cba1c0abf64bf56bd5fb7968d79dd40b" - integrity sha512-B1ucW4fI8qVAuZmicFxI1R3kr2fNeYJyvIQ1rKcuLYnenFV5K5aMbxFj6J0i00Ju83S8jP2d7Dz14+AvbIHRYQ== - dependencies: - merge-stream "^1.0.1" - -jest@22.0.4: - version "22.0.4" - resolved "https://registry.yarnpkg.com/jest/-/jest-22.0.4.tgz#d3cf560ece6b825b115dce80b9826ceb40f87961" - integrity sha512-S0tmgK5psULvt/11QzgAZWGpY5y5TkMRzd3T21Q13JzTx37Vx6F0Nw022c9Kc/IbEy+AHkKkGFVO5QafE8MrDg== - dependencies: - jest-cli "^22.0.4" - -jquery@^3.1.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2" - integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-tokens@^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= - -js-yaml@^3.13.1, js-yaml@^3.4.3, js-yaml@^3.7.0: +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== @@ -4081,112 +1535,6 @@ js-yaml@^3.13.1, js-yaml@^3.4.3, js-yaml@^3.7.0: argparse "^1.0.7" esprima "^4.0.0" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsdom@^11.5.1: - version "11.12.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" - integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== - dependencies: - abab "^2.0.0" - acorn "^5.5.3" - acorn-globals "^4.1.0" - array-equal "^1.0.0" - cssom ">= 0.3.2 < 0.4.0" - cssstyle "^1.0.0" - data-urls "^1.0.0" - domexception "^1.0.1" - escodegen "^1.9.1" - html-encoding-sniffer "^1.0.2" - left-pad "^1.3.0" - nwsapi "^2.0.7" - parse5 "4.0.0" - pn "^1.1.0" - request "^2.87.0" - request-promise-native "^1.0.5" - sax "^1.2.4" - symbol-tree "^3.2.2" - tough-cookie "^2.3.4" - w3c-hr-time "^1.0.1" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.3" - whatwg-mimetype "^2.1.0" - whatwg-url "^6.4.1" - ws "^5.2.0" - xml-name-validator "^3.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= - -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-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema@0.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@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= - dependencies: - jsonify "~0.0.0" - -json-stringify-safe@^5.0.1, 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= - -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= - -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" - jszip@^3.1.5: version "3.2.2" resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.2.2.tgz#b143816df7e106a9597a94c77493385adca5bd1d" @@ -4202,13 +1550,6 @@ kareem@2.3.1: resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.3.1.tgz#def12d9c941017fabfb00f873af95e9c99e1be87" integrity sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw== -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" - kind-of@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" @@ -4216,30 +1557,13 @@ kind-of@^2.0.1: dependencies: is-buffer "^1.0.2" -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0, kind-of@^3.2.2: +kind-of@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= dependencies: is-buffer "^1.1.5" -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - 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== - latest-version@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" @@ -4247,13 +1571,6 @@ latest-version@^3.0.0: dependencies: package-json "^4.0.0" -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@^0.2.3: version "0.2.7" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" @@ -4266,23 +1583,6 @@ lcid@^1.0.0: dependencies: invert-kv "^1.0.0" -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - -left-pad@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" - integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== - -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: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -4298,72 +1598,6 @@ lie@~3.3.0: dependencies: immediate "~3.0.5" -lint-staged@^3.6.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-3.6.1.tgz#24423c8b7bd99d96e15acd1ac8cb392a78e58582" - integrity sha1-JEI8i3vZnZbhWs0ayMs5KnjlhYI= - dependencies: - app-root-path "^2.0.0" - cosmiconfig "^1.1.0" - execa "^0.7.0" - listr "^0.12.0" - lodash.chunk "^4.2.0" - minimatch "^3.0.0" - npm-which "^3.0.1" - p-map "^1.1.1" - staged-git-files "0.0.4" - -listr-silent-renderer@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" - integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= - -listr-update-renderer@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.2.0.tgz#ca80e1779b4e70266807e8eed1ad6abe398550f9" - integrity sha1-yoDhd5tOcCZoB+ju0a1qvjmFUPk= - dependencies: - chalk "^1.1.3" - cli-truncate "^0.2.1" - elegant-spinner "^1.0.1" - figures "^1.7.0" - indent-string "^3.0.0" - log-symbols "^1.0.2" - log-update "^1.0.2" - strip-ansi "^3.0.1" - -listr-verbose-renderer@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#8206f4cf6d52ddc5827e5fd14989e0e965933a35" - integrity sha1-ggb0z21S3cWCfl/RSYng6WWTOjU= - dependencies: - chalk "^1.1.3" - cli-cursor "^1.0.2" - date-fns "^1.27.2" - figures "^1.7.0" - -listr@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/listr/-/listr-0.12.0.tgz#6bce2c0f5603fa49580ea17cd6a00cc0e5fa451a" - integrity sha1-a84sD1YD+klYDqF81qAMwOX6RRo= - dependencies: - chalk "^1.1.3" - cli-truncate "^0.2.1" - figures "^1.7.0" - indent-string "^2.1.0" - is-promise "^2.1.0" - is-stream "^1.1.0" - listr-silent-renderer "^1.1.1" - listr-update-renderer "^0.2.0" - listr-verbose-renderer "^0.4.0" - log-symbols "^1.0.2" - log-update "^1.0.2" - ora "^0.2.3" - p-map "^1.1.1" - rxjs "^5.0.0-beta.11" - stream-to-observable "^0.1.0" - strip-ansi "^3.0.1" - 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" @@ -4375,36 +1609,6 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -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._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= - lodash.assign@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" @@ -4415,11 +1619,6 @@ lodash.assignin@^4.2.0: resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2" integrity sha1-uo31+4QesKPoBEIysOJjqNxqKKI= -lodash.chunk@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.chunk/-/lodash.chunk-4.2.0.tgz#66e5ce1f76ed27b4303d8c6512e8d1216e8106bc" - integrity sha1-ZuXOH3btJ7QwPYxlEujRIW6BBrw= - lodash.clone@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" @@ -4430,11 +1629,6 @@ lodash.clonedeep@^4.3.0, lodash.clonedeep@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= -lodash.find@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.find/-/lodash.find-4.6.0.tgz#cb0704d47ab71789ffa0de8b97dd926fb88b13b1" - integrity sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E= - lodash.flatten@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" @@ -4445,75 +1639,16 @@ lodash.get@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= -lodash.ismatch@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" - integrity sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc= - lodash.set@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM= -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.template@^4.0.2: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - -lodash@4.17.15, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.7.14: +lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.7.14: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== -log-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" - integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= - dependencies: - chalk "^1.0.0" - -log-symbols@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" - integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== - dependencies: - chalk "^2.4.2" - -log-update@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1" - integrity sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE= - dependencies: - ansi-escapes "^1.0.0" - cli-cursor "^1.0.2" - -loose-envify@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - loud-rejection@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" @@ -4522,16 +1657,11 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: +lowercase-keys@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== -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@^4.0.0, lru-cache@^4.0.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" @@ -4564,68 +1694,16 @@ make-error@^1.1.1: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= - dependencies: - tmpl "1.0.x" - -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== - dependencies: - p-defer "^1.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - map-obj@^1.0.0, map-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= -map-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" - integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - 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== - 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@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= - dependencies: - mimic-fn "^1.0.0" - -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== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - memory-pager@^1.0.2: version "1.5.0" resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5" @@ -4647,109 +1725,16 @@ meow@^3.3.0: redent "^1.0.0" trim-newlines "^1.0.0" -meow@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/meow/-/meow-4.0.1.tgz#d48598f6f4b1472f35bf6317a95945ace347f975" - integrity sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A== - dependencies: - camelcase-keys "^4.0.0" - decamelize-keys "^1.0.0" - loud-rejection "^1.0.0" - minimist "^1.1.3" - minimist-options "^3.0.1" - normalize-package-data "^2.3.4" - read-pkg-up "^3.0.0" - redent "^2.0.0" - trim-newlines "^2.0.0" - -meow@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" - integrity sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig== - dependencies: - camelcase-keys "^4.0.0" - decamelize-keys "^1.0.0" - loud-rejection "^1.0.0" - minimist-options "^3.0.1" - normalize-package-data "^2.3.4" - read-pkg-up "^3.0.0" - redent "^2.0.0" - trim-newlines "^2.0.0" - yargs-parser "^10.0.0" - 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@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" - integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= - dependencies: - readable-stream "^2.0.1" - -merge2@^1.2.3, merge2@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" - integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== - -merge@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" - integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== - 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, micromatch@^2.3.11: - 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.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== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -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" - migrate@^1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/migrate/-/migrate-1.6.2.tgz#8970d596780553fe9f545bdf83806df8473f025b" @@ -4764,24 +1749,12 @@ migrate@^1.6.2: mkdirp "^0.5.1" slug "^0.9.2" -mime-db@1.40.0: - 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.42.0: version "1.42.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== -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== - dependencies: - mime-db "1.40.0" - -mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: +mime-types@~2.1.24: version "2.1.25" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.25.tgz#39772d46621f93e2a80a856c53b86a62156a6437" integrity sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg== @@ -4798,69 +1771,23 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -mimic-fn@^2.0.0, 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.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: +minimatch@^3.0.3, 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-options@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" - integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: +minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= - -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - mixin-object@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" @@ -4869,18 +1796,13 @@ mixin-object@^2.0.1: for-in "^0.1.3" is-extendable "^0.1.1" -mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" -modify-values@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" - integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== - mongodb@3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.3.3.tgz#509cad2225a1c56c65a331ed73a0d5d4ed5cbe67" @@ -4947,40 +1869,8 @@ ms@2.1.2, ms@^2.1.1: mute-stream@0.0.7: version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= - -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.12.1: - version "2.14.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" - integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= nconf@^0.10.0: version "0.10.0" @@ -4992,7 +1882,7 @@ nconf@^0.10.0: secure-keys "^1.0.0" yargs "^3.19.0" -needle@^2.2.1, needle@^2.2.4, needle@^2.4.0: +needle@^2.2.4, needle@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== @@ -5006,11 +1896,6 @@ negotiator@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.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== - netmask@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" @@ -5021,17 +1906,7 @@ 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.3.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" - integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== - -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-notifier@^5.2.1, node-notifier@^5.4.0: +node-notifier@^5.4.0: version "5.4.3" resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== @@ -5042,31 +1917,7 @@ node-notifier@^5.2.1, node-notifier@^5.4.0: shellwords "^0.1.1" which "^1.3.0" -node-pre-gyp@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" - integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== - 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= - dependencies: - abbrev "1" - osenv "^0.1.4" - -normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5: +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: 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== @@ -5076,55 +1927,11 @@ normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379" - integrity sha1-MtDkcvkf80VwHBWoMRAY07CpA3k= - -normalize-path@^2.0.0, normalize-path@^2.0.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-url@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== -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-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-packlist@^1.1.6: - version "1.4.7" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.7.tgz#9e954365a06b80b18111ea900945af4f88ed4848" - integrity sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - -npm-path@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64" - integrity sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw== - dependencies: - which "^1.2.10" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -5132,54 +1939,16 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npm-which@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa" - integrity sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo= - dependencies: - commander "^2.9.0" - npm-path "^2.0.2" - which "^1.2.10" - -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== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.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.0.7: - 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.0.1, object-assign@^4.1.0: +object-assign@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - object-hash@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" @@ -5195,13 +1964,6 @@ object-keys@^1.0.12, object-keys@^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" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - object.getownpropertydescriptors@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" @@ -5210,26 +1972,6 @@ object.getownpropertydescriptors@^2.0.3: define-properties "^1.1.2" es-abstract "^1.5.1" -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= - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -octokit-pagination-methods@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" - integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ== - on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -5244,11 +1986,6 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" - integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= - onetime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" @@ -5256,13 +1993,6 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -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== - dependencies: - mimic-fn "^2.1.0" - opn@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" @@ -5270,14 +2000,6 @@ opn@^5.5.0: dependencies: is-wsl "^1.1.0" -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - optionator@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -5290,34 +2012,6 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" -ora@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/ora/-/ora-4.0.2.tgz#0e1e68fd45b135d28648b27cf08081fa6e8a297d" - integrity sha512-YUOZbamht5mfLxPmk4M35CD/5DuOkAacxlEUbStVXpBAt4fyhBf+vZHI/HRkI++QUp3sNoeA2Gw4C+hi4eGSig== - dependencies: - chalk "^2.4.2" - cli-cursor "^3.1.0" - cli-spinners "^2.2.0" - is-interactive "^1.0.0" - log-symbols "^3.0.0" - strip-ansi "^5.2.0" - wcwidth "^1.0.1" - -ora@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/ora/-/ora-0.2.3.tgz#37527d220adcd53c39b73571d754156d5db657a4" - integrity sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q= - dependencies: - chalk "^1.1.1" - cli-cursor "^1.0.2" - cli-spinners "^0.1.2" - object-assign "^4.0.1" - -os-homedir@^1.0.0, os-homedir@^1.0.1: - 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" @@ -5325,25 +2019,7 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.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.1.0, os-name@^3.0.0, os-name@^3.1.0: +os-name@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== @@ -5351,82 +2027,16 @@ os-name@3.1.0, os-name@^3.0.0, os-name@^3.1.0: macos-release "^2.2.0" windows-release "^3.1.0" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, 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== - -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-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" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" - integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== - dependencies: - p-try "^2.0.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - -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@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" - integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== - -p-try@^1.0.0: - version "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: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - pac-proxy-agent@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-3.0.1.tgz#115b1e58f92576cac2eba718593ca7b0e37de2ad" @@ -5462,36 +2072,11 @@ package-json@^4.0.0: registry-url "^3.0.3" semver "^5.1.0" -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" - pako@~1.0.2: version "1.0.10" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== -parse-github-repo-url@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" - integrity sha1-nn2LslKmy2ukJZUGC3v23z28H1A= - -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" @@ -5499,14 +2084,6 @@ parse-json@^2.2.0: dependencies: error-ex "^1.2.0" -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - parse-path@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.1.tgz#0ec769704949778cb3b8eda5e994c32073a1adff" @@ -5525,21 +2102,11 @@ parse-url@^5.0.0: parse-path "^4.0.0" protocols "^1.4.0" -parse5@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" - integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== - 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== -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - path-exists@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" @@ -5547,17 +2114,7 @@ path-exists@^2.0.0: 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-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, path-is-absolute@^1.0.1: +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= @@ -5572,7 +2129,7 @@ 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-parse@^1.0.5, path-parse@^1.0.6: +path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== @@ -5591,29 +2148,7 @@ path-type@^1.0.0: 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== - -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.5: - version "2.1.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.1.1.tgz#ecdfbea7704adb5fe6fb47f9866c4c0e15e905c5" - integrity sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA== - -pify@^2.0.0, pify@^2.3.0: +pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= @@ -5635,68 +2170,16 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - -pn@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== - -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.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prepend-file@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/prepend-file/-/prepend-file-1.3.1.tgz#83b16e0b4ac1901fce88dbd945a22f4cc81df579" - integrity sha1-g7FuC0rBkB/OiNvZRaIvTMgd9Xk= - dependencies: - tmp "0.0.31" - prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= -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= - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= - -prettier@^1.13.7: - version "1.19.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" - integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== - -pretty-format@^22.4.0, pretty-format@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-22.4.3.tgz#f873d780839a9c02e9664c8a082e9ee79eaac16f" - integrity sha512-S4oT9/sT6MN7/3COoOy+ZJeA92VmOnveLHgrwBE3Z1W5N9S2A1QGNYiE1z75DAENbJrXXUb+OWXhpJcg05QKQQ== - dependencies: - ansi-regex "^3.0.0" - ansi-styles "^3.2.0" - -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: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -5746,11 +2229,6 @@ pseudomap@^1.0.2: resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= -psl@^1.1.24, psl@^1.1.28: - version "1.6.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.6.0.tgz#60557582ee23b6c43719d9890fb4170ecd91e110" - integrity sha512-SYKKmVel98NCOYXpkwUqZqh0ahZeeKfmisiLIcEZdsb+WbLv02g/dI5BUmZnIyOe7RzZtLax81nnb2HbvC2tzA== - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -5759,55 +2237,16 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode@^1.4.1: - 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.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== - -q@^0.9.7: - version "0.9.7" - resolved "https://registry.yarnpkg.com/q/-/q-0.9.7.tgz#4de2e6cb3b29088c9e4cbc03bf9d42fb96ce2f75" - integrity sha1-TeLmyzspCIyeTLwDv51C+5bOL3U= - -q@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - qs@6.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== - 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== -quick-lru@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" - integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= - -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" - range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -5833,7 +2272,7 @@ raw-body@^2.2.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: +rc@^1.0.1, rc@^1.1.6: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -5851,14 +2290,6 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= - dependencies: - find-up "^2.0.0" - read-pkg "^3.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" @@ -5868,15 +2299,6 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - readable-stream@1.1.x, "readable-stream@1.x >=1.1.9": version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" @@ -5887,7 +2309,7 @@ readable-stream@1.1.x, "readable-stream@1.x >=1.1.9": isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@2, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@~2.3.6: +readable-stream@2, 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== @@ -5900,7 +2322,7 @@ readable-stream@2, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stre string_decoder "~1.1.1" util-deprecate "~1.0.1" -"readable-stream@2 || 3", readable-stream@^3.0.1, readable-stream@^3.0.2, readable-stream@^3.1.1: +readable-stream@^3.0.1, readable-stream@^3.1.1: version "3.4.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== @@ -5909,29 +2331,6 @@ readable-stream@2, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stre string_decoder "^1.1.1" util-deprecate "^1.0.1" -readdirp@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -realpath-native@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" - integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== - dependencies: - util.promisify "^1.0.0" - -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" - redent@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" @@ -5940,34 +2339,6 @@ redent@^1.0.0: indent-string "^2.1.0" strip-indent "^1.0.1" -redent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" - integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo= - dependencies: - indent-string "^3.0.0" - strip-indent "^2.0.0" - -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== - -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== - dependencies: - is-equal-shallow "^0.1.3" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - regexp-clone@1.0.0, regexp-clone@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/regexp-clone/-/regexp-clone-1.0.0.tgz#222db967623277056260b992626354a04ce9bf63" @@ -5981,14 +2352,6 @@ registry-auth-token@^3.0.1: rc "^1.1.6" safe-buffer "^5.0.1" -registry-auth-token@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.0.0.tgz#30e55961eec77379da551ea5c4cf43cbf03522be" - integrity sha512-lpQkHxd9UL6tb3k/aHAVfnVtn+Bcs9ob5InuFLLEDqSqeq+AljB8GZW9xY0x7F+xYwEcjKe07nyoxzEYz6yvkw== - dependencies: - rc "^1.2.8" - safe-buffer "^5.0.1" - registry-url@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" @@ -5996,62 +2359,6 @@ registry-url@^3.0.3: dependencies: rc "^1.0.1" -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.2.8" - -release-it@^12.2.1, release-it@^12.4.3: - version "12.4.3" - resolved "https://registry.yarnpkg.com/release-it/-/release-it-12.4.3.tgz#c99a72cd1c812bcde3b532ecfee8b22c652b36f8" - integrity sha512-nQMzrAhlNg7LM7c9+4QkDtwzU/cOZeWmqsevzkp/FILSGIu3wjmQ63iSeBuZi1gpscjvJJy8/cCxhnHKczy1RQ== - dependencies: - "@iarna/toml" "2.2.3" - "@octokit/rest" "16.33.0" - async-retry "1.2.3" - chalk "2.4.2" - cosmiconfig "5.2.1" - debug "4.1.1" - deprecated-obj "1.0.1" - detect-repo-changelog "1.0.1" - find-up "4.1.0" - form-data "2.5.1" - git-url-parse "11.1.2" - globby "10.0.1" - got "9.6.0" - import-cwd "3.0.0" - inquirer "7.0.0" - is-ci "2.0.0" - lodash "4.17.15" - mime-types "2.1.24" - ora "4.0.2" - os-name "3.1.0" - semver "6.3.0" - shelljs "0.8.3" - supports-color "7.1.0" - update-notifier "3.0.1" - url-join "4.0.1" - uuid "3.3.3" - window-size "1.1.1" - yargs-parser "15.0.0" - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.3" - 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: - 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" @@ -6059,72 +2366,6 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -request-promise-core@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" - integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== - dependencies: - lodash "^4.17.15" - -request-promise-native@^1.0.5: - version "1.0.8" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" - integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== - dependencies: - request-promise-core "1.1.3" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.87.0: - version "2.88.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" - integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== - 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.0" - 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.4.3" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -requestify@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/requestify/-/requestify-0.2.5.tgz#80249f1ca7dfdf79fa2a6048aeac37d43e23c905" - integrity sha1-gCSfHKff33n6KmBIrqw31D4jyQU= - dependencies: - jquery "^3.1.0" - q "^0.9.7" - underscore "^1.8.3" - -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-from-string@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" - integrity sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg= - -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_optional@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.1.tgz#4cf35a4247f64ca3df8c2ef208cc494b1ca8fc2e" @@ -6138,60 +2379,18 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - resolve-from@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" integrity sha1-lICrIOlP+h2egKgEx+oUdhGWa1c= -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - -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.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - -resolve@^1.0.0, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.3.2: +resolve@^1.0.0, resolve@^1.10.0: version "1.13.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.13.1.tgz#be0aa4c06acd53083505abb35f4d66932ab35d16" integrity sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w== 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" - -restore-cursor@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" - integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE= - dependencies: - exit-hook "^1.0.0" - onetime "^1.0.0" - restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -6200,41 +2399,13 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -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.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: +rimraf@^2.6.1, 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" -rsvp@^3.3.3: - version "3.6.2" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" - integrity sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw== - run-async@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" @@ -6242,18 +2413,6 @@ run-async@^2.2.0: dependencies: is-promise "^2.1.0" -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== - -rxjs@^5.0.0-beta.11: - version "5.5.12" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" - integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== - dependencies: - symbol-observable "1.0.1" - rxjs@^6.4.0: version "6.5.3" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.3.tgz#510e26317f4db91a7eb1de77d9dd9ba0a4899a3a" @@ -6271,34 +2430,11 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sane@^2.0.0: - version "2.5.2" - resolved "https://registry.yarnpkg.com/sane/-/sane-2.5.2.tgz#b4dc1861c21b427e929507a3e751e2a2cb8ab3fa" - integrity sha1-tNwYYcIbQn6SlQej51HiosuKs/o= - dependencies: - anymatch "^2.0.0" - capture-exit "^1.2.0" - exec-sh "^0.2.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" - watch "~0.18.0" - optionalDependencies: - fsevents "^1.2.3" - saslprep@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226" @@ -6323,12 +2459,12 @@ semver-diff@^2.0.0: dependencies: semver "^5.0.3" -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.5.0, semver@^5.5.1: +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.5.0, semver@^5.5.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@6.3.0, semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.2.0: +semver@^6.0.0, semver@^6.1.0, semver@^6.1.2: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -6362,26 +2498,11 @@ serve-static@1.14.1: parseurl "~1.3.3" send "0.17.1" -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-immediate-shim@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= -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" - setprototypeof@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" @@ -6409,20 +2530,6 @@ shebang-regex@^1.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= -shell-quote@^1.6.1: - version "1.7.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" - integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== - -shelljs@0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.3.tgz#a7f3319520ebf09ee81275b2368adb286659b097" - integrity sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A== - 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" @@ -6438,21 +2545,6 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - -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@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= - sliced@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" @@ -6470,36 +2562,6 @@ smart-buffer@^4.1.0: resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - snyk-config@^2.2.1: version "2.2.3" resolved "https://registry.yarnpkg.com/snyk-config/-/snyk-config-2.2.3.tgz#8e09bb98602ad044954d30a9fc1695ab5b6042fa" @@ -6762,25 +2824,7 @@ socks@~2.3.2: ip "1.1.5" smart-buffer "^4.1.0" -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== - dependencies: - atob "^2.1.1" - 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.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.0, source-map-support@^0.5.11, source-map-support@^0.5.12, source-map-support@^0.5.6, source-map-support@^0.5.7: +source-map-support@^0.5.11, source-map-support@^0.5.12, source-map-support@^0.5.6, source-map-support@^0.5.7: 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== @@ -6788,17 +2832,7 @@ source-map-support@^0.5.0, source-map-support@^0.5.11, source-map-support@^0.5.1 buffer-from "^1.0.0" source-map "^0.6.0" -source-map-url@^0.4.0: - version "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.3, source-map@^0.5.6, source-map@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: +source-map@^0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -6836,88 +2870,16 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -split2@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493" - integrity sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw== - dependencies: - through2 "^2.0.2" - -split@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" - integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== - dependencies: - through "2" - 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" - -stack-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" - integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== - -staged-git-files@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-0.0.4.tgz#d797e1b551ca7a639dec0237dc6eb4bb9be17d35" - integrity sha1-15fhtVHKemOd7AI33G60u5vhfTU= - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - "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= -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-to-observable@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.1.0.tgz#45bf1d9f2d7dc09bed81f1c307c430e68b84cffe" - integrity sha1-Rb8dny19wJvtgfHDB8Qw5ouEz/4= - -string-length@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" - integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= - dependencies: - astral-regex "^1.0.0" - strip-ansi "^4.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" @@ -6927,7 +2889,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +string-width@^2.0.0, string-width@^2.1.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== @@ -6944,15 +2906,6 @@ string-width@^3.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.1.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== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - string.prototype.trimleft@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" @@ -7009,18 +2962,6 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-bom@3.0.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@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -7028,6 +2969,11 @@ 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-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -7040,42 +2986,16 @@ strip-indent@^1.0.1: dependencies: get-stdin "^4.0.1" -strip-indent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" - integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= - strip-json-comments@^2.0.0, 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= -subarg@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" - integrity sha1-9izxdYHplrSPyWVpn1TAauJouNI= - dependencies: - minimist "^1.1.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== - dependencies: - has-flag "^4.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@^3.1.2: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= - dependencies: - has-flag "^1.0.0" - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -7083,16 +3003,6 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -symbol-observable@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" - integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= - -symbol-tree@^3.2.2: - 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== - tar-stream@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.0.tgz#d1aaa3661f05b38b5acc9b7020efdca5179a2cc3" @@ -7104,19 +3014,6 @@ tar-stream@^2.1.0: inherits "^2.0.3" readable-stream "^3.1.1" -tar@^4: - version "4.4.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" - temp-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" @@ -7137,22 +3034,6 @@ term-size@^1.2.0: dependencies: execa "^0.7.0" -test-exclude@^4.2.1: - version "4.2.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.3.tgz#a9a5e64474e4398339245a0a769ad7c2f4a97c20" - integrity sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA== - dependencies: - arrify "^1.0.1" - micromatch "^2.3.11" - object-assign "^4.1.0" - read-pkg-up "^1.0.1" - require-main-filename "^1.0.1" - -text-extensions@^1.0.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" - integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== - then-fs@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/then-fs/-/then-fs-2.0.0.tgz#72f792dd9d31705a91ae19ebfcf8b3f968c81da2" @@ -7160,27 +3041,7 @@ then-fs@^2.0.0: dependencies: promise ">=3.2 <8" -throat@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" - integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= - -through2@^2.0.0, through2@^2.0.2: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through2@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a" - integrity sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww== - dependencies: - readable-stream "2 || 3" - -through@2, "through@>=2.2.7 <3", through@^2.3.6: +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= @@ -7195,13 +3056,6 @@ timed-out@^4.0.0: resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= -tmp@0.0.31: - version "0.0.31" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" - integrity sha1-jzirlDjhcxXl29izZX6L+yd65Kc= - dependencies: - os-tmpdir "~1.0.1" - tmp@0.0.33, tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -7216,53 +3070,6 @@ tmp@^0.1.0: dependencies: rimraf "^2.6.3" -tmpl@1.0.x: - version "1.0.4" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" - integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= - -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-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - 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-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" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - 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" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - toidentifier@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" @@ -7273,29 +3080,6 @@ toml@^3.0.0: resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== -tough-cookie@^2.3.3, tough-cookie@^2.3.4: - 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@~2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" - integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== - dependencies: - psl "^1.1.24" - punycode "^1.4.1" - -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= - dependencies: - punycode "^2.1.0" - tree-kill@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.1.tgz#5398f374e2f292b9dcc7b2e71e30a5c3bb6c743a" @@ -7306,37 +3090,6 @@ trim-newlines@^1.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= -trim-newlines@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" - integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA= - -trim-off-newlines@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" - integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= - -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= - -ts-jest@22.0.4: - version "22.0.4" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-22.0.4.tgz#be5e8d7d2cf3f3ef97d877a6a0562508c3f64515" - integrity sha512-cQlgWYCakArbHW5B5RgZvmBomepOuIBLCR972AdWuaK6VmLxbmCh8OCaGGcBChf7dv/8YNACYvC6jeebQDKgyA== - dependencies: - babel-core "^6.24.1" - babel-plugin-istanbul "^4.1.4" - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-preset-jest "^22.0.1" - cpx "^1.5.0" - fs-extra "4.0.3" - jest-config "^22.0.1" - pkg-dir "^2.0.0" - source-map-support "^0.5.0" - yargs "^11.0.0" - ts-node-dev@^1.0.0-pre.32: version "1.0.0-pre.44" resolved "https://registry.yarnpkg.com/ts-node-dev/-/ts-node-dev-1.0.0-pre.44.tgz#2f4d666088481fb9c4e4f5bc8f15995bd8b06ecb" @@ -7390,87 +3143,16 @@ tsconfig@^7.0.0: strip-bom "^3.0.0" strip-json-comments "^2.0.0" -tslib@1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" - integrity sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ== - tslib@1.9.3: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== -tslib@^1, tslib@^1.10.0, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: +tslib@^1, tslib@^1.10.0, tslib@^1.9.0, tslib@^1.9.3: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== -tslint-config-prettier@^1.1.0: - version "1.18.0" - resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz#75f140bde947d35d8f0d238e0ebf809d64592c37" - integrity sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg== - -tslint-config-standard@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/tslint-config-standard/-/tslint-config-standard-7.1.0.tgz#6bcc435a179478e365f6cc62312a561221985760" - integrity sha512-cETzxZcEQ1RKjwtEScGryAtqwiRFc55xBxhZP6bePyOfXmo6i1/QKQrTgFKBiM4FjCvcqTjJq20/KGrh+TzTfQ== - dependencies: - tslint-eslint-rules "^5.3.1" - -tslint-eslint-rules@^5.3.1: - version "5.4.0" - resolved "https://registry.yarnpkg.com/tslint-eslint-rules/-/tslint-eslint-rules-5.4.0.tgz#e488cc9181bf193fe5cd7bfca213a7695f1737b5" - integrity sha512-WlSXE+J2vY/VPgIcqQuijMQiel+UtmXS+4nvK4ZzlDiqBfXse8FAvkNnTcYhnQyOTW5KFM+uRRGXxYhFpuBc6w== - dependencies: - doctrine "0.7.2" - tslib "1.9.0" - tsutils "^3.0.0" - -tslint@^5.8.0: - version "5.20.1" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.20.1.tgz#e401e8aeda0152bc44dd07e614034f3f80c67b7d" - integrity sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg== - dependencies: - "@babel/code-frame" "^7.0.0" - builtin-modules "^1.1.1" - chalk "^2.3.0" - commander "^2.12.1" - diff "^4.0.1" - glob "^7.1.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - mkdirp "^0.5.1" - resolve "^1.3.2" - semver "^5.3.0" - tslib "^1.8.0" - tsutils "^2.29.0" - -tsutils@^2.29.0: - version "2.29.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" - integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== - dependencies: - tslib "^1.8.1" - -tsutils@^3.0.0: - version "3.17.1" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" - integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== - dependencies: - tslib "^1.8.1" - -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.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -7478,16 +3160,6 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-fest@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" - integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -7496,44 +3168,16 @@ type-is@~1.6.17, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - typescript@^2.9.2: version "2.9.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" integrity sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w== -uglify-js@^3.1.4: - version "3.7.2" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.7.2.tgz#cb1a601e67536e9ed094a92dd1e333459643d3f9" - integrity sha512-uhRwZcANNWVLrxLfNFEdltoPNhECUR3lc+UdJoG9CBpMcSnKyWA94tc3eAujB1GcMY5Uwq8ZMp4qWpxWYDQmaA== - dependencies: - commander "~2.20.3" - source-map "~0.6.1" - -underscore@^1.8.3: - version "1.9.1" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" - integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== - "unicode@>= 0.3.1": version "12.1.0" resolved "https://registry.yarnpkg.com/unicode/-/unicode-12.1.0.tgz#7ee53a7a0ca5539b353419432823d8da58bbbf33" integrity sha512-Ty6+Ew21DiYTWLYtd05RF/X4c1ekOvOgANyHbBj0h3MaXpfaGr2Rdmc0hMFuGQLyPLb9cU4ArNxl0bTF5HSzXw== -union-value@^1.0.0: - 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 "^2.0.1" - unique-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" @@ -7541,54 +3185,16 @@ unique-string@^1.0.0: dependencies: crypto-random-string "^1.0.0" -universal-user-agent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.0.tgz#27da2ec87e32769619f68a14996465ea1cb9df16" - integrity sha512-eM8knLpev67iBDizr/YtqkJsF3GK8gzDc6st/WKzrTuPtcsOKW/0IdL4cnMBsU69pOx0otavLWBDGTwg+dB0aA== - dependencies: - os-name "^3.1.0" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - 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-notifier@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-3.0.1.tgz#78ecb68b915e2fd1be9f767f6e298ce87b736250" - integrity sha512-grrmrB6Zb8DUiyDIaeRTBCkgISYUgETNe7NglEbVsrLWXeESnlCSP50WfRSj/GmzMPl6Uchj24S/p80nP/ZQrQ== - dependencies: - boxen "^3.0.0" - chalk "^2.0.1" - configstore "^4.0.0" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" - is-installed-globally "^0.1.0" - is-npm "^3.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.0.0" - semver-diff "^2.0.0" - xdg-basedir "^3.0.0" - update-notifier@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" @@ -7605,23 +3211,6 @@ update-notifier@^2.5.0: semver-diff "^2.0.0" xdg-basedir "^3.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== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-join@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" - integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== - url-parse-lax@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" @@ -7629,13 +3218,6 @@ url-parse-lax@^1.0.0: dependencies: prepend-http "^1.0.1" -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: version "1.4.7" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" @@ -7644,17 +3226,12 @@ url-parse@~1.4.3: querystringify "^2.1.1" requires-port "^1.0.0" -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util.promisify@^1.0.0, util.promisify@~1.0.0: +util.promisify@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== @@ -7667,7 +3244,7 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@3.3.3, uuid@^3.0.1, uuid@^3.3.2: +uuid@^3.0.1, uuid@^3.3.2: version "3.3.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== @@ -7685,103 +3262,18 @@ 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" - vscode-languageserver-types@^3.5.0: version "3.14.0" resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.14.0.tgz#d3b5952246d30e5241592b6dde8280e03942e743" integrity sha512-lTmS6AlAlMHOvPQemVwo3CezxBp0sNB95KNPkqp3Nxd5VFEnuG1ByM0zlRWos0zjO3ZWtkvhal0COgiV1xIA4A== -w3c-hr-time@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" - integrity sha1-gqwr/2PZUOqeMYmlimViX+3xkEU= - dependencies: - browser-process-hrtime "^0.1.2" - -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" - -watch@~0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986" - integrity sha1-KAlUdsbffJDJYxOJkMClQj60uYY= - dependencies: - exec-sh "^0.2.0" - minimist "^1.2.0" - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= - dependencies: - defaults "^1.0.3" - -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: - 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.1.0, whatwg-mimetype@^2.2.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@^6.4.1: - version "6.5.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" - integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -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.10, which@^1.2.12, which@^1.2.9, which@^1.3.0: +which@^1.2.9, which@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" -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" @@ -7789,14 +3281,6 @@ widest-line@^2.0.0: dependencies: string-width "^2.1.1" -window-size@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-1.1.1.tgz#9858586580ada78ab26ecd6978a6e03115c1af20" - integrity sha512-5D/9vujkmVQ7pSmc0SCBmHXbkv6eaHwXEx65MywhmUMsI8sGqJ972APq1lotfcwMKPFLuCFfL8xGHLIp7jaBmA== - dependencies: - define-property "^1.0.0" - is-number "^3.0.0" - window-size@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" @@ -7814,11 +3298,6 @@ word-wrap@~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== -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -7841,7 +3320,7 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^2.0.0, write-file-atomic@^2.1.0: +write-file-atomic@^2.0.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== @@ -7850,23 +3329,11 @@ write-file-atomic@^2.0.0, write-file-atomic@^2.1.0: imurmurhash "^0.1.4" signal-exit "^3.0.2" -ws@^5.2.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" - integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== - dependencies: - async-limiter "~1.0.0" - xdg-basedir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= -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== - xml2js@0.4.19: version "0.4.19" resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" @@ -7899,12 +3366,12 @@ xregexp@2.0.0: resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" integrity sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM= -xtend@^4.0.0, xtend@~4.0.1: +xtend@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -y18n@^3.2.0, y18n@^3.2.1: +y18n@^3.2.0: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= @@ -7914,76 +3381,11 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: +yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yargs-parser@15.0.0: - version "15.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.0.tgz#cdd7a97490ec836195f59f3f4dbe5ea9e8f75f08" - integrity sha512-xLTUnCMc4JhxrPEPUYD5IBR1mWCK/aT6+RJ/K29JY2y1vD+FhtgKK0AXRWvI262q3QSffAQuTouFIKUuHX89wQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" - integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== - dependencies: - camelcase "^4.1.0" - -yargs-parser@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950" - integrity sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ== - dependencies: - camelcase "^4.1.0" - -yargs-parser@^9.0.2: - version "9.0.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" - integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc= - dependencies: - camelcase "^4.1.0" - -yargs@^10.0.3: - version "10.1.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.1.2.tgz#454d074c2b16a51a43e2fb7807e4f9de69ccb5c5" - integrity sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig== - dependencies: - cliui "^4.0.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^8.1.0" - -yargs@^11.0.0: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.1.tgz#5052efe3446a4df5ed669c995886cc0f13702766" - integrity sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw== - dependencies: - cliui "^4.0.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^3.1.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^9.0.2" - yargs@^3.19.0: version "3.32.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" diff --git a/package.json b/package.json index ad3780d09..0f68bdbf6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "erxes-api", - "version": "0.12.5", + "version": "0.13.0", "description": "GraphQL API for erxes main project", "homepage": "https://erxes.io", "repository": "https://github.com/erxes/erxes-api", @@ -28,13 +28,14 @@ "test": "node --expose-gc --max_old_space_size=4000 ./node_modules/.bin/jest --runInBand --forceExit --silent --logHeapUsage && ts-node ./src/commands/aftertest.ts", "generateVersion": "ts-node ./src/commands/generateVersion.ts", "loadInitialData": "ts-node ./src/commands/loadInitialData.ts", - "loadPermission": "mongorestore --db erxes ./permissionData", + "loadPermission": "mongorestore --db erxes ./src/permissionData", "initProject": "ts-node ./src/commands/initProject.ts", "createGooglePubsubTopics": "ts-node ./src/commands/createGooglePubsubTopics.ts", "customCommand": "ts-node ./src/commands/customCommand.ts", "resetMigrations": "ts-node ./src/commands/resetMigrations.ts", - "verifyCustomerEmails": "ts-node ./src/commands/verifyCustomerEmails.ts", + "verifyCustomerEmails": "DEBUG=erxes-api:* ts-node ./src/commands/verifyCustomerEmails.ts", "repairPermissionData": "ts-node ./src/commands/repairPermissionData.ts", + "runEsCommand": "ts-node ./src/commands/runEsCommand.ts", "migrate": "NODE_ENV=command migrate --migrations-dir='./dist/migrations' --store='./db-migrate-store.js' up", "release": "release-it" }, @@ -92,6 +93,7 @@ "twit": "^2.2.9", "underscore": "^1.8.3", "uuid": "^3.3.3", + "uuid-by-string": "^3.0.2", "validator": "^9.0.0", "xlsx-populate": "^1.20.1", "xss": "^1.0.6" diff --git a/src/__tests__/activityLogQueries.test.ts b/src/__tests__/activityLogQueries.test.ts index 86402f067..36f051814 100644 --- a/src/__tests__/activityLogQueries.test.ts +++ b/src/__tests__/activityLogQueries.test.ts @@ -140,8 +140,6 @@ describe('activityLogQueries', () => { await internalNoteFactory({ contentTypeId: customer._id }); await engageMessageFactory({ customerIds: [customer._id], method: 'email' }); - process.env.INTEGRATIONS_API_DOMAIN = 'http://fake.erxes.io'; - const dataSources = { IntegrationsAPI: new IntegrationsAPI() }; const spy = jest.spyOn(dataSources.IntegrationsAPI, 'fetchApi'); diff --git a/src/__tests__/companyQueries.test.ts b/src/__tests__/companyQueries.test.ts index acd45dd80..fb1114797 100644 --- a/src/__tests__/companyQueries.test.ts +++ b/src/__tests__/companyQueries.test.ts @@ -12,8 +12,6 @@ describe('companyQueries', () => { $tag: String $ids: [String] $searchValue: String - $lifecycleState: String - $leadStatus: String $brand: String `; @@ -24,8 +22,6 @@ describe('companyQueries', () => { tag: $tag ids: $ids searchValue: $searchValue - lifecycleState: $lifecycleState - leadStatus: $leadStatus brand: $brand `; @@ -104,18 +100,6 @@ describe('companyQueries', () => { }); }); - test('Company count by leadStatus', async () => { - await graphqlRequest(qryCount, 'companyCounts', { - only: 'byLeadStatus', - }); - }); - - test('Company count by lifecycleState', async () => { - await graphqlRequest(qryCount, 'companyCounts', { - only: 'byLifecycleState', - }); - }); - test('Company count by brand', async () => { const brand = await brandFactory({}); await integrationFactory({ brandId: brand._id }); @@ -147,8 +131,6 @@ describe('companyQueries', () => { ownerId primaryPhone phones - leadStatus - lifecycleState businessType description doNotDisturb diff --git a/src/__tests__/configQueries.test.ts b/src/__tests__/configQueries.test.ts index 9372efcbf..ecefa3245 100644 --- a/src/__tests__/configQueries.test.ts +++ b/src/__tests__/configQueries.test.ts @@ -36,11 +36,7 @@ describe('configQueries', () => { expect(response.USE_BRAND_RESTRICTIONS).toBe('true'); }); - test('config get env', async () => { - process.env.MAIN_APP_DOMAIN = 'http://fake.erxes.io'; - process.env.DOMAIN = 'http://fake.erxes.io'; - process.env.WIDGETS_DOMAIN = 'http://fake.erxes.io'; - + test('configsVersions', async () => { process.env.NODE_ENV = 'dev'; const qry = ` diff --git a/src/__tests__/conversationMutations.test.ts b/src/__tests__/conversationMutations.test.ts index c33c0765f..649ebbcf0 100644 --- a/src/__tests__/conversationMutations.test.ts +++ b/src/__tests__/conversationMutations.test.ts @@ -1,7 +1,9 @@ +import './setup.ts'; + import * as faker from 'faker'; import * as sinon from 'sinon'; -import utils from '../data/utils'; -import { graphqlRequest } from '../db/connection'; +import * as messageBroker from '../messageBroker'; + import { conversationFactory, conversationMessageFactory, @@ -10,15 +12,14 @@ import { userFactory, } from '../db/factories'; import { Conversations, Customers, Integrations, Users } from '../db/models'; +import { CONVERSATION_STATUSES, KIND_CHOICES } from '../db/models/definitions/constants'; import { IntegrationsAPI } from '../data/dataSources'; -import { CONVERSATION_STATUSES, KIND_CHOICES } from '../db/models/definitions/constants'; +import utils from '../data/utils'; +import { graphqlRequest } from '../db/connection'; import { IConversationDocument } from '../db/models/definitions/conversations'; import { ICustomerDocument } from '../db/models/definitions/customers'; import { IUserDocument } from '../db/models/definitions/users'; -import * as messageBroker from '../messageBroker'; - -import './setup.ts'; const toJSON = value => { // sometimes object key order is different even though it has same value. @@ -34,6 +35,11 @@ describe('Conversation message mutations', () => { let messengerConversation: IConversationDocument; let chatfuelConversation: IConversationDocument; let twitterConversation: IConversationDocument; + let whatsAppConversation: IConversationDocument; + let viberConversation: IConversationDocument; + let telegramConversation: IConversationDocument; + let lineConversation: IConversationDocument; + let twilioConversation: IConversationDocument; let user: IUserDocument; let customer: ICustomerDocument; @@ -96,6 +102,21 @@ describe('Conversation message mutations', () => { const twitterIntegration = await integrationFactory({ kind: KIND_CHOICES.TWITTER_DM }); twitterConversation = await conversationFactory({ integrationId: twitterIntegration._id }); + const whatsAppIntegration = await integrationFactory({ kind: KIND_CHOICES.WHATSAPP }); + whatsAppConversation = await conversationFactory({ integrationId: whatsAppIntegration._id }); + + const viberIntegration = await integrationFactory({ kind: KIND_CHOICES.SMOOCH_VIBER }); + viberConversation = await conversationFactory({ integrationId: viberIntegration._id }); + + const telegramIntegration = await integrationFactory({ kind: KIND_CHOICES.SMOOCH_TELEGRAM }); + telegramConversation = await conversationFactory({ integrationId: telegramIntegration._id }); + + const lineIntegration = await integrationFactory({ kind: KIND_CHOICES.SMOOCH_LINE }); + lineConversation = await conversationFactory({ integrationId: lineIntegration._id }); + + const twilioIntegration = await integrationFactory({ kind: KIND_CHOICES.SMOOCH_TWILIO }); + twilioConversation = await conversationFactory({ integrationId: twilioIntegration._id }); + const messengerIntegration = await integrationFactory({ kind: 'messenger' }); messengerConversation = await conversationFactory({ customerId: customer._id, @@ -163,8 +184,6 @@ describe('Conversation message mutations', () => { }); test('Add conversation message using third party integration', async () => { - process.env.INTEGRATIONS_API_DOMAIN = 'http://fake.erxes.io'; - const mock = sinon.stub(messageBroker, 'sendMessage').callsFake(() => { return Promise.resolve('success'); }); @@ -207,6 +226,46 @@ describe('Conversation message mutations', () => { expect(e).toBeDefined(); } + args.conversationId = whatsAppConversation._id; + + try { + await graphqlRequest(addMutation, 'conversationMessageAdd', args, { dataSources }); + } catch (e) { + expect(e).toBeDefined(); + } + + args.conversationId = viberConversation._id; + + try { + await graphqlRequest(addMutation, 'conversationMessageAdd', args, { dataSources }); + } catch (e) { + expect(e).toBeDefined(); + } + + args.conversationId = telegramConversation._id; + + try { + await graphqlRequest(addMutation, 'conversationMessageAdd', args, { dataSources }); + } catch (e) { + expect(e).toBeDefined(); + } + + args.conversationId = lineConversation._id; + + try { + await graphqlRequest(addMutation, 'conversationMessageAdd', args, { dataSources }); + } catch (e) { + expect(e).toBeDefined(); + } + + args.conversationId = twilioConversation._id; + + try { + await graphqlRequest(addMutation, 'conversationMessageAdd', args, { dataSources }); + } catch (e) { + expect(e).toBeDefined(); + } + mock.restore(); }); @@ -369,8 +428,6 @@ describe('Conversation message mutations', () => { test('Delete video chat room', async () => { expect.assertions(1); - process.env.INTEGRATIONS_API_DOMAIN = 'http://fake.erxes.io'; - const mutation = ` mutation conversationDeleteVideoChatRoom($name: String!) { conversationDeleteVideoChatRoom(name: $name) @@ -387,9 +444,7 @@ describe('Conversation message mutations', () => { }); test('Create video chat room', async () => { - expect.assertions(1); - - process.env.INTEGRATIONS_API_DOMAIN = 'http://fake.erxes.io'; + expect.assertions(2); const mutation = ` mutation conversationCreateVideoChatRoom($_id: String!) { @@ -409,5 +464,20 @@ describe('Conversation message mutations', () => { } catch (e) { expect(e[0].message).toBe('Integrations api is not running'); } + + const mock = sinon.stub(dataSources.IntegrationsAPI, 'createDailyVideoChatRoom').callsFake(() => { + return Promise.resolve({ status: 'ongoing' }); + }); + + const response = await graphqlRequest( + mutation, + 'conversationCreateVideoChatRoom', + { _id: conversation._id }, + { dataSources }, + ); + + expect(response.status).toBe('ongoing'); + + mock.restore(); }); }); diff --git a/src/__tests__/conversationQueries.test.ts b/src/__tests__/conversationQueries.test.ts index c1a33c0e5..54ae9182d 100644 --- a/src/__tests__/conversationQueries.test.ts +++ b/src/__tests__/conversationQueries.test.ts @@ -263,8 +263,6 @@ describe('conversationQueries', () => { internal: false, }); - process.env.INTEGRATIONS_API_DOMAIN = 'http://fake.erxes.io'; - const dataSources = { IntegrationsAPI: new IntegrationsAPI() }; try { @@ -333,8 +331,6 @@ describe('conversationQueries', () => { await conversationMessageFactory({ conversationId: gmailConversation._id, internal: false }); - process.env.INTEGRATIONS_API_DOMAIN = 'http://fake.erxes.io'; - const dataSources = { IntegrationsAPI: new IntegrationsAPI() }; try { @@ -949,8 +945,6 @@ describe('conversationQueries', () => { expect(response._id).toBe(conversation._id); expect(response.facebookPost).toBe(null); - process.env.INTEGRATIONS_API_DOMAIN = 'http://fake.erxes.io'; - const facebookIntegration = await integrationFactory({ kind: 'facebook-post' }); const facebookConversation = await conversationFactory({ integrationId: facebookIntegration._id }); @@ -984,8 +978,6 @@ describe('conversationQueries', () => { }); test('Conversation detail video call', async () => { - process.env.INTEGRATIONS_API_DOMAIN = 'http://fake.erxes.io'; - const messengerConversation = await conversationFactory(); const dataSources = { IntegrationsAPI: new IntegrationsAPI() }; @@ -1030,8 +1022,6 @@ describe('conversationQueries', () => { }); test('Conversation detail callpro audio', async () => { - process.env.INTEGRATIONS_API_DOMAIN = 'http://fake.erxes.io'; - const callProIntegration = await integrationFactory({ kind: 'callpro' }); const callProConverstaion = await conversationFactory({ integrationId: callProIntegration._id }); @@ -1108,8 +1098,6 @@ describe('conversationQueries', () => { }); test('Facebook comments', async () => { - process.env.INTEGRATIONS_API_DOMAIN = 'http://fake.erxes.io'; - const qry = ` query converstationFacebookComments($postId: String!) { converstationFacebookComments(postId: $postId) { diff --git a/src/__tests__/customerDb.test.ts b/src/__tests__/customerDb.test.ts index ec9a77125..9cd5d78a4 100644 --- a/src/__tests__/customerDb.test.ts +++ b/src/__tests__/customerDb.test.ts @@ -20,7 +20,7 @@ import { } from '../db/models'; import { ACTIVITY_CONTENT_TYPES, STATUSES } from '../db/models/definitions/constants'; -import { ICustomerDocument } from '../db/models/definitions/customers'; +import { ICustomer, ICustomerDocument } from '../db/models/definitions/customers'; import './setup.ts'; describe('Customers model tests', () => { @@ -121,7 +121,7 @@ describe('Customers model tests', () => { } // Create without any error - const doc = { + const doc: ICustomer = { primaryEmail: 'dombo@yahoo.com', emails: ['dombo@yahoo.com'], firstName: 'firstName', @@ -129,6 +129,7 @@ describe('Customers model tests', () => { primaryPhone: '12312132', phones: ['12312132'], code: 'code1234', + state: 'lead', }; let customerObj = await Customers.createCustomer(doc); @@ -138,9 +139,9 @@ describe('Customers model tests', () => { expect(customerObj.firstName).toBe(doc.firstName); expect(customerObj.lastName).toBe(doc.lastName); expect(customerObj.primaryEmail).toBe(doc.primaryEmail); - expect(customerObj.emails).toEqual(expect.arrayContaining(doc.emails)); + expect(customerObj.emails).toEqual(expect.arrayContaining(doc.emails || [])); expect(customerObj.primaryPhone).toBe(doc.primaryPhone); - expect(customerObj.phones).toEqual(expect.arrayContaining(doc.phones)); + expect(customerObj.phones).toEqual(expect.arrayContaining(doc.phones || [])); expect(customerObj.searchText).toEqual('dombo@yahoo.com 12312132 firstName lastName code1234'); customerObj = await Customers.createCustomer( @@ -536,7 +537,6 @@ describe('Customers model tests', () => { expect(customer.primaryPhone).toBe(phone); expect(customer.phones).toContain(phone); - expect(customer.isUser).toBe(_customer.isUser); expect(customer.createdAt >= now).toBe(true); expect(customer.lastSeenAt).toBeDefined(); @@ -577,8 +577,6 @@ describe('Customers model tests', () => { expect(customer.primaryPhone).toBe(phone); expect(customer.phones).toContain(phone); - - expect(customer.isUser).toBe(true); }); test('getWidgetCustomer()', async () => { diff --git a/src/__tests__/customerMutations.test.ts b/src/__tests__/customerMutations.test.ts index b75d57827..b3ae3c928 100644 --- a/src/__tests__/customerMutations.test.ts +++ b/src/__tests__/customerMutations.test.ts @@ -18,8 +18,7 @@ const args = { ownerId: faker.random.word(), position: faker.random.word(), department: faker.random.word(), - leadStatus: 'open', - lifecycleState: 'lead', + leadStatus: 'new', hasAuthority: faker.random.word(), description: faker.random.word(), doNotDisturb: faker.random.word(), @@ -45,7 +44,6 @@ const checkCustomer = src => { expect(src.position).toBe(args.position); expect(src.department).toBe(args.department); expect(src.leadStatus).toBe(args.leadStatus); - expect(src.lifecycleState).toBe(args.lifecycleState); expect(src.hasAuthority).toBe(args.hasAuthority); expect(src.description).toBe(args.description); expect(src.doNotDisturb).toBe(args.doNotDisturb); @@ -69,7 +67,6 @@ describe('Customers mutations', () => { $position: String $department: String $leadStatus: String - $lifecycleState: String $hasAuthority: String $description: String $doNotDisturb: String @@ -88,7 +85,6 @@ describe('Customers mutations', () => { position: $position department: $department leadStatus: $leadStatus - lifecycleState: $lifecycleState hasAuthority: $hasAuthority description: $description doNotDisturb: $doNotDisturb @@ -127,7 +123,6 @@ describe('Customers mutations', () => { position department leadStatus - lifecycleState hasAuthority description doNotDisturb @@ -165,7 +160,6 @@ describe('Customers mutations', () => { position department leadStatus - lifecycleState hasAuthority description doNotDisturb @@ -222,4 +216,21 @@ describe('Customers mutations', () => { expect(customer.firstName).toBe(params.customerFields.firstName); }); + + test('Change state', async () => { + const mutation = ` + mutation customersChangeState($_id: String!, $value: String!) { + customersChangeState(_id: $_id, value: $value) { + _id + state + } + } + `; + + await graphqlRequest(mutation, 'customersChangeState', { _id: _customer._id, value: 'customer' }, context); + + const updatedCustomer = await Customers.getCustomer(_customer._id); + + expect(updatedCustomer.state).toBe('customer'); + }); }); diff --git a/src/__tests__/customerQueries.test.ts b/src/__tests__/customerQueries.test.ts index 0d9b72fc6..578c25d4f 100644 --- a/src/__tests__/customerQueries.test.ts +++ b/src/__tests__/customerQueries.test.ts @@ -24,7 +24,6 @@ describe('customerQueries', () => { $form: String, $startDate: String, $endDate: String, - $lifecycleState: String, $leadStatus: String `; @@ -38,7 +37,6 @@ describe('customerQueries', () => { form: $form startDate: $startDate endDate: $endDate - lifecycleState: $lifecycleState leadStatus: $leadStatus `; @@ -155,12 +153,6 @@ describe('customerQueries', () => { }); }); - test('Customer count by lifecycleState', async () => { - await graphqlRequest(qryCount, 'customerCounts', { - only: 'byLifecycleState', - }); - }); - test('Customer count by IntegrationType', async () => { await integrationFactory({ kind: '' }); @@ -231,7 +223,6 @@ describe('customerQueries', () => { emails primaryPhone phones - isUser tagIds remoteAddress internalNotes @@ -243,7 +234,6 @@ describe('customerQueries', () => { position department leadStatus - lifecycleState hasAuthority description doNotDisturb diff --git a/src/__tests__/dealMutations.test.ts b/src/__tests__/dealMutations.test.ts index ab8cce149..8dd82c19e 100644 --- a/src/__tests__/dealMutations.test.ts +++ b/src/__tests__/dealMutations.test.ts @@ -42,7 +42,7 @@ describe('Test deals mutations', () => { let user: IUserDocument; const commonDealParamDefs = ` - $name: String!, + $name: String! $stageId: String! $assignedUserIds: [String] $productsData: JSON @@ -204,6 +204,33 @@ describe('Test deals mutations', () => { expect(updatedDeal._id).toEqual(args._id); }); + test('Update deal move to pipeline stage', async () => { + const mutation = ` + mutation dealsEdit($_id: String!, ${commonDealParamDefs}) { + dealsEdit(_id: $_id, ${commonDealParams}) { + _id + name + stageId + assignedUserIds + } + } + `; + + const anotherPipeline = await pipelineFactory({ boardId: board._id }); + const anotherStage = await stageFactory({ pipelineId: anotherPipeline._id }); + + const args = { + _id: deal._id, + stageId: anotherStage._id, + name: deal.name || '', + }; + + const updatedDeal = await graphqlRequest(mutation, 'dealsEdit', args); + + expect(updatedDeal._id).toEqual(args._id); + expect(updatedDeal.stageId).toEqual(args.stageId); + }); + test('Deal update orders', async () => { const dealToStage = await dealFactory({}); diff --git a/src/__tests__/engageMessageDb.test.ts b/src/__tests__/engageMessageDb.test.ts index fea37fbe3..5f58da155 100644 --- a/src/__tests__/engageMessageDb.test.ts +++ b/src/__tests__/engageMessageDb.test.ts @@ -1,3 +1,4 @@ +import * as sinon from 'sinon'; import { brandFactory, conversationMessageFactory, @@ -16,6 +17,7 @@ import { IBrandDocument } from '../db/models/definitions/brands'; import { ICustomerDocument } from '../db/models/definitions/customers'; import { IIntegrationDocument } from '../db/models/definitions/integrations'; import { IUserDocument } from '../db/models/definitions/users'; +import * as events from '../events'; import './setup.ts'; describe('engage messages model tests', () => { @@ -24,8 +26,6 @@ describe('engage messages model tests', () => { let _brand; let _tag; let _message; - let _customer; - let _customer2; beforeEach(async () => { _user = await userFactory({}); @@ -33,8 +33,6 @@ describe('engage messages model tests', () => { _brand = await brandFactory({}); _tag = await tagsFactory({}); _message = await engageMessageFactory({ kind: 'auto' }); - _customer = await customerFactory({}); - _customer2 = await customerFactory({}); }); afterEach(async () => { @@ -167,15 +165,9 @@ describe('engage messages model tests', () => { }); test('save matched customer ids', async () => { - const message = await EngageMessages.setCustomerIds(_message._id, [_customer, _customer2]); - - if (!message || !message.customerIds) { - throw new Error('Engage message not found'); - } + const message = await EngageMessages.setCustomersCount(_message._id, 'totalCustomersCount', 2); - expect(message.customerIds).toContain(_customer._id); - expect(message.customerIds).toContain(_customer2._id); - expect(message.customerIds.length).toEqual(2); + expect(message.totalCustomersCount).toBe(2); }); test('changeCustomer', async () => { @@ -354,11 +346,14 @@ describe('createVisitorMessages', () => { let _brand: IBrandDocument; let _customer: ICustomerDocument; let _integration: IIntegrationDocument; + let mock; beforeEach(async () => { // Creating test data - _customer = await customerFactory({ - urlVisits: { '/page': 11 }, + _customer = await customerFactory({}); + + mock = sinon.stub(events, 'getNumberOfVisits').callsFake(() => { + return Promise.resolve(11); }); _brand = await brandFactory({}); @@ -411,6 +406,8 @@ describe('createVisitorMessages', () => { await EngageMessages.deleteMany({}); await Messages.deleteMany({}); await Brands.deleteMany({}); + + mock.restore(); }); test('must create conversation & message object', async () => { diff --git a/src/__tests__/engageMessageMutations.test.ts b/src/__tests__/engageMessageMutations.test.ts index 85b36df77..74f622e54 100644 --- a/src/__tests__/engageMessageMutations.test.ts +++ b/src/__tests__/engageMessageMutations.test.ts @@ -83,8 +83,10 @@ describe('engage message mutation tests', () => { _user = await userFactory({}); _tag = await tagsFactory({}); _brand = await brandFactory({}); + _integration = await integrationFactory({ brandId: _brand._id }); _customer = await customerFactory({ + integrationId: _integration._id, emailValidationStatus: EMAIL_VALIDATION_STATUSES.VALID, status: STATUSES.ACTIVE, profileScore: 1, @@ -105,8 +107,6 @@ describe('engage message mutation tests', () => { tagIds: [_tag._id], }); - _integration = await integrationFactory({ brandId: 'brandId' }); - _doc = { title: 'Message test', kind: 'chat', @@ -434,6 +434,12 @@ describe('engage message mutation tests', () => { throw new Error('User not found'); } + try { + await graphqlRequest(engageMessageAddMutation, 'engageMessageAdd', { ..._doc, brandIds: ['_id'] }); + } catch (e) { + expect(e[0].message).toBe('No customers found who have valid emails'); + } + const engageMessage = await graphqlRequest(engageMessageAddMutation, 'engageMessageAdd', _doc); const tags = engageMessage.getTags.map(tag => tag._id); @@ -526,8 +532,6 @@ describe('engage message mutation tests', () => { expect(engageMessage.email.toJSON()).toEqual(_doc.email); expect(engageMessage.fromUser._id).toBe(args.fromUserId); - process.env.CRONS_API_DOMAIN = 'http://fake.erxes.io'; - try { await graphqlRequest(mutation, 'engageMessageEdit', { ..._doc, _id: _message._id }); } catch (e) { @@ -555,8 +559,6 @@ describe('engage message mutation tests', () => { fetchSpy.mockRestore(); - process.env.CRONS_API_DOMAIN = 'http://fake.erxes.io'; - _message = await engageMessageFactory({ kind: 'post' }); try { @@ -592,8 +594,6 @@ describe('engage message mutation tests', () => { expect(response.isLive).toBe(true); - process.env.CRONS_API_DOMAIN = 'http://fake.erxes.io'; - try { await graphqlRequest(mutation, 'engageMessageSetLive', { _id: _message._id }); } catch (e) { @@ -689,8 +689,6 @@ describe('engage message mutation tests', () => { }); test('configSave', async () => { - process.env.ENGAGES_API_DOMAIN = 'http://fake.erxes.io'; - const mutation = ` mutation engagesUpdateConfigs($configsMap: JSON!) { engagesUpdateConfigs(configsMap: $configsMap) @@ -712,8 +710,6 @@ describe('engage message mutation tests', () => { }); test('dataSources', async () => { - process.env.ENGAGES_API_DOMAIN = 'http://fake.erxes.io'; - const dataSources = { EngagesAPI: new EngagesAPI() }; const check = async (mutation, name, args) => { diff --git a/src/__tests__/engageMessageQueries.test.ts b/src/__tests__/engageMessageQueries.test.ts index dba1848a2..fb66c5db6 100644 --- a/src/__tests__/engageMessageQueries.test.ts +++ b/src/__tests__/engageMessageQueries.test.ts @@ -306,8 +306,6 @@ describe('engageQueries', () => { }); test('Get verified emails', async () => { - process.env.ENGAGES_API_DOMAIN = 'http://fake.erxes.io'; - const qry = ` query engageVerifiedEmails { engageVerifiedEmails @@ -324,8 +322,6 @@ describe('engageQueries', () => { }); test('configDetail', async () => { - process.env.ENGAGES_API_DOMAIN = 'http://fake.erxes.io'; - const qry = ` query engagesConfigDetail { engagesConfigDetail diff --git a/src/__tests__/fieldQueries.test.ts b/src/__tests__/fieldQueries.test.ts index 345486d19..612e63632 100644 --- a/src/__tests__/fieldQueries.test.ts +++ b/src/__tests__/fieldQueries.test.ts @@ -77,7 +77,7 @@ describe('fieldQueries', () => { test('Fields combined by content type', async () => { const mock = sinon.stub(elk, 'getMappings').callsFake(() => { return Promise.resolve({ - customers: { + [`${elk.getIndexPrefix()}customers`]: { mappings: { properties: { trackedData: { diff --git a/src/__tests__/growthHackMutations.test.ts b/src/__tests__/growthHackMutations.test.ts index 6f7aec2c8..95b4b5a2c 100644 --- a/src/__tests__/growthHackMutations.test.ts +++ b/src/__tests__/growthHackMutations.test.ts @@ -138,6 +138,55 @@ describe('Test growthHacks mutations', () => { expect(updatedGrowthHack._id).toEqual(args._id); }); + test('Change growthHack if move to another stage', async () => { + const anotherStage = await stageFactory({ pipelineId: pipeline._id }); + + const args = { + _id: growthHack._id, + destinationStageId: anotherStage._id, + }; + + const mutation = ` + mutation growthHacksChange($_id: String!, $destinationStageId: String!) { + growthHacksChange(_id: $_id, destinationStageId: $destinationStageId) { + _id, + stageId + } + } + `; + + const updatedGH = await graphqlRequest(mutation, 'growthHacksChange', args); + + expect(updatedGH._id).toEqual(args._id); + }); + + test('Update growthHack move to pipeline stage', async () => { + const mutation = ` + mutation growthHacksEdit($_id: String!, ${commonGrowthHackParamDefs}) { + growthHacksEdit(_id: $_id, ${commonGrowthHackParams}) { + _id + name + stageId + assignedUserIds + } + } + `; + + const anotherPipeline = await pipelineFactory({ boardId: board._id }); + const anotherStage = await stageFactory({ pipelineId: anotherPipeline._id }); + + const args = { + _id: growthHack._id, + stageId: anotherStage._id, + name: growthHack.name || '', + }; + + const updatedGrowthHack = await graphqlRequest(mutation, 'growthHacksEdit', args); + + expect(updatedGrowthHack._id).toEqual(args._id); + expect(updatedGrowthHack.stageId).toEqual(args.stageId); + }); + test('GrowthHack update orders', async () => { const growthHackToStage = await growthHackFactory({}); diff --git a/src/__tests__/importHistoryMutations.test.ts b/src/__tests__/importHistoryMutations.test.ts index ea1ad7a5f..4c486c211 100644 --- a/src/__tests__/importHistoryMutations.test.ts +++ b/src/__tests__/importHistoryMutations.test.ts @@ -55,8 +55,6 @@ describe('Import history mutations', () => { } `; - process.env.WORKERS_API_DOMAIN = 'http://fake.erxes.io'; - const customer = await customerFactory({}); const importHistory = await importHistoryFactory({ ids: [customer._id] }); @@ -102,8 +100,6 @@ describe('Import history mutations', () => { } `; - process.env.WORKERS_API_DOMAIN = 'http://fake.erxes.io'; - const importHistory = await importHistoryFactory({}); try { diff --git a/src/__tests__/integrationMutations.test.ts b/src/__tests__/integrationMutations.test.ts index 4309e2cd4..0b8a003a6 100644 --- a/src/__tests__/integrationMutations.test.ts +++ b/src/__tests__/integrationMutations.test.ts @@ -1,5 +1,8 @@ +import './setup.ts'; + import * as faker from 'faker'; -import { graphqlRequest } from '../db/connection'; +import * as messageBroker from '../messageBroker'; + import { brandFactory, customerFactory, @@ -9,10 +12,9 @@ import { userFactory, } from '../db/factories'; import { Brands, Customers, EmailDeliveries, Integrations, Users } from '../db/models'; -import * as messageBroker from '../messageBroker'; import { IntegrationsAPI } from '../data/dataSources'; -import './setup.ts'; +import { graphqlRequest } from '../db/connection'; describe('mutations', () => { let _integration; @@ -291,8 +293,6 @@ describe('mutations', () => { }); test('Create external integration', async () => { - process.env.INTEGRATIONS_API_DOMAIN = 'http://fake.erxes.io'; - const mutation = ` mutation integrationsCreateExternalIntegration( $kind: String! @@ -348,6 +348,15 @@ describe('mutations', () => { expect(e[0].message).toBe('Error: Integrations api is not running'); } + args.kind = 'smooch-viber'; + args.data = { data: 'data' }; + + try { + await graphqlRequest(mutation, 'integrationsCreateExternalIntegration', args, { dataSources }); + } catch (e) { + expect(e[0].message).toBe('Error: Integrations api is not running'); + } + const spy = jest.spyOn(dataSources.IntegrationsAPI, 'createIntegration'); spy.mockImplementation(() => Promise.resolve()); @@ -357,8 +366,6 @@ describe('mutations', () => { }); test('Add mail account', async () => { - process.env.INTEGRATIONS_API_DOMAIN = 'http://fake.erxes.io'; - const mutation = ` mutation integrationAddMailAccount( $email: String! @@ -389,8 +396,6 @@ describe('mutations', () => { }); test('Add imap account', async () => { - process.env.INTEGRATIONS_API_DOMAIN = 'http://fake.erxes.io'; - const mutation = ` mutation integrationAddImapAccount( $email: String! @@ -433,8 +438,6 @@ describe('mutations', () => { }); test('Update config', async () => { - process.env.INTEGRATIONS_API_DOMAIN = 'http://fake.erxes.io'; - const dataSources = { IntegrationsAPI: new IntegrationsAPI() }; const mutation = ` @@ -456,8 +459,6 @@ describe('mutations', () => { }); test('Remove account', async () => { - process.env.INTEGRATIONS_API_DOMAIN = 'http://fake.erxes.io'; - const mutation = ` mutation integrationsRemoveAccount($_id: String!) { integrationsRemoveAccount(_id: $_id) @@ -481,11 +482,19 @@ describe('mutations', () => { expect(response).toBe('success'); spy.mockRestore(); + + const spy1 = jest.spyOn(messageBroker, 'sendRPCMessage'); + + spy1.mockImplementation(() => Promise.resolve({ erxesApiIds: [] })); + + const secondResponse = await graphqlRequest(mutation, 'integrationsRemoveAccount', { _id: 'accountId' }); + + expect(secondResponse).toBe('success'); + + spy1.mockRestore(); }); test('Send mail', async () => { - process.env.INTEGRATIONS_API_DOMAIN = 'http://fake.erxes.io'; - const mutation = ` mutation integrationSendMail( $erxesApiId: String! diff --git a/src/__tests__/integrationQueries.test.ts b/src/__tests__/integrationQueries.test.ts index 77153bfe6..7ac233cb4 100644 --- a/src/__tests__/integrationQueries.test.ts +++ b/src/__tests__/integrationQueries.test.ts @@ -249,8 +249,6 @@ describe('integrationQueries', () => { }); test('Fetch integration api', async () => { - process.env.INTEGRATIONS_API_DOMAIN = 'http://fake.erxes.io'; - const qry = ` query integrationsFetchApi($path: String!, $params: JSON!) { integrationsFetchApi(path: $path, params: $params) diff --git a/src/__tests__/internalNoteMutations.test.ts b/src/__tests__/internalNoteMutations.test.ts index 5299f85e6..1de79f50b 100644 --- a/src/__tests__/internalNoteMutations.test.ts +++ b/src/__tests__/internalNoteMutations.test.ts @@ -189,10 +189,10 @@ describe('InternalNotes mutations', () => { test('Edit internal note', async () => { const customer = await customerFactory(); - const note = await internalNoteFactory({ contentType: MODULE_NAMES.CUSTOMER, contentTypeId: customer._id }); + const deal = await dealFactory(); - const { _id, content } = note; - const args = { _id, content }; + const note = await internalNoteFactory({ contentType: MODULE_NAMES.CUSTOMER, contentTypeId: customer._id }); + const dealNote = await internalNoteFactory({ contentType: MODULE_NAMES.DEAL, contentTypeId: deal._id }); const mutation = ` mutation internalNotesEdit( @@ -209,10 +209,25 @@ describe('InternalNotes mutations', () => { } `; - const internalNote = await graphqlRequest(mutation, 'internalNotesEdit', args, context); - - expect(internalNote._id).toBe(args._id); - expect(internalNote.content).toBe(args.content); + const internalNote = await graphqlRequest( + mutation, + 'internalNotesEdit', + { _id: note._id, content: note.content }, + context, + ); + + expect(internalNote._id).toBe(note._id); + expect(internalNote.content).toBe(note.content); + + const dealInternalNote = await graphqlRequest( + mutation, + 'internalNotesEdit', + { _id: dealNote._id, content: dealNote.content }, + context, + ); + + expect(dealInternalNote._id).toBe(dealNote._id); + expect(dealInternalNote.content).toBe(dealNote.content); }); test('Remove internal note', async () => { diff --git a/src/__tests__/knowledgeBaseMutations.test.ts b/src/__tests__/knowledgeBaseMutations.test.ts index 5bbfc0626..af2855e0c 100644 --- a/src/__tests__/knowledgeBaseMutations.test.ts +++ b/src/__tests__/knowledgeBaseMutations.test.ts @@ -1,6 +1,7 @@ import * as faker from 'faker'; import { graphqlRequest } from '../db/connection'; import { Brands, KnowledgeBaseArticles, KnowledgeBaseCategories, KnowledgeBaseTopics, Users } from '../db/models'; +import { PUBLISH_STATUSES } from '../db/models/definitions/constants'; import { brandFactory, @@ -31,7 +32,7 @@ const categoryArgs = { const articleArgs = { title: faker.random.word(), summary: faker.random.word(), - status: 'draft', + status: PUBLISH_STATUSES.DRAFT, content: faker.random.word(), }; @@ -43,7 +44,7 @@ describe('mutations', () => { beforeEach(async () => { // Creating test data - _knowledgeBaseArticle = await knowledgeBaseArticleFactory({}); + _knowledgeBaseArticle = await knowledgeBaseArticleFactory({ status: PUBLISH_STATUSES.PUBLISH }); _knowledgeBaseCategory = await knowledgeBaseCategoryFactory({ articleIds: [_knowledgeBaseArticle._id] }); _knowledgeBaseTopic = await knowledgeBaseTopicFactory({ categoryIds: [_knowledgeBaseCategory._id] }); _brand = await brandFactory({}); diff --git a/src/__tests__/logQueries.test.ts b/src/__tests__/logQueries.test.ts index 5f5d34d7e..37b9579d5 100644 --- a/src/__tests__/logQueries.test.ts +++ b/src/__tests__/logQueries.test.ts @@ -1,9 +1,15 @@ +import * as sinon from 'sinon'; import { MODULE_NAMES } from '../data/constants'; +import * as utils from '../data/logUtils'; import { graphqlRequest } from '../db/connection'; import './setup.ts'; describe('log queries', () => { test('Logs', async () => { + const mock = sinon.stub(utils, 'fetchLogs').callsFake(() => { + return Promise.resolve({ logs: [], totalCount: 0 }); + }); + const qry = ` query logs( $start: String @@ -29,12 +35,12 @@ describe('log queries', () => { } `; - process.env.LOGS_API_DOMAIN = ''; - const response = await graphqlRequest(qry, 'logs', {}); expect(response.logs).toHaveLength(0); expect(response.totalCount).toBe(0); + + mock.restore(); }); test('getDbSchemaLabels', async () => { diff --git a/src/__tests__/permissionMutations.test.ts b/src/__tests__/permissionMutations.test.ts index 535c8c289..7f6df987d 100644 --- a/src/__tests__/permissionMutations.test.ts +++ b/src/__tests__/permissionMutations.test.ts @@ -161,6 +161,9 @@ describe('Test permissions mutations', () => { }); test('Update group', async () => { + await userFactory({ groupIds: [_group._id] }); + await userFactory({ groupIds: [_group._id] }); + const user1 = await userFactory({}); const user2 = await userFactory({}); @@ -201,6 +204,9 @@ describe('Test permissions mutations', () => { } `; + await userFactory({ groupIds: [_group._id] }); + await userFactory({ groupIds: [_group._id] }); + await graphqlRequest(mutation, 'usersGroupsRemove', { _id: _group._id }, context); expect(await UsersGroups.findOne({ _id: _group._id })).toBe(null); diff --git a/src/__tests__/segmentDb.test.ts b/src/__tests__/segmentDb.test.ts index 77c9471a3..480dc2818 100644 --- a/src/__tests__/segmentDb.test.ts +++ b/src/__tests__/segmentDb.test.ts @@ -32,7 +32,6 @@ const checkValues = (segmentObj, doc) => { expect(segmentObj.description).toBe(doc.description); expect(segmentObj.subOf).toBe(doc.subOf); expect(segmentObj.color).toBe(doc.color); - expect(segmentObj.connector).toBe(doc.connector); expect(segmentObj.conditions.field).toEqual(doc.conditions.field); expect(segmentObj.conditions.operator).toEqual(doc.conditions.operator); diff --git a/src/__tests__/segmentQueries.test.ts b/src/__tests__/segmentQueries.test.ts index baaba18eb..3b4e23cab 100644 --- a/src/__tests__/segmentQueries.test.ts +++ b/src/__tests__/segmentQueries.test.ts @@ -96,18 +96,24 @@ describe('segmentQueries', () => { return Promise.resolve({ aggregations: { names: { - buckets: { name: 'pageView' }, - }, - }, - hits: { - hits: [ - { - _source: { - name: 'pageView', - attributes: [], + buckets: [ + { + key: 'pageView', + hits: { + hits: { + hits: [ + { + _source: { + name: 'pageView', + attributes: [], + }, + }, + ], + }, + }, }, - }, - ], + ], + }, }, }); }); diff --git a/src/__tests__/taskMutations.test.ts b/src/__tests__/taskMutations.test.ts index ac7c6a05d..53ee2ea19 100644 --- a/src/__tests__/taskMutations.test.ts +++ b/src/__tests__/taskMutations.test.ts @@ -189,6 +189,55 @@ describe('Test tasks mutations', () => { expect(updatedTask._id).toEqual(args._id); }); + test('Change task if move to another stage', async () => { + const anotherStage = await stageFactory({ pipelineId: pipeline._id }); + + const args = { + _id: task._id, + destinationStageId: anotherStage._id, + }; + + const mutation = ` + mutation tasksChange($_id: String!, $destinationStageId: String) { + tasksChange(_id: $_id, destinationStageId: $destinationStageId) { + _id, + stageId + } + } + `; + + const updatedTask = await graphqlRequest(mutation, 'tasksChange', args); + + expect(updatedTask._id).toEqual(args._id); + }); + + test('Update task move to pipeline stage', async () => { + const mutation = ` + mutation tasksEdit($_id: String!, ${commonTaskParamDefs}) { + tasksEdit(_id: $_id, ${commonTaskParams}) { + _id + name + stageId + assignedUserIds + } + } + `; + + const anotherPipeline = await pipelineFactory({ boardId: board._id }); + const anotherStage = await stageFactory({ pipelineId: anotherPipeline._id }); + + const args = { + _id: task._id, + stageId: anotherStage._id, + name: task.name || '', + }; + + const updatedTask = await graphqlRequest(mutation, 'tasksEdit', args); + + expect(updatedTask._id).toEqual(args._id); + expect(updatedTask.stageId).toEqual(args.stageId); + }); + test('Task update orders', async () => { const taskToStage = await taskFactory({}); diff --git a/src/__tests__/ticketMutations.test.ts b/src/__tests__/ticketMutations.test.ts index c32db67de..2ed6c324d 100644 --- a/src/__tests__/ticketMutations.test.ts +++ b/src/__tests__/ticketMutations.test.ts @@ -138,6 +138,55 @@ describe('Test tickets mutations', () => { expect(updatedTicket._id).toEqual(args._id); }); + test('Change ticket if move to another stage', async () => { + const anotherStage = await stageFactory({ pipelineId: pipeline._id }); + + const args = { + _id: ticket._id, + destinationStageId: anotherStage._id, + }; + + const mutation = ` + mutation ticketsChange($_id: String!, $destinationStageId: String) { + ticketsChange(_id: $_id, destinationStageId: $destinationStageId) { + _id, + stageId + } + } + `; + + const updatedTicket = await graphqlRequest(mutation, 'ticketsChange', args); + + expect(updatedTicket._id).toEqual(args._id); + }); + + test('Update ticket move to pipeline stage', async () => { + const mutation = ` + mutation ticketsEdit($_id: String!, ${commonTicketParamDefs}) { + ticketsEdit(_id: $_id, ${commonTicketParams}) { + _id + name + stageId + assignedUserIds + } + } + `; + + const anotherPipeline = await pipelineFactory({ boardId: board._id }); + const anotherStage = await stageFactory({ pipelineId: anotherPipeline._id }); + + const args = { + _id: ticket._id, + stageId: anotherStage._id, + name: ticket.name || '', + }; + + const updatedTicket = await graphqlRequest(mutation, 'ticketsEdit', args); + + expect(updatedTicket._id).toEqual(args._id); + expect(updatedTicket.stageId).toEqual(args.stageId); + }); + test('Ticket update orders', async () => { const ticketToStage = await ticketFactory({}); @@ -280,8 +329,8 @@ describe('Test tickets mutations', () => { await graphqlRequest(mutation, 'ticketsArchive', { stageId: ticketStage._id }); - const tasks = await Tickets.find({ stageId: ticketStage._id, status: BOARD_STATUSES.ARCHIVED }); + const tickets = await Tickets.find({ stageId: ticketStage._id, status: BOARD_STATUSES.ARCHIVED }); - expect(tasks.length).toBe(3); + expect(tickets.length).toBe(3); }); }); diff --git a/src/__tests__/widgetMutations.test.ts b/src/__tests__/widgetMutations.test.ts index 837c169a2..c805a294e 100644 --- a/src/__tests__/widgetMutations.test.ts +++ b/src/__tests__/widgetMutations.test.ts @@ -59,9 +59,6 @@ describe('messenger connect', () => { deviceTokens: ['111'], }); - process.env.INTEGRATIONS_API_DOMAIN = 'http://fake.erxes.io'; - process.env.ENGAGES_API_DOMAIN = 'http://fake.erxes.io'; - const dataSources = { IntegrationsAPI: new IntegrationsAPI(), EngagesAPI: new EngagesAPI() }; const user = await userFactory({}); @@ -187,7 +184,6 @@ describe('messenger connect', () => { expect(customer.createdAt < now).toBeTruthy(); // must be updated - expect(customer.isUser).toBeTruthy(); expect((customer.deviceTokens || []).length).toBe(2); expect(customer.deviceTokens).toContain('111'); expect(customer.deviceTokens).toContain('222'); diff --git a/src/apolloClient.ts b/src/apolloClient.ts index 1789d696d..816867e85 100644 --- a/src/apolloClient.ts +++ b/src/apolloClient.ts @@ -50,6 +50,7 @@ const apolloServer = new ApolloServer({ const requestInfo = { secure: req.secure, + cookies: req.cookies, }; const user = req.user; diff --git a/src/commands/customCommand.ts b/src/commands/customCommand.ts index 8f525ad8f..e97211e3a 100644 --- a/src/commands/customCommand.ts +++ b/src/commands/customCommand.ts @@ -1,2831 +1,48 @@ import * as dotenv from 'dotenv'; -import * as mongoose from 'mongoose'; +import { connect } from '../db/connection'; +import { Customers } from '../db/models'; dotenv.config(); -const options = { - useNewUrlParser: true, - useCreateIndex: true, - useUnifiedTopology: true, -}; +const command = async () => { + await connect(); -const data = [ - { inventoryCode: '109001', categoryCode: '009' }, - { inventoryCode: '109002', categoryCode: '009' }, - { inventoryCode: '109003', categoryCode: '009' }, - { inventoryCode: '109004', categoryCode: '009' }, - { inventoryCode: '109005', categoryCode: '009' }, - { inventoryCode: '109006', categoryCode: '009' }, - { inventoryCode: '109007', categoryCode: '009' }, - { inventoryCode: '109008', categoryCode: '009' }, - { inventoryCode: '109009', categoryCode: '009' }, - { inventoryCode: '109010', categoryCode: '009' }, - { inventoryCode: '109011', categoryCode: '009' }, - { inventoryCode: '109012', categoryCode: '009' }, - { inventoryCode: '109013', categoryCode: '009' }, - { inventoryCode: '109014', categoryCode: '009' }, - { inventoryCode: '109015', categoryCode: '009' }, - { inventoryCode: '109016', categoryCode: '009' }, - { inventoryCode: '109017', categoryCode: '009' }, - { inventoryCode: '109018', categoryCode: '009' }, - { inventoryCode: '109019', categoryCode: '009' }, - { inventoryCode: '109020', categoryCode: '009' }, - { inventoryCode: '109021', categoryCode: '009' }, - { inventoryCode: '109022', categoryCode: '009' }, - { inventoryCode: '109023', categoryCode: '009' }, - { inventoryCode: '109024', categoryCode: '009' }, - { inventoryCode: '109025', categoryCode: '009' }, - { inventoryCode: '109026', categoryCode: '009' }, - { inventoryCode: '109027', categoryCode: '009' }, - { inventoryCode: '109028', categoryCode: '009' }, - { inventoryCode: '109029', categoryCode: '009' }, - { inventoryCode: '109030', categoryCode: '009' }, - { inventoryCode: '109031', categoryCode: '009' }, - { inventoryCode: '109032', categoryCode: '009' }, - { inventoryCode: '109033', categoryCode: '009' }, - { inventoryCode: '109034', categoryCode: '009' }, - { inventoryCode: '109035', categoryCode: '009' }, - { inventoryCode: '109036', categoryCode: '009' }, - { inventoryCode: '109037', categoryCode: '009' }, - { inventoryCode: '109038', categoryCode: '009' }, - { inventoryCode: '109039', categoryCode: '009' }, - { inventoryCode: '109040', categoryCode: '009' }, - { inventoryCode: '109041', categoryCode: '009' }, - { inventoryCode: '109042', categoryCode: '009' }, - { inventoryCode: '109043', categoryCode: '009' }, - { inventoryCode: '109044', categoryCode: '009' }, - { inventoryCode: '109045', categoryCode: '009' }, - { inventoryCode: '109046', categoryCode: '009' }, - { inventoryCode: '109047', categoryCode: '009' }, - { inventoryCode: '109048', categoryCode: '009' }, - { inventoryCode: '109049', categoryCode: '009' }, - { inventoryCode: '109050', categoryCode: '009' }, - { inventoryCode: '109051', categoryCode: '009' }, - { inventoryCode: '109052', categoryCode: '009' }, - { inventoryCode: '109053', categoryCode: '009' }, - { inventoryCode: '109054', categoryCode: '009' }, - { inventoryCode: '109055', categoryCode: '009' }, - { inventoryCode: '109056', categoryCode: '009' }, - { inventoryCode: '109057', categoryCode: '009' }, - { inventoryCode: '109058', categoryCode: '009' }, - { inventoryCode: '109059', categoryCode: '009' }, - { inventoryCode: '109060', categoryCode: '009' }, - { inventoryCode: '109061', categoryCode: '009' }, - { inventoryCode: '104027', categoryCode: '0054' }, - { inventoryCode: '105001', categoryCode: '0042' }, - { inventoryCode: '105002', categoryCode: '0042' }, - { inventoryCode: '105003', categoryCode: '0042' }, - { inventoryCode: '105004', categoryCode: '0042' }, - { inventoryCode: '105005', categoryCode: '0042' }, - { inventoryCode: '105006', categoryCode: '0042' }, - { inventoryCode: '105007', categoryCode: '0042' }, - { inventoryCode: '105008', categoryCode: '0042' }, - { inventoryCode: '105009', categoryCode: '0042' }, - { inventoryCode: '105010', categoryCode: '0042' }, - { inventoryCode: '105011', categoryCode: '0042' }, - { inventoryCode: '105012', categoryCode: '0042' }, - { inventoryCode: '105013', categoryCode: '0042' }, - { inventoryCode: '105015', categoryCode: '0042' }, - { inventoryCode: '105016', categoryCode: '0042' }, - { inventoryCode: '105017', categoryCode: '0042' }, - { inventoryCode: '105018', categoryCode: '0042' }, - { inventoryCode: '105019', categoryCode: '0042' }, - { inventoryCode: '105020', categoryCode: '0042' }, - { inventoryCode: '105021', categoryCode: '0042' }, - { inventoryCode: '105022', categoryCode: '0042' }, - { inventoryCode: '105023', categoryCode: '0042' }, - { inventoryCode: '105024', categoryCode: '0042' }, - { inventoryCode: '105025', categoryCode: '0042' }, - { inventoryCode: '105026', categoryCode: '0042' }, - { inventoryCode: '105027', categoryCode: '0042' }, - { inventoryCode: '105028', categoryCode: '0042' }, - { inventoryCode: '105029', categoryCode: '0042' }, - { inventoryCode: '105030', categoryCode: '0042' }, - { inventoryCode: '105031', categoryCode: '0042' }, - { inventoryCode: '105032', categoryCode: '0042' }, - { inventoryCode: '105033', categoryCode: '0042' }, - { inventoryCode: '105034', categoryCode: '0042' }, - { inventoryCode: '105035', categoryCode: '0042' }, - { inventoryCode: '105036', categoryCode: '0042' }, - { inventoryCode: '105037', categoryCode: '0042' }, - { inventoryCode: '105038', categoryCode: '0042' }, - { inventoryCode: '105039', categoryCode: '0042' }, - { inventoryCode: '105040', categoryCode: '0042' }, - { inventoryCode: '105041', categoryCode: '0042' }, - { inventoryCode: '105042', categoryCode: '0042' }, - { inventoryCode: '105043', categoryCode: '0042' }, - { inventoryCode: '105044', categoryCode: '0042' }, - { inventoryCode: '105045', categoryCode: '0042' }, - { inventoryCode: '105046', categoryCode: '0042' }, - { inventoryCode: '105047', categoryCode: '0042' }, - { inventoryCode: '105048', categoryCode: '0042' }, - { inventoryCode: '105049', categoryCode: '0042' }, - { inventoryCode: '105050', categoryCode: '0042' }, - { inventoryCode: '105051', categoryCode: '0043' }, - { inventoryCode: '105052', categoryCode: '0043' }, - { inventoryCode: '105053', categoryCode: '0043' }, - { inventoryCode: '105054', categoryCode: '0043' }, - { inventoryCode: '105055', categoryCode: '0043' }, - { inventoryCode: '105056', categoryCode: '0043' }, - { inventoryCode: '105057', categoryCode: '0043' }, - { inventoryCode: '105058', categoryCode: '0043' }, - { inventoryCode: '105059', categoryCode: '0043' }, - { inventoryCode: '105060', categoryCode: '0043' }, - { inventoryCode: '105061', categoryCode: '0043' }, - { inventoryCode: '105062', categoryCode: '0043' }, - { inventoryCode: '105063', categoryCode: '0043' }, - { inventoryCode: '105064', categoryCode: '0043' }, - { inventoryCode: '105065', categoryCode: '0043' }, - { inventoryCode: '105066', categoryCode: '0043' }, - { inventoryCode: '105067', categoryCode: '0043' }, - { inventoryCode: '105068', categoryCode: '0043' }, - { inventoryCode: '105069', categoryCode: '0043' }, - { inventoryCode: '105070', categoryCode: '0043' }, - { inventoryCode: '105071', categoryCode: '0043' }, - { inventoryCode: '105072', categoryCode: '0043' }, - { inventoryCode: '105073', categoryCode: '0043' }, - { inventoryCode: '105074', categoryCode: '0043' }, - { inventoryCode: '105075', categoryCode: '0043' }, - { inventoryCode: '105076', categoryCode: '0043' }, - { inventoryCode: '105077', categoryCode: '0043' }, - { inventoryCode: '105078', categoryCode: '0043' }, - { inventoryCode: '105079', categoryCode: '0043' }, - { inventoryCode: '105080', categoryCode: '0043' }, - { inventoryCode: '105081', categoryCode: '0043' }, - { inventoryCode: '105082', categoryCode: '0043' }, - { inventoryCode: '105083', categoryCode: '0043' }, - { inventoryCode: '105084', categoryCode: '0043' }, - { inventoryCode: '105085', categoryCode: '0043' }, - { inventoryCode: '105086', categoryCode: '0043' }, - { inventoryCode: '105087', categoryCode: '0043' }, - { inventoryCode: '105088', categoryCode: '0043' }, - { inventoryCode: '105089', categoryCode: '0043' }, - { inventoryCode: '105090', categoryCode: '0043' }, - { inventoryCode: '105091', categoryCode: '0043' }, - { inventoryCode: '105092', categoryCode: '0043' }, - { inventoryCode: '105093', categoryCode: '0043' }, - { inventoryCode: '105094', categoryCode: '0043' }, - { inventoryCode: '105095', categoryCode: '0043' }, - { inventoryCode: '105096', categoryCode: '0043' }, - { inventoryCode: '105097', categoryCode: '0043' }, - { inventoryCode: '105098', categoryCode: '0043' }, - { inventoryCode: '105099', categoryCode: '0043' }, - { inventoryCode: '105100', categoryCode: '0043' }, - { inventoryCode: '105101', categoryCode: '0043' }, - { inventoryCode: '105102', categoryCode: '0043' }, - { inventoryCode: '105103', categoryCode: '0043' }, - { inventoryCode: '105104', categoryCode: '0043' }, - { inventoryCode: '105105', categoryCode: '0043' }, - { inventoryCode: '105106', categoryCode: '0043' }, - { inventoryCode: '105107', categoryCode: '0043' }, - { inventoryCode: '105108', categoryCode: '0043' }, - { inventoryCode: '105109', categoryCode: '0043' }, - { inventoryCode: '105110', categoryCode: '0043' }, - { inventoryCode: '105111', categoryCode: '0043' }, - { inventoryCode: '105112', categoryCode: '0043' }, - { inventoryCode: '105113', categoryCode: '0043' }, - { inventoryCode: '105114', categoryCode: '0043' }, - { inventoryCode: '105115', categoryCode: '0043' }, - { inventoryCode: '105116', categoryCode: '0043' }, - { inventoryCode: '105117', categoryCode: '0043' }, - { inventoryCode: '105118', categoryCode: '0043' }, - { inventoryCode: '105119', categoryCode: '0043' }, - { inventoryCode: '105120', categoryCode: '0043' }, - { inventoryCode: '105121', categoryCode: '0043' }, - { inventoryCode: '105122', categoryCode: '0043' }, - { inventoryCode: '105123', categoryCode: '0043' }, - { inventoryCode: '105124', categoryCode: '0043' }, - { inventoryCode: '105125', categoryCode: '0043' }, - { inventoryCode: '105126', categoryCode: '0043' }, - { inventoryCode: '105127', categoryCode: '0043' }, - { inventoryCode: '105128', categoryCode: '0043' }, - { inventoryCode: '105129', categoryCode: '0043' }, - { inventoryCode: '105130', categoryCode: '0043' }, - { inventoryCode: '105131', categoryCode: '0043' }, - { inventoryCode: '105132', categoryCode: '0043' }, - { inventoryCode: '105133', categoryCode: '0043' }, - { inventoryCode: '105134', categoryCode: '0043' }, - { inventoryCode: '105135', categoryCode: '0043' }, - { inventoryCode: '105136', categoryCode: '0043' }, - { inventoryCode: '105137', categoryCode: '0043' }, - { inventoryCode: '105138', categoryCode: '0043' }, - { inventoryCode: '105139', categoryCode: '0043' }, - { inventoryCode: '105140', categoryCode: '0043' }, - { inventoryCode: '105141', categoryCode: '0043' }, - { inventoryCode: '105142', categoryCode: '0043' }, - { inventoryCode: '105143', categoryCode: '0043' }, - { inventoryCode: '105144', categoryCode: '0044' }, - { inventoryCode: '105145', categoryCode: '0044' }, - { inventoryCode: '105146', categoryCode: '0044' }, - { inventoryCode: '105147', categoryCode: '0044' }, - { inventoryCode: '105148', categoryCode: '0044' }, - { inventoryCode: '105149', categoryCode: '0044' }, - { inventoryCode: '105150', categoryCode: '0044' }, - { inventoryCode: '105151', categoryCode: '0044' }, - { inventoryCode: '105152', categoryCode: '0044' }, - { inventoryCode: '105153', categoryCode: '0044' }, - { inventoryCode: '105154', categoryCode: '0044' }, - { inventoryCode: '105155', categoryCode: '0044' }, - { inventoryCode: '105156', categoryCode: '0044' }, - { inventoryCode: '105157', categoryCode: '0044' }, - { inventoryCode: '105158', categoryCode: '0044' }, - { inventoryCode: '105159', categoryCode: '0044' }, - { inventoryCode: '105160', categoryCode: '0044' }, - { inventoryCode: '105161', categoryCode: '0044' }, - { inventoryCode: '105162', categoryCode: '0044' }, - { inventoryCode: '105163', categoryCode: '0044' }, - { inventoryCode: '105164', categoryCode: '0044' }, - { inventoryCode: '105165', categoryCode: '0044' }, - { inventoryCode: '105166', categoryCode: '0044' }, - { inventoryCode: '105167', categoryCode: '0044' }, - { inventoryCode: '105168', categoryCode: '0044' }, - { inventoryCode: '105169', categoryCode: '0044' }, - { inventoryCode: '105170', categoryCode: '0044' }, - { inventoryCode: '105171', categoryCode: '0044' }, - { inventoryCode: '105172', categoryCode: '0044' }, - { inventoryCode: '105173', categoryCode: '0044' }, - { inventoryCode: '105174', categoryCode: '0044' }, - { inventoryCode: '105175', categoryCode: '0044' }, - { inventoryCode: '105176', categoryCode: '0044' }, - { inventoryCode: '105177', categoryCode: '0044' }, - { inventoryCode: '105178', categoryCode: '0044' }, - { inventoryCode: '105179', categoryCode: '0044' }, - { inventoryCode: '105180', categoryCode: '0041' }, - { inventoryCode: '105181', categoryCode: '0041' }, - { inventoryCode: '105182', categoryCode: '0041' }, - { inventoryCode: '105183', categoryCode: '0041' }, - { inventoryCode: '105184', categoryCode: '0041' }, - { inventoryCode: '105185', categoryCode: '0041' }, - { inventoryCode: '105186', categoryCode: '0041' }, - { inventoryCode: '105187', categoryCode: '0041' }, - { inventoryCode: '105188', categoryCode: '0041' }, - { inventoryCode: '105189', categoryCode: '0041' }, - { inventoryCode: '105191', categoryCode: '0041' }, - { inventoryCode: '105193', categoryCode: '0041' }, - { inventoryCode: '105194', categoryCode: '0041' }, - { inventoryCode: '105195', categoryCode: '0041' }, - { inventoryCode: '105196', categoryCode: '0041' }, - { inventoryCode: '105197', categoryCode: '0041' }, - { inventoryCode: '105198', categoryCode: '0041' }, - { inventoryCode: '105199', categoryCode: '0041' }, - { inventoryCode: '105200', categoryCode: '0041' }, - { inventoryCode: '105201', categoryCode: '0041' }, - { inventoryCode: '105202', categoryCode: '0041' }, - { inventoryCode: '105203', categoryCode: '0041' }, - { inventoryCode: '105204', categoryCode: '0041' }, - { inventoryCode: '105205', categoryCode: '0041' }, - { inventoryCode: '105206', categoryCode: '0041' }, - { inventoryCode: '105207', categoryCode: '0041' }, - { inventoryCode: '105208', categoryCode: '0041' }, - { inventoryCode: '105209', categoryCode: '0041' }, - { inventoryCode: '105210', categoryCode: '0041' }, - { inventoryCode: '105211', categoryCode: '0041' }, - { inventoryCode: '105212', categoryCode: '0041' }, - { inventoryCode: '105213', categoryCode: '0041' }, - { inventoryCode: '105214', categoryCode: '0041' }, - { inventoryCode: '105215', categoryCode: '0041' }, - { inventoryCode: '105216', categoryCode: '0041' }, - { inventoryCode: '105217', categoryCode: '0041' }, - { inventoryCode: '105218', categoryCode: '0041' }, - { inventoryCode: '105219', categoryCode: '0041' }, - { inventoryCode: '105220', categoryCode: '0041' }, - { inventoryCode: '105221', categoryCode: '0041' }, - { inventoryCode: '105222', categoryCode: '0041' }, - { inventoryCode: '105223', categoryCode: '0041' }, - { inventoryCode: '105224', categoryCode: '0041' }, - { inventoryCode: '105225', categoryCode: '0041' }, - { inventoryCode: '105226', categoryCode: '0041' }, - { inventoryCode: '105227', categoryCode: '0041' }, - { inventoryCode: '105228', categoryCode: '0041' }, - { inventoryCode: '105229', categoryCode: '0041' }, - { inventoryCode: '105230', categoryCode: '0041' }, - { inventoryCode: '105231', categoryCode: '0041' }, - { inventoryCode: '105232', categoryCode: '0041' }, - { inventoryCode: '105233', categoryCode: '0041' }, - { inventoryCode: '105234', categoryCode: '0041' }, - { inventoryCode: '105235', categoryCode: '0041' }, - { inventoryCode: '105236', categoryCode: '0041' }, - { inventoryCode: '105237', categoryCode: '0041' }, - { inventoryCode: '105238', categoryCode: '0041' }, - { inventoryCode: '105239', categoryCode: '0041' }, - { inventoryCode: '105240', categoryCode: '0041' }, - { inventoryCode: '105241', categoryCode: '0041' }, - { inventoryCode: '105242', categoryCode: '0041' }, - { inventoryCode: '105243', categoryCode: '0041' }, - { inventoryCode: '105244', categoryCode: '0041' }, - { inventoryCode: '105245', categoryCode: '0041' }, - { inventoryCode: '105246', categoryCode: '0041' }, - { inventoryCode: '105247', categoryCode: '0041' }, - { inventoryCode: '105248', categoryCode: '0041' }, - { inventoryCode: '105249', categoryCode: '0041' }, - { inventoryCode: '105250', categoryCode: '0041' }, - { inventoryCode: '105251', categoryCode: '0041' }, - { inventoryCode: '105252', categoryCode: '0041' }, - { inventoryCode: '105253', categoryCode: '0041' }, - { inventoryCode: '105254', categoryCode: '0041' }, - { inventoryCode: '105255', categoryCode: '0041' }, - { inventoryCode: '105256', categoryCode: '0041' }, - { inventoryCode: '105257', categoryCode: '0041' }, - { inventoryCode: '105259', categoryCode: '0041' }, - { inventoryCode: '105260', categoryCode: '0041' }, - { inventoryCode: '105261', categoryCode: '0041' }, - { inventoryCode: '105262', categoryCode: '0041' }, - { inventoryCode: '105263', categoryCode: '0041' }, - { inventoryCode: '105264', categoryCode: '0041' }, - { inventoryCode: '105265', categoryCode: '0041' }, - { inventoryCode: '105266', categoryCode: '0041' }, - { inventoryCode: '105267', categoryCode: '0041' }, - { inventoryCode: '105268', categoryCode: '0041' }, - { inventoryCode: '105269', categoryCode: '0041' }, - { inventoryCode: '105270', categoryCode: '0041' }, - { inventoryCode: '105271', categoryCode: '0041' }, - { inventoryCode: '105272', categoryCode: '0041' }, - { inventoryCode: '105273', categoryCode: '0041' }, - { inventoryCode: '105274', categoryCode: '0041' }, - { inventoryCode: '105275', categoryCode: '0041' }, - { inventoryCode: '105276', categoryCode: '0041' }, - { inventoryCode: '105277', categoryCode: '0041' }, - { inventoryCode: '105278', categoryCode: '0041' }, - { inventoryCode: '105279', categoryCode: '0041' }, - { inventoryCode: '105280', categoryCode: '0041' }, - { inventoryCode: '105281', categoryCode: '0041' }, - { inventoryCode: '105282', categoryCode: '0041' }, - { inventoryCode: '105283', categoryCode: '0041' }, - { inventoryCode: '105284', categoryCode: '0041' }, - { inventoryCode: '105285', categoryCode: '0041' }, - { inventoryCode: '105286', categoryCode: '0041' }, - { inventoryCode: '105287', categoryCode: '0041' }, - { inventoryCode: '105288', categoryCode: '0041' }, - { inventoryCode: '105289', categoryCode: '0041' }, - { inventoryCode: '105290', categoryCode: '0041' }, - { inventoryCode: '105291', categoryCode: '0041' }, - { inventoryCode: '105292', categoryCode: '0041' }, - { inventoryCode: '105293', categoryCode: '0041' }, - { inventoryCode: '105294', categoryCode: '0041' }, - { inventoryCode: '105295', categoryCode: '0041' }, - { inventoryCode: '105296', categoryCode: '0041' }, - { inventoryCode: '105297', categoryCode: '0041' }, - { inventoryCode: '105298', categoryCode: '0041' }, - { inventoryCode: '105299', categoryCode: '0041' }, - { inventoryCode: '105300', categoryCode: '0041' }, - { inventoryCode: '105301', categoryCode: '0041' }, - { inventoryCode: '105303', categoryCode: '0041' }, - { inventoryCode: '105304', categoryCode: '0041' }, - { inventoryCode: '105305', categoryCode: '0041' }, - { inventoryCode: '105306', categoryCode: '0041' }, - { inventoryCode: '105307', categoryCode: '0041' }, - { inventoryCode: '105308', categoryCode: '0041' }, - { inventoryCode: '105309', categoryCode: '0041' }, - { inventoryCode: '105310', categoryCode: '0041' }, - { inventoryCode: '105311', categoryCode: '0041' }, - { inventoryCode: '105312', categoryCode: '0041' }, - { inventoryCode: '105313', categoryCode: '0041' }, - { inventoryCode: '105314', categoryCode: '0041' }, - { inventoryCode: '105315', categoryCode: '0041' }, - { inventoryCode: '105316', categoryCode: '0041' }, - { inventoryCode: '105317', categoryCode: '0041' }, - { inventoryCode: '105318', categoryCode: '0041' }, - { inventoryCode: '105319', categoryCode: '0041' }, - { inventoryCode: '105320', categoryCode: '0041' }, - { inventoryCode: '105321', categoryCode: '0041' }, - { inventoryCode: '105322', categoryCode: '0041' }, - { inventoryCode: '105323', categoryCode: '0041' }, - { inventoryCode: '105324', categoryCode: '0041' }, - { inventoryCode: '105325', categoryCode: '0041' }, - { inventoryCode: '105382', categoryCode: '0045' }, - { inventoryCode: '105383', categoryCode: '0045' }, - { inventoryCode: '105384', categoryCode: '0045' }, - { inventoryCode: '105385', categoryCode: '0045' }, - { inventoryCode: '105386', categoryCode: '0045' }, - { inventoryCode: '105390', categoryCode: '0045' }, - { inventoryCode: '105391', categoryCode: '0045' }, - { inventoryCode: '105392', categoryCode: '0045' }, - { inventoryCode: '105393', categoryCode: '0045' }, - { inventoryCode: '105394', categoryCode: '0045' }, - { inventoryCode: '105396', categoryCode: '0045' }, - { inventoryCode: '105397', categoryCode: '0045' }, - { inventoryCode: '105398', categoryCode: '0045' }, - { inventoryCode: '105399', categoryCode: '0045' }, - { inventoryCode: '105400', categoryCode: '0045' }, - { inventoryCode: '105401', categoryCode: '0045' }, - { inventoryCode: '105402', categoryCode: '0045' }, - { inventoryCode: '105403', categoryCode: '0045' }, - { inventoryCode: '105404', categoryCode: '0045' }, - { inventoryCode: '105405', categoryCode: '0045' }, - { inventoryCode: '105406', categoryCode: '0045' }, - { inventoryCode: '105407', categoryCode: '0045' }, - { inventoryCode: '105408', categoryCode: '0045' }, - { inventoryCode: '105409', categoryCode: '0045' }, - { inventoryCode: '105410', categoryCode: '0045' }, - { inventoryCode: '105411', categoryCode: '0045' }, - { inventoryCode: '105412', categoryCode: '0045' }, - { inventoryCode: '105413', categoryCode: '0045' }, - { inventoryCode: '105414', categoryCode: '0045' }, - { inventoryCode: '105415', categoryCode: '0045' }, - { inventoryCode: '105416', categoryCode: '0045' }, - { inventoryCode: '105417', categoryCode: '0045' }, - { inventoryCode: '105418', categoryCode: '0045' }, - { inventoryCode: '105419', categoryCode: '0045' }, - { inventoryCode: '105422', categoryCode: '0045' }, - { inventoryCode: '105423', categoryCode: '0045' }, - { inventoryCode: '105424', categoryCode: '0045' }, - { inventoryCode: '105425', categoryCode: '0045' }, - { inventoryCode: '105426', categoryCode: '0045' }, - { inventoryCode: '105427', categoryCode: '0045' }, - { inventoryCode: '105428', categoryCode: '0045' }, - { inventoryCode: '105429', categoryCode: '0045' }, - { inventoryCode: '105430', categoryCode: '0045' }, - { inventoryCode: '105431', categoryCode: '0045' }, - { inventoryCode: '105432', categoryCode: '0045' }, - { inventoryCode: '105326', categoryCode: '0046' }, - { inventoryCode: '105327', categoryCode: '0046' }, - { inventoryCode: '105328', categoryCode: '0046' }, - { inventoryCode: '105329', categoryCode: '0046' }, - { inventoryCode: '105330', categoryCode: '0046' }, - { inventoryCode: '105331', categoryCode: '0046' }, - { inventoryCode: '105332', categoryCode: '0046' }, - { inventoryCode: '105333', categoryCode: '0046' }, - { inventoryCode: '105334', categoryCode: '0046' }, - { inventoryCode: '105335', categoryCode: '0046' }, - { inventoryCode: '105336', categoryCode: '0046' }, - { inventoryCode: '105337', categoryCode: '0046' }, - { inventoryCode: '105338', categoryCode: '0046' }, - { inventoryCode: '105339', categoryCode: '0046' }, - { inventoryCode: '105340', categoryCode: '0046' }, - { inventoryCode: '105341', categoryCode: '0046' }, - { inventoryCode: '105342', categoryCode: '0046' }, - { inventoryCode: '105343', categoryCode: '0046' }, - { inventoryCode: '105344', categoryCode: '0046' }, - { inventoryCode: '105345', categoryCode: '0046' }, - { inventoryCode: '105346', categoryCode: '0046' }, - { inventoryCode: '105347', categoryCode: '0046' }, - { inventoryCode: '105348', categoryCode: '0046' }, - { inventoryCode: '105349', categoryCode: '0046' }, - { inventoryCode: '105350', categoryCode: '0046' }, - { inventoryCode: '105351', categoryCode: '0046' }, - { inventoryCode: '105352', categoryCode: '0046' }, - { inventoryCode: '105353', categoryCode: '0046' }, - { inventoryCode: '105354', categoryCode: '0046' }, - { inventoryCode: '105355', categoryCode: '0046' }, - { inventoryCode: '105356', categoryCode: '0046' }, - { inventoryCode: '105357', categoryCode: '0046' }, - { inventoryCode: '105358', categoryCode: '0046' }, - { inventoryCode: '105359', categoryCode: '0046' }, - { inventoryCode: '105360', categoryCode: '0046' }, - { inventoryCode: '105361', categoryCode: '0046' }, - { inventoryCode: '105362', categoryCode: '0046' }, - { inventoryCode: '105363', categoryCode: '0046' }, - { inventoryCode: '105364', categoryCode: '0046' }, - { inventoryCode: '105365', categoryCode: '0046' }, - { inventoryCode: '105366', categoryCode: '0046' }, - { inventoryCode: '105367', categoryCode: '0046' }, - { inventoryCode: '105368', categoryCode: '0046' }, - { inventoryCode: '105369', categoryCode: '0046' }, - { inventoryCode: '105370', categoryCode: '0046' }, - { inventoryCode: '105371', categoryCode: '0046' }, - { inventoryCode: '105373', categoryCode: '0046' }, - { inventoryCode: '105374', categoryCode: '0046' }, - { inventoryCode: '105376', categoryCode: '0046' }, - { inventoryCode: '105377', categoryCode: '0046' }, - { inventoryCode: '105378', categoryCode: '0046' }, - { inventoryCode: '105379', categoryCode: '0046' }, - { inventoryCode: '105380', categoryCode: '0046' }, - { inventoryCode: '105381', categoryCode: '0046' }, - { inventoryCode: '102100', categoryCode: '0021' }, - { inventoryCode: '102101', categoryCode: '0021' }, - { inventoryCode: '102102', categoryCode: '0021' }, - { inventoryCode: '102103', categoryCode: '0021' }, - { inventoryCode: '102104', categoryCode: '0021' }, - { inventoryCode: '102105', categoryCode: '0021' }, - { inventoryCode: '102106', categoryCode: '0021' }, - { inventoryCode: '102107', categoryCode: '0021' }, - { inventoryCode: '102108', categoryCode: '0021' }, - { inventoryCode: '102109', categoryCode: '0021' }, - { inventoryCode: '102110', categoryCode: '0021' }, - { inventoryCode: '102111', categoryCode: '0021' }, - { inventoryCode: '102200', categoryCode: '0022' }, - { inventoryCode: '102201', categoryCode: '0022' }, - { inventoryCode: '102202', categoryCode: '0022' }, - { inventoryCode: '102203', categoryCode: '0022' }, - { inventoryCode: '102204', categoryCode: '0022' }, - { inventoryCode: '102205', categoryCode: '0022' }, - { inventoryCode: '102206', categoryCode: '0022' }, - { inventoryCode: '102207', categoryCode: '0022' }, - { inventoryCode: '102208', categoryCode: '0022' }, - { inventoryCode: '102209', categoryCode: '0022' }, - { inventoryCode: '102210', categoryCode: '0022' }, - { inventoryCode: '102211', categoryCode: '0022' }, - { inventoryCode: '102212', categoryCode: '0022' }, - { inventoryCode: '102213', categoryCode: '0022' }, - { inventoryCode: '102214', categoryCode: '0022' }, - { inventoryCode: '102215', categoryCode: '0022' }, - { inventoryCode: '102216', categoryCode: '0022' }, - { inventoryCode: '102217', categoryCode: '0022' }, - { inventoryCode: '102218', categoryCode: '0022' }, - { inventoryCode: '102219', categoryCode: '0022' }, - { inventoryCode: '102220', categoryCode: '0022' }, - { inventoryCode: '102221', categoryCode: '0022' }, - { inventoryCode: '102222', categoryCode: '0022' }, - { inventoryCode: '102223', categoryCode: '0022' }, - { inventoryCode: '102224', categoryCode: '0022' }, - { inventoryCode: '102225', categoryCode: '0022' }, - { inventoryCode: '102226', categoryCode: '0022' }, - { inventoryCode: '102227', categoryCode: '0022' }, - { inventoryCode: '102228', categoryCode: '0022' }, - { inventoryCode: '102229', categoryCode: '0022' }, - { inventoryCode: '102230', categoryCode: '0022' }, - { inventoryCode: '102231', categoryCode: '0022' }, - { inventoryCode: '102232', categoryCode: '0022' }, - { inventoryCode: '102233', categoryCode: '0022' }, - { inventoryCode: '102234', categoryCode: '0022' }, - { inventoryCode: '102235', categoryCode: '0022' }, - { inventoryCode: '102236', categoryCode: '0022' }, - { inventoryCode: '102237', categoryCode: '0022' }, - { inventoryCode: '102238', categoryCode: '0022' }, - { inventoryCode: '102239', categoryCode: '0022' }, - { inventoryCode: '102240', categoryCode: '0022' }, - { inventoryCode: '102241', categoryCode: '0022' }, - { inventoryCode: '102242', categoryCode: '0022' }, - { inventoryCode: '102243', categoryCode: '0022' }, - { inventoryCode: '102244', categoryCode: '0022' }, - { inventoryCode: '102245', categoryCode: '0022' }, - { inventoryCode: '102246', categoryCode: '0022' }, - { inventoryCode: '102247', categoryCode: '0022' }, - { inventoryCode: '102300', categoryCode: '0023' }, - { inventoryCode: '102301', categoryCode: '0023' }, - { inventoryCode: '102302', categoryCode: '0023' }, - { inventoryCode: '102303', categoryCode: '0023' }, - { inventoryCode: '102304', categoryCode: '0023' }, - { inventoryCode: '102305', categoryCode: '0023' }, - { inventoryCode: '102306', categoryCode: '0023' }, - { inventoryCode: '102307', categoryCode: '0023' }, - { inventoryCode: '102308', categoryCode: '0023' }, - { inventoryCode: '102309', categoryCode: '0023' }, - { inventoryCode: '102310', categoryCode: '0023' }, - { inventoryCode: '102311', categoryCode: '0023' }, - { inventoryCode: '102312', categoryCode: '0023' }, - { inventoryCode: '102313', categoryCode: '0023' }, - { inventoryCode: '102314', categoryCode: '0023' }, - { inventoryCode: '102315', categoryCode: '0023' }, - { inventoryCode: '102316', categoryCode: '0023' }, - { inventoryCode: '102317', categoryCode: '0023' }, - { inventoryCode: '102318', categoryCode: '0023' }, - { inventoryCode: '102319', categoryCode: '0023' }, - { inventoryCode: '102320', categoryCode: '0023' }, - { inventoryCode: '102321', categoryCode: '0023' }, - { inventoryCode: '102322', categoryCode: '0023' }, - { inventoryCode: '102323', categoryCode: '0023' }, - { inventoryCode: '102324', categoryCode: '0023' }, - { inventoryCode: '102325', categoryCode: '0023' }, - { inventoryCode: '102326', categoryCode: '0023' }, - { inventoryCode: '102327', categoryCode: '0023' }, - { inventoryCode: '102328', categoryCode: '0023' }, - { inventoryCode: '102329', categoryCode: '0023' }, - { inventoryCode: '102330', categoryCode: '0023' }, - { inventoryCode: '102400', categoryCode: '0024' }, - { inventoryCode: '102401', categoryCode: '0024' }, - { inventoryCode: '102402', categoryCode: '0020' }, - { inventoryCode: '102403', categoryCode: '0024' }, - { inventoryCode: '102404', categoryCode: '0024' }, - { inventoryCode: '102405', categoryCode: '0024' }, - { inventoryCode: '102406', categoryCode: '0024' }, - { inventoryCode: '102407', categoryCode: '0024' }, - { inventoryCode: '102408', categoryCode: '0024' }, - { inventoryCode: '102409', categoryCode: '0024' }, - { inventoryCode: '102410', categoryCode: '0024' }, - { inventoryCode: '102500', categoryCode: '0025' }, - { inventoryCode: '102501', categoryCode: '0025' }, - { inventoryCode: '102502', categoryCode: '0025' }, - { inventoryCode: '102503', categoryCode: '0025' }, - { inventoryCode: '102504', categoryCode: '0025' }, - { inventoryCode: '102505', categoryCode: '0025' }, - { inventoryCode: '102506', categoryCode: '0025' }, - { inventoryCode: '102700', categoryCode: '0027' }, - { inventoryCode: '102701', categoryCode: '0027' }, - { inventoryCode: '102702', categoryCode: '0027' }, - { inventoryCode: '102703', categoryCode: '0027' }, - { inventoryCode: '102704', categoryCode: '0027' }, - { inventoryCode: '102705', categoryCode: '0027' }, - { inventoryCode: '102706', categoryCode: '0027' }, - { inventoryCode: '102707', categoryCode: '0027' }, - { inventoryCode: '102708', categoryCode: '0027' }, - { inventoryCode: '102709', categoryCode: '0027' }, - { inventoryCode: '102710', categoryCode: '0027' }, - { inventoryCode: '102711', categoryCode: '0027' }, - { inventoryCode: '102712', categoryCode: '0027' }, - { inventoryCode: '102800', categoryCode: '0028' }, - { inventoryCode: '102801', categoryCode: '0028' }, - { inventoryCode: '102802', categoryCode: '0028' }, - { inventoryCode: '102803', categoryCode: '0028' }, - { inventoryCode: '102804', categoryCode: '0028' }, - { inventoryCode: '102805', categoryCode: '0028' }, - { inventoryCode: '102806', categoryCode: '0028' }, - { inventoryCode: '102807', categoryCode: '0028' }, - { inventoryCode: '102808', categoryCode: '0028' }, - { inventoryCode: '102809', categoryCode: '0028' }, - { inventoryCode: '102810', categoryCode: '0028' }, - { inventoryCode: '102811', categoryCode: '0028' }, - { inventoryCode: '102812', categoryCode: '0028' }, - { inventoryCode: '102813', categoryCode: '0028' }, - { inventoryCode: '102814', categoryCode: '0028' }, - { inventoryCode: '102815', categoryCode: '0028' }, - { inventoryCode: '102816', categoryCode: '0028' }, - { inventoryCode: '102817', categoryCode: '0028' }, - { inventoryCode: '102818', categoryCode: '0028' }, - { inventoryCode: '102819', categoryCode: '0028' }, - { inventoryCode: '102821', categoryCode: '0028' }, - { inventoryCode: '102822', categoryCode: '0028' }, - { inventoryCode: '102823', categoryCode: '0028' }, - { inventoryCode: '102824', categoryCode: '0028' }, - { inventoryCode: '102826', categoryCode: '0028' }, - { inventoryCode: '102827', categoryCode: '0028' }, - { inventoryCode: '102828', categoryCode: '0028' }, - { inventoryCode: '102829', categoryCode: '0028' }, - { inventoryCode: '102831', categoryCode: '0028' }, - { inventoryCode: '102832', categoryCode: '0028' }, - { inventoryCode: '102833', categoryCode: '0028' }, - { inventoryCode: '102835', categoryCode: '0028' }, - { inventoryCode: '102837', categoryCode: '0028' }, - { inventoryCode: '102839', categoryCode: '0028' }, - { inventoryCode: '102841', categoryCode: '0028' }, - { inventoryCode: '102843', categoryCode: '0028' }, - { inventoryCode: '102844', categoryCode: '0028' }, - { inventoryCode: '102845', categoryCode: '0028' }, - { inventoryCode: '102846', categoryCode: '0028' }, - { inventoryCode: '102847', categoryCode: '0028' }, - { inventoryCode: '102848', categoryCode: '0028' }, - { inventoryCode: '102849', categoryCode: '0028' }, - { inventoryCode: '102850', categoryCode: '0028' }, - { inventoryCode: '102851', categoryCode: '0028' }, - { inventoryCode: '102852', categoryCode: '0028' }, - { inventoryCode: '102853', categoryCode: '0028' }, - { inventoryCode: '102854', categoryCode: '0028' }, - { inventoryCode: '102855', categoryCode: '0028' }, - { inventoryCode: '102856', categoryCode: '0028' }, - { inventoryCode: '102857', categoryCode: '0028' }, - { inventoryCode: '102858', categoryCode: '0028' }, - { inventoryCode: '102859', categoryCode: '0028' }, - { inventoryCode: '102860', categoryCode: '0028' }, - { inventoryCode: '102861', categoryCode: '0028' }, - { inventoryCode: '102862', categoryCode: '0028' }, - { inventoryCode: '102863', categoryCode: '0028' }, - { inventoryCode: '102864', categoryCode: '0028' }, - { inventoryCode: '102865', categoryCode: '0028' }, - { inventoryCode: '102866', categoryCode: '0028' }, - { inventoryCode: '102867', categoryCode: '0028' }, - { inventoryCode: '102868', categoryCode: '0028' }, - { inventoryCode: '102869', categoryCode: '0028' }, - { inventoryCode: '102870', categoryCode: '0028' }, - { inventoryCode: '102871', categoryCode: '0028' }, - { inventoryCode: '102872', categoryCode: '0028' }, - { inventoryCode: '102873', categoryCode: '0028' }, - { inventoryCode: '102874', categoryCode: '0028' }, - { inventoryCode: '102876', categoryCode: '0028' }, - { inventoryCode: '102877', categoryCode: '0028' }, - { inventoryCode: '102878', categoryCode: '0028' }, - { inventoryCode: '102879', categoryCode: '0028' }, - { inventoryCode: '102880', categoryCode: '0028' }, - { inventoryCode: '102881', categoryCode: '0028' }, - { inventoryCode: '102882', categoryCode: '0028' }, - { inventoryCode: '102883', categoryCode: '0028' }, - { inventoryCode: '102884', categoryCode: '0028' }, - { inventoryCode: '102885', categoryCode: '0028' }, - { inventoryCode: '102886', categoryCode: '0028' }, - { inventoryCode: '102887', categoryCode: '0028' }, - { inventoryCode: '102888', categoryCode: '0028' }, - { inventoryCode: '102889', categoryCode: '0028' }, - { inventoryCode: '102890', categoryCode: '0028' }, - { inventoryCode: '102891', categoryCode: '0028' }, - { inventoryCode: '102892', categoryCode: '0028' }, - { inventoryCode: '102893', categoryCode: '0028' }, - { inventoryCode: '102894', categoryCode: '0028' }, - { inventoryCode: '102895', categoryCode: '0028' }, - { inventoryCode: '102896', categoryCode: '0028' }, - { inventoryCode: '102897', categoryCode: '0028' }, - { inventoryCode: '102898', categoryCode: '0028' }, - { inventoryCode: '102899', categoryCode: '0028' }, - { inventoryCode: '1028100', categoryCode: '0028' }, - { inventoryCode: '1028101', categoryCode: '0028' }, - { inventoryCode: '1028102', categoryCode: '0028' }, - { inventoryCode: '1028103', categoryCode: '0028' }, - { inventoryCode: '1028104', categoryCode: '0028' }, - { inventoryCode: '1028105', categoryCode: '0028' }, - { inventoryCode: '1028106', categoryCode: '0028' }, - { inventoryCode: '1028107', categoryCode: '0028' }, - { inventoryCode: '1028108', categoryCode: '0028' }, - { inventoryCode: '1028109', categoryCode: '0028' }, - { inventoryCode: '1028110', categoryCode: '0028' }, - { inventoryCode: '1028111', categoryCode: '0028' }, - { inventoryCode: '1028112', categoryCode: '0028' }, - { inventoryCode: '1028113', categoryCode: '0028' }, - { inventoryCode: '1028114', categoryCode: '0028' }, - { inventoryCode: '1028115', categoryCode: '0028' }, - { inventoryCode: '1028116', categoryCode: '0028' }, - { inventoryCode: '1028117', categoryCode: '0028' }, - { inventoryCode: '1028118', categoryCode: '0028' }, - { inventoryCode: '1028119', categoryCode: '0028' }, - { inventoryCode: '1028120', categoryCode: '0028' }, - { inventoryCode: '1028121', categoryCode: '0028' }, - { inventoryCode: '1028122', categoryCode: '0028' }, - { inventoryCode: '1028123', categoryCode: '0028' }, - { inventoryCode: '1028124', categoryCode: '0028' }, - { inventoryCode: '1028125', categoryCode: '0028' }, - { inventoryCode: '1028126', categoryCode: '0028' }, - { inventoryCode: '1028127', categoryCode: '0028' }, - { inventoryCode: '1028128', categoryCode: '0028' }, - { inventoryCode: '1028129', categoryCode: '0028' }, - { inventoryCode: '1028130', categoryCode: '0028' }, - { inventoryCode: '1028131', categoryCode: '0028' }, - { inventoryCode: '1028132', categoryCode: '0028' }, - { inventoryCode: '1028133', categoryCode: '0028' }, - { inventoryCode: '1028134', categoryCode: '0028' }, - { inventoryCode: '1028135', categoryCode: '0028' }, - { inventoryCode: '1028136', categoryCode: '0028' }, - { inventoryCode: '1028137', categoryCode: '0028' }, - { inventoryCode: '1028138', categoryCode: '0028' }, - { inventoryCode: '1028139', categoryCode: '0028' }, - { inventoryCode: '1028140', categoryCode: '0028' }, - { inventoryCode: '1028141', categoryCode: '0028' }, - { inventoryCode: '1028142', categoryCode: '0028' }, - { inventoryCode: '1028143', categoryCode: '0028' }, - { inventoryCode: '1028144', categoryCode: '0028' }, - { inventoryCode: '1028145', categoryCode: '0028' }, - { inventoryCode: '1028146', categoryCode: '0028' }, - { inventoryCode: '1028147', categoryCode: '0028' }, - { inventoryCode: '1028149', categoryCode: '0028' }, - { inventoryCode: '1028150', categoryCode: '0028' }, - { inventoryCode: '1028151', categoryCode: '0028' }, - { inventoryCode: '1028152', categoryCode: '0028' }, - { inventoryCode: '1028153', categoryCode: '0028' }, - { inventoryCode: '1028154', categoryCode: '0028' }, - { inventoryCode: '1028155', categoryCode: '0028' }, - { inventoryCode: '1028156', categoryCode: '0028' }, - { inventoryCode: '1028157', categoryCode: '0028' }, - { inventoryCode: '1028158', categoryCode: '0028' }, - { inventoryCode: '1028159', categoryCode: '0028' }, - { inventoryCode: '1028160', categoryCode: '0028' }, - { inventoryCode: '1028161', categoryCode: '0028' }, - { inventoryCode: '1028162', categoryCode: '0028' }, - { inventoryCode: '1028163', categoryCode: '0028' }, - { inventoryCode: '1028164', categoryCode: '0028' }, - { inventoryCode: '1028165', categoryCode: '0028' }, - { inventoryCode: '1028166', categoryCode: '0028' }, - { inventoryCode: '1028167', categoryCode: '0028' }, - { inventoryCode: '1028168', categoryCode: '0028' }, - { inventoryCode: '1028169', categoryCode: '0028' }, - { inventoryCode: '1028170', categoryCode: '0028' }, - { inventoryCode: '1028171', categoryCode: '0028' }, - { inventoryCode: '1028172', categoryCode: '0028' }, - { inventoryCode: '1028173', categoryCode: '0028' }, - { inventoryCode: '1028174', categoryCode: '0028' }, - { inventoryCode: '1028175', categoryCode: '0028' }, - { inventoryCode: '1028176', categoryCode: '0028' }, - { inventoryCode: '1028177', categoryCode: '0028' }, - { inventoryCode: '1028178', categoryCode: '0028' }, - { inventoryCode: '1028179', categoryCode: '0028' }, - { inventoryCode: '1028180', categoryCode: '0028' }, - { inventoryCode: '1028181', categoryCode: '0028' }, - { inventoryCode: '1028182', categoryCode: '0028' }, - { inventoryCode: '1028183', categoryCode: '0028' }, - { inventoryCode: '1028184', categoryCode: '0028' }, - { inventoryCode: '1028185', categoryCode: '0028' }, - { inventoryCode: '1028186', categoryCode: '0028' }, - { inventoryCode: '1028187', categoryCode: '0028' }, - { inventoryCode: '1028188', categoryCode: '0028' }, - { inventoryCode: '1028189', categoryCode: '0028' }, - { inventoryCode: '1028190', categoryCode: '0028' }, - { inventoryCode: '1028191', categoryCode: '0028' }, - { inventoryCode: '1028192', categoryCode: '0028' }, - { inventoryCode: '1028193', categoryCode: '0028' }, - { inventoryCode: '1028194', categoryCode: '0028' }, - { inventoryCode: '1028195', categoryCode: '0028' }, - { inventoryCode: '1028196', categoryCode: '0028' }, - { inventoryCode: '1028197', categoryCode: '0028' }, - { inventoryCode: '1028198', categoryCode: '0028' }, - { inventoryCode: '1028199', categoryCode: '0028' }, - { inventoryCode: '1028200', categoryCode: '0028' }, - { inventoryCode: '1028201', categoryCode: '0028' }, - { inventoryCode: '1028202', categoryCode: '0028' }, - { inventoryCode: '1028203', categoryCode: '0028' }, - { inventoryCode: '1028204', categoryCode: '0028' }, - { inventoryCode: '1028205', categoryCode: '0028' }, - { inventoryCode: '1028206', categoryCode: '0028' }, - { inventoryCode: '1028207', categoryCode: '0028' }, - { inventoryCode: '1028210', categoryCode: '0028' }, - { inventoryCode: '1028211', categoryCode: '0028' }, - { inventoryCode: '1028212', categoryCode: '0028' }, - { inventoryCode: '1028213', categoryCode: '0028' }, - { inventoryCode: '1028214', categoryCode: '0028' }, - { inventoryCode: '1028215', categoryCode: '0028' }, - { inventoryCode: '1028216', categoryCode: '0028' }, - { inventoryCode: '1028217', categoryCode: '0028' }, - { inventoryCode: '1028218', categoryCode: '0028' }, - { inventoryCode: '1028219', categoryCode: '0028' }, - { inventoryCode: '1028220', categoryCode: '0028' }, - { inventoryCode: '1028221', categoryCode: '0028' }, - { inventoryCode: '1028222', categoryCode: '0028' }, - { inventoryCode: '1028223', categoryCode: '0028' }, - { inventoryCode: '1028224', categoryCode: '0028' }, - { inventoryCode: '1028225', categoryCode: '0028' }, - { inventoryCode: '1028226', categoryCode: '0028' }, - { inventoryCode: '1028227', categoryCode: '0028' }, - { inventoryCode: '1028228', categoryCode: '0028' }, - { inventoryCode: '1028229', categoryCode: '0028' }, - { inventoryCode: '1028230', categoryCode: '0028' }, - { inventoryCode: '1028231', categoryCode: '0028' }, - { inventoryCode: '1028232', categoryCode: '0028' }, - { inventoryCode: '1028233', categoryCode: '0028' }, - { inventoryCode: '1028234', categoryCode: '0028' }, - { inventoryCode: '102900', categoryCode: '0029' }, - { inventoryCode: '102901', categoryCode: '0029' }, - { inventoryCode: '102902', categoryCode: '0029' }, - { inventoryCode: '102903', categoryCode: '0029' }, - { inventoryCode: '102904', categoryCode: '0029' }, - { inventoryCode: '102905', categoryCode: '0029' }, - { inventoryCode: '102906', categoryCode: '0029' }, - { inventoryCode: '102907', categoryCode: '0029' }, - { inventoryCode: '102908', categoryCode: '0029' }, - { inventoryCode: '102910', categoryCode: '0020' }, - { inventoryCode: '102911', categoryCode: '0029' }, - { inventoryCode: '102912', categoryCode: '0029' }, - { inventoryCode: '102913', categoryCode: '0029' }, - { inventoryCode: '102914', categoryCode: '0029' }, - { inventoryCode: '102915', categoryCode: '0029' }, - { inventoryCode: '102916', categoryCode: '0029' }, - { inventoryCode: '102917', categoryCode: '0029' }, - { inventoryCode: '102918', categoryCode: '0029' }, - { inventoryCode: '102919', categoryCode: '0029' }, - { inventoryCode: '102920', categoryCode: '0029' }, - { inventoryCode: '102921', categoryCode: '0029' }, - { inventoryCode: '102922', categoryCode: '0029' }, - { inventoryCode: '102923', categoryCode: '0029' }, - { inventoryCode: '102924', categoryCode: '0029' }, - { inventoryCode: '102925', categoryCode: '0029' }, - { inventoryCode: '102926', categoryCode: '0029' }, - { inventoryCode: '102927', categoryCode: '0029' }, - { inventoryCode: '102928', categoryCode: '0029' }, - { inventoryCode: '102929', categoryCode: '0029' }, - { inventoryCode: '102930', categoryCode: '0029' }, - { inventoryCode: '102931', categoryCode: '0029' }, - { inventoryCode: '102932', categoryCode: '0029' }, - { inventoryCode: '102933', categoryCode: '0029' }, - { inventoryCode: '102934', categoryCode: '0029' }, - { inventoryCode: '102935', categoryCode: '0029' }, - { inventoryCode: '102936', categoryCode: '0029' }, - { inventoryCode: '102937', categoryCode: '0029' }, - { inventoryCode: '102938', categoryCode: '0029' }, - { inventoryCode: '102939', categoryCode: '0029' }, - { inventoryCode: '102940', categoryCode: '0029' }, - { inventoryCode: '102942', categoryCode: '0029' }, - { inventoryCode: '102943', categoryCode: '0029' }, - { inventoryCode: '102944', categoryCode: '0029' }, - { inventoryCode: '102945', categoryCode: '0029' }, - { inventoryCode: '102946', categoryCode: '0029' }, - { inventoryCode: '102947', categoryCode: '0029' }, - { inventoryCode: '102948', categoryCode: '0029' }, - { inventoryCode: '102949', categoryCode: '0029' }, - { inventoryCode: '102950', categoryCode: '0029' }, - { inventoryCode: '102951', categoryCode: '0029' }, - { inventoryCode: '102953', categoryCode: '0029' }, - { inventoryCode: '102954', categoryCode: '0029' }, - { inventoryCode: '102955', categoryCode: '0029' }, - { inventoryCode: '102956', categoryCode: '0029' }, - { inventoryCode: '102957', categoryCode: '0029' }, - { inventoryCode: '102958', categoryCode: '0029' }, - { inventoryCode: '102959', categoryCode: '0029' }, - { inventoryCode: '102960', categoryCode: '0029' }, - { inventoryCode: '102961', categoryCode: '0029' }, - { inventoryCode: '102962', categoryCode: '0029' }, - { inventoryCode: '102964', categoryCode: '0029' }, - { inventoryCode: '102966', categoryCode: '0029' }, - { inventoryCode: '102967', categoryCode: '0029' }, - { inventoryCode: '102968', categoryCode: '0029' }, - { inventoryCode: '102969', categoryCode: '0029' }, - { inventoryCode: '102970', categoryCode: '0029' }, - { inventoryCode: '102971', categoryCode: '0029' }, - { inventoryCode: '102972', categoryCode: '0029' }, - { inventoryCode: '102973', categoryCode: '0029' }, - { inventoryCode: '102974', categoryCode: '0029' }, - { inventoryCode: '102975', categoryCode: '0029' }, - { inventoryCode: '102976', categoryCode: '0029' }, - { inventoryCode: '102977', categoryCode: '0029' }, - { inventoryCode: '102978', categoryCode: '0029' }, - { inventoryCode: '102979', categoryCode: '0029' }, - { inventoryCode: '102980', categoryCode: '0029' }, - { inventoryCode: '102981', categoryCode: '0029' }, - { inventoryCode: '102982', categoryCode: '0029' }, - { inventoryCode: '102983', categoryCode: '0029' }, - { inventoryCode: '102984', categoryCode: '0029' }, - { inventoryCode: '102985', categoryCode: '0029' }, - { inventoryCode: '102986', categoryCode: '0029' }, - { inventoryCode: '102987', categoryCode: '0029' }, - { inventoryCode: '102988', categoryCode: '0029' }, - { inventoryCode: '102989', categoryCode: '0029' }, - { inventoryCode: '102990', categoryCode: '0029' }, - { inventoryCode: '102991', categoryCode: '0029' }, - { inventoryCode: '102992', categoryCode: '0029' }, - { inventoryCode: '102993', categoryCode: '0029' }, - { inventoryCode: '102994', categoryCode: '0029' }, - { inventoryCode: '102995', categoryCode: '0029' }, - { inventoryCode: '102996', categoryCode: '0029' }, - { inventoryCode: '102997', categoryCode: '0029' }, - { inventoryCode: '102998', categoryCode: '0029' }, - { inventoryCode: '102999', categoryCode: '0029' }, - { inventoryCode: '1029100', categoryCode: '0029' }, - { inventoryCode: '1029101', categoryCode: '0029' }, - { inventoryCode: '1029102', categoryCode: '0029' }, - { inventoryCode: '102600', categoryCode: '0026' }, - { inventoryCode: '102601', categoryCode: '0026' }, - { inventoryCode: '102602', categoryCode: '0026' }, - { inventoryCode: '102603', categoryCode: '0026' }, - { inventoryCode: '102604', categoryCode: '0026' }, - { inventoryCode: '102605', categoryCode: '0026' }, - { inventoryCode: '102606', categoryCode: '0026' }, - { inventoryCode: '102607', categoryCode: '0026' }, - { inventoryCode: '102608', categoryCode: '0026' }, - { inventoryCode: '102609', categoryCode: '0026' }, - { inventoryCode: '102610', categoryCode: '0026' }, - { inventoryCode: '102000', categoryCode: '0020' }, - { inventoryCode: '102001', categoryCode: '0020' }, - { inventoryCode: '102002', categoryCode: '0020' }, - { inventoryCode: '102003', categoryCode: '0020' }, - { inventoryCode: '102004', categoryCode: '0020' }, - { inventoryCode: '102005', categoryCode: '0020' }, - { inventoryCode: '102006', categoryCode: '0020' }, - { inventoryCode: '102007', categoryCode: '0020' }, - { inventoryCode: '102008', categoryCode: '0020' }, - { inventoryCode: '102009', categoryCode: '0020' }, - { inventoryCode: '102010', categoryCode: '0020' }, - { inventoryCode: '102011', categoryCode: '0020' }, - { inventoryCode: '102012', categoryCode: '0020' }, - { inventoryCode: '102014', categoryCode: '0020' }, - { inventoryCode: '102015', categoryCode: '0020' }, - { inventoryCode: '10290100', categoryCode: '0029c' }, - { inventoryCode: '10290101', categoryCode: '0029c' }, - { inventoryCode: '10290102', categoryCode: '0029c' }, - { inventoryCode: '102611', categoryCode: '0026' }, - { inventoryCode: '10290104', categoryCode: '0029c' }, - { inventoryCode: '10290106', categoryCode: '0029c' }, - { inventoryCode: '10290107', categoryCode: '0029c' }, - { inventoryCode: '10290108', categoryCode: '0029c' }, - { inventoryCode: '10290109', categoryCode: '0029c' }, - { inventoryCode: '10290110', categoryCode: '0029c' }, - { inventoryCode: '10290111', categoryCode: '0029c' }, - { inventoryCode: '10290112', categoryCode: '0029c' }, - { inventoryCode: '10290113', categoryCode: '0029c' }, - { inventoryCode: '10290114', categoryCode: '0029c' }, - { inventoryCode: '10290115', categoryCode: '0029c' }, - { inventoryCode: '10290116', categoryCode: '0029c' }, - { inventoryCode: '10290117', categoryCode: '0029c' }, - { inventoryCode: '10290118', categoryCode: '0029c' }, - { inventoryCode: '10290119', categoryCode: '0029c' }, - { inventoryCode: '10290120', categoryCode: '0029c' }, - { inventoryCode: '10290121', categoryCode: '0029c' }, - { inventoryCode: '103600', categoryCode: '0036' }, - { inventoryCode: '103601', categoryCode: '0036' }, - { inventoryCode: '103602', categoryCode: '0036' }, - { inventoryCode: '103603', categoryCode: '0036' }, - { inventoryCode: '103604', categoryCode: '0036' }, - { inventoryCode: '103605', categoryCode: '0036' }, - { inventoryCode: '103606', categoryCode: '0036' }, - { inventoryCode: '103607', categoryCode: '0036' }, - { inventoryCode: '103608', categoryCode: '0036' }, - { inventoryCode: '103800', categoryCode: '0038' }, - { inventoryCode: '103801', categoryCode: '0038' }, - { inventoryCode: '103802', categoryCode: '0038' }, - { inventoryCode: '103803', categoryCode: '0038' }, - { inventoryCode: '103804', categoryCode: '0038' }, - { inventoryCode: '103805', categoryCode: '0038' }, - { inventoryCode: '103806', categoryCode: '0038' }, - { inventoryCode: '103807', categoryCode: '0038' }, - { inventoryCode: '103808', categoryCode: '0038' }, - { inventoryCode: '103809', categoryCode: '0038' }, - { inventoryCode: '103810', categoryCode: '0038' }, - { inventoryCode: '103811', categoryCode: '0038' }, - { inventoryCode: '103812', categoryCode: '0038' }, - { inventoryCode: '103813', categoryCode: '0038' }, - { inventoryCode: '103814', categoryCode: '0038' }, - { inventoryCode: '103815', categoryCode: '0038' }, - { inventoryCode: '103816', categoryCode: '0038' }, - { inventoryCode: '103817', categoryCode: '0038' }, - { inventoryCode: '103818', categoryCode: '0038' }, - { inventoryCode: '103819', categoryCode: '0038' }, - { inventoryCode: '103820', categoryCode: '0038' }, - { inventoryCode: '103821', categoryCode: '0038' }, - { inventoryCode: '103822', categoryCode: '0038' }, - { inventoryCode: '103823', categoryCode: '0038' }, - { inventoryCode: '103824', categoryCode: '0038' }, - { inventoryCode: '103825', categoryCode: '0038' }, - { inventoryCode: '103826', categoryCode: '0038' }, - { inventoryCode: '103827', categoryCode: '0038' }, - { inventoryCode: '103828', categoryCode: '0038' }, - { inventoryCode: '103829', categoryCode: '0038' }, - { inventoryCode: '103831', categoryCode: '0038' }, - { inventoryCode: '103832', categoryCode: '0038' }, - { inventoryCode: '103833', categoryCode: '0038' }, - { inventoryCode: '103834', categoryCode: '0038' }, - { inventoryCode: '103835', categoryCode: '0038' }, - { inventoryCode: '103836', categoryCode: '0038' }, - { inventoryCode: '103837', categoryCode: '0038' }, - { inventoryCode: '103838', categoryCode: '0038' }, - { inventoryCode: '103839', categoryCode: '0038' }, - { inventoryCode: '103840', categoryCode: '0038' }, - { inventoryCode: '103841', categoryCode: '0038' }, - { inventoryCode: '103842', categoryCode: '0038' }, - { inventoryCode: '103843', categoryCode: '0038' }, - { inventoryCode: '103844', categoryCode: '0038' }, - { inventoryCode: '103845', categoryCode: '0038' }, - { inventoryCode: '103846', categoryCode: '0038' }, - { inventoryCode: '103847', categoryCode: '0038' }, - { inventoryCode: '103848', categoryCode: '0038' }, - { inventoryCode: '103849', categoryCode: '0038' }, - { inventoryCode: '103850', categoryCode: '0038' }, - { inventoryCode: '103851', categoryCode: '0038' }, - { inventoryCode: '103852', categoryCode: '0038' }, - { inventoryCode: '103853', categoryCode: '0038' }, - { inventoryCode: '103854', categoryCode: '0038' }, - { inventoryCode: '103855', categoryCode: '0038' }, - { inventoryCode: '103856', categoryCode: '0038' }, - { inventoryCode: '103857', categoryCode: '0038' }, - { inventoryCode: '103858', categoryCode: '0038' }, - { inventoryCode: '103860', categoryCode: '0038' }, - { inventoryCode: '103861', categoryCode: '0038' }, - { inventoryCode: '103863', categoryCode: '0038' }, - { inventoryCode: '103864', categoryCode: '0038' }, - { inventoryCode: '103865', categoryCode: '0038' }, - { inventoryCode: '103867', categoryCode: '0038' }, - { inventoryCode: '103868', categoryCode: '0038' }, - { inventoryCode: '103869', categoryCode: '0038' }, - { inventoryCode: '103870', categoryCode: '0038' }, - { inventoryCode: '103871', categoryCode: '0038' }, - { inventoryCode: '103872', categoryCode: '0038' }, - { inventoryCode: '103873', categoryCode: '0038' }, - { inventoryCode: '103874', categoryCode: '0038' }, - { inventoryCode: '103875', categoryCode: '0038' }, - { inventoryCode: '103876', categoryCode: '0038' }, - { inventoryCode: '103877', categoryCode: '0038' }, - { inventoryCode: '103878', categoryCode: '0038' }, - { inventoryCode: '103879', categoryCode: '0038' }, - { inventoryCode: '103880', categoryCode: '0038' }, - { inventoryCode: '103881', categoryCode: '0038' }, - { inventoryCode: '103882', categoryCode: '0038' }, - { inventoryCode: '103883', categoryCode: '0038' }, - { inventoryCode: '103884', categoryCode: '0038' }, - { inventoryCode: '103885', categoryCode: '0038' }, - { inventoryCode: '103886', categoryCode: '0038' }, - { inventoryCode: '103887', categoryCode: '0038' }, - { inventoryCode: '103888', categoryCode: '0038' }, - { inventoryCode: '103889', categoryCode: '0038' }, - { inventoryCode: '103890', categoryCode: '0038' }, - { inventoryCode: '103891', categoryCode: '0038' }, - { inventoryCode: '103892', categoryCode: '0038' }, - { inventoryCode: '103893', categoryCode: '0038' }, - { inventoryCode: '103894', categoryCode: '0038' }, - { inventoryCode: '103895', categoryCode: '0038' }, - { inventoryCode: '103896', categoryCode: '0038' }, - { inventoryCode: '103897', categoryCode: '0038' }, - { inventoryCode: '103898', categoryCode: '0038' }, - { inventoryCode: '103899', categoryCode: '0038' }, - { inventoryCode: '1038100', categoryCode: '0038' }, - { inventoryCode: '1038101', categoryCode: '0038' }, - { inventoryCode: '1038102', categoryCode: '0038' }, - { inventoryCode: '1038103', categoryCode: '0038' }, - { inventoryCode: '1038104', categoryCode: '0038' }, - { inventoryCode: '1038105', categoryCode: '0038' }, - { inventoryCode: '1038106', categoryCode: '0038' }, - { inventoryCode: '1038107', categoryCode: '0038' }, - { inventoryCode: '1038108', categoryCode: '0038' }, - { inventoryCode: '1038109', categoryCode: '0038' }, - { inventoryCode: '1038110', categoryCode: '0038' }, - { inventoryCode: '1038111', categoryCode: '0038' }, - { inventoryCode: '1038112', categoryCode: '0038' }, - { inventoryCode: '1038113', categoryCode: '0038' }, - { inventoryCode: '1038114', categoryCode: '0038' }, - { inventoryCode: '1038115', categoryCode: '0038' }, - { inventoryCode: '1038116', categoryCode: '0038' }, - { inventoryCode: '1038117', categoryCode: '0038' }, - { inventoryCode: '1038118', categoryCode: '0038' }, - { inventoryCode: '1038119', categoryCode: '0038' }, - { inventoryCode: '1038120', categoryCode: '0038' }, - { inventoryCode: '1038121', categoryCode: '0038' }, - { inventoryCode: '1038122', categoryCode: '0038' }, - { inventoryCode: '1038123', categoryCode: '0038' }, - { inventoryCode: '1038124', categoryCode: '0038' }, - { inventoryCode: '1038125', categoryCode: '0038' }, - { inventoryCode: '1038126', categoryCode: '0038' }, - { inventoryCode: '1038127', categoryCode: '0038' }, - { inventoryCode: '1038128', categoryCode: '0038' }, - { inventoryCode: '1038129', categoryCode: '0038' }, - { inventoryCode: '1038130', categoryCode: '0038' }, - { inventoryCode: '1038131', categoryCode: '0038' }, - { inventoryCode: '1038132', categoryCode: '0038' }, - { inventoryCode: '1038133', categoryCode: '0038' }, - { inventoryCode: '1038134', categoryCode: '0038' }, - { inventoryCode: '1038135', categoryCode: '0038' }, - { inventoryCode: '1038136', categoryCode: '0038' }, - { inventoryCode: '1038137', categoryCode: '0038' }, - { inventoryCode: '1038138', categoryCode: '0038' }, - { inventoryCode: '1038139', categoryCode: '0038' }, - { inventoryCode: '1038140', categoryCode: '0038' }, - { inventoryCode: '1038141', categoryCode: '0038' }, - { inventoryCode: '1038142', categoryCode: '0038' }, - { inventoryCode: '1038143', categoryCode: '0038' }, - { inventoryCode: '1038144', categoryCode: '0038' }, - { inventoryCode: '1038145', categoryCode: '0038' }, - { inventoryCode: '1038146', categoryCode: '0038' }, - { inventoryCode: '1038147', categoryCode: '0038' }, - { inventoryCode: '1038148', categoryCode: '0038' }, - { inventoryCode: '1038149', categoryCode: '0038' }, - { inventoryCode: '1038151', categoryCode: '0038' }, - { inventoryCode: '1038152', categoryCode: '0038' }, - { inventoryCode: '1038153', categoryCode: '0038' }, - { inventoryCode: '1038154', categoryCode: '0038' }, - { inventoryCode: '1038155', categoryCode: '0038' }, - { inventoryCode: '1038156', categoryCode: '0038' }, - { inventoryCode: '1038157', categoryCode: '0038' }, - { inventoryCode: '1038158', categoryCode: '0038' }, - { inventoryCode: '1038159', categoryCode: '0038' }, - { inventoryCode: '1038160', categoryCode: '0038' }, - { inventoryCode: '1038161', categoryCode: '0038' }, - { inventoryCode: '1038162', categoryCode: '0038' }, - { inventoryCode: '1038163', categoryCode: '0038' }, - { inventoryCode: '1038164', categoryCode: '0038' }, - { inventoryCode: '1038165', categoryCode: '0038' }, - { inventoryCode: '1038166', categoryCode: '0038' }, - { inventoryCode: '1038167', categoryCode: '0038' }, - { inventoryCode: '1038168', categoryCode: '0038' }, - { inventoryCode: '1038169', categoryCode: '0038' }, - { inventoryCode: '1038170', categoryCode: '0038' }, - { inventoryCode: '1038171', categoryCode: '0038' }, - { inventoryCode: '1038172', categoryCode: '0038' }, - { inventoryCode: '1038173', categoryCode: '0038' }, - { inventoryCode: '1038174', categoryCode: '0038' }, - { inventoryCode: '1038175', categoryCode: '0038' }, - { inventoryCode: '1038176', categoryCode: '0038' }, - { inventoryCode: '1038177', categoryCode: '0038' }, - { inventoryCode: '1038178', categoryCode: '0038' }, - { inventoryCode: '1038179', categoryCode: '0038' }, - { inventoryCode: '1038180', categoryCode: '0038' }, - { inventoryCode: '1038181', categoryCode: '0038' }, - { inventoryCode: '1038182', categoryCode: '0038' }, - { inventoryCode: '1038183', categoryCode: '0038' }, - { inventoryCode: '1038184', categoryCode: '0038' }, - { inventoryCode: '1038185', categoryCode: '0038' }, - { inventoryCode: '1038186', categoryCode: '0038' }, - { inventoryCode: '1038187', categoryCode: '0038' }, - { inventoryCode: '1038188', categoryCode: '0038' }, - { inventoryCode: '1038189', categoryCode: '0038' }, - { inventoryCode: '1038190', categoryCode: '0038' }, - { inventoryCode: '1038191', categoryCode: '0038' }, - { inventoryCode: '1038192', categoryCode: '0038' }, - { inventoryCode: '1038193', categoryCode: '0038' }, - { inventoryCode: '1038194', categoryCode: '0038' }, - { inventoryCode: '1038195', categoryCode: '0038' }, - { inventoryCode: '1038196', categoryCode: '0038' }, - { inventoryCode: '1038197', categoryCode: '0038' }, - { inventoryCode: '1038198', categoryCode: '0038' }, - { inventoryCode: '1038199', categoryCode: '0038' }, - { inventoryCode: '1038200', categoryCode: '0038' }, - { inventoryCode: '1038201', categoryCode: '0038' }, - { inventoryCode: '1038202', categoryCode: '0038' }, - { inventoryCode: '1038203', categoryCode: '0038' }, - { inventoryCode: '1038204', categoryCode: '0038' }, - { inventoryCode: '1038205', categoryCode: '0038' }, - { inventoryCode: '103900', categoryCode: '0039' }, - { inventoryCode: '103901', categoryCode: '0039' }, - { inventoryCode: '103902', categoryCode: '0039' }, - { inventoryCode: '103903', categoryCode: '0039' }, - { inventoryCode: '103904', categoryCode: '0039' }, - { inventoryCode: '103905', categoryCode: '0039' }, - { inventoryCode: '103906', categoryCode: '0039' }, - { inventoryCode: '103907', categoryCode: '0039' }, - { inventoryCode: '103908', categoryCode: '0039' }, - { inventoryCode: '103909', categoryCode: '0039' }, - { inventoryCode: '103910', categoryCode: '0039' }, - { inventoryCode: '103911', categoryCode: '0039' }, - { inventoryCode: '103912', categoryCode: '0039' }, - { inventoryCode: '103913', categoryCode: '0039' }, - { inventoryCode: '103914', categoryCode: '0039' }, - { inventoryCode: '103915', categoryCode: '0039' }, - { inventoryCode: '103916', categoryCode: '0039' }, - { inventoryCode: '103917', categoryCode: '0039' }, - { inventoryCode: '103918', categoryCode: '0039' }, - { inventoryCode: '103919', categoryCode: '0039' }, - { inventoryCode: '103920', categoryCode: '0039' }, - { inventoryCode: '103921', categoryCode: '0039' }, - { inventoryCode: '103922', categoryCode: '0039' }, - { inventoryCode: '103923', categoryCode: '0039' }, - { inventoryCode: '103924', categoryCode: '0039' }, - { inventoryCode: '103925', categoryCode: '0039' }, - { inventoryCode: '103926', categoryCode: '0039' }, - { inventoryCode: '103927', categoryCode: '0039' }, - { inventoryCode: '103928', categoryCode: '0039' }, - { inventoryCode: '103929', categoryCode: '0039' }, - { inventoryCode: '103930', categoryCode: '0039' }, - { inventoryCode: '103932', categoryCode: '0039' }, - { inventoryCode: '103933', categoryCode: '0039' }, - { inventoryCode: '103934', categoryCode: '0039' }, - { inventoryCode: '103935', categoryCode: '0039' }, - { inventoryCode: '103936', categoryCode: '0039' }, - { inventoryCode: '103937', categoryCode: '0039' }, - { inventoryCode: '103938', categoryCode: '0039' }, - { inventoryCode: '103939', categoryCode: '0039' }, - { inventoryCode: '103940', categoryCode: '0039' }, - { inventoryCode: '103941', categoryCode: '0039' }, - { inventoryCode: '103943', categoryCode: '0039' }, - { inventoryCode: '103944', categoryCode: '0039' }, - { inventoryCode: '103945', categoryCode: '0039' }, - { inventoryCode: '103946', categoryCode: '0039' }, - { inventoryCode: '103947', categoryCode: '0039' }, - { inventoryCode: '103948', categoryCode: '0039' }, - { inventoryCode: '103949', categoryCode: '0039' }, - { inventoryCode: '103950', categoryCode: '0039' }, - { inventoryCode: '103951', categoryCode: '0039' }, - { inventoryCode: '103952', categoryCode: '0039' }, - { inventoryCode: '103954', categoryCode: '0039' }, - { inventoryCode: '103955', categoryCode: '0039' }, - { inventoryCode: '103956', categoryCode: '0039' }, - { inventoryCode: '103957', categoryCode: '0039' }, - { inventoryCode: '103958', categoryCode: '0039' }, - { inventoryCode: '103959', categoryCode: '0039' }, - { inventoryCode: '103960', categoryCode: '0039' }, - { inventoryCode: '103961', categoryCode: '0039' }, - { inventoryCode: '103962', categoryCode: '0039' }, - { inventoryCode: '103963', categoryCode: '0039' }, - { inventoryCode: '103966', categoryCode: '0039' }, - { inventoryCode: '103967', categoryCode: '0039' }, - { inventoryCode: '103968', categoryCode: '0039' }, - { inventoryCode: '103969', categoryCode: '0039' }, - { inventoryCode: '103970', categoryCode: '0039' }, - { inventoryCode: '103971', categoryCode: '0039' }, - { inventoryCode: '103972', categoryCode: '0039' }, - { inventoryCode: '103973', categoryCode: '0039' }, - { inventoryCode: '103974', categoryCode: '0039' }, - { inventoryCode: '103975', categoryCode: '0039' }, - { inventoryCode: '103976', categoryCode: '0039' }, - { inventoryCode: '103977', categoryCode: '0039' }, - { inventoryCode: '103978', categoryCode: '0039' }, - { inventoryCode: '103979', categoryCode: '0039' }, - { inventoryCode: '103981', categoryCode: '0039' }, - { inventoryCode: '103982', categoryCode: '0039' }, - { inventoryCode: '103983', categoryCode: '0039' }, - { inventoryCode: '103984', categoryCode: '0039' }, - { inventoryCode: '103985', categoryCode: '0039' }, - { inventoryCode: '103986', categoryCode: '0039' }, - { inventoryCode: '103987', categoryCode: '0039' }, - { inventoryCode: '103988', categoryCode: '0039' }, - { inventoryCode: '103989', categoryCode: '0039' }, - { inventoryCode: '103990', categoryCode: '0039' }, - { inventoryCode: '103991', categoryCode: '0039' }, - { inventoryCode: '103000', categoryCode: '0030' }, - { inventoryCode: '103001', categoryCode: '0030' }, - { inventoryCode: '103002', categoryCode: '0030' }, - { inventoryCode: '103003', categoryCode: '0030' }, - { inventoryCode: '103004', categoryCode: '0030' }, - { inventoryCode: '103005', categoryCode: '0030' }, - { inventoryCode: '103006', categoryCode: '0030' }, - { inventoryCode: '103007', categoryCode: '0030' }, - { inventoryCode: '103008', categoryCode: '0030' }, - { inventoryCode: '103009', categoryCode: '0030' }, - { inventoryCode: '103010', categoryCode: '0030' }, - { inventoryCode: '103011', categoryCode: '0030' }, - { inventoryCode: '103012', categoryCode: '0030' }, - { inventoryCode: '103013', categoryCode: '0030' }, - { inventoryCode: '103300', categoryCode: '0033' }, - { inventoryCode: '103301', categoryCode: '0033' }, - { inventoryCode: '103302', categoryCode: '0033' }, - { inventoryCode: '103303', categoryCode: '0033' }, - { inventoryCode: '103304', categoryCode: '0033' }, - { inventoryCode: '103305', categoryCode: '0033' }, - { inventoryCode: '103306', categoryCode: '0033' }, - { inventoryCode: '103307', categoryCode: '0033' }, - { inventoryCode: '103308', categoryCode: '0033' }, - { inventoryCode: '103309', categoryCode: '0033' }, - { inventoryCode: '103310', categoryCode: '0033' }, - { inventoryCode: '103311', categoryCode: '0033' }, - { inventoryCode: '103312', categoryCode: '0033' }, - { inventoryCode: '103313', categoryCode: '0033' }, - { inventoryCode: '103314', categoryCode: '0033' }, - { inventoryCode: '103315', categoryCode: '0033' }, - { inventoryCode: '103316', categoryCode: '0033' }, - { inventoryCode: '103317', categoryCode: '0033' }, - { inventoryCode: '103318', categoryCode: '0033' }, - { inventoryCode: '103319', categoryCode: '0033' }, - { inventoryCode: '103320', categoryCode: '0033' }, - { inventoryCode: '103321', categoryCode: '0033' }, - { inventoryCode: '103322', categoryCode: '0033' }, - { inventoryCode: '103323', categoryCode: '0033' }, - { inventoryCode: '103324', categoryCode: '0033' }, - { inventoryCode: '103325', categoryCode: '0033' }, - { inventoryCode: '103326', categoryCode: '0033' }, - { inventoryCode: '103327', categoryCode: '0033' }, - { inventoryCode: '103500', categoryCode: '0035' }, - { inventoryCode: '103501', categoryCode: '0035' }, - { inventoryCode: '103502', categoryCode: '0035' }, - { inventoryCode: '103503', categoryCode: '0035' }, - { inventoryCode: '103504', categoryCode: '0035' }, - { inventoryCode: '103505', categoryCode: '0035' }, - { inventoryCode: '103700', categoryCode: '0037' }, - { inventoryCode: '103701', categoryCode: '0037' }, - { inventoryCode: '103702', categoryCode: '0037' }, - { inventoryCode: '103703', categoryCode: '0037' }, - { inventoryCode: '103704', categoryCode: '0037' }, - { inventoryCode: '103705', categoryCode: '0037' }, - { inventoryCode: '103706', categoryCode: '0037' }, - { inventoryCode: '103707', categoryCode: '0037' }, - { inventoryCode: '103708', categoryCode: '0037' }, - { inventoryCode: '103709', categoryCode: '0037' }, - { inventoryCode: '103710', categoryCode: '0037' }, - { inventoryCode: '103100', categoryCode: '0031' }, - { inventoryCode: '103101', categoryCode: '0031' }, - { inventoryCode: '103102', categoryCode: '0031' }, - { inventoryCode: '103103', categoryCode: '0031' }, - { inventoryCode: '103104', categoryCode: '0031' }, - { inventoryCode: '103105', categoryCode: '0031' }, - { inventoryCode: '103106', categoryCode: '0031' }, - { inventoryCode: '103107', categoryCode: '0031' }, - { inventoryCode: '103108', categoryCode: '0031' }, - { inventoryCode: '103109', categoryCode: '0031' }, - { inventoryCode: '103400', categoryCode: '0034' }, - { inventoryCode: '103401', categoryCode: '0034' }, - { inventoryCode: '103402', categoryCode: '0034' }, - { inventoryCode: '103403', categoryCode: '0034' }, - { inventoryCode: '103200', categoryCode: '0032' }, - { inventoryCode: '103201', categoryCode: '0032' }, - { inventoryCode: '103202', categoryCode: '0032' }, - { inventoryCode: '103203', categoryCode: '0032' }, - { inventoryCode: '103204', categoryCode: '0032' }, - { inventoryCode: '103205', categoryCode: '0032' }, - { inventoryCode: '103206', categoryCode: '0032' }, - { inventoryCode: '103207', categoryCode: '0032' }, - { inventoryCode: '103208', categoryCode: '0032' }, - { inventoryCode: '103211', categoryCode: '0032' }, - { inventoryCode: '103212', categoryCode: '0032' }, - { inventoryCode: '103213', categoryCode: '0032' }, - { inventoryCode: '103214', categoryCode: '0032' }, - { inventoryCode: '103215', categoryCode: '0032' }, - { inventoryCode: '103216', categoryCode: '0032' }, - { inventoryCode: '103217', categoryCode: '0032' }, - { inventoryCode: '103220', categoryCode: '0032' }, - { inventoryCode: '103221', categoryCode: '0032' }, - { inventoryCode: '103222', categoryCode: '0032' }, - { inventoryCode: '103223', categoryCode: '0032' }, - { inventoryCode: '103224', categoryCode: '0032' }, - { inventoryCode: '103225', categoryCode: '0032' }, - { inventoryCode: '103226', categoryCode: '0032' }, - { inventoryCode: '103227', categoryCode: '0032' }, - { inventoryCode: '103228', categoryCode: '0032' }, - { inventoryCode: '103229', categoryCode: '0032' }, - { inventoryCode: '103230', categoryCode: '0032' }, - { inventoryCode: '103231', categoryCode: '0032' }, - { inventoryCode: '103232', categoryCode: '0032' }, - { inventoryCode: '103233', categoryCode: '0032' }, - { inventoryCode: '103234', categoryCode: '0032' }, - { inventoryCode: '103236', categoryCode: '0032' }, - { inventoryCode: '103237', categoryCode: '0032' }, - { inventoryCode: '103238', categoryCode: '0032' }, - { inventoryCode: '103239', categoryCode: '0032' }, - { inventoryCode: '103240', categoryCode: '0032' }, - { inventoryCode: '103241', categoryCode: '0032' }, - { inventoryCode: '103242', categoryCode: '0032' }, - { inventoryCode: '103243', categoryCode: '0032' }, - { inventoryCode: '10390100', categoryCode: '0039c' }, - { inventoryCode: '10390101', categoryCode: '0039c' }, - { inventoryCode: '10390102', categoryCode: '0039c' }, - { inventoryCode: '10390103', categoryCode: '0039c' }, - { inventoryCode: '10390104', categoryCode: '0039c' }, - { inventoryCode: '10390105', categoryCode: '0039c' }, - { inventoryCode: '10390106', categoryCode: '0039c' }, - { inventoryCode: '10390107', categoryCode: '0039c' }, - { inventoryCode: '10390109', categoryCode: '0039c' }, - { inventoryCode: '10390110', categoryCode: '0039c' }, - { inventoryCode: '10390111', categoryCode: '0039c' }, - { inventoryCode: '10390112', categoryCode: '0039c' }, - { inventoryCode: '10390113', categoryCode: '0039c' }, - { inventoryCode: '10390114', categoryCode: '0039c' }, - { inventoryCode: '1001006', categoryCode: '0010' }, - { inventoryCode: '1001601', categoryCode: '0016' }, - { inventoryCode: '1001602', categoryCode: '0016' }, - { inventoryCode: '1001603', categoryCode: '0016' }, - { inventoryCode: '1001604', categoryCode: '0016' }, - { inventoryCode: '1001605', categoryCode: '0016' }, - { inventoryCode: '1001606', categoryCode: '0016' }, - { inventoryCode: '1001607', categoryCode: '0016' }, - { inventoryCode: '1001608', categoryCode: '0016' }, - { inventoryCode: '1001900', categoryCode: '0019' }, - { inventoryCode: '1001901', categoryCode: '0019' }, - { inventoryCode: '1001902', categoryCode: '0019' }, - { inventoryCode: '1001903', categoryCode: '0019' }, - { inventoryCode: '1001904', categoryCode: '0019' }, - { inventoryCode: '1001905', categoryCode: '0019' }, - { inventoryCode: '1001906', categoryCode: '0019' }, - { inventoryCode: '1001907', categoryCode: '0019' }, - { inventoryCode: '1001908', categoryCode: '0019' }, - { inventoryCode: '1001909', categoryCode: '0019' }, - { inventoryCode: '1001910', categoryCode: '0019' }, - { inventoryCode: '1001911', categoryCode: '0019' }, - { inventoryCode: '1001912', categoryCode: '0019' }, - { inventoryCode: '1001913', categoryCode: '0019' }, - { inventoryCode: '1001914', categoryCode: '0019' }, - { inventoryCode: '1001915', categoryCode: '0019' }, - { inventoryCode: '1001916', categoryCode: '0019' }, - { inventoryCode: '1001917', categoryCode: '0019' }, - { inventoryCode: '1001800', categoryCode: '0018' }, - { inventoryCode: '1001801', categoryCode: '0018' }, - { inventoryCode: '1001802', categoryCode: '0018' }, - { inventoryCode: '1001803', categoryCode: '0018' }, - { inventoryCode: '1001804', categoryCode: '0018' }, - { inventoryCode: '1001805', categoryCode: '0018' }, - { inventoryCode: '1001806', categoryCode: '0018' }, - { inventoryCode: '1001807', categoryCode: '0018' }, - { inventoryCode: '1001808', categoryCode: '0018' }, - { inventoryCode: '1001809', categoryCode: '0018' }, - { inventoryCode: '1001810', categoryCode: '0018' }, - { inventoryCode: '1001811', categoryCode: '0018' }, - { inventoryCode: '1001812', categoryCode: '0018' }, - { inventoryCode: '1001813', categoryCode: '0018' }, - { inventoryCode: '1001814', categoryCode: '0018' }, - { inventoryCode: '1001815', categoryCode: '0018' }, - { inventoryCode: '1001816', categoryCode: '0018' }, - { inventoryCode: '1001817', categoryCode: '0018' }, - { inventoryCode: '1001818', categoryCode: '0018' }, - { inventoryCode: '1001819', categoryCode: '0018' }, - { inventoryCode: '1001820', categoryCode: '0018' }, - { inventoryCode: '1001821', categoryCode: '0018' }, - { inventoryCode: '1001822', categoryCode: '0018' }, - { inventoryCode: '1001823', categoryCode: '0018' }, - { inventoryCode: '1001824', categoryCode: '0018' }, - { inventoryCode: '1001825', categoryCode: '0018' }, - { inventoryCode: '1001826', categoryCode: '0018' }, - { inventoryCode: '1001827', categoryCode: '0018' }, - { inventoryCode: '1001828', categoryCode: '0018' }, - { inventoryCode: '1001829', categoryCode: '0018' }, - { inventoryCode: '1001830', categoryCode: '0018' }, - { inventoryCode: '1001831', categoryCode: '0018' }, - { inventoryCode: '1001832', categoryCode: '0018' }, - { inventoryCode: '1001833', categoryCode: '0018' }, - { inventoryCode: '1001834', categoryCode: '0018' }, - { inventoryCode: '1001835', categoryCode: '0018' }, - { inventoryCode: '1001836', categoryCode: '0018' }, - { inventoryCode: '1001837', categoryCode: '0018' }, - { inventoryCode: '1001838', categoryCode: '0018' }, - { inventoryCode: '1001839', categoryCode: '0018' }, - { inventoryCode: '1001840', categoryCode: '0018' }, - { inventoryCode: '1001841', categoryCode: '0018' }, - { inventoryCode: '1001842', categoryCode: '0018' }, - { inventoryCode: '1001843', categoryCode: '0018' }, - { inventoryCode: '1001844', categoryCode: '0018' }, - { inventoryCode: '1001845', categoryCode: '0018' }, - { inventoryCode: '1001846', categoryCode: '0018' }, - { inventoryCode: '1001847', categoryCode: '0018' }, - { inventoryCode: '1001848', categoryCode: '0018' }, - { inventoryCode: '1001849', categoryCode: '0018' }, - { inventoryCode: '1001850', categoryCode: '0018' }, - { inventoryCode: '1001851', categoryCode: '0018' }, - { inventoryCode: '1001852', categoryCode: '0018' }, - { inventoryCode: '1001853', categoryCode: '0018' }, - { inventoryCode: '1001854', categoryCode: '0018' }, - { inventoryCode: '1001300', categoryCode: '0013' }, - { inventoryCode: '1001301', categoryCode: '0013' }, - { inventoryCode: '1001302', categoryCode: '0013' }, - { inventoryCode: '1001303', categoryCode: '0013' }, - { inventoryCode: '1001304', categoryCode: '0013' }, - { inventoryCode: '1001305', categoryCode: '0013' }, - { inventoryCode: '1001306', categoryCode: '0013' }, - { inventoryCode: '1001307', categoryCode: '0013' }, - { inventoryCode: '1001308', categoryCode: '0013' }, - { inventoryCode: '1001309', categoryCode: '0013' }, - { inventoryCode: '1001310', categoryCode: '0013' }, - { inventoryCode: '1001311', categoryCode: '0013' }, - { inventoryCode: '1001312', categoryCode: '0013' }, - { inventoryCode: '1001313', categoryCode: '0013' }, - { inventoryCode: '1001314', categoryCode: '0013' }, - { inventoryCode: '1001315', categoryCode: '0013' }, - { inventoryCode: '1001316', categoryCode: '0013' }, - { inventoryCode: '1001317', categoryCode: '0013' }, - { inventoryCode: '1001318', categoryCode: '0013' }, - { inventoryCode: '1001319', categoryCode: '0013' }, - { inventoryCode: '1001320', categoryCode: '0013' }, - { inventoryCode: '1001321', categoryCode: '0013' }, - { inventoryCode: '1001322', categoryCode: '0013' }, - { inventoryCode: '1001323', categoryCode: '0013' }, - { inventoryCode: '1001324', categoryCode: '0013' }, - { inventoryCode: '1001000', categoryCode: '0010' }, - { inventoryCode: '1001001', categoryCode: '0014' }, - { inventoryCode: '1001002', categoryCode: '0010' }, - { inventoryCode: '1001003', categoryCode: '0010' }, - { inventoryCode: '1001004', categoryCode: '0010' }, - { inventoryCode: '1001005', categoryCode: '0010' }, - { inventoryCode: '1001700', categoryCode: '0017' }, - { inventoryCode: '1001701', categoryCode: '0017' }, - { inventoryCode: '1001702', categoryCode: '0017' }, - { inventoryCode: '1001703', categoryCode: '0017' }, - { inventoryCode: '1001704', categoryCode: '0017' }, - { inventoryCode: '1001705', categoryCode: '0017' }, - { inventoryCode: '1001706', categoryCode: '0017' }, - { inventoryCode: '1001707', categoryCode: '0017' }, - { inventoryCode: '1001708', categoryCode: '0017' }, - { inventoryCode: '1001709', categoryCode: '0017' }, - { inventoryCode: '1001710', categoryCode: '0017' }, - { inventoryCode: '1001200', categoryCode: '0012' }, - { inventoryCode: '1001201', categoryCode: '0012' }, - { inventoryCode: '1001202', categoryCode: '0012' }, - { inventoryCode: '1001203', categoryCode: '0012' }, - { inventoryCode: '1001204', categoryCode: '0012' }, - { inventoryCode: '1001206', categoryCode: '0012' }, - { inventoryCode: '1001207', categoryCode: '0012' }, - { inventoryCode: '1001208', categoryCode: '0012' }, - { inventoryCode: '1001209', categoryCode: '0012' }, - { inventoryCode: '1001210', categoryCode: '0012' }, - { inventoryCode: '1001211', categoryCode: '0012' }, - { inventoryCode: '1001212', categoryCode: '0012' }, - { inventoryCode: '1001213', categoryCode: '0012' }, - { inventoryCode: '1001214', categoryCode: '0012' }, - { inventoryCode: '1001215', categoryCode: '0012' }, - { inventoryCode: '1001216', categoryCode: '0012' }, - { inventoryCode: '1001217', categoryCode: '0012' }, - { inventoryCode: '1001218', categoryCode: '0012' }, - { inventoryCode: '1001219', categoryCode: '0012' }, - { inventoryCode: '1001220', categoryCode: '0012' }, - { inventoryCode: '1001221', categoryCode: '0012' }, - { inventoryCode: '1001222', categoryCode: '0012' }, - { inventoryCode: '1001223', categoryCode: '0012' }, - { inventoryCode: '1001224', categoryCode: '0012' }, - { inventoryCode: '1001225', categoryCode: '0012' }, - { inventoryCode: '1001500', categoryCode: '0015' }, - { inventoryCode: '1001501', categoryCode: '0015' }, - { inventoryCode: '1001502', categoryCode: '0015' }, - { inventoryCode: '1001503', categoryCode: '0015' }, - { inventoryCode: '1001504', categoryCode: '0015' }, - { inventoryCode: '1001104', categoryCode: '0011' }, - { inventoryCode: '1001401', categoryCode: '0014' }, - { inventoryCode: '1001402', categoryCode: '0014' }, - { inventoryCode: '1001403', categoryCode: '0014' }, - { inventoryCode: '1001105', categoryCode: '0011' }, - { inventoryCode: '1001405', categoryCode: '0014' }, - { inventoryCode: '1001406', categoryCode: '0014' }, - { inventoryCode: '1001407', categoryCode: '0014' }, - { inventoryCode: '1001408', categoryCode: '0014' }, - { inventoryCode: '1001409', categoryCode: '0014' }, - { inventoryCode: '1001100', categoryCode: '0011' }, - { inventoryCode: '1001101', categoryCode: '0011' }, - { inventoryCode: '1001102', categoryCode: '0011' }, - { inventoryCode: '1001103', categoryCode: '0011' }, - { inventoryCode: '100190100', categoryCode: '0019c' }, - { inventoryCode: '100190101', categoryCode: '0019c' }, - { inventoryCode: '100190102', categoryCode: '0019c' }, - { inventoryCode: '104046', categoryCode: '0053' }, - { inventoryCode: '104047', categoryCode: '0053' }, - { inventoryCode: '104020', categoryCode: '0052' }, - { inventoryCode: '104021', categoryCode: '0052' }, - { inventoryCode: '104037', categoryCode: '0052' }, - { inventoryCode: '104058', categoryCode: '0052' }, - { inventoryCode: '104001', categoryCode: '0054' }, - { inventoryCode: '104002', categoryCode: '0054' }, - { inventoryCode: '104007', categoryCode: '0054' }, - { inventoryCode: '104039', categoryCode: '0054' }, - { inventoryCode: '104048', categoryCode: '0054' }, - { inventoryCode: '104049', categoryCode: '0054' }, - { inventoryCode: '104009', categoryCode: '0051' }, - { inventoryCode: '104010', categoryCode: '0051' }, - { inventoryCode: '104019', categoryCode: '0051' }, - { inventoryCode: '104051', categoryCode: '0051' }, - { inventoryCode: '104029', categoryCode: '0051' }, - { inventoryCode: '104030', categoryCode: '0051' }, - { inventoryCode: '104034', categoryCode: '0051' }, - { inventoryCode: '104035', categoryCode: '0051' }, - { inventoryCode: '104050', categoryCode: '0051' }, - { inventoryCode: '104052', categoryCode: '0051' }, - { inventoryCode: '104057', categoryCode: '0051' }, - { inventoryCode: '104059', categoryCode: '0051' }, - { inventoryCode: '104060', categoryCode: '0051' }, - { inventoryCode: '104061', categoryCode: '0051' }, - { inventoryCode: '104062', categoryCode: '0051' }, - { inventoryCode: '104063', categoryCode: '0051' }, - { inventoryCode: '105434', categoryCode: '0041' }, - { inventoryCode: '105435', categoryCode: '0041' }, - { inventoryCode: '105436', categoryCode: '0045' }, - { inventoryCode: '105437', categoryCode: '0045' }, - { inventoryCode: '105438', categoryCode: '0045' }, - { inventoryCode: '105439', categoryCode: '0041' }, - { inventoryCode: '105440', categoryCode: '0041' }, - { inventoryCode: '105441', categoryCode: '0041' }, - { inventoryCode: '105442', categoryCode: '0041' }, - { inventoryCode: '105443', categoryCode: '0041' }, - { inventoryCode: '104064', categoryCode: '0052' }, - { inventoryCode: '104065', categoryCode: '0052' }, - { inventoryCode: '105501', categoryCode: '0045' }, - { inventoryCode: '105506', categoryCode: '0045' }, - { inventoryCode: '105258', categoryCode: '0045' }, - { inventoryCode: '102842', categoryCode: '0028' }, - { inventoryCode: '102830', categoryCode: '0028' }, - { inventoryCode: '102840', categoryCode: '0028' }, - { inventoryCode: '102825', categoryCode: '0028' }, - { inventoryCode: '102386', categoryCode: '0028' }, - { inventoryCode: '102820', categoryCode: '0028' }, - { inventoryCode: '102834', categoryCode: '0028' }, - { inventoryCode: '102530', categoryCode: '0028' }, - { inventoryCode: '102836', categoryCode: '0028' }, - { inventoryCode: '102838', categoryCode: '0028' }, - { inventoryCode: '10290122', categoryCode: '0028' }, - { inventoryCode: '10290123', categoryCode: '0028' }, - { inventoryCode: '10290124', categoryCode: '0028' }, - { inventoryCode: '102941', categoryCode: '0028' }, - { inventoryCode: '102963', categoryCode: '0028' }, - { inventoryCode: '102965', categoryCode: '0028' }, - { inventoryCode: '102952', categoryCode: '0028' }, - { inventoryCode: '102875', categoryCode: '0028' }, - { inventoryCode: '10290125', categoryCode: '0028' }, - { inventoryCode: '10290126', categoryCode: '0028' }, - { inventoryCode: '10290127', categoryCode: '0028' }, - { inventoryCode: '10290128', categoryCode: '0028' }, - { inventoryCode: '10290129', categoryCode: '0028' }, - { inventoryCode: '1028235', categoryCode: '0028' }, - { inventoryCode: '1028236', categoryCode: '0028' }, - { inventoryCode: '1028237', categoryCode: '0028' }, - { inventoryCode: '1028238', categoryCode: '0028' }, - { inventoryCode: '1028239', categoryCode: '0028' }, - { inventoryCode: '10290130', categoryCode: '0028' }, - { inventoryCode: '10290132', categoryCode: '0026' }, - { inventoryCode: '10290131', categoryCode: '0026' }, - { inventoryCode: '102507', categoryCode: '0025' }, - { inventoryCode: '106000', categoryCode: '006' }, - { inventoryCode: '106001', categoryCode: '006' }, - { inventoryCode: '106002', categoryCode: '006' }, - { inventoryCode: '106003', categoryCode: '006' }, - { inventoryCode: '106004', categoryCode: '006' }, - { inventoryCode: '106005', categoryCode: '006' }, - { inventoryCode: '106006', categoryCode: '006' }, - { inventoryCode: '106007', categoryCode: '006' }, - { inventoryCode: '106008', categoryCode: '006' }, - { inventoryCode: '106009', categoryCode: '006' }, - { inventoryCode: '106010', categoryCode: '006' }, - { inventoryCode: '106011', categoryCode: '006' }, - { inventoryCode: '106012', categoryCode: '006' }, - { inventoryCode: '106013', categoryCode: '006' }, - { inventoryCode: '106014', categoryCode: '006' }, - { inventoryCode: '106015', categoryCode: '006' }, - { inventoryCode: '106016', categoryCode: '006' }, - { inventoryCode: '106017', categoryCode: '006' }, - { inventoryCode: '106018', categoryCode: '006' }, - { inventoryCode: '106019', categoryCode: '006' }, - { inventoryCode: '106020', categoryCode: '006' }, - { inventoryCode: '106021', categoryCode: '006' }, - { inventoryCode: '106022', categoryCode: '006' }, - { inventoryCode: '106023', categoryCode: '006' }, - { inventoryCode: '106024', categoryCode: '006' }, - { inventoryCode: '106025', categoryCode: '006' }, - { inventoryCode: '106026', categoryCode: '006' }, - { inventoryCode: '106027', categoryCode: '006' }, - { inventoryCode: '106028', categoryCode: '006' }, - { inventoryCode: '106030', categoryCode: '006' }, - { inventoryCode: '106031', categoryCode: '006' }, - { inventoryCode: '106032', categoryCode: '006' }, - { inventoryCode: '106033', categoryCode: '006' }, - { inventoryCode: '106034', categoryCode: '006' }, - { inventoryCode: '106035', categoryCode: '006' }, - { inventoryCode: '106036', categoryCode: '006' }, - { inventoryCode: '106037', categoryCode: '006' }, - { inventoryCode: '106038', categoryCode: '006' }, - { inventoryCode: '106039', categoryCode: '006' }, - { inventoryCode: '106040', categoryCode: '006' }, - { inventoryCode: '106041', categoryCode: '006' }, - { inventoryCode: '110000', categoryCode: '0100' }, - { inventoryCode: '110001', categoryCode: '0100' }, - { inventoryCode: '110002', categoryCode: '0100' }, - { inventoryCode: '110003', categoryCode: '0100' }, - { inventoryCode: '110004', categoryCode: '0100' }, - { inventoryCode: '110005', categoryCode: '0100' }, - { inventoryCode: '110006', categoryCode: '0100' }, - { inventoryCode: '110007', categoryCode: '0100' }, - { inventoryCode: '110008', categoryCode: '0100' }, - { inventoryCode: '110009', categoryCode: '0100' }, - { inventoryCode: '110010', categoryCode: '0100' }, - { inventoryCode: '110011', categoryCode: '0100' }, - { inventoryCode: '110012', categoryCode: '0100' }, - { inventoryCode: '110013', categoryCode: '0100' }, - { inventoryCode: '110100', categoryCode: '0101' }, - { inventoryCode: '110101', categoryCode: '0101' }, - { inventoryCode: '110102', categoryCode: '0101' }, - { inventoryCode: '110103', categoryCode: '0101' }, - { inventoryCode: '110104', categoryCode: '0101' }, - { inventoryCode: '110105', categoryCode: '0101' }, - { inventoryCode: '110106', categoryCode: '0101' }, - { inventoryCode: '110107', categoryCode: '0101' }, - { inventoryCode: '110108', categoryCode: '0101' }, - { inventoryCode: '110109', categoryCode: '0101' }, - { inventoryCode: '110200', categoryCode: '0102' }, - { inventoryCode: '110201', categoryCode: '0102' }, - { inventoryCode: '110202', categoryCode: '0102' }, - { inventoryCode: '110203', categoryCode: '0102' }, - { inventoryCode: '110204', categoryCode: '0102' }, - { inventoryCode: '110205', categoryCode: '0102' }, - { inventoryCode: '110206', categoryCode: '0102' }, - { inventoryCode: '110207', categoryCode: '0102' }, - { inventoryCode: '110208', categoryCode: '0102' }, - { inventoryCode: '110209', categoryCode: '0102' }, - { inventoryCode: '110210', categoryCode: '0102' }, - { inventoryCode: '110211', categoryCode: '0102' }, - { inventoryCode: '110212', categoryCode: '0102' }, - { inventoryCode: '110213', categoryCode: '0102' }, - { inventoryCode: '110214', categoryCode: '0102' }, - { inventoryCode: '110215', categoryCode: '0102' }, - { inventoryCode: '110216', categoryCode: '0102' }, - { inventoryCode: '110217', categoryCode: '0102' }, - { inventoryCode: '110218', categoryCode: '0102' }, - { inventoryCode: '110219', categoryCode: '0102' }, - { inventoryCode: '110220', categoryCode: '0102' }, - { inventoryCode: '110221', categoryCode: '0102' }, - { inventoryCode: '110222', categoryCode: '0102' }, - { inventoryCode: '110223', categoryCode: '0102' }, - { inventoryCode: '110224', categoryCode: '0102' }, - { inventoryCode: '110225', categoryCode: '0102' }, - { inventoryCode: '110226', categoryCode: '0102' }, - { inventoryCode: '110227', categoryCode: '0102' }, - { inventoryCode: '110228', categoryCode: '0102' }, - { inventoryCode: '110229', categoryCode: '0102' }, - { inventoryCode: '110230', categoryCode: '0102' }, - { inventoryCode: '110231', categoryCode: '0102' }, - { inventoryCode: '110232', categoryCode: '0102' }, - { inventoryCode: '110233', categoryCode: '0102' }, - { inventoryCode: '110234', categoryCode: '0102' }, - { inventoryCode: '110235', categoryCode: '0102' }, - { inventoryCode: '110236', categoryCode: '0102' }, - { inventoryCode: '110237', categoryCode: '0102' }, - { inventoryCode: '110238', categoryCode: '0102' }, - { inventoryCode: '110239', categoryCode: '0102' }, - { inventoryCode: '110300', categoryCode: '0103' }, - { inventoryCode: '110301', categoryCode: '0103' }, - { inventoryCode: '110302', categoryCode: '0103' }, - { inventoryCode: '110303', categoryCode: '0103' }, - { inventoryCode: '110304', categoryCode: '0103' }, - { inventoryCode: '110305', categoryCode: '0103' }, - { inventoryCode: '110306', categoryCode: '0103' }, - { inventoryCode: '110307', categoryCode: '0103' }, - { inventoryCode: '110308', categoryCode: '0103' }, - { inventoryCode: '110309', categoryCode: '0103' }, - { inventoryCode: '110310', categoryCode: '0103' }, - { inventoryCode: '110311', categoryCode: '0103' }, - { inventoryCode: '110312', categoryCode: '0103' }, - { inventoryCode: '110313', categoryCode: '0103' }, - { inventoryCode: '110314', categoryCode: '0103' }, - { inventoryCode: '110315', categoryCode: '0103' }, - { inventoryCode: '110316', categoryCode: '0103' }, - { inventoryCode: '110317', categoryCode: '0103' }, - { inventoryCode: '110318', categoryCode: '0103' }, - { inventoryCode: '110319', categoryCode: '0103' }, - { inventoryCode: '110320', categoryCode: '0103' }, - { inventoryCode: '110321', categoryCode: '0103' }, - { inventoryCode: '110322', categoryCode: '0103' }, - { inventoryCode: '110323', categoryCode: '0103' }, - { inventoryCode: '110324', categoryCode: '0103' }, - { inventoryCode: '110325', categoryCode: '0103' }, - { inventoryCode: '110400', categoryCode: '0104' }, - { inventoryCode: '110401', categoryCode: '0104' }, - { inventoryCode: '110402', categoryCode: '0104' }, - { inventoryCode: '110403', categoryCode: '0104' }, - { inventoryCode: '110404', categoryCode: '0104' }, - { inventoryCode: '110500', categoryCode: '0105' }, - { inventoryCode: '110501', categoryCode: '0105' }, - { inventoryCode: '110502', categoryCode: '0105' }, - { inventoryCode: '110503', categoryCode: '0105' }, - { inventoryCode: '110504', categoryCode: '0105' }, - { inventoryCode: '110505', categoryCode: '0105' }, - { inventoryCode: '110600', categoryCode: '0106' }, - { inventoryCode: '110601', categoryCode: '0106' }, - { inventoryCode: '110602', categoryCode: '0106' }, - { inventoryCode: '110603', categoryCode: '0106' }, - { inventoryCode: '110604', categoryCode: '0106' }, - { inventoryCode: '110605', categoryCode: '0106' }, - { inventoryCode: '110606', categoryCode: '0106' }, - { inventoryCode: '110700', categoryCode: '0107' }, - { inventoryCode: '110701', categoryCode: '0107' }, - { inventoryCode: '110702', categoryCode: '0107' }, - { inventoryCode: '110703', categoryCode: '0107' }, - { inventoryCode: '110704', categoryCode: '0107' }, - { inventoryCode: '110705', categoryCode: '0107' }, - { inventoryCode: '110706', categoryCode: '0107' }, - { inventoryCode: '110707', categoryCode: '0107' }, - { inventoryCode: '110708', categoryCode: '0107' }, - { inventoryCode: '110709', categoryCode: '0107' }, - { inventoryCode: '110710', categoryCode: '0107' }, - { inventoryCode: '110711', categoryCode: '0107' }, - { inventoryCode: '110800', categoryCode: '0108' }, - { inventoryCode: '110801', categoryCode: '0108' }, - { inventoryCode: '110802', categoryCode: '0108' }, - { inventoryCode: '110803', categoryCode: '0108' }, - { inventoryCode: '110804', categoryCode: '0108' }, - { inventoryCode: '110805', categoryCode: '0108' }, - { inventoryCode: '110806', categoryCode: '0108' }, - { inventoryCode: '110807', categoryCode: '0108' }, - { inventoryCode: '110808', categoryCode: '0108' }, - { inventoryCode: '110809', categoryCode: '0108' }, - { inventoryCode: '110810', categoryCode: '0108' }, - { inventoryCode: '110811', categoryCode: '0108' }, - { inventoryCode: '110812', categoryCode: '0108' }, - { inventoryCode: '110813', categoryCode: '0108' }, - { inventoryCode: '110814', categoryCode: '0108' }, - { inventoryCode: '110815', categoryCode: '0108' }, - { inventoryCode: '110816', categoryCode: '0108' }, - { inventoryCode: '110817', categoryCode: '0108' }, - { inventoryCode: '110819', categoryCode: '0108' }, - { inventoryCode: '110820', categoryCode: '0108' }, - { inventoryCode: '110821', categoryCode: '0108' }, - { inventoryCode: '110822', categoryCode: '0108' }, - { inventoryCode: '110823', categoryCode: '0108' }, - { inventoryCode: '110824', categoryCode: '0108' }, - { inventoryCode: '110825', categoryCode: '0108' }, - { inventoryCode: '110826', categoryCode: '0108' }, - { inventoryCode: '110827', categoryCode: '0108' }, - { inventoryCode: '110828', categoryCode: '0108' }, - { inventoryCode: '110829', categoryCode: '0108' }, - { inventoryCode: '110830', categoryCode: '0108' }, - { inventoryCode: '110831', categoryCode: '0108' }, - { inventoryCode: '110832', categoryCode: '0108' }, - { inventoryCode: '110833', categoryCode: '0108' }, - { inventoryCode: '110834', categoryCode: '0108' }, - { inventoryCode: '110835', categoryCode: '0108' }, - { inventoryCode: '110836', categoryCode: '0108' }, - { inventoryCode: '110837', categoryCode: '0108' }, - { inventoryCode: '110838', categoryCode: '0108' }, - { inventoryCode: '110839', categoryCode: '0108' }, - { inventoryCode: '110840', categoryCode: '0108' }, - { inventoryCode: '110841', categoryCode: '0108' }, - { inventoryCode: '110842', categoryCode: '0108' }, - { inventoryCode: '110843', categoryCode: '0108' }, - { inventoryCode: '110844', categoryCode: '0108' }, - { inventoryCode: '110845', categoryCode: '0108' }, - { inventoryCode: '110846', categoryCode: '0108' }, - { inventoryCode: '110847', categoryCode: '0108' }, - { inventoryCode: '110848', categoryCode: '0108' }, - { inventoryCode: '110849', categoryCode: '0108' }, - { inventoryCode: '110850', categoryCode: '0108' }, - { inventoryCode: '110851', categoryCode: '0108' }, - { inventoryCode: '110852', categoryCode: '0108' }, - { inventoryCode: '110853', categoryCode: '0108' }, - { inventoryCode: '110854', categoryCode: '0108' }, - { inventoryCode: '110855', categoryCode: '0108' }, - { inventoryCode: '110856', categoryCode: '0108' }, - { inventoryCode: '110857', categoryCode: '0108' }, - { inventoryCode: '110858', categoryCode: '0108' }, - { inventoryCode: '110859', categoryCode: '0108' }, - { inventoryCode: '110860', categoryCode: '0108' }, - { inventoryCode: '110861', categoryCode: '0108' }, - { inventoryCode: '110862', categoryCode: '0108' }, - { inventoryCode: '110863', categoryCode: '0108' }, - { inventoryCode: '110864', categoryCode: '0108' }, - { inventoryCode: '110865', categoryCode: '0108' }, - { inventoryCode: '110866', categoryCode: '0108' }, - { inventoryCode: '110867', categoryCode: '0108' }, - { inventoryCode: '110868', categoryCode: '0108' }, - { inventoryCode: '110869', categoryCode: '0108' }, - { inventoryCode: '110870', categoryCode: '0108' }, - { inventoryCode: '110871', categoryCode: '0108' }, - { inventoryCode: '110872', categoryCode: '0108' }, - { inventoryCode: '110873', categoryCode: '0108' }, - { inventoryCode: '110874', categoryCode: '0108' }, - { inventoryCode: '110875', categoryCode: '0108' }, - { inventoryCode: '110876', categoryCode: '0108' }, - { inventoryCode: '110877', categoryCode: '0108' }, - { inventoryCode: '110878', categoryCode: '0108' }, - { inventoryCode: '110879', categoryCode: '0108' }, - { inventoryCode: '110880', categoryCode: '0108' }, - { inventoryCode: '110881', categoryCode: '0108' }, - { inventoryCode: '110882', categoryCode: '0108' }, - { inventoryCode: '110883', categoryCode: '0108' }, - { inventoryCode: '110884', categoryCode: '0108' }, - { inventoryCode: '110885', categoryCode: '0108' }, - { inventoryCode: '110886', categoryCode: '0108' }, - { inventoryCode: '110887', categoryCode: '0108' }, - { inventoryCode: '110888', categoryCode: '0108' }, - { inventoryCode: '110889', categoryCode: '0108' }, - { inventoryCode: '110890', categoryCode: '0108' }, - { inventoryCode: '110900', categoryCode: '0109' }, - { inventoryCode: '110901', categoryCode: '0109' }, - { inventoryCode: '110902', categoryCode: '0109' }, - { inventoryCode: '110903', categoryCode: '0109' }, - { inventoryCode: '110904', categoryCode: '0109' }, - { inventoryCode: '110906', categoryCode: '0109' }, - { inventoryCode: '110907', categoryCode: '0109' }, - { inventoryCode: '110908', categoryCode: '0109' }, - { inventoryCode: '110909', categoryCode: '0109' }, - { inventoryCode: '110910', categoryCode: '0109' }, - { inventoryCode: '110911', categoryCode: '0109' }, - { inventoryCode: '110912', categoryCode: '0109' }, - { inventoryCode: '110913', categoryCode: '0109' }, - { inventoryCode: '110914', categoryCode: '0109' }, - { inventoryCode: '110915', categoryCode: '0109' }, - { inventoryCode: '110916', categoryCode: '0109' }, - { inventoryCode: '110917', categoryCode: '0109' }, - { inventoryCode: '110918', categoryCode: '0109' }, - { inventoryCode: '110919', categoryCode: '0109' }, - { inventoryCode: '110920', categoryCode: '0109' }, - { inventoryCode: '110921', categoryCode: '0109' }, - { inventoryCode: '110922', categoryCode: '0109' }, - { inventoryCode: '110923', categoryCode: '0109' }, - { inventoryCode: '110924', categoryCode: '0109' }, - { inventoryCode: '110925', categoryCode: '0109' }, - { inventoryCode: '110926', categoryCode: '0109' }, - { inventoryCode: '110927', categoryCode: '0109' }, - { inventoryCode: '110928', categoryCode: '0109' }, - { inventoryCode: '110929', categoryCode: '0109' }, - { inventoryCode: '110930', categoryCode: '0109' }, - { inventoryCode: '110931', categoryCode: '0109' }, - { inventoryCode: '110932', categoryCode: '0109' }, - { inventoryCode: '110933', categoryCode: '0109' }, - { inventoryCode: '110934', categoryCode: '0109' }, - { inventoryCode: '110936', categoryCode: '0109' }, - { inventoryCode: '110937', categoryCode: '0109' }, - { inventoryCode: '110938', categoryCode: '0109' }, - { inventoryCode: '110939', categoryCode: '0109' }, - { inventoryCode: '110940', categoryCode: '0109' }, - { inventoryCode: '110941', categoryCode: '0109' }, - { inventoryCode: '110942', categoryCode: '0109' }, - { inventoryCode: '110943', categoryCode: '0109' }, - { inventoryCode: '110944', categoryCode: '0109' }, - { inventoryCode: '110945', categoryCode: '0109' }, - { inventoryCode: '110946', categoryCode: '0109' }, - { inventoryCode: '101100', categoryCode: '0110' }, - { inventoryCode: '101101', categoryCode: '0110' }, - { inventoryCode: '101102', categoryCode: '0110' }, - { inventoryCode: '101103', categoryCode: '0110' }, - { inventoryCode: '101104', categoryCode: '0110' }, - { inventoryCode: '101105', categoryCode: '0110' }, - { inventoryCode: '101106', categoryCode: '0110' }, - { inventoryCode: '101107', categoryCode: '0110' }, - { inventoryCode: '101108', categoryCode: '0110' }, - { inventoryCode: '101111', categoryCode: '0110' }, - { inventoryCode: '101112', categoryCode: '0110' }, - { inventoryCode: '101113', categoryCode: '0110' }, - { inventoryCode: '101114', categoryCode: '0110' }, - { inventoryCode: '103609', categoryCode: '0036' }, - { inventoryCode: '107000', categoryCode: '0070' }, - { inventoryCode: '107001', categoryCode: '0070' }, - { inventoryCode: '107002', categoryCode: '0070' }, - { inventoryCode: '107003', categoryCode: '0070' }, - { inventoryCode: '107004', categoryCode: '0070' }, - { inventoryCode: '107005', categoryCode: '0070' }, - { inventoryCode: '107006', categoryCode: '0070' }, - { inventoryCode: '107007', categoryCode: '0070' }, - { inventoryCode: '107008', categoryCode: '0070' }, - { inventoryCode: '107009', categoryCode: '0070' }, - { inventoryCode: '107010', categoryCode: '0070' }, - { inventoryCode: '107011', categoryCode: '0070' }, - { inventoryCode: '107012', categoryCode: '0070' }, - { inventoryCode: '107013', categoryCode: '0070' }, - { inventoryCode: '107100', categoryCode: '0071' }, - { inventoryCode: '107101', categoryCode: '0071' }, - { inventoryCode: '107102', categoryCode: '0071' }, - { inventoryCode: '107103', categoryCode: '0071' }, - { inventoryCode: '107104', categoryCode: '0071' }, - { inventoryCode: '107105', categoryCode: '0071' }, - { inventoryCode: '107106', categoryCode: '0071' }, - { inventoryCode: '107107', categoryCode: '0071' }, - { inventoryCode: '107108', categoryCode: '0071' }, - { inventoryCode: '107109', categoryCode: '0071' }, - { inventoryCode: '107200', categoryCode: '0072' }, - { inventoryCode: '107201', categoryCode: '0072' }, - { inventoryCode: '107202', categoryCode: '0072' }, - { inventoryCode: '107203', categoryCode: '0072' }, - { inventoryCode: '107204', categoryCode: '0072' }, - { inventoryCode: '107205', categoryCode: '0072' }, - { inventoryCode: '107206', categoryCode: '0072' }, - { inventoryCode: '107207', categoryCode: '0072' }, - { inventoryCode: '107208', categoryCode: '0072' }, - { inventoryCode: '107209', categoryCode: '0072' }, - { inventoryCode: '107210', categoryCode: '0072' }, - { inventoryCode: '107211', categoryCode: '0072' }, - { inventoryCode: '107212', categoryCode: '0072' }, - { inventoryCode: '107213', categoryCode: '0072' }, - { inventoryCode: '107214', categoryCode: '0072' }, - { inventoryCode: '107215', categoryCode: '0072' }, - { inventoryCode: '107216', categoryCode: '0072' }, - { inventoryCode: '107217', categoryCode: '0072' }, - { inventoryCode: '107218', categoryCode: '0072' }, - { inventoryCode: '107219', categoryCode: '0072' }, - { inventoryCode: '107220', categoryCode: '0072' }, - { inventoryCode: '107221', categoryCode: '0072' }, - { inventoryCode: '107222', categoryCode: '0072' }, - { inventoryCode: '107223', categoryCode: '0072' }, - { inventoryCode: '107224', categoryCode: '0072' }, - { inventoryCode: '107225', categoryCode: '0072' }, - { inventoryCode: '107226', categoryCode: '0072' }, - { inventoryCode: '107227', categoryCode: '0072' }, - { inventoryCode: '107228', categoryCode: '0072' }, - { inventoryCode: '107229', categoryCode: '0072' }, - { inventoryCode: '107230', categoryCode: '0072' }, - { inventoryCode: '107231', categoryCode: '0072' }, - { inventoryCode: '107232', categoryCode: '0072' }, - { inventoryCode: '107233', categoryCode: '0072' }, - { inventoryCode: '107234', categoryCode: '0072' }, - { inventoryCode: '107235', categoryCode: '0072' }, - { inventoryCode: '107236', categoryCode: '0072' }, - { inventoryCode: '107237', categoryCode: '0072' }, - { inventoryCode: '107238', categoryCode: '0072' }, - { inventoryCode: '107300', categoryCode: '0073' }, - { inventoryCode: '107301', categoryCode: '0073' }, - { inventoryCode: '107302', categoryCode: '0073' }, - { inventoryCode: '107303', categoryCode: '0073' }, - { inventoryCode: '107304', categoryCode: '0073' }, - { inventoryCode: '107305', categoryCode: '0073' }, - { inventoryCode: '107306', categoryCode: '0073' }, - { inventoryCode: '107307', categoryCode: '0073' }, - { inventoryCode: '107308', categoryCode: '0073' }, - { inventoryCode: '107309', categoryCode: '0073' }, - { inventoryCode: '107310', categoryCode: '0073' }, - { inventoryCode: '107311', categoryCode: '0073' }, - { inventoryCode: '107312', categoryCode: '0073' }, - { inventoryCode: '107313', categoryCode: '0073' }, - { inventoryCode: '107314', categoryCode: '0073' }, - { inventoryCode: '107315', categoryCode: '0073' }, - { inventoryCode: '107316', categoryCode: '0073' }, - { inventoryCode: '107317', categoryCode: '0073' }, - { inventoryCode: '107318', categoryCode: '0073' }, - { inventoryCode: '107319', categoryCode: '0073' }, - { inventoryCode: '107320', categoryCode: '0073' }, - { inventoryCode: '107321', categoryCode: '0073' }, - { inventoryCode: '107322', categoryCode: '0073' }, - { inventoryCode: '107323', categoryCode: '0073' }, - { inventoryCode: '107324', categoryCode: '0073' }, - { inventoryCode: '107325', categoryCode: '0073' }, - { inventoryCode: '107400', categoryCode: '0074' }, - { inventoryCode: '107401', categoryCode: '0074' }, - { inventoryCode: '107402', categoryCode: '0074' }, - { inventoryCode: '107403', categoryCode: '0074' }, - { inventoryCode: '107404', categoryCode: '0074' }, - { inventoryCode: '107500', categoryCode: '0075' }, - { inventoryCode: '107501', categoryCode: '0075' }, - { inventoryCode: '107502', categoryCode: '0075' }, - { inventoryCode: '107503', categoryCode: '0075' }, - { inventoryCode: '107504', categoryCode: '0075' }, - { inventoryCode: '107505', categoryCode: '0075' }, - { inventoryCode: '107600', categoryCode: '0076' }, - { inventoryCode: '107601', categoryCode: '0076' }, - { inventoryCode: '107602', categoryCode: '0076' }, - { inventoryCode: '107603', categoryCode: '0076' }, - { inventoryCode: '107604', categoryCode: '0076' }, - { inventoryCode: '107605', categoryCode: '0076' }, - { inventoryCode: '107606', categoryCode: '0076' }, - { inventoryCode: '107700', categoryCode: '0077' }, - { inventoryCode: '107701', categoryCode: '0077' }, - { inventoryCode: '107702', categoryCode: '0077' }, - { inventoryCode: '107703', categoryCode: '0077' }, - { inventoryCode: '107704', categoryCode: '0077' }, - { inventoryCode: '107705', categoryCode: '0077' }, - { inventoryCode: '107706', categoryCode: '0077' }, - { inventoryCode: '107707', categoryCode: '0077' }, - { inventoryCode: '107708', categoryCode: '0077' }, - { inventoryCode: '107709', categoryCode: '0077' }, - { inventoryCode: '107710', categoryCode: '0077' }, - { inventoryCode: '107711', categoryCode: '0077' }, - { inventoryCode: '107800', categoryCode: '0078' }, - { inventoryCode: '107801', categoryCode: '0078' }, - { inventoryCode: '107802', categoryCode: '0078' }, - { inventoryCode: '107803', categoryCode: '0078' }, - { inventoryCode: '107804', categoryCode: '0078' }, - { inventoryCode: '107805', categoryCode: '0078' }, - { inventoryCode: '107806', categoryCode: '0078' }, - { inventoryCode: '107807', categoryCode: '0078' }, - { inventoryCode: '107808', categoryCode: '0078' }, - { inventoryCode: '107809', categoryCode: '0078' }, - { inventoryCode: '107810', categoryCode: '0078' }, - { inventoryCode: '107811', categoryCode: '0078' }, - { inventoryCode: '107812', categoryCode: '0078' }, - { inventoryCode: '107813', categoryCode: '0078' }, - { inventoryCode: '107814', categoryCode: '0078' }, - { inventoryCode: '107815', categoryCode: '0078' }, - { inventoryCode: '107816', categoryCode: '0078' }, - { inventoryCode: '107817', categoryCode: '0078' }, - { inventoryCode: '107818', categoryCode: '0078' }, - { inventoryCode: '107820', categoryCode: '0078' }, - { inventoryCode: '107821', categoryCode: '0078' }, - { inventoryCode: '107822', categoryCode: '0078' }, - { inventoryCode: '107823', categoryCode: '0078' }, - { inventoryCode: '107824', categoryCode: '0078' }, - { inventoryCode: '107825', categoryCode: '0078' }, - { inventoryCode: '107826', categoryCode: '0078' }, - { inventoryCode: '107827', categoryCode: '0078' }, - { inventoryCode: '107828', categoryCode: '0078' }, - { inventoryCode: '107829', categoryCode: '0078' }, - { inventoryCode: '107830', categoryCode: '0078' }, - { inventoryCode: '107831', categoryCode: '0078' }, - { inventoryCode: '107832', categoryCode: '0078' }, - { inventoryCode: '107833', categoryCode: '0078' }, - { inventoryCode: '107834', categoryCode: '0078' }, - { inventoryCode: '107835', categoryCode: '0078' }, - { inventoryCode: '107836', categoryCode: '0078' }, - { inventoryCode: '107837', categoryCode: '0078' }, - { inventoryCode: '107838', categoryCode: '0078' }, - { inventoryCode: '107839', categoryCode: '0078' }, - { inventoryCode: '107840', categoryCode: '0078' }, - { inventoryCode: '107841', categoryCode: '0078' }, - { inventoryCode: '107842', categoryCode: '0078' }, - { inventoryCode: '107843', categoryCode: '0078' }, - { inventoryCode: '107844', categoryCode: '0078' }, - { inventoryCode: '107845', categoryCode: '0078' }, - { inventoryCode: '107846', categoryCode: '0078' }, - { inventoryCode: '107847', categoryCode: '0078' }, - { inventoryCode: '107848', categoryCode: '0078' }, - { inventoryCode: '107849', categoryCode: '0078' }, - { inventoryCode: '107850', categoryCode: '0078' }, - { inventoryCode: '107851', categoryCode: '0078' }, - { inventoryCode: '107852', categoryCode: '0078' }, - { inventoryCode: '107853', categoryCode: '0078' }, - { inventoryCode: '107854', categoryCode: '0078' }, - { inventoryCode: '107855', categoryCode: '0078' }, - { inventoryCode: '107856', categoryCode: '0078' }, - { inventoryCode: '107857', categoryCode: '0078' }, - { inventoryCode: '107858', categoryCode: '0078' }, - { inventoryCode: '107859', categoryCode: '0078' }, - { inventoryCode: '107860', categoryCode: '0078' }, - { inventoryCode: '107861', categoryCode: '0078' }, - { inventoryCode: '107862', categoryCode: '0078' }, - { inventoryCode: '107863', categoryCode: '0078' }, - { inventoryCode: '107864', categoryCode: '0078' }, - { inventoryCode: '107865', categoryCode: '0078' }, - { inventoryCode: '107866', categoryCode: '0078' }, - { inventoryCode: '107867', categoryCode: '0078' }, - { inventoryCode: '107868', categoryCode: '0078' }, - { inventoryCode: '107869', categoryCode: '0078' }, - { inventoryCode: '107870', categoryCode: '0078' }, - { inventoryCode: '107871', categoryCode: '0078' }, - { inventoryCode: '107872', categoryCode: '0078' }, - { inventoryCode: '107873', categoryCode: '0078' }, - { inventoryCode: '107874', categoryCode: '0078' }, - { inventoryCode: '107875', categoryCode: '0078' }, - { inventoryCode: '107876', categoryCode: '0078' }, - { inventoryCode: '107877', categoryCode: '0078' }, - { inventoryCode: '107878', categoryCode: '0078' }, - { inventoryCode: '107879', categoryCode: '0078' }, - { inventoryCode: '107880', categoryCode: '0078' }, - { inventoryCode: '107881', categoryCode: '0078' }, - { inventoryCode: '107882', categoryCode: '0078' }, - { inventoryCode: '107883', categoryCode: '0078' }, - { inventoryCode: '107884', categoryCode: '0078' }, - { inventoryCode: '107885', categoryCode: '0078' }, - { inventoryCode: '107886', categoryCode: '0078' }, - { inventoryCode: '107887', categoryCode: '0078' }, - { inventoryCode: '107888', categoryCode: '0078' }, - { inventoryCode: '107889', categoryCode: '0078' }, - { inventoryCode: '107890', categoryCode: '0078' }, - { inventoryCode: '107900', categoryCode: '0079' }, - { inventoryCode: '107901', categoryCode: '0079' }, - { inventoryCode: '107902', categoryCode: '0079' }, - { inventoryCode: '107903', categoryCode: '0079' }, - { inventoryCode: '107904', categoryCode: '0079' }, - { inventoryCode: '107905', categoryCode: '0079' }, - { inventoryCode: '107906', categoryCode: '0079' }, - { inventoryCode: '107907', categoryCode: '0079' }, - { inventoryCode: '107908', categoryCode: '0079' }, - { inventoryCode: '107909', categoryCode: '0079' }, - { inventoryCode: '107910', categoryCode: '0079' }, - { inventoryCode: '107911', categoryCode: '0079' }, - { inventoryCode: '107912', categoryCode: '0079' }, - { inventoryCode: '107913', categoryCode: '0079' }, - { inventoryCode: '107914', categoryCode: '0079' }, - { inventoryCode: '107915', categoryCode: '0079' }, - { inventoryCode: '107916', categoryCode: '0079' }, - { inventoryCode: '107917', categoryCode: '0079' }, - { inventoryCode: '107918', categoryCode: '0079' }, - { inventoryCode: '107919', categoryCode: '0079' }, - { inventoryCode: '107920', categoryCode: '0079' }, - { inventoryCode: '107921', categoryCode: '0079' }, - { inventoryCode: '107922', categoryCode: '0079' }, - { inventoryCode: '107923', categoryCode: '0079' }, - { inventoryCode: '107924', categoryCode: '0079' }, - { inventoryCode: '107925', categoryCode: '0079' }, - { inventoryCode: '107926', categoryCode: '0079' }, - { inventoryCode: '107927', categoryCode: '0079' }, - { inventoryCode: '107928', categoryCode: '0079' }, - { inventoryCode: '107929', categoryCode: '0079' }, - { inventoryCode: '107930', categoryCode: '0079' }, - { inventoryCode: '107931', categoryCode: '0079' }, - { inventoryCode: '107932', categoryCode: '0079' }, - { inventoryCode: '107933', categoryCode: '0079' }, - { inventoryCode: '107934', categoryCode: '0079' }, - { inventoryCode: '107935', categoryCode: '0079' }, - { inventoryCode: '107936', categoryCode: '0079' }, - { inventoryCode: '107937', categoryCode: '0079' }, - { inventoryCode: '107938', categoryCode: '0079' }, - { inventoryCode: '107939', categoryCode: '0079' }, - { inventoryCode: '107940', categoryCode: '0079' }, - { inventoryCode: '107941', categoryCode: '0079' }, - { inventoryCode: '107942', categoryCode: '0079' }, - { inventoryCode: '107943', categoryCode: '0079' }, - { inventoryCode: '10790100', categoryCode: '007901' }, - { inventoryCode: '10790101', categoryCode: '007901' }, - { inventoryCode: '10790102', categoryCode: '007901' }, - { inventoryCode: '10790103', categoryCode: '007901' }, - { inventoryCode: '10790104', categoryCode: '007901' }, - { inventoryCode: '10790105', categoryCode: '007901' }, - { inventoryCode: '10790106', categoryCode: '007901' }, - { inventoryCode: '10790107', categoryCode: '007901' }, - { inventoryCode: '10790108', categoryCode: '007901' }, - { inventoryCode: '10790109', categoryCode: '007901' }, - { inventoryCode: '10790110', categoryCode: '007901' }, - { inventoryCode: '10790111', categoryCode: '007901' }, - { inventoryCode: '10790112', categoryCode: '007901' }, - { inventoryCode: 'ะาฎ1000', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1001', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1002', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1003', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1004', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1005', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1006', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1009', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1010', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1011', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1012', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1013', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1014', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1015', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1016', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1017', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1018', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1019', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1020', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1021', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1022', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1023', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1024', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1025', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1026', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1027', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1028', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1029', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1030', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1031', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1032', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1033', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1034', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1035', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1036', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1037', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1038', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1039', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1040', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1041', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1042', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1043', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1044', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1045', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1046', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1047', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1048', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1049', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1050', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1051', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1052', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1053', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1054', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1055', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1056', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1057', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1058', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1059', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1060', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1061', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1062', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1063', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1064', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1065', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1066', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1067', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1068', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1069', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1070', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1071', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1072', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1073', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1074', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1075', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1076', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1077', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1078', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1079', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1080', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1081', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1082', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1083', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1084', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1085', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1086', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1087', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1088', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1089', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1090', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1091', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1092', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1093', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1094', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1095', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1096', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1097', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1098', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1099', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1100', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1101', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1102', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1103', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1104', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1105', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1106', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1107', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1108', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1109', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1110', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1111', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1112', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1113', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1114', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1115', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1116', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1117', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1118', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1119', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1120', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1121', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1122', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1123', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1124', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1125', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1126', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1127', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1128', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1129', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1130', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1131', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1132', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1133', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1134', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1135', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1136', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1137', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1138', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1139', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1140', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1141', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1142', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1143', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1144', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1145', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1146', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1147', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1148', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1149', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1150', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1151', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1152', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1153', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1154', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1155', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1156', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1157', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1158', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1159', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1160', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1161', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1162', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1163', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1164', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1165', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1166', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1167', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1168', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1169', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1170', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1171', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1172', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1174', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1175', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1176', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1177', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1178', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1179', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1180', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1181', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1182', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1183', categoryCode: '7' }, - { inventoryCode: '1001226', categoryCode: '0012' }, - { inventoryCode: '1001227', categoryCode: '0012' }, - { inventoryCode: '1001228', categoryCode: '0012' }, - { inventoryCode: '1001229', categoryCode: '0012' }, - { inventoryCode: '1001230', categoryCode: '0012' }, - { inventoryCode: 'ะาฎ1184', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1185', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1186', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1187', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1188', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1189', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1190', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1191', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1192', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1193', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1194', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1195', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1173', categoryCode: '7' }, - { inventoryCode: '1029103', categoryCode: '0020' }, - { inventoryCode: '108000', categoryCode: '008' }, - { inventoryCode: '108001', categoryCode: '008' }, - { inventoryCode: '108002', categoryCode: '008' }, - { inventoryCode: '108003', categoryCode: '008' }, - { inventoryCode: '108004', categoryCode: '008' }, - { inventoryCode: '108005', categoryCode: '008' }, - { inventoryCode: '108006', categoryCode: '008' }, - { inventoryCode: '108007', categoryCode: '008' }, - { inventoryCode: '108008', categoryCode: '008' }, - { inventoryCode: '108009', categoryCode: '008' }, - { inventoryCode: '108010', categoryCode: '008' }, - { inventoryCode: '108011', categoryCode: '008' }, - { inventoryCode: '108012', categoryCode: '008' }, - { inventoryCode: '108013', categoryCode: '008' }, - { inventoryCode: '108014', categoryCode: '008' }, - { inventoryCode: '108015', categoryCode: '008' }, - { inventoryCode: '108016', categoryCode: '008' }, - { inventoryCode: '108017', categoryCode: '008' }, - { inventoryCode: '108018', categoryCode: '008' }, - { inventoryCode: '108019', categoryCode: '008' }, - { inventoryCode: '108020', categoryCode: '008' }, - { inventoryCode: '108021', categoryCode: '008' }, - { inventoryCode: '108022', categoryCode: '008' }, - { inventoryCode: '108023', categoryCode: '008' }, - { inventoryCode: '108024', categoryCode: '008' }, - { inventoryCode: '108025', categoryCode: '008' }, - { inventoryCode: '108026', categoryCode: '008' }, - { inventoryCode: '108027', categoryCode: '008' }, - { inventoryCode: '108028', categoryCode: '008' }, - { inventoryCode: '108029', categoryCode: '008' }, - { inventoryCode: '108030', categoryCode: '008' }, - { inventoryCode: '108031', categoryCode: '008' }, - { inventoryCode: '108032', categoryCode: '008' }, - { inventoryCode: '108033', categoryCode: '008' }, - { inventoryCode: '108034', categoryCode: '008' }, - { inventoryCode: '108035', categoryCode: '008' }, - { inventoryCode: '108036', categoryCode: '008' }, - { inventoryCode: '108037', categoryCode: '008' }, - { inventoryCode: '108038', categoryCode: '008' }, - { inventoryCode: '108039', categoryCode: '008' }, - { inventoryCode: '108040', categoryCode: '008' }, - { inventoryCode: '108041', categoryCode: '008' }, - { inventoryCode: '108042', categoryCode: '008' }, - { inventoryCode: '108043', categoryCode: '008' }, - { inventoryCode: '108044', categoryCode: '008' }, - { inventoryCode: '108045', categoryCode: '008' }, - { inventoryCode: '108046', categoryCode: '008' }, - { inventoryCode: '108047', categoryCode: '008' }, - { inventoryCode: '108048', categoryCode: '008' }, - { inventoryCode: '108049', categoryCode: '008' }, - { inventoryCode: '108050', categoryCode: '008' }, - { inventoryCode: '108051', categoryCode: '008' }, - { inventoryCode: '108052', categoryCode: '008' }, - { inventoryCode: '108053', categoryCode: '008' }, - { inventoryCode: '108054', categoryCode: '008' }, - { inventoryCode: '108055', categoryCode: '008' }, - { inventoryCode: '108056', categoryCode: '008' }, - { inventoryCode: '108057', categoryCode: '008' }, - { inventoryCode: '108058', categoryCode: '008' }, - { inventoryCode: '108059', categoryCode: '008' }, - { inventoryCode: '108060', categoryCode: '008' }, - { inventoryCode: '108061', categoryCode: '008' }, - { inventoryCode: '108062', categoryCode: '008' }, - { inventoryCode: '108063', categoryCode: '008' }, - { inventoryCode: '108064', categoryCode: '008' }, - { inventoryCode: '108065', categoryCode: '008' }, - { inventoryCode: '108066', categoryCode: '008' }, - { inventoryCode: '108067', categoryCode: '008' }, - { inventoryCode: '108068', categoryCode: '008' }, - { inventoryCode: '108069', categoryCode: '008' }, - { inventoryCode: '108070', categoryCode: '008' }, - { inventoryCode: '108071', categoryCode: '008' }, - { inventoryCode: '108072', categoryCode: '008' }, - { inventoryCode: '108073', categoryCode: '008' }, - { inventoryCode: '108074', categoryCode: '008' }, - { inventoryCode: '108075', categoryCode: '008' }, - { inventoryCode: '108076', categoryCode: '008' }, - { inventoryCode: '108077', categoryCode: '008' }, - { inventoryCode: '108078', categoryCode: '008' }, - { inventoryCode: '108079', categoryCode: '008' }, - { inventoryCode: '108080', categoryCode: '008' }, - { inventoryCode: '108081', categoryCode: '008' }, - { inventoryCode: '108082', categoryCode: '008' }, - { inventoryCode: '105507', categoryCode: '0042' }, - { inventoryCode: '103931', categoryCode: '0038' }, - { inventoryCode: 'ะาฎ1196', categoryCode: '7' }, - { inventoryCode: '103942', categoryCode: '0039c' }, - { inventoryCode: '3020001', categoryCode: '302' }, - { inventoryCode: '3020002', categoryCode: '302' }, - { inventoryCode: '3020003', categoryCode: '302' }, - { inventoryCode: '3020004', categoryCode: '302' }, - { inventoryCode: '3020005', categoryCode: '302' }, - { inventoryCode: '3020006', categoryCode: '302' }, - { inventoryCode: '3020007', categoryCode: '302' }, - { inventoryCode: '3020008', categoryCode: '302' }, - { inventoryCode: '3020009', categoryCode: '302' }, - { inventoryCode: '3020010', categoryCode: '302' }, - { inventoryCode: '3020011', categoryCode: '302' }, - { inventoryCode: '3020012', categoryCode: '302' }, - { inventoryCode: '3020013', categoryCode: '302' }, - { inventoryCode: '3020014', categoryCode: '302' }, - { inventoryCode: '3020015', categoryCode: '302' }, - { inventoryCode: '3020016', categoryCode: '302' }, - { inventoryCode: '3020017', categoryCode: '302' }, - { inventoryCode: '3020018', categoryCode: '302' }, - { inventoryCode: '3020019', categoryCode: '302' }, - { inventoryCode: '3020020', categoryCode: '302' }, - { inventoryCode: '3020021', categoryCode: '302' }, - { inventoryCode: '3020022', categoryCode: '302' }, - { inventoryCode: '3020023', categoryCode: '302' }, - { inventoryCode: '3020024', categoryCode: '302' }, - { inventoryCode: '3020025', categoryCode: '302' }, - { inventoryCode: '3020026', categoryCode: '302' }, - { inventoryCode: '3020027', categoryCode: '302' }, - { inventoryCode: '3020028', categoryCode: '302' }, - { inventoryCode: '3020029', categoryCode: '302' }, - { inventoryCode: '3020030', categoryCode: '302' }, - { inventoryCode: '3020031', categoryCode: '302' }, - { inventoryCode: '3020032', categoryCode: '302' }, - { inventoryCode: '3020033', categoryCode: '302' }, - { inventoryCode: '3020034', categoryCode: '302' }, - { inventoryCode: '3020035', categoryCode: '302' }, - { inventoryCode: '3020036', categoryCode: '302' }, - { inventoryCode: '3020037', categoryCode: '302' }, - { inventoryCode: '3020038', categoryCode: '302' }, - { inventoryCode: '3020039', categoryCode: '302' }, - { inventoryCode: '3020040', categoryCode: '302' }, - { inventoryCode: '3020041', categoryCode: '302' }, - { inventoryCode: '3020042', categoryCode: '302' }, - { inventoryCode: '3020043', categoryCode: '302' }, - { inventoryCode: '3020044', categoryCode: '302' }, - { inventoryCode: '3020045', categoryCode: '302' }, - { inventoryCode: '1001231', categoryCode: '0012' }, - { inventoryCode: '012001', categoryCode: '012' }, - { inventoryCode: '012002', categoryCode: '012' }, - { inventoryCode: '012003', categoryCode: '012' }, - { inventoryCode: '3001', categoryCode: '300' }, - { inventoryCode: '3002', categoryCode: '300' }, - { inventoryCode: '3003', categoryCode: '300' }, - { inventoryCode: '3004', categoryCode: '300' }, - { inventoryCode: '3005', categoryCode: '300' }, - { inventoryCode: '3006', categoryCode: '300' }, - { inventoryCode: '3007', categoryCode: '300' }, - { inventoryCode: '3008', categoryCode: '300' }, - { inventoryCode: '3009', categoryCode: '300' }, - { inventoryCode: '3010', categoryCode: '300' }, - { inventoryCode: '3011', categoryCode: '300' }, - { inventoryCode: '3012', categoryCode: '300' }, - { inventoryCode: '3013', categoryCode: '300' }, - { inventoryCode: '3014', categoryCode: '300' }, - { inventoryCode: '3015', categoryCode: '300' }, - { inventoryCode: '3016', categoryCode: '300' }, - { inventoryCode: '3017', categoryCode: '300' }, - { inventoryCode: '3018', categoryCode: '300' }, - { inventoryCode: '3019', categoryCode: '300' }, - { inventoryCode: '3020', categoryCode: '300' }, - { inventoryCode: '3021', categoryCode: '300' }, - { inventoryCode: '3022', categoryCode: '300' }, - { inventoryCode: '3023', categoryCode: '300' }, - { inventoryCode: '3024', categoryCode: '300' }, - { inventoryCode: '3025', categoryCode: '300' }, - { inventoryCode: '3026', categoryCode: '300' }, - { inventoryCode: '3027', categoryCode: '300' }, - { inventoryCode: '3028', categoryCode: '300' }, - { inventoryCode: '3029', categoryCode: '300' }, - { inventoryCode: '3030', categoryCode: '300' }, - { inventoryCode: '3031', categoryCode: '300' }, - { inventoryCode: '3032', categoryCode: '300' }, - { inventoryCode: '3033', categoryCode: '300' }, - { inventoryCode: '3034', categoryCode: '300' }, - { inventoryCode: '3035', categoryCode: '300' }, - { inventoryCode: '3036', categoryCode: '300' }, - { inventoryCode: '3037', categoryCode: '300' }, - { inventoryCode: '3038', categoryCode: '300' }, - { inventoryCode: '3039', categoryCode: '300' }, - { inventoryCode: '3040', categoryCode: '300' }, - { inventoryCode: '3041', categoryCode: '300' }, - { inventoryCode: '3042', categoryCode: '300' }, - { inventoryCode: '3043', categoryCode: '300' }, - { inventoryCode: '3044', categoryCode: '300' }, - { inventoryCode: '3045', categoryCode: '300' }, - { inventoryCode: '3046', categoryCode: '300' }, - { inventoryCode: '3047', categoryCode: '300' }, - { inventoryCode: '3048', categoryCode: '300' }, - { inventoryCode: '3049', categoryCode: '300' }, - { inventoryCode: '3050', categoryCode: '300' }, - { inventoryCode: '3051', categoryCode: '300' }, - { inventoryCode: '3052', categoryCode: '300' }, - { inventoryCode: '30101', categoryCode: '301' }, - { inventoryCode: '3020046', categoryCode: '302' }, - { inventoryCode: '3020047', categoryCode: '302' }, - { inventoryCode: '3020048', categoryCode: '302' }, - { inventoryCode: '3020049', categoryCode: '302' }, - { inventoryCode: '3020050', categoryCode: '302' }, - { inventoryCode: '3020051', categoryCode: '302' }, - { inventoryCode: '3020052', categoryCode: '302' }, - { inventoryCode: '3020053', categoryCode: '302' }, - { inventoryCode: '3020054', categoryCode: '302' }, - { inventoryCode: '3020055', categoryCode: '302' }, - { inventoryCode: '3020056', categoryCode: '302' }, - { inventoryCode: '3020057', categoryCode: '302' }, - { inventoryCode: '3020058', categoryCode: '302' }, - { inventoryCode: '3020059', categoryCode: '302' }, - { inventoryCode: '105444', categoryCode: '0041' }, - { inventoryCode: '105445', categoryCode: '0041' }, - { inventoryCode: '105446', categoryCode: '0041' }, - { inventoryCode: '105447', categoryCode: '0041' }, - { inventoryCode: '105448', categoryCode: '0041' }, - { inventoryCode: '105449', categoryCode: '0041' }, - { inventoryCode: '105450', categoryCode: '0041' }, - { inventoryCode: '105451', categoryCode: '0041' }, - { inventoryCode: '106042', categoryCode: '006' }, - { inventoryCode: '106043', categoryCode: '006' }, - { inventoryCode: '111000', categoryCode: '011' }, - { inventoryCode: '111001', categoryCode: '011' }, - { inventoryCode: '111002', categoryCode: '011' }, - { inventoryCode: '111003', categoryCode: '011' }, - { inventoryCode: '111004', categoryCode: '011' }, - { inventoryCode: '111005', categoryCode: '011' }, - { inventoryCode: '111006', categoryCode: '011' }, - { inventoryCode: '111007', categoryCode: '011' }, - { inventoryCode: '111008', categoryCode: '011' }, - { inventoryCode: '111009', categoryCode: '011' }, - { inventoryCode: '111010', categoryCode: '011' }, - { inventoryCode: '111011', categoryCode: '011' }, - { inventoryCode: '111012', categoryCode: '011' }, - { inventoryCode: '111013', categoryCode: '011' }, - { inventoryCode: '111014', categoryCode: '011' }, - { inventoryCode: '111015', categoryCode: '011' }, - { inventoryCode: '111016', categoryCode: '011' }, - { inventoryCode: '111017', categoryCode: '011' }, - { inventoryCode: '111018', categoryCode: '011' }, - { inventoryCode: '111019', categoryCode: '011' }, - { inventoryCode: '111020', categoryCode: '011' }, - { inventoryCode: '111021', categoryCode: '011' }, - { inventoryCode: '111022', categoryCode: '011' }, - { inventoryCode: '111023', categoryCode: '011' }, - { inventoryCode: '111024', categoryCode: '011' }, - { inventoryCode: '111025', categoryCode: '011' }, - { inventoryCode: '111026', categoryCode: '011' }, - { inventoryCode: '111027', categoryCode: '011' }, - { inventoryCode: '111028', categoryCode: '011' }, - { inventoryCode: '111029', categoryCode: '011' }, - { inventoryCode: '111030', categoryCode: '011' }, - { inventoryCode: '111031', categoryCode: '011' }, - { inventoryCode: '111032', categoryCode: '011' }, - { inventoryCode: '111033', categoryCode: '011' }, - { inventoryCode: '111034', categoryCode: '011' }, - { inventoryCode: '111035', categoryCode: '011' }, - { inventoryCode: '111036', categoryCode: '011' }, - { inventoryCode: '111037', categoryCode: '011' }, - { inventoryCode: '303001', categoryCode: '303' }, - { inventoryCode: '104066', categoryCode: '005' }, - { inventoryCode: '102248', categoryCode: '0022' }, - { inventoryCode: 'ะาฎ1197', categoryCode: '7' }, - { inventoryCode: '108083', categoryCode: '008' }, - { inventoryCode: '108084', categoryCode: '008' }, - { inventoryCode: '108200', categoryCode: '008' }, - { inventoryCode: 'ะาฎ1198', categoryCode: '7' }, - { inventoryCode: 'ะาฎ1199', categoryCode: '7' }, - { inventoryCode: '108085', categoryCode: '008' }, - { inventoryCode: '108086', categoryCode: '008' }, - { inventoryCode: '108087', categoryCode: '008' }, - { inventoryCode: '108088', categoryCode: '008' }, - { inventoryCode: '108089', categoryCode: '008' }, - { inventoryCode: '108090', categoryCode: '008' }, - { inventoryCode: '108091', categoryCode: '008' }, - { inventoryCode: '012004', categoryCode: '012' }, - { inventoryCode: '106044', categoryCode: '006' }, - { inventoryCode: '106045', categoryCode: '006' }, - { inventoryCode: '106046', categoryCode: '006' }, - { inventoryCode: '106047', categoryCode: '006' }, - { inventoryCode: '106048', categoryCode: '006' }, - { inventoryCode: '106049', categoryCode: '006' }, - { inventoryCode: '108092', categoryCode: '008' }, - { inventoryCode: '108093', categoryCode: '008' }, - { inventoryCode: '103953', categoryCode: '0038' }, - { inventoryCode: '012005', categoryCode: '012' }, - { inventoryCode: '107819', categoryCode: '007' }, - { inventoryCode: 'ะาฎ11200', categoryCode: '7' }, - { inventoryCode: '108094', categoryCode: '008' }, - { inventoryCode: '108095', categoryCode: '008' }, - { inventoryCode: '108096', categoryCode: '008' }, - { inventoryCode: '106050', categoryCode: '006' }, - { inventoryCode: '106051', categoryCode: '006' }, - { inventoryCode: '108097', categoryCode: '008' }, - { inventoryCode: '108098', categoryCode: '008' }, - { inventoryCode: '106052', categoryCode: '006' }, - { inventoryCode: '012006', categoryCode: '012' }, - { inventoryCode: '012007', categoryCode: '012' }, - { inventoryCode: '30211', categoryCode: '302' }, - { inventoryCode: '30210', categoryCode: '302' }, - { inventoryCode: '30212', categoryCode: '302' }, - { inventoryCode: '30213', categoryCode: '302' }, - { inventoryCode: '110891', categoryCode: '0108' }, - { inventoryCode: '3020060', categoryCode: '302' }, - { inventoryCode: '3020061', categoryCode: '302' }, - { inventoryCode: '3020062', categoryCode: '302' }, - { inventoryCode: '3020063', categoryCode: '302' }, - { inventoryCode: '3020064', categoryCode: '302' }, - { inventoryCode: '3020065', categoryCode: '302' }, - { inventoryCode: '3020066', categoryCode: '302' }, - { inventoryCode: '3020067', categoryCode: '302' }, - { inventoryCode: '3020068', categoryCode: '302' }, - { inventoryCode: '105508', categoryCode: '004' }, - { inventoryCode: '105509', categoryCode: '004' }, - { inventoryCode: '103459', categoryCode: '0038' }, - { inventoryCode: '103460', categoryCode: '0038' }, - { inventoryCode: '103980', categoryCode: '0038' }, - { inventoryCode: '103999', categoryCode: '0038' }, - { inventoryCode: '1039100', categoryCode: '0038' }, - { inventoryCode: '1039101', categoryCode: '0038' }, - { inventoryCode: '1039102', categoryCode: '0038' }, - { inventoryCode: '1039103', categoryCode: '0038' }, - { inventoryCode: '3053', categoryCode: '3' }, - { inventoryCode: '105510', categoryCode: '004' }, -]; + const argv = process.argv; + const limit = argv.pop(); -const command = async () => { - const mongoClient = await mongoose.createConnection(process.env.MONGO_URL || '', options); + const selector = { + relatedIntegrationIds: { $exists: false }, + integrationId: { $exists: true, $ne: null }, + profileScore: { $gt: 0 }, + }; - const products = mongoClient.db.collection('products'); - const categories = mongoClient.db.collection('product_categories'); + const customers = await Customers.find(selector).limit(limit ? parseInt(limit, 10) : 10000); - for (const value of data) { - const category = await categories.findOne({ code: value.categoryCode }); + console.log(`Limit: ${limit}, length: ${customers.length}`); - if (category) { - await products.updateOne({ code: value.inventoryCode }, { $set: { categoryId: category._id } }); - } else if (value.categoryCode === '0029c') { - const cat = await categories.findOne({ code: '0029a' }); - await products.updateOne({ code: value.inventoryCode }, { $set: { categoryId: cat._id } }); - } else if (value.categoryCode === '0039c') { - const cat = await categories.findOne({ code: '0039a' }); - await products.updateOne({ code: value.inventoryCode }, { $set: { categoryId: cat._id } }); - } else if (value.categoryCode === '0019c') { - const cat = await categories.findOne({ code: '0019a' }); - await products.updateOne({ code: value.inventoryCode }, { $set: { categoryId: cat._id } }); - } else if (value.categoryCode === '0101') { - const cat = await categories.findOne({ code: '0100' }); - await products.updateOne({ code: value.inventoryCode }, { $set: { categoryId: cat._id } }); - } else if (value.categoryCode === '0102') { - const cat = await categories.findOne({ code: '0100' }); - await products.updateOne({ code: value.inventoryCode }, { $set: { categoryId: cat._id } }); - } else if (value.categoryCode === '0103') { - const cat = await categories.findOne({ code: '0100' }); - await products.updateOne({ code: value.inventoryCode }, { $set: { categoryId: cat._id } }); - } else if (value.categoryCode === '0104') { - const cat = await categories.findOne({ code: '0100' }); - await products.updateOne({ code: value.inventoryCode }, { $set: { categoryId: cat._id } }); - } else if (value.categoryCode === '0105') { - const cat = await categories.findOne({ code: '0100' }); - await products.updateOne({ code: value.inventoryCode }, { $set: { categoryId: cat._id } }); - } else if (value.categoryCode === '0106') { - const cat = await categories.findOne({ code: '0100' }); - await products.updateOne({ code: value.inventoryCode }, { $set: { categoryId: cat._id } }); - } else if (value.categoryCode === '0107') { - const cat = await categories.findOne({ code: '0100' }); - await products.updateOne({ code: value.inventoryCode }, { $set: { categoryId: cat._id } }); - } else if (value.categoryCode === '0108') { - const cat = await categories.findOne({ code: '0100' }); - await products.updateOne({ code: value.inventoryCode }, { $set: { categoryId: cat._id } }); - } else if (value.categoryCode === '0109') { - const cat = await categories.findOne({ code: '0100' }); - await products.updateOne({ code: value.inventoryCode }, { $set: { categoryId: cat._id } }); - } else if (value.categoryCode === '0110') { - const cat = await categories.findOne({ code: '0100' }); - await products.updateOne({ code: value.inventoryCode }, { $set: { categoryId: cat._id } }); - } else if (value.categoryCode === '0071') { - const cat = await categories.findOne({ code: '0070' }); - await products.updateOne({ code: value.inventoryCode }, { $set: { categoryId: cat._id } }); - } else if (value.categoryCode === '0072') { - const cat = await categories.findOne({ code: '0070' }); - await products.updateOne({ code: value.inventoryCode }, { $set: { categoryId: cat._id } }); - } else if (value.categoryCode === '0073') { - const cat = await categories.findOne({ code: '0070' }); - await products.updateOne({ code: value.inventoryCode }, { $set: { categoryId: cat._id } }); - } else if (value.categoryCode === '0074') { - const cat = await categories.findOne({ code: '0070' }); - await products.updateOne({ code: value.inventoryCode }, { $set: { categoryId: cat._id } }); - } else if (value.categoryCode === '0075') { - const cat = await categories.findOne({ code: '0070' }); - await products.updateOne({ code: value.inventoryCode }, { $set: { categoryId: cat._id } }); - } else if (value.categoryCode === '0076') { - const cat = await categories.findOne({ code: '0070' }); - await products.updateOne({ code: value.inventoryCode }, { $set: { categoryId: cat._id } }); - } else if (value.categoryCode === '0077') { - const cat = await categories.findOne({ code: '0070' }); - await products.updateOne({ code: value.inventoryCode }, { $set: { categoryId: cat._id } }); - } else if (value.categoryCode === '0078') { - const cat = await categories.findOne({ code: '0070' }); - await products.updateOne({ code: value.inventoryCode }, { $set: { categoryId: cat._id } }); - } else if (value.categoryCode === '0079') { - const cat = await categories.findOne({ code: '0070' }); - await products.updateOne({ code: value.inventoryCode }, { $set: { categoryId: cat._id } }); - } else if (value.categoryCode === '007901') { - const cat = await categories.findOne({ code: '0070' }); - await products.updateOne({ code: value.inventoryCode }, { $set: { categoryId: cat._id } }); + const bulkOptions: any[] = []; + + for (const customer of customers) { + if (!customer.integrationId) { + continue; } + + bulkOptions.push({ + updateOne: { + filter: { + _id: customer._id, + }, + update: { + $set: { + relatedIntegrationIds: [customer.integrationId], + }, + }, + }, + }); } + await Customers.bulkWrite(bulkOptions); + process.exit(); }; diff --git a/src/commands/initProject.ts b/src/commands/initProject.ts index e37d0513c..a26d32640 100644 --- a/src/commands/initProject.ts +++ b/src/commands/initProject.ts @@ -13,9 +13,9 @@ connect() }); // create admin user - const user = await Users.createUser({ + const user = await Users.create({ username: 'admin', - password: newPwd, + password: await Users.generatePassword(newPwd), email: 'admin@erxes.io', isOwner: true, details: { diff --git a/src/commands/loadInitialData.ts b/src/commands/loadInitialData.ts index bb5558726..c982a5a39 100644 --- a/src/commands/loadInitialData.ts +++ b/src/commands/loadInitialData.ts @@ -5,7 +5,7 @@ import { Users } from '../db/models'; const main = async () => { const MONGO_URL = getEnv({ name: 'MONGO_URL' }); - const result = await shelljs.exec(`mongorestore --db erxes ./initialData`, { silent: true }); + const result = await shelljs.exec(`mongorestore --db erxes ./src/initialData`, { silent: true }); const output = result.stderr + result.stdout; console.log(output); diff --git a/src/commands/runEsCommand.ts b/src/commands/runEsCommand.ts new file mode 100644 index 000000000..13db30d21 --- /dev/null +++ b/src/commands/runEsCommand.ts @@ -0,0 +1,32 @@ +import { client, getMappings } from '../elasticsearch'; +const argv = process.argv; + +/* + * yarn run runEsCommand deleteByQuery '{"index":"erxes_office__events","body":{"query":{"match":{"customerId":"CX2BFBGDEHFehNT8y"}}}}' + */ +const main = async () => { + if (argv.length === 4) { + const body = argv.pop() || '{}'; + const action = argv.pop(); + + try { + if (action === 'getMapping') { + const mappingResponse = await getMappings(JSON.parse(body).index); + return console.log(JSON.stringify(mappingResponse)); + } + + const response = await client[action](JSON.parse(body)); + console.log(JSON.stringify(response)); + } catch (e) { + console.log(e); + } + } +}; + +main() + .then(() => { + console.log('done ...'); + }) + .catch(e => { + console.log(e.message); + }); diff --git a/src/commands/verifyCustomerEmails.ts b/src/commands/verifyCustomerEmails.ts index 3bc8db581..cef4c6e41 100644 --- a/src/commands/verifyCustomerEmails.ts +++ b/src/commands/verifyCustomerEmails.ts @@ -1,4 +1,5 @@ import * as amqplib from 'amqplib'; +import { validateEmail } from '../data/utils'; import { connect, disconnect } from '../db/connection'; import { Customers } from '../db/models'; @@ -11,34 +12,36 @@ const main = async () => { connect().then(async () => { const verify = async () => { const argv = process.argv; - - let limit = Number.MAX_SAFE_INTEGER; - - if (argv.length > 2) { - limit = parseInt(argv[2], 10); - } + const useRest = argv.length > 2; const query = { primaryEmail: { $exists: true, $ne: null }, emailValidationStatus: { $exists: false } }; + const customers = await Customers.find(query, { primaryEmail: 1 }); + const emails = customers.map(customer => customer.primaryEmail); - const customers = await Customers.find(query, { primaryEmail: 1 }).limit(limit); + if (useRest) { + for (const email of emails) { + console.log('Validating .....', email); + await validateEmail(email || '', true); + } - const emails = customers.map(customer => customer.primaryEmail); + process.exit(); + } const args = { action: 'emailVerify', data: { emails }, }; - await channel.assertQueue('erxes-api:engages-notification'); - await channel.sendToQueue('erxes-api:engages-notification', Buffer.from(JSON.stringify(args))); + await channel.assertQueue('erxes-api:email-verifier-notification'); + await channel.sendToQueue('erxes-api:email-verifier-notification', Buffer.from(JSON.stringify(args))); }; - verify(); + await verify(); // listen for engage notification =========== - await channel.assertQueue('engagesBulkEmailNotification'); + await channel.assertQueue('emailVerifierBulkNotification'); - channel.consume('engagesBulkEmailNotification', async msg => { + channel.consume('emailVerifierBulkNotification', async msg => { if (msg !== null) { console.log('Bulk status: ', JSON.parse(msg.content.toString())); @@ -56,4 +59,10 @@ const main = async () => { }); }; -main(); +main() + .then(() => { + console.log('success ...'); + }) + .catch(e => { + console.log(e.message); + }); diff --git a/src/cronJobs/index.ts b/src/cronJobs/index.ts index 6da03c24d..72b093a1a 100644 --- a/src/cronJobs/index.ts +++ b/src/cronJobs/index.ts @@ -67,7 +67,7 @@ app.use((error, _req, res, _next) => { res.status(500).send(error.message); }); -const { PORT_CRONS } = process.env; +const { PORT_CRONS = 3600 } = process.env; app.listen(PORT_CRONS, () => { debugCrons(`Cron Server is now running on ${PORT_CRONS}`); diff --git a/src/data/dataSources/engages.ts b/src/data/dataSources/engages.ts index 6eb318197..16c56069d 100644 --- a/src/data/dataSources/engages.ts +++ b/src/data/dataSources/engages.ts @@ -1,12 +1,12 @@ import { HTTPCache, RESTDataSource } from 'apollo-datasource-rest'; import { debugBase } from '../../debuggers'; -import { getEnv } from '../utils'; +import { getSubServiceDomain } from '../utils'; export default class EngagesAPI extends RESTDataSource { constructor() { super(); - const ENGAGES_API_DOMAIN = getEnv({ name: 'ENGAGES_API_DOMAIN' }); + const ENGAGES_API_DOMAIN = getSubServiceDomain({ name: 'ENGAGES_API_DOMAIN' }); this.baseURL = ENGAGES_API_DOMAIN; this.httpCache = new HTTPCache(); diff --git a/src/data/dataSources/integrations.ts b/src/data/dataSources/integrations.ts index ee84e1fdb..85fccf5e5 100644 --- a/src/data/dataSources/integrations.ts +++ b/src/data/dataSources/integrations.ts @@ -1,11 +1,11 @@ import { HTTPCache, RESTDataSource } from 'apollo-datasource-rest'; -import { getEnv } from '../utils'; +import { getSubServiceDomain } from '../utils'; export default class IntegrationsAPI extends RESTDataSource { constructor() { super(); - const INTEGRATIONS_API_DOMAIN = getEnv({ name: 'INTEGRATIONS_API_DOMAIN' }); + const INTEGRATIONS_API_DOMAIN = getSubServiceDomain({ name: 'INTEGRATIONS_API_DOMAIN' }); this.baseURL = INTEGRATIONS_API_DOMAIN; this.httpCache = new HTTPCache(); @@ -63,6 +63,14 @@ export default class IntegrationsAPI extends RESTDataSource { return this.post('/twitter/reply', params); } + public async replySmooch(params) { + return this.post('/smooch/reply', params); + } + + public async replyWhatsApp(params) { + return this.post('/whatsapp/reply', params); + } + public async updateConfigs(configsMap) { return this.post('/update-configs', { configsMap }); } diff --git a/src/data/logUtils.ts b/src/data/logUtils.ts index 103039d26..2a453d715 100644 --- a/src/data/logUtils.ts +++ b/src/data/logUtils.ts @@ -41,7 +41,7 @@ import { } from '../db/models/index'; import { sendMessage } from '../messageBroker'; import { MODULE_NAMES } from './constants'; -import { getEnv, registerOnboardHistory, sendRequest } from './utils'; +import { getSubServiceDomain, registerOnboardHistory, sendRequest } from './utils'; export type LogDesc = { [key: string]: any; @@ -63,6 +63,11 @@ interface IContentTypeParams { contentTypeId: string; } +/** + * @param object - Previous state of the object + * @param newData - Requested update data + * @param updatedDocument - State after any updates to the object + */ export interface ILogDataParams { type: string; description?: string; @@ -83,6 +88,7 @@ export interface ILogQueryParams { action?: string; page?: number; perPage?: number; + type?: string; } interface IDescriptions { @@ -237,7 +243,7 @@ const gatherNames = async (params: ILogParams): Promise => { for (const id of uniqueIds) { const item = await collection.findOne({ _id: id }); - let name: string = ''; + let name: string = `item with id "${id}" has been deleted`; if (item) { for (const n of nameFields) { @@ -245,9 +251,9 @@ const gatherNames = async (params: ILogParams): Promise => { name = item[n]; } } - - options.push({ [foreignKey]: id, name }); } + + options.push({ [foreignKey]: id, name }); } return options; @@ -826,6 +832,25 @@ const gatherPipelineTemplateFieldNames = async ( return options; }; +const gatherUserFieldNames = async (doc: IUserDocument, prevList?: LogDesc[]): Promise => { + let options: LogDesc[] = []; + + if (prevList) { + options = prevList; + } + + // show only user group names of users for now + options = await gatherNames({ + collection: UsersGroups, + idFields: doc.groupIds || [], + foreignKey: 'groupIds', + nameFields: ['name'], + prevList: options, + }); + + return options; +}; + const gatherDescriptions = async (params: IDescriptionParams): Promise => { const { action, type, obj, updatedDocument } = params; @@ -1198,6 +1223,16 @@ const gatherDescriptions = async (params: IDescriptionParams): Promise { * @param {Object} param0 Request */ export const fetchLogs = (params: ILogQueryParams) => { - const LOGS_DOMAIN = getEnv({ name: 'LOGS_API_DOMAIN' }); - - if (!LOGS_DOMAIN) { - return { - logs: [], - totalCount: 0, - }; - } + const LOGS_DOMAIN = getSubServiceDomain({ name: 'LOGS_API_DOMAIN' }); return sendRequest( { url: `${LOGS_DOMAIN}/logs`, method: 'get', body: { params: JSON.stringify(params) } }, diff --git a/src/data/modules/coc/companies.ts b/src/data/modules/coc/companies.ts index 3441ccd02..4ea867c1e 100644 --- a/src/data/modules/coc/companies.ts +++ b/src/data/modules/coc/companies.ts @@ -24,8 +24,6 @@ export interface IListArgs extends IConformityQueryParams { tag?: string; ids?: string[]; searchValue?: string; - lifecycleState?: string; - leadStatus?: string; brand?: string; sortField?: string; sortDirection?: number; diff --git a/src/data/modules/coc/customers.ts b/src/data/modules/coc/customers.ts index fc80d5f1c..2392f8d34 100644 --- a/src/data/modules/coc/customers.ts +++ b/src/data/modules/coc/customers.ts @@ -31,7 +31,6 @@ export interface IListArgs extends IConformityQueryParams { form?: string; startDate?: string; endDate?: string; - lifecycleState?: string; leadStatus?: string; type?: string; integrationType?: string; @@ -44,6 +43,28 @@ export interface IListArgs extends IConformityQueryParams { export class Builder extends CommonBuilder { constructor(params: IListArgs, context) { super('customers', params, context); + + this.addStateFilter(); + } + + public addStateFilter() { + if (this.params.type) { + this.positiveList.push({ + term: { + state: this.params.type, + }, + }); + } + } + + public resetPositiveList() { + this.positiveList = []; + + this.addStateFilter(); + + if (this.context.commonQuerySelectorElk) { + this.positiveList.push(this.context.commonQuerySelectorElk); + } } // filter by brand @@ -118,6 +139,7 @@ export class Builder extends CommonBuilder { const selector = { ...this.context.commonQuerySelector, status: { $ne: STATUSES.DELETED }, + state: this.params.type || 'customer', profileScore: { $gt: 0 }, $or: [ { diff --git a/src/data/modules/coc/utils.ts b/src/data/modules/coc/utils.ts index 9c77d7e01..e7f433117 100644 --- a/src/data/modules/coc/utils.ts +++ b/src/data/modules/coc/utils.ts @@ -2,7 +2,7 @@ import * as _ from 'underscore'; import { Brands, Conformities, Segments, Tags } from '../../../db/models'; import { KIND_CHOICES } from '../../../db/models/definitions/constants'; import { fetchElk } from '../../../elasticsearch'; -import { COC_LEAD_STATUS_TYPES, COC_LIFECYCLE_STATE_TYPES } from '../../constants'; +import { COC_LEAD_STATUS_TYPES } from '../../constants'; import { fetchBySegments } from '../segments/queryBuilder'; export interface ICountBy { @@ -71,19 +71,6 @@ export const countByLeadStatus = async (qb): Promise => { return counts; }; -export const countByLifecycleStatus = async (qb): Promise => { - const counts: ICountBy = {}; - - for (const type of COC_LIFECYCLE_STATE_TYPES) { - await qb.buildAllQueries(); - qb.lifecycleStateFilter(type); - - counts[type] = await qb.runQueries('count'); - } - - return counts; -}; - export const countByIntegrationType = async (qb): Promise => { const counts: ICountBy = {}; @@ -105,7 +92,6 @@ interface ICommonListArgs { ids?: string[]; searchValue?: string; brand?: string; - lifecycleState?: string; leadStatus?: string; conformityMainType?: string; conformityMainTypeId?: string; @@ -162,8 +148,8 @@ export class CommonBuilder { // filter by search value public searchFilter(value: string): void { this.positiveList.push({ - regexp: { - searchText: `.*+${value}.*`, + match_phrase: { + searchText: value, }, }); } @@ -186,15 +172,6 @@ export class CommonBuilder { }); } - // filter by lifecycleState - public lifecycleStateFilter(lifecycleState: string): void { - this.positiveList.push({ - term: { - lifecycleState, - }, - }); - } - public async conformityFilter() { const { conformityMainType, conformityMainTypeId, conformityIsRelated, conformityIsSaved } = this.params; @@ -255,11 +232,6 @@ export class CommonBuilder { this.leadStatusFilter(this.params.leadStatus); } - // filter by lifecycleState - if (this.params.lifecycleState) { - this.lifecycleStateFilter(this.params.lifecycleState); - } - // If there are ids and form params, returning ids filter only filter by ids if (this.params.ids) { this.idsFilter(this.params.ids); diff --git a/src/data/modules/fileExporter/constants.ts b/src/data/modules/fileExporter/constants.ts index 606a7a991..273960643 100644 --- a/src/data/modules/fileExporter/constants.ts +++ b/src/data/modules/fileExporter/constants.ts @@ -55,7 +55,6 @@ export const CUSTOMER_BASIC_INFOS = [ 'department', 'leadStatus', 'status', - 'lifecycleState', 'hasAuthority', 'description', 'doNotDisturb', @@ -73,8 +72,6 @@ export const COMPANY_BASIC_INFOS = [ 'plan', 'primaryEmail', 'primaryPhone', - 'leadStatus', - 'lifecycleState', 'businessType', 'description', 'doNotDisturb', diff --git a/src/data/modules/fileExporter/exporter.ts b/src/data/modules/fileExporter/exporter.ts index 0ec5bd7a9..2b864577d 100644 --- a/src/data/modules/fileExporter/exporter.ts +++ b/src/data/modules/fileExporter/exporter.ts @@ -2,9 +2,10 @@ import * as moment from 'moment'; import { Brands, Channels, - ConversationMessages, + // ConversationMessages, Deals, Fields, + FormSubmissions, Permissions, Tasks, Tickets, @@ -47,21 +48,75 @@ const prepareData = async (query: any, user: IUserDocument): Promise => { const customerParams: ICustomerListArgs = query; - const qb = new CustomerBuildQuery(customerParams, {}); - await qb.buildAllQueries(); - - const customerResponse = await qb.runQueries(); - - data = customerResponse.list; - if (customerParams.form && customerParams.popupData) { - const formQuery = { - formWidgetData: { $exists: true }, - }; + const messagesAggregate = await FormSubmissions.aggregate([ + { + $match: { formId: customerParams.form, customerId: { $exists: true, $ne: null } }, + }, + { + $group: { + _id: null, + customerIds: { + $addToSet: '$customerId', + }, + }, + }, + { + $lookup: { + from: 'conversation_messages', + let: { letCustomerIds: '$customerIds' }, + pipeline: [ + { + $match: { + $expr: { + $and: [{ $in: ['$customerId', '$$letCustomerIds'] }, { $ne: ['formWidgetData', null] }], + }, + }, + }, + ], + as: 'messagesWithFormData', + }, + }, + { + $unwind: '$messagesWithFormData', + }, + { + $project: { + formWidgetData: '$messagesWithFormData.formWidgetData', + createdAt: '$messagesWithFormData.createdAt', + }, + }, + { + $sort: { createdAt: -1 }, + }, + ]); + + const messages: any[] = []; + + messagesAggregate.forEach(message => { + if (message.formWidgetData && Array.isArray(message.formWidgetData)) { + const formData = message.formWidgetData; + + formData.push({ + _id: message._id, + type: 'input', + validation: 'date', + text: 'Created', + value: message.createdAt, + }); + + messages.push(formData); + } + }); + + data = messages; + } else { + const qb = new CustomerBuildQuery(customerParams, {}); + await qb.buildAllQueries(); - const conversationMessages = await ConversationMessages.find(formQuery, { formWidgetData: 1 }); + const customerResponse = await qb.runQueries(); - data = conversationMessages.map(message => message.formWidgetData); + data = customerResponse.list; } break; @@ -152,18 +207,32 @@ const fillLeadHeaders = async (formId: string) => { headers.push({ name: field.text, label: field.text }); } + headers.push({ name: 'Created', label: 'Created' }); + return headers; }; const buildLeadFile = async (datas: any, formId: string, sheet: any, columnNames: string[], rowIndex: number) => { const headers: IColumnLabel[] = await fillLeadHeaders(formId); + const displayValue = item => { + if (!item) { + return ''; + } + + if (item.validation === 'date') { + return moment(item.value).format('YYYY/MM/DD HH:mm'); + } + + return item.value; + }; + for (const data of datas) { rowIndex++; // Iterating through basic info columns for (const column of headers) { const item = await data.find(obj => obj.text === column.name); - const cellValue = item ? item.value : ''; + const cellValue = displayValue(item); addCell(column, cellValue, sheet, columnNames, rowIndex); } diff --git a/src/data/modules/integrations/receiveMessage.ts b/src/data/modules/integrations/receiveMessage.ts index eb7ee11dc..39dd934de 100644 --- a/src/data/modules/integrations/receiveMessage.ts +++ b/src/data/modules/integrations/receiveMessage.ts @@ -133,44 +133,40 @@ export const receiveIntegrationsNotification = async msg => { } }; -const MSG_QUEUE_ACTIONS = { - EMAIL_VERIFY: 'emailVerify', - SET_DONOT_DISTURB: 'setDoNotDisturb', - ALL: ['emailVerify', 'setDoNotDisturb'], -}; - /* - * Engages notification + * Email verifier notification */ -export const receiveEngagesNotification = async msg => { +export const receiveEmailVerifierNotification = async msg => { const { action, data } = msg; - switch (action) { - case MSG_QUEUE_ACTIONS.EMAIL_VERIFY: { - const bulkOps: Array<{ + if (action === 'emailVerify') { + const bulkOps: Array<{ + updateOne: { + filter: { primaryEmail: string }; + update: { emailValidationStatus: string }; + }; + }> = []; + + for (const { email, status } of data) { + bulkOps.push({ updateOne: { - filter: { primaryEmail: string }; - update: { emailValidationStatus: string }; - }; - }> = []; - - for (const { email, status } of data) { - bulkOps.push({ - updateOne: { - filter: { primaryEmail: email }, - update: { emailValidationStatus: status }, - }, - }); - } + filter: { primaryEmail: email }, + update: { emailValidationStatus: status }, + }, + }); + } - await Customers.bulkWrite(bulkOps); + await Customers.bulkWrite(bulkOps); + } +}; - break; - } - case MSG_QUEUE_ACTIONS.SET_DONOT_DISTURB: { - await Customers.updateOne({ _id: data.customerId }, { $set: { doNotDisturb: 'Yes' } }); +/* + * Engages notification + */ +export const receiveEngagesNotification = async msg => { + const { action, data } = msg; - break; - } + if (action === 'setDoNotDisturb') { + await Customers.updateOne({ _id: data.customerId }, { $set: { doNotDisturb: 'Yes' } }); } }; diff --git a/src/data/modules/segments/queryBuilder.ts b/src/data/modules/segments/queryBuilder.ts index b6fc573aa..594b047b7 100644 --- a/src/data/modules/segments/queryBuilder.ts +++ b/src/data/modules/segments/queryBuilder.ts @@ -1,5 +1,7 @@ import * as _ from 'underscore'; import { Segments } from '../../../db/models'; +import { companySchema } from '../../../db/models/definitions/companies'; +import { customerSchema } from '../../../db/models/definitions/customers'; import { ICondition, ISegment } from '../../../db/models/definitions/segments'; import { fetchElk } from '../../../elasticsearch'; @@ -11,19 +13,18 @@ export const fetchBySegments = async (segment: ISegment, action: 'search' | 'cou const { contentType } = segment; const index = contentType === 'customer' ? 'customers' : 'companies'; const idField = contentType === 'customer' ? 'customerId' : 'companyId'; + const schema = contentType === 'customer' ? customerSchema : companySchema; + const typesMap: { [key: string]: any } = {}; + + schema.eachPath(name => { + const path = schema.paths[name]; + typesMap[name] = path.instance; + }); const propertyPositive: any[] = []; const propertyNegative: any[] = []; if (contentType === 'customer') { - propertyPositive.push({ - range: { - profileScore: { - gt: 0, - }, - }, - }); - propertyNegative.push({ term: { status: 'Deleted', @@ -34,7 +35,7 @@ export const fetchBySegments = async (segment: ISegment, action: 'search' | 'cou const eventPositive = []; const eventNegative = []; - await generateQueryBySegment({ segment, propertyPositive, propertyNegative, eventNegative, eventPositive }); + await generateQueryBySegment({ segment, typesMap, propertyPositive, propertyNegative, eventNegative, eventPositive }); let idsByEvents = []; @@ -51,17 +52,15 @@ export const fetchBySegments = async (segment: ISegment, action: 'search' | 'cou }); idsByEvents = eventsResponse.hits.hits.map(hit => hit._source[idField]); + + propertyPositive.push({ + terms: { + _id: idsByEvents, + }, + }); } if (action === 'count') { - if (idsByEvents.length > 0) { - propertyPositive.push({ - terms: { - _id: idsByEvents, - }, - }); - } - return { positiveList: propertyPositive, negativeList: propertyNegative, @@ -96,8 +95,9 @@ const generateQueryBySegment = async (args: { eventPositive; eventNegative; segment: ISegment; + typesMap: { [key: string]: any }; }) => { - const { segment, propertyNegative, propertyPositive, eventNegative, eventPositive } = args; + const { segment, typesMap, propertyNegative, propertyPositive, eventNegative, eventPositive } = args; // Fetching parent segment const embeddedParentSegment = await Segments.findOne({ _id: segment.subOf }); @@ -121,8 +121,11 @@ const generateQueryBySegment = async (args: { } for (const condition of propertyConditions) { + const field = condition.propertyName || ''; + elkConvertConditionToQuery({ - field: condition.propertyName || '', + field, + type: typesMap[field], operator: condition.propertyOperator || '', value: condition.propertyValue || '', positive: propertyPositive, @@ -183,27 +186,42 @@ const generateQueryBySegment = async (args: { } }; -function elkConvertConditionToQuery(args: { field: string; operator: string; value: string; positive; negative }) { - const { field, operator, value, positive, negative } = args; +function elkConvertConditionToQuery(args: { + field: string; + type?: any; + operator: string; + value: string; + positive; + negative; +}) { + const { field, type, operator, value, positive, negative } = args; const fixedValue = value.toLocaleLowerCase(); // equal if (operator === 'e') { - positive.push({ - term: { - [`${field}.keyword`]: value, - }, - }); + if (type === 'String') { + positive.push({ + term: { [`${field}.keyword`]: value }, + }); + } else { + positive.push({ + term: { [field]: value }, + }); + } } // does not equal if (operator === 'dne') { - negative.push({ - term: { - [`${field}.keyword`]: value, - }, - }); + if (type === 'String') { + negative.push({ + term: { [`${field}.keyword`]: value }, + }); + } else { + negative.push({ + term: { [field]: value }, + }); + } } // contains diff --git a/src/data/resolvers/knowledgeBaseCategory.ts b/src/data/resolvers/knowledgeBaseCategory.ts index d8fb496c8..2e27be40e 100644 --- a/src/data/resolvers/knowledgeBaseCategory.ts +++ b/src/data/resolvers/knowledgeBaseCategory.ts @@ -1,16 +1,17 @@ import { KnowledgeBaseArticles, KnowledgeBaseTopics, Users } from '../../db/models'; +import { PUBLISH_STATUSES } from '../../db/models/definitions/constants'; import { ICategoryDocument } from '../../db/models/definitions/knowledgebase'; export default { articles(category: ICategoryDocument) { - return KnowledgeBaseArticles.find({ _id: { $in: category.articleIds } }); + return KnowledgeBaseArticles.find({ _id: { $in: category.articleIds }, status: PUBLISH_STATUSES.PUBLISH }); }, async authors(category: ICategoryDocument) { const articles = await KnowledgeBaseArticles.find( { _id: { $in: category.articleIds }, - status: 'publish', + status: PUBLISH_STATUSES.PUBLISH, }, { createdBy: 1 }, ); @@ -31,7 +32,7 @@ export default { numOfArticles(category: ICategoryDocument) { return KnowledgeBaseArticles.find({ _id: { $in: category.articleIds }, - status: 'publish', + status: PUBLISH_STATUSES.PUBLISH, }).countDocuments(); }, }; diff --git a/src/data/resolvers/mutations/checklists.ts b/src/data/resolvers/mutations/checklists.ts index 7a9b5ea11..1e2b7c33a 100644 --- a/src/data/resolvers/mutations/checklists.ts +++ b/src/data/resolvers/mutations/checklists.ts @@ -1,5 +1,6 @@ import { ChecklistItems, Checklists } from '../../../db/models'; import { IChecklist, IChecklistItem } from '../../../db/models/definitions/checklists'; +import { graphqlPubsub } from '../../../pubsub'; import { MODULE_NAMES } from '../../constants'; import { putCreateLog, putDeleteLog, putUpdateLog } from '../../logUtils'; import { moduleRequireLogin } from '../../permissions/wrappers'; @@ -13,6 +14,24 @@ interface IChecklistItemsEdit extends IChecklistItem { _id: string; } +const checklistsChanged = (checklist: IChecklistsEdit) => { + graphqlPubsub.publish('checklistsChanged', { + checklistsChanged: { + _id: checklist._id, + contentType: checklist.contentType, + contentTypeId: checklist.contentTypeId, + }, + }); +}; + +const checklistDetailChanged = (_id: string) => { + graphqlPubsub.publish('checklistDetailChanged', { + checklistDetailChanged: { + _id, + }, + }); +}; + const checklistMutations = { /** * Adds checklist object and also adds an activity log @@ -29,6 +48,8 @@ const checklistMutations = { user, ); + checklistsChanged(checklist); + return checklist; }, @@ -49,6 +70,8 @@ const checklistMutations = { user, ); + checklistDetailChanged(_id); + return updated; }, @@ -61,11 +84,13 @@ const checklistMutations = { await putDeleteLog({ type: MODULE_NAMES.CHECKLIST, object: checklist }, user); + checklistsChanged(checklist); + return removed; }, /** - * Adds checklistItems object and also adds an activity log + * Adds a checklist item and also adds an activity log */ async checklistItemsAdd(_root, args: IChecklistItem, { user }: IContext) { const checklistItem = await ChecklistItems.createChecklistItem(args, user); @@ -79,6 +104,8 @@ const checklistMutations = { user, ); + checklistDetailChanged(checklistItem.checklistId); + return checklistItem; }, @@ -94,10 +121,13 @@ const checklistMutations = { type: MODULE_NAMES.CHECKLIST_ITEM, object: checklistItem, newData: doc, + updatedDocument: updated, }, user, ); + checklistDetailChanged(updated.checklistId); + return updated; }, @@ -110,6 +140,8 @@ const checklistMutations = { await putDeleteLog({ type: MODULE_NAMES.CHECKLIST_ITEM, object: checklistItem }, user); + checklistDetailChanged(checklistItem.checklistId); + return removed; }, }; diff --git a/src/data/resolvers/mutations/conversations.ts b/src/data/resolvers/mutations/conversations.ts index 368471753..bd87ddcaf 100644 --- a/src/data/resolvers/mutations/conversations.ts +++ b/src/data/resolvers/mutations/conversations.ts @@ -266,6 +266,14 @@ const conversationMutations = { requestName = 'replyTwitterDm'; } + if (kind.includes('smooch')) { + requestName = 'replySmooch'; + } + + // send reply to whatsapp + if (kind === KIND_CHOICES.WHATSAPP) { + requestName = 'replyWhatsApp'; + if (kind === KIND_CHOICES.WHATSPRO) { requestName = 'replyWhatsPro'; } @@ -427,10 +435,17 @@ const conversationMutations = { message = await ConversationMessages.addMessage(doc, user._id); - return await dataSources.IntegrationsAPI.createDailyVideoChatRoom({ + const videoCallData = await dataSources.IntegrationsAPI.createDailyVideoChatRoom({ erxesApiConversationId: _id, erxesApiMessageId: message._id, }); + + message.videoCallData = videoCallData; + + // publish new message to conversation detail + publishMessage(message); + + return videoCallData; } catch (e) { debugExternalApi(e.message); diff --git a/src/data/resolvers/mutations/customers.ts b/src/data/resolvers/mutations/customers.ts index b461fa89e..6fad756a8 100644 --- a/src/data/resolvers/mutations/customers.ts +++ b/src/data/resolvers/mutations/customers.ts @@ -50,6 +50,13 @@ const customerMutations = { return updated; }, + /** + * Change state + */ + async customersChangeState(_root, args: { _id: string; value: string }) { + return Customers.changeState(args._id, args.value); + }, + /** * Merge customers */ @@ -95,5 +102,6 @@ checkPermission(customerMutations, 'customersAdd', 'customersAdd'); checkPermission(customerMutations, 'customersEdit', 'customersEdit'); checkPermission(customerMutations, 'customersMerge', 'customersMerge'); checkPermission(customerMutations, 'customersRemove', 'customersRemove'); +checkPermission(customerMutations, 'customersChangeState', 'customersRemove'); export default customerMutations; diff --git a/src/data/resolvers/mutations/deals.ts b/src/data/resolvers/mutations/deals.ts index ec4df4243..b7a72d458 100644 --- a/src/data/resolvers/mutations/deals.ts +++ b/src/data/resolvers/mutations/deals.ts @@ -1,9 +1,10 @@ import * as _ from 'underscore'; -import { ActivityLogs, Checklists, Conformities, Deals } from '../../../db/models'; +import { ActivityLogs, Checklists, Conformities, Deals, Stages } from '../../../db/models'; import { getCompanies, getCustomers } from '../../../db/models/boardUtils'; import { IOrderInput } from '../../../db/models/definitions/boards'; import { BOARD_STATUSES, NOTIFICATION_TYPES } from '../../../db/models/definitions/constants'; import { IDeal } from '../../../db/models/definitions/deals'; +import { graphqlPubsub } from '../../../pubsub'; import { MODULE_NAMES } from '../../constants'; import { putCreateLog, putDeleteLog, putUpdateLog } from '../../logUtils'; import { checkPermission } from '../../permissions/wrappers'; @@ -119,7 +120,7 @@ const dealMutations = { contentType: MODULE_NAMES.DEAL, }; - if (checkedAssignUserIds) { + if (Object.keys(checkedAssignUserIds).length > 0) { const { addedUserIds, removedUserIds } = checkedAssignUserIds; const activityContent = { addedUserIds, removedUserIds }; @@ -147,6 +148,45 @@ const dealMutations = { user, ); + if (oldDeal.stageId === updatedDeal.stageId) { + graphqlPubsub.publish('dealsChanged', { + dealsChanged: { + _id: updatedDeal._id, + }, + }); + + return updatedDeal; + } + + // if deal moves between stages + const { content, action } = await itemsChange(user._id, oldDeal, MODULE_NAMES.DEAL, updatedDeal.stageId); + + await sendNotifications({ + item: updatedDeal, + user, + type: NOTIFICATION_TYPES.DEAL_CHANGE, + content, + action, + contentType: MODULE_NAMES.DEAL, + }); + + const updatedStage = await Stages.getStage(updatedDeal.stageId); + const oldStage = await Stages.getStage(oldDeal.stageId); + + graphqlPubsub.publish('pipelinesChanged', { + pipelinesChanged: { + _id: updatedStage.pipelineId, + }, + }); + + if (updatedStage.pipelineId !== oldStage.pipelineId) { + graphqlPubsub.publish('pipelinesChanged', { + pipelinesChanged: { + _id: oldStage.pipelineId, + }, + }); + } + return updatedDeal; }, @@ -177,6 +217,17 @@ const dealMutations = { contentType: MODULE_NAMES.DEAL, }); + // if move between stages + if (destinationStageId !== deal.stageId) { + const stage = await Stages.getStage(deal.stageId); + + graphqlPubsub.publish('pipelinesChanged', { + pipelinesChanged: { + _id: stage.pipelineId, + }, + }); + } + return deal; }, diff --git a/src/data/resolvers/mutations/engageUtils.ts b/src/data/resolvers/mutations/engageUtils.ts index eee5ee8a5..c5b1ca844 100644 --- a/src/data/resolvers/mutations/engageUtils.ts +++ b/src/data/resolvers/mutations/engageUtils.ts @@ -123,8 +123,8 @@ export const send = async (engageMessage: IEngageMessageDocument) => { const customers = await findCustomers({ customerIds, segmentIds, tagIds, brandIds }); - // save matched customer ids - EngageMessages.setCustomerIds(engageMessage._id, customers); + // save matched customers count + await EngageMessages.setCustomersCount(engageMessage._id, 'totalCustomersCount', customers.length); if (engageMessage.method === METHODS.EMAIL) { const customerInfos = customers @@ -146,6 +146,13 @@ export const send = async (engageMessage: IEngageMessageDocument) => { engageMessageId: engageMessage._id, }; + if (customerInfos.length === 0) { + await EngageMessages.deleteOne({ _id: engageMessage._id }); + throw new Error('No customers found who have valid emails'); + } + + await EngageMessages.setCustomersCount(engageMessage._id, 'validCustomersCount', customerInfos.length); + await sendMessage('erxes-api:engages-notification', { action: 'sendEngage', data }); } diff --git a/src/data/resolvers/mutations/growthHacks.ts b/src/data/resolvers/mutations/growthHacks.ts index 429fbfbac..c205a0ecf 100644 --- a/src/data/resolvers/mutations/growthHacks.ts +++ b/src/data/resolvers/mutations/growthHacks.ts @@ -1,8 +1,9 @@ -import { ActivityLogs, GrowthHacks } from '../../../db/models'; +import { ActivityLogs, GrowthHacks, Stages } from '../../../db/models'; import { IOrderInput } from '../../../db/models/definitions/boards'; import { BOARD_STATUSES, NOTIFICATION_TYPES } from '../../../db/models/definitions/constants'; import { IGrowthHack } from '../../../db/models/definitions/growthHacks'; import { IUserDocument } from '../../../db/models/definitions/users'; +import { graphqlPubsub } from '../../../pubsub'; import { MODULE_NAMES } from '../../constants'; import { putCreateLog, putDeleteLog, putUpdateLog } from '../../logUtils'; import { checkPermission } from '../../permissions/wrappers'; @@ -116,6 +117,50 @@ const growthHackMutations = { user, ); + if (oldGrowthHack.stageId === updatedGrowthHack.stageId) { + graphqlPubsub.publish('growthHacksChanged', { + growthHacksChanged: { + _id: updatedGrowthHack._id, + }, + }); + + return updatedGrowthHack; + } + + // if growth hack moves between stages + const { content, action } = await itemsChange( + user._id, + oldGrowthHack, + MODULE_NAMES.GROWTH_HACK, + updatedGrowthHack.stageId, + ); + + await sendNotifications({ + item: updatedGrowthHack, + user, + type: NOTIFICATION_TYPES.GROWTHHACK_CHANGE, + content, + action, + contentType: MODULE_NAMES.GROWTH_HACK, + }); + + const updatedStage = await Stages.getStage(updatedGrowthHack.stageId); + const oldStage = await Stages.getStage(oldGrowthHack.stageId); + + graphqlPubsub.publish('pipelinesChanged', { + pipelinesChanged: { + _id: updatedStage.pipelineId, + }, + }); + + if (updatedStage.pipelineId !== oldStage.pipelineId) { + graphqlPubsub.publish('pipelinesChanged', { + pipelinesChanged: { + _id: oldStage.pipelineId, + }, + }); + } + return updatedGrowthHack; }, @@ -146,6 +191,17 @@ const growthHackMutations = { contentType: MODULE_NAMES.GROWTH_HACK, }); + // if move between stages + if (destinationStageId !== growthHack.stageId) { + const stage = await Stages.getStage(growthHack.stageId); + + graphqlPubsub.publish('pipelinesChanged', { + pipelinesChanged: { + _id: stage.pipelineId, + }, + }); + } + return growthHack; }, diff --git a/src/data/resolvers/mutations/integrations.ts b/src/data/resolvers/mutations/integrations.ts index 68bff57e6..c457db4fb 100644 --- a/src/data/resolvers/mutations/integrations.ts +++ b/src/data/resolvers/mutations/integrations.ts @@ -114,6 +114,10 @@ const integrationMutations = { kind = 'twitter'; } + if (kind.includes('smooch')) { + kind = 'smooch'; + } + try { await dataSources.IntegrationsAPI.createIntegration(kind, { accountId: doc.accountId, @@ -188,6 +192,11 @@ const integrationMutations = { 'nylas-yahoo', 'chatfuel', 'twitter-dm', + 'smooch-viber', + 'smooch-telegram', + 'smooch-line', + 'smooch-twilio', + 'whatsapp', 'whatspro', ].includes(integration.kind) ) { diff --git a/src/data/resolvers/mutations/internalNotes.ts b/src/data/resolvers/mutations/internalNotes.ts index 23705e893..881a5385a 100644 --- a/src/data/resolvers/mutations/internalNotes.ts +++ b/src/data/resolvers/mutations/internalNotes.ts @@ -11,11 +11,12 @@ import { Tickets, Users, } from '../../../db/models'; -import { NOTIFICATION_CONTENT_TYPES, NOTIFICATION_TYPES } from '../../../db/models/definitions/constants'; +import { BOARD_TYPES, NOTIFICATION_CONTENT_TYPES, NOTIFICATION_TYPES } from '../../../db/models/definitions/constants'; import { IDealDocument } from '../../../db/models/definitions/deals'; import { IInternalNote } from '../../../db/models/definitions/internalNotes'; import { ITaskDocument } from '../../../db/models/definitions/tasks'; import { ITicketDocument } from '../../../db/models/definitions/tickets'; +import { graphqlPubsub } from '../../../pubsub'; import { MODULE_NAMES } from '../../constants'; import { putCreateLog, putDeleteLog, putUpdateLog } from '../../logUtils'; import { moduleRequireLogin } from '../../permissions/wrappers'; @@ -42,6 +43,8 @@ const sendNotificationOfItems = async ( }); utils.sendNotification(notifDocItems); + + graphqlPubsub.publish('activityLogsChanged'); }; const internalNoteMutations = { @@ -179,6 +182,10 @@ const internalNoteMutations = { user, ); + if (BOARD_TYPES.ALL.includes(updated.contentType)) { + graphqlPubsub.publish('activityLogsChanged'); + } + return updated; }, @@ -191,6 +198,10 @@ const internalNoteMutations = { await putDeleteLog({ type: MODULE_NAMES.INTERNAL_NOTE, object: internalNote }, user); + if (BOARD_TYPES.ALL.includes(internalNote.contentType)) { + graphqlPubsub.publish('activityLogsChanged'); + } + return removed; }, }; diff --git a/src/data/resolvers/mutations/permissions.ts b/src/data/resolvers/mutations/permissions.ts index 80a99d254..4c453ab4b 100644 --- a/src/data/resolvers/mutations/permissions.ts +++ b/src/data/resolvers/mutations/permissions.ts @@ -1,11 +1,69 @@ -import { Permissions, UsersGroups } from '../../../db/models'; -import { IPermissionParams, IUserGroup } from '../../../db/models/definitions/permissions'; +import * as _ from 'underscore'; +import { Permissions, Users, UsersGroups } from '../../../db/models'; +import { IPermissionParams, IUserGroup, IUserGroupDocument } from '../../../db/models/definitions/permissions'; +import { IUserDocument } from '../../../db/models/definitions/users'; import { MODULE_NAMES } from '../../constants'; import { putCreateLog, putDeleteLog, putUpdateLog } from '../../logUtils'; import { resetPermissionsCache } from '../../permissions/utils'; import { moduleCheckPermission } from '../../permissions/wrappers'; import { IContext } from '../../types'; +interface IParams { + memberIds?: string[]; + oldUsers: IUserDocument[]; + group: IUserGroupDocument; + currentUser: IUserDocument; +} + +const writeUserLog = async (params: IParams) => { + const { memberIds = [], oldUsers = [], group, currentUser } = params; + + for (const oldUser of oldUsers) { + const exists = memberIds.find(id => id === oldUser._id); + + if (!exists) { + const groupIds = oldUser.groupIds ? oldUser.groupIds.filter(item => item !== group._id) : []; + // user has been removed from the group + await putUpdateLog( + { + type: MODULE_NAMES.USER, + object: { _id: oldUser._id, groupIds: oldUser.groupIds }, + newData: { groupIds }, + description: `User "${oldUser.email}" has been removed from group "${group.name}"`, + updatedDocument: { groupIds }, + }, + currentUser, + ); + } + } // end oldUser loop + + for (const memberId of memberIds) { + const exists = oldUsers.find(usr => usr._id === memberId); + + // user has been added to the group + if (!exists) { + // already updated user row + const addedUser = await Users.findOne({ _id: memberId }); + + if (addedUser) { + // previous data was like this + const groupIds = (addedUser.groupIds || []).filter(groupId => groupId !== group._id); + + await putUpdateLog( + { + type: MODULE_NAMES.USER, + object: { _id: memberId, groupIds }, + newData: { groupIds: addedUser.groupIds }, + description: `User "${addedUser.email}" has been added to group ${group.name}`, + updatedDocument: { groupIds: addedUser.groupIds }, + }, + currentUser, + ); + } + } + } // end new user loop +}; + const permissionMutations = { /** * Create new permission @@ -27,7 +85,7 @@ const permissionMutations = { }, user, ); - } // end for loop + } await resetPermissionsCache(); @@ -45,7 +103,7 @@ const permissionMutations = { for (const perm of permissions) { await putDeleteLog({ type: MODULE_NAMES.PERMISSION, object: perm }, user); - } // end for loop + } await resetPermissionsCache(); @@ -61,21 +119,39 @@ const usersGroupMutations = { * @return {Promise} newly created group object */ async usersGroupsAdd(_root, { memberIds, ...doc }: IUserGroup & { memberIds?: string[] }, { user }: IContext) { - const result = await UsersGroups.createGroup(doc, memberIds); + // users before updating + const oldUsers = await Users.find({ _id: { $in: memberIds || [] } }); + + const group = await UsersGroups.createGroup(doc, memberIds); await putCreateLog( { type: MODULE_NAMES.USER_GROUP, - object: result, + object: group, newData: doc, - description: `"${result.name}" has been created`, + description: `"${group.name}" has been created`, }, user, ); + for (const oldUser of oldUsers) { + const updatedDocument = { groupIds: [...(oldUser.groupIds || []), group._id] }; + + await putUpdateLog( + { + type: MODULE_NAMES.USER, + object: oldUser, + newData: updatedDocument, + description: `User "${oldUser.email}" has been added to group ${group.name}`, + updatedDocument, + }, + user, + ); + } + await resetPermissionsCache(); - return result; + return group; }, /** @@ -90,17 +166,28 @@ const usersGroupMutations = { { user }: IContext, ) { const group = await UsersGroups.getGroup(_id); + const oldUsers = await Users.find({ groupIds: { $in: [_id] } }); const result = await UsersGroups.updateGroup(_id, doc, memberIds); - await putUpdateLog( - { - type: MODULE_NAMES.USER_GROUP, - object: group, - newData: doc, - description: `"${group.name}" has been edited`, - }, - user, - ); + // don't write unnecessary log when nothing is changed + if (group.name !== doc.name) { + await putUpdateLog( + { + type: MODULE_NAMES.USER_GROUP, + object: group, + newData: doc, + description: `"${group.name}" has been edited`, + }, + user, + ); + } + + await writeUserLog({ + currentUser: user, + memberIds, + oldUsers, + group, + }); await resetPermissionsCache(); @@ -114,6 +201,7 @@ const usersGroupMutations = { */ async usersGroupsRemove(_root, { _id }: { _id: string }, { user }: IContext) { const group = await UsersGroups.getGroup(_id); + const members = await Users.find({ groupIds: { $in: [group._id] } }); const result = await UsersGroups.removeGroup(_id); await putDeleteLog( @@ -125,6 +213,21 @@ const usersGroupMutations = { user, ); + for (const member of members) { + const groupIds = member.groupIds ? member.groupIds.filter(id => id !== group._id) : []; + + await putUpdateLog( + { + type: MODULE_NAMES.USER, + object: { _id: member._id, groupIds: member.groupIds }, + newData: { groupIds }, + updatedDocument: { groupIds }, + description: `User ${member.email} has been removed from group ${group.name}`, + }, + user, + ); + } + await resetPermissionsCache(); return result; diff --git a/src/data/resolvers/mutations/tasks.ts b/src/data/resolvers/mutations/tasks.ts index 7e0a52864..e0114319c 100644 --- a/src/data/resolvers/mutations/tasks.ts +++ b/src/data/resolvers/mutations/tasks.ts @@ -1,8 +1,8 @@ -import * as _ from 'underscore'; -import { ActivityLogs, Checklists, Conformities, Tasks } from '../../../db/models'; +import { ActivityLogs, Checklists, Conformities, Stages, Tasks } from '../../../db/models'; import { getCompanies, getCustomers } from '../../../db/models/boardUtils'; import { IItemCommonFields as ITask, IOrderInput } from '../../../db/models/definitions/boards'; import { BOARD_STATUSES, NOTIFICATION_TYPES } from '../../../db/models/definitions/constants'; +import { graphqlPubsub } from '../../../pubsub'; import { MODULE_NAMES } from '../../constants'; import { putCreateLog, putDeleteLog, putUpdateLog } from '../../logUtils'; import { checkPermission } from '../../permissions/wrappers'; @@ -119,6 +119,45 @@ const taskMutations = { user, ); + if (oldTask.stageId === updatedTask.stageId) { + graphqlPubsub.publish('tasksChanged', { + tasksChanged: { + _id: updatedTask._id, + }, + }); + + return updatedTask; + } + + // if task moves between stages + const { content, action } = await itemsChange(user._id, oldTask, MODULE_NAMES.TASK, updatedTask.stageId); + + await sendNotifications({ + item: updatedTask, + user, + type: NOTIFICATION_TYPES.TASK_CHANGE, + content, + action, + contentType: MODULE_NAMES.TASK, + }); + + const updatedStage = await Stages.getStage(updatedTask.stageId); + const oldStage = await Stages.getStage(oldTask.stageId); + + graphqlPubsub.publish('pipelinesChanged', { + pipelinesChanged: { + _id: updatedStage.pipelineId, + }, + }); + + if (updatedStage.pipelineId !== oldStage.pipelineId) { + graphqlPubsub.publish('pipelinesChanged', { + pipelinesChanged: { + _id: oldStage.pipelineId, + }, + }); + } + return updatedTask; }, @@ -149,6 +188,17 @@ const taskMutations = { contentType: MODULE_NAMES.TASK, }); + // if move between stages + if (destinationStageId !== task.stageId) { + const stage = await Stages.getStage(task.stageId); + + graphqlPubsub.publish('pipelinesChanged', { + pipelinesChanged: { + _id: stage.pipelineId, + }, + }); + } + return task; }, diff --git a/src/data/resolvers/mutations/tickets.ts b/src/data/resolvers/mutations/tickets.ts index a3edcdd58..9d40a5149 100644 --- a/src/data/resolvers/mutations/tickets.ts +++ b/src/data/resolvers/mutations/tickets.ts @@ -1,8 +1,9 @@ -import { ActivityLogs, Checklists, Conformities, Tickets } from '../../../db/models'; +import { ActivityLogs, Checklists, Conformities, Stages, Tickets } from '../../../db/models'; import { getCompanies, getCustomers } from '../../../db/models/boardUtils'; import { IOrderInput } from '../../../db/models/definitions/boards'; import { BOARD_STATUSES, NOTIFICATION_TYPES } from '../../../db/models/definitions/constants'; import { ITicket } from '../../../db/models/definitions/tickets'; +import { graphqlPubsub } from '../../../pubsub'; import { MODULE_NAMES } from '../../constants'; import { putCreateLog, putDeleteLog, putUpdateLog } from '../../logUtils'; import { checkPermission } from '../../permissions/wrappers'; @@ -121,6 +122,45 @@ const ticketMutations = { user, ); + if (oldTicket.stageId === updatedTicket.stageId) { + graphqlPubsub.publish('ticketsChanged', { + ticketsChanged: { + _id: updatedTicket._id, + }, + }); + + return updatedTicket; + } + + // if ticket moves between stages + const { content, action } = await itemsChange(user._id, oldTicket, MODULE_NAMES.TICKET, updatedTicket.stageId); + + await sendNotifications({ + item: updatedTicket, + user, + type: NOTIFICATION_TYPES.TICKET_CHANGE, + content, + action, + contentType: MODULE_NAMES.TICKET, + }); + + const updatedStage = await Stages.getStage(updatedTicket.stageId); + const oldStage = await Stages.getStage(oldTicket.stageId); + + graphqlPubsub.publish('pipelinesChanged', { + pipelinesChanged: { + _id: updatedStage.pipelineId, + }, + }); + + if (updatedStage.pipelineId !== oldStage.pipelineId) { + graphqlPubsub.publish('pipelinesChanged', { + pipelinesChanged: { + _id: oldStage.pipelineId, + }, + }); + } + return updatedTicket; }, @@ -151,6 +191,17 @@ const ticketMutations = { contentType: MODULE_NAMES.TICKET, }); + // if move between stages + if (destinationStageId !== ticket.stageId) { + const stage = await Stages.getStage(ticket.stageId); + + graphqlPubsub.publish('pipelinesChanged', { + pipelinesChanged: { + _id: stage.pipelineId, + }, + }); + } + return ticket; }, diff --git a/src/data/resolvers/mutations/widgets.ts b/src/data/resolvers/mutations/widgets.ts index 9d4f20517..535663dc0 100644 --- a/src/data/resolvers/mutations/widgets.ts +++ b/src/data/resolvers/mutations/widgets.ts @@ -18,7 +18,8 @@ import { IBrowserInfo, IVisitorContactInfoParams } from '../../../db/models/Cust import { CONVERSATION_STATUSES } from '../../../db/models/definitions/constants'; import { IIntegrationDocument, IMessengerDataMessagesItem } from '../../../db/models/definitions/integrations'; import { IKnowledgebaseCredentials, ILeadCredentials } from '../../../db/models/definitions/messengerApps'; -import { debugExternalApi } from '../../../debuggers'; +import { debugBase, debugExternalApi } from '../../../debuggers'; +import { trackViewPageEvent } from '../../../events'; import { graphqlPubsub } from '../../../pubsub'; import { get, set } from '../../../redisClient'; import { IContext } from '../../types'; @@ -315,7 +316,7 @@ const widgetMutations = { return { integrationId: integration._id, - uiOptions: { ...integration.uiOptions, videoCallUsageStatus }, + uiOptions: { ...(integration.uiOptions ? integration.uiOptions.toJSON() : {}), videoCallUsageStatus }, languageCode: integration.languageCode, messengerData: await getMessengerData(integration), customerId: customer._id, @@ -466,6 +467,13 @@ const widgetMutations = { // update location await Customers.updateLocation(customerId, browserInfo); + try { + await trackViewPageEvent({ customerId, attributes: { url: browserInfo.url } }); + } catch (e) { + /* istanbul ignore next */ + debugBase(`Error occurred during widgets save browser info ${e.message}`); + } + // update messenger session data const customer = await Customers.updateSession(customerId); diff --git a/src/data/resolvers/queries/activityLogs.ts b/src/data/resolvers/queries/activityLogs.ts index 94b689a28..2e8b04320 100644 --- a/src/data/resolvers/queries/activityLogs.ts +++ b/src/data/resolvers/queries/activityLogs.ts @@ -101,7 +101,12 @@ const activityLogQueries = { const collectTasks = async () => { if (contentType !== 'task') { - collectItems(await Tasks.find({ _id: { $in: relatedTaskIds } }).sort({ closeDate: 1 }), 'taskDetail'); + collectItems( + await Tasks.find({ $and: [{ _id: { $in: relatedTaskIds } }, { status: { $ne: 'archived' } }] }).sort({ + closeDate: 1, + }), + 'taskDetail', + ); } }; diff --git a/src/data/resolvers/queries/companies.ts b/src/data/resolvers/queries/companies.ts index 1039e5760..4b3379374 100644 --- a/src/data/resolvers/queries/companies.ts +++ b/src/data/resolvers/queries/companies.ts @@ -1,13 +1,7 @@ import { Companies } from '../../../db/models'; import { TAG_TYPES } from '../../../db/models/definitions/constants'; import { Builder, IListArgs } from '../../modules/coc/companies'; -import { - countByBrand, - countByLeadStatus, - countByLifecycleStatus, - countBySegment, - countByTag, -} from '../../modules/coc/utils'; +import { countByBrand, countBySegment, countByTag } from '../../modules/coc/utils'; import { checkPermission, requireLogin } from '../../permissions/wrappers'; import { IContext } from '../../types'; @@ -51,7 +45,6 @@ const companyQueries = { byTag: {}, byBrand: {}, byLeadStatus: {}, - byLifecycleState: {}, }; const { only } = args; @@ -69,13 +62,6 @@ const companyQueries = { case 'byBrand': counts.byBrand = await countByBrand(qb); break; - case 'byLeadStatus': - counts.byLeadStatus = await countByLeadStatus(qb); - break; - - case 'byLifecycleState': - counts.byLifecycleState = await countByLifecycleStatus(qb); - break; } return counts; diff --git a/src/data/resolvers/queries/configs.ts b/src/data/resolvers/queries/configs.ts index 1ac1c5a51..2696513ad 100644 --- a/src/data/resolvers/queries/configs.ts +++ b/src/data/resolvers/queries/configs.ts @@ -1,6 +1,7 @@ import { Configs } from '../../../db/models'; import { moduleRequireLogin } from '../../permissions/wrappers'; -import { getEnv, sendRequest } from '../../utils'; +import { IContext } from '../../types'; +import { frontendEnv, getEnv, sendRequest } from '../../utils'; const configQueries = { /** @@ -10,10 +11,10 @@ const configQueries = { return Configs.find({}); }, - async configsVersions(_root) { + async configsVersions(_root, _args, { requestInfo }: IContext) { const erxesDomain = getEnv({ name: 'MAIN_APP_DOMAIN' }); - const domain = getEnv({ name: 'DOMAIN' }); - const widgetsDomain = getEnv({ name: 'WIDGETS_DOMAIN' }); + const domain = frontendEnv({ name: 'API_URL', requestInfo }); + const widgetsDomain = frontendEnv({ name: 'CDN_HOST', requestInfo }); let erxesVersion; let apiVersion; diff --git a/src/data/resolvers/queries/customers.ts b/src/data/resolvers/queries/customers.ts index 82b7c27b3..35883298a 100644 --- a/src/data/resolvers/queries/customers.ts +++ b/src/data/resolvers/queries/customers.ts @@ -1,14 +1,7 @@ import { Customers, Forms } from '../../../db/models'; import { KIND_CHOICES, TAG_TYPES } from '../../../db/models/definitions/constants'; import { Builder as BuildQuery, IListArgs } from '../../modules/coc/customers'; -import { - countByBrand, - countByLeadStatus, - countByLifecycleStatus, - countBySegment, - countByTag, - ICountBy, -} from '../../modules/coc/utils'; +import { countByBrand, countByLeadStatus, countBySegment, countByTag, ICountBy } from '../../modules/coc/utils'; import { checkPermission, moduleRequireLogin } from '../../permissions/wrappers'; import { IContext } from '../../types'; @@ -85,7 +78,6 @@ const customerQueries = { byTag: {}, byForm: {}, byLeadStatus: {}, - byLifecycleState: {}, }; const qb = new BuildQuery(params, { commonQuerySelector, commonQuerySelectorElk }); @@ -111,10 +103,6 @@ const customerQueries = { counts.byLeadStatus = await countByLeadStatus(qb); break; - case 'byLifecycleState': - counts.byLifecycleState = await countByLifecycleStatus(qb); - break; - case 'byIntegrationType': counts.byIntegrationType = await countByIntegrationType(qb); break; diff --git a/src/data/resolvers/queries/fields.ts b/src/data/resolvers/queries/fields.ts index dc751e283..d71ebd5dc 100644 --- a/src/data/resolvers/queries/fields.ts +++ b/src/data/resolvers/queries/fields.ts @@ -1,7 +1,7 @@ import { FIELD_CONTENT_TYPES, FIELDS_GROUPS_CONTENT_TYPES } from '../../../data/constants'; import { Companies, Customers, Fields, FieldsGroups } from '../../../db/models'; import { debugBase } from '../../../debuggers'; -import { getMappings } from '../../../elasticsearch'; +import { getIndexPrefix, getMappings } from '../../../elasticsearch'; import { checkPermission, requireLogin } from '../../permissions/wrappers'; import { IContext } from '../../types'; @@ -91,26 +91,27 @@ const fieldQueries = { } } + let mappingProperties: any = {}; + // extend fields list using tracked fields data try { - const index = contentType === 'customer' ? 'customers' : 'companies'; + const index = `${getIndexPrefix()}${contentType === 'customer' ? 'customers' : 'companies'}`; const response = await getMappings(index); + mappingProperties = response[index].mappings.properties; + } catch (e) { + debugBase(`Error occurred in fieldsCombinedByContentType ${e.message}`); + } - const mappingProperties = response[index].mappings.properties; - - if (mappingProperties.trackedData) { - const trackedDataFields = Object.keys(mappingProperties.trackedData.properties); + if (mappingProperties.trackedData) { + const trackedDataFields = Object.keys(mappingProperties.trackedData.properties || {}); - for (const trackedDataField of trackedDataFields) { - fields.push({ - _id: Math.random(), - name: `trackedData.${trackedDataField}`, - label: trackedDataField, - }); - } + for (const trackedDataField of trackedDataFields) { + fields.push({ + _id: Math.random(), + name: `trackedData.${trackedDataField}`, + label: trackedDataField, + }); } - } catch (e) { - debugBase(e.message); } return fields; diff --git a/src/data/resolvers/queries/logs.ts b/src/data/resolvers/queries/logs.ts index fedefa8c0..03abe1c4c 100644 --- a/src/data/resolvers/queries/logs.ts +++ b/src/data/resolvers/queries/logs.ts @@ -37,6 +37,7 @@ import { conditionSchema, segmentSchema } from '../../../db/models/definitions/s import { tagSchema } from '../../../db/models/definitions/tags'; import { taskSchema } from '../../../db/models/definitions/tasks'; import { ticketSchema } from '../../../db/models/definitions/tickets'; +import { userSchema } from '../../../db/models/definitions/users'; import { MODULE_NAMES } from '../../constants'; import { fetchLogs, ILogQueryParams } from '../../logUtils'; import { checkPermission } from '../../permissions/wrappers'; @@ -188,6 +189,10 @@ const LOG_MAPPINGS: ISchemaMap[] = [ name: MODULE_NAMES.SCRIPT, schemas: [scriptSchema], }, + { + name: MODULE_NAMES.USER, + schemas: [userSchema], + }, ]; /** @@ -212,17 +217,9 @@ const logQueries = { * Fetches logs from logs api server */ logs(_root, params: ILogQueryParams) { - const { start, end, userId, action, page, perPage } = params; - - return fetchLogs({ - start, - end, - userId, - action, - page, - perPage, - }); + return fetchLogs(params); }, + async getDbSchemaLabels(_root, params: { type: string }) { let fieldNames: INameLabel[] = []; diff --git a/src/data/resolvers/queries/products.ts b/src/data/resolvers/queries/products.ts index 03702fea2..2a70c2ea5 100644 --- a/src/data/resolvers/queries/products.ts +++ b/src/data/resolvers/queries/products.ts @@ -48,7 +48,12 @@ const productQueries = { // search ========= if (searchValue) { - filter.name = new RegExp(`.*${searchValue}.*`, 'i'); + const fields = [ + { name: { $in: [new RegExp(`.*${searchValue}.*`, 'i')] } }, + { code: { $in: [new RegExp(`.*${searchValue}.*`, 'i')] } }, + ]; + + filter.$or = fields; } return paginate(Products.find(filter), pagintationArgs); diff --git a/src/data/resolvers/queries/segments.ts b/src/data/resolvers/queries/segments.ts index f3255a42f..edd798b91 100644 --- a/src/data/resolvers/queries/segments.ts +++ b/src/data/resolvers/queries/segments.ts @@ -35,6 +35,14 @@ const segmentQueries = { terms: { field: 'name', }, + aggs: { + hits: { + top_hits: { + _source: ['attributes'], + size: 1, + }, + }, + }, }, }; @@ -47,19 +55,18 @@ const segmentQueries = { const aggreEvents = await fetchElk('search', 'events', { aggs, query, - size: 0, }); - const aggreHits = await fetchElk('search', 'events', { - aggs, - query, - size: aggreEvents.aggregations.names.buckets.length, - }); + const buckets = aggreEvents.aggregations.names.buckets || []; + + const events = buckets.map(bucket => { + const [hit] = bucket.hits.hits.hits; - const events = aggreHits.hits.hits.map(hit => ({ - name: hit._source.name, - attributeNames: Object.keys(hit._source.attributes), - })); + return { + name: bucket.key, + attributeNames: Object.keys(hit._source.attributes), + }; + }); return events; }, diff --git a/src/data/resolvers/subscriptions/checklists.ts b/src/data/resolvers/subscriptions/checklists.ts new file mode 100644 index 000000000..64f4600d9 --- /dev/null +++ b/src/data/resolvers/subscriptions/checklists.ts @@ -0,0 +1,27 @@ +import { withFilter } from 'apollo-server-express'; +import { graphqlPubsub } from '../../../pubsub'; + +export default { + /* + * Listen for checklist updates + */ + checklistsChanged: { + subscribe: withFilter( + () => graphqlPubsub.asyncIterator('checklistsChanged'), + (payload, variables) => { + const { contentType, contentTypeId } = payload.checklistsChanged; + + return contentType === variables.contentType && contentTypeId === variables.contentTypeId; + }, + ), + }, + + checklistDetailChanged: { + subscribe: withFilter( + () => graphqlPubsub.asyncIterator('checklistDetailChanged'), + (payload, variables) => { + return payload.checklistDetailChanged._id === variables._id; + }, + ), + }, +}; diff --git a/src/data/resolvers/subscriptions/deals.ts b/src/data/resolvers/subscriptions/deals.ts new file mode 100644 index 000000000..5dc942898 --- /dev/null +++ b/src/data/resolvers/subscriptions/deals.ts @@ -0,0 +1,17 @@ +import { withFilter } from 'apollo-server-express'; +import { graphqlPubsub } from '../../../pubsub'; + +export default { + /* + * Listen for deal updates + */ + dealsChanged: { + subscribe: withFilter( + () => graphqlPubsub.asyncIterator('dealsChanged'), + // filter by _id + (payload, variables) => { + return payload.dealsChanged._id === variables._id; + }, + ), + }, +}; diff --git a/src/data/resolvers/subscriptions/growthHacks.ts b/src/data/resolvers/subscriptions/growthHacks.ts new file mode 100644 index 000000000..f64678077 --- /dev/null +++ b/src/data/resolvers/subscriptions/growthHacks.ts @@ -0,0 +1,17 @@ +import { withFilter } from 'apollo-server-express'; +import { graphqlPubsub } from '../../../pubsub'; + +export default { + /* + * Listen for growthHack updates + */ + growthHacksChanged: { + subscribe: withFilter( + () => graphqlPubsub.asyncIterator('growthHacksChanged'), + // filter by _id + (payload, variables) => { + return payload.growthHacksChanged._id === variables._id; + }, + ), + }, +}; diff --git a/src/data/resolvers/subscriptions/index.ts b/src/data/resolvers/subscriptions/index.ts index 07f1b8372..3e09dda42 100644 --- a/src/data/resolvers/subscriptions/index.ts +++ b/src/data/resolvers/subscriptions/index.ts @@ -1,9 +1,15 @@ import activityLogs from './activityLogs'; +import checklists from './checklists'; import conversations from './conversations'; import customers from './customers'; +import deals from './deals'; +import growthHacks from './growthHacks'; import importHistory from './importHistory'; import notifications from './notifications'; +import pipelines from './pipelines'; import robot from './robot'; +import tasks from './tasks'; +import tickets from './tickets'; let subscriptions: any = { ...conversations, @@ -12,6 +18,12 @@ let subscriptions: any = { ...importHistory, ...notifications, ...robot, + ...deals, + ...tasks, + ...tickets, + ...checklists, + ...growthHacks, + ...pipelines, }; const { NODE_ENV } = process.env; diff --git a/src/data/resolvers/subscriptions/pipelines.ts b/src/data/resolvers/subscriptions/pipelines.ts new file mode 100644 index 000000000..5a53c1e48 --- /dev/null +++ b/src/data/resolvers/subscriptions/pipelines.ts @@ -0,0 +1,17 @@ +import { withFilter } from 'apollo-server-express'; +import { graphqlPubsub } from '../../../pubsub'; + +export default { + /* + * Listen for pipeline updates + */ + pipelinesChanged: { + subscribe: withFilter( + () => graphqlPubsub.asyncIterator('pipelinesChanged'), + // filter by _id + (payload, variables) => { + return payload.pipelinesChanged._id === variables._id; + }, + ), + }, +}; diff --git a/src/data/resolvers/subscriptions/tasks.ts b/src/data/resolvers/subscriptions/tasks.ts new file mode 100644 index 000000000..07f495601 --- /dev/null +++ b/src/data/resolvers/subscriptions/tasks.ts @@ -0,0 +1,17 @@ +import { withFilter } from 'apollo-server-express'; +import { graphqlPubsub } from '../../../pubsub'; + +export default { + /* + * Listen for task updates + */ + tasksChanged: { + subscribe: withFilter( + () => graphqlPubsub.asyncIterator('tasksChanged'), + // filter by _id + (payload, variables) => { + return payload.tasksChanged._id === variables._id; + }, + ), + }, +}; diff --git a/src/data/resolvers/subscriptions/tickets.ts b/src/data/resolvers/subscriptions/tickets.ts new file mode 100644 index 000000000..653aeb18e --- /dev/null +++ b/src/data/resolvers/subscriptions/tickets.ts @@ -0,0 +1,17 @@ +import { withFilter } from 'apollo-server-express'; +import { graphqlPubsub } from '../../../pubsub'; + +export default { + /* + * Listen for ticket updates + */ + ticketsChanged: { + subscribe: withFilter( + () => graphqlPubsub.asyncIterator('ticketsChanged'), + // filter by _id + (payload, variables) => { + return payload.ticketsChanged._id === variables._id; + }, + ), + }, +}; diff --git a/src/data/schema/company.ts b/src/data/schema/company.ts index 0b50e0513..691d4671e 100644 --- a/src/data/schema/company.ts +++ b/src/data/schema/company.ts @@ -23,8 +23,6 @@ export const types = ` phones: [String] primaryPhone: String - leadStatus: String - lifecycleState: String businessType: String description: String doNotDisturb: String @@ -63,8 +61,6 @@ const queryParams = ` tag: String ids: [String] searchValue: String - lifecycleState: String - leadStatus: String sortField: String sortDirection: Int brand: String @@ -97,8 +93,6 @@ const commonFields = ` parentCompanyId: String, email: String, ownerId: String, - leadStatus: String, - lifecycleState: String, businessType: String, description: String, doNotDisturb: String, diff --git a/src/data/schema/customer.ts b/src/data/schema/customer.ts index 6da37824f..6fe7f2623 100644 --- a/src/data/schema/customer.ts +++ b/src/data/schema/customer.ts @@ -19,6 +19,7 @@ export const types = ` type Customer { _id: String! + state: String createdAt: Date modifiedAt: Date avatar: String @@ -35,7 +36,6 @@ export const types = ` phones: [String] phone: String - isUser: Boolean tagIds: [String] remoteAddress: String internalNotes: JSON @@ -47,7 +47,6 @@ export const types = ` position: String department: String leadStatus: String - lifecycleState: String hasAuthority: String description: String doNotDisturb: String @@ -86,7 +85,6 @@ const queryParams = ` form: String startDate: String endDate: String - lifecycleState: String leadStatus: String sortField: String sortDirection: Int @@ -114,7 +112,6 @@ const fields = ` position: String department: String leadStatus: String - lifecycleState: String hasAuthority: String description: String doNotDisturb: String @@ -126,8 +123,9 @@ const fields = ` `; export const mutations = ` - customersAdd(${fields}): Customer + customersAdd(state: String, ${fields}): Customer customersEdit(_id: String!, ${fields}): Customer customersMerge(customerIds: [String], customerFields: JSON): Customer customersRemove(customerIds: [String]): [String] + customersChangeState(_id: String!, value: String!): Customer `; diff --git a/src/data/schema/engage.ts b/src/data/schema/engage.ts index 275b6ff58..0555d23c2 100644 --- a/src/data/schema/engage.ts +++ b/src/data/schema/engage.ts @@ -15,6 +15,9 @@ export const types = ` createdAt: Date type: String messengerReceivedCustomerIds: [String] + totalCustomersCount: Int + validCustomersCount: Int + brand: Brand email: JSON diff --git a/src/data/schema/index.ts b/src/data/schema/index.ts index 28190a37a..cd731aea2 100755 --- a/src/data/schema/index.ts +++ b/src/data/schema/index.ts @@ -269,6 +269,15 @@ export const subscriptions = ` importHistoryChanged(_id: String!): ImportHistory notificationInserted(userId: String): Notification onboardingChanged(userId: String!): OnboardingNotification + + pipelinesChanged(_id: String!): Pipeline + dealsChanged(_id: String!): Deal + ticketsChanged(_id: String!): Ticket + tasksChanged(_id: String!): Task + growthHacksChanged(_id: String!): GrowthHack + + checklistsChanged(contentType: String!, contentTypeId: String!): Checklist + checklistDetailChanged(_id: String!): Checklist } `; diff --git a/src/data/schema/log.ts b/src/data/schema/log.ts index d472294a4..ebdab6bd5 100644 --- a/src/data/schema/log.ts +++ b/src/data/schema/log.ts @@ -35,7 +35,8 @@ export const queries = ` userId: String, action: String, page: Int, - perPage: Int + perPage: Int, + type: String ): LogList getDbSchemaLabels(type: String): [SchemaField] diff --git a/src/data/utils.ts b/src/data/utils.ts index e0e4ef44c..86e344aa2 100644 --- a/src/data/utils.ts +++ b/src/data/utils.ts @@ -283,9 +283,8 @@ export const readFileRequest = async (key: string): Promise => { /* * Save binary data to amazon s3 */ -export const uploadFile = async (file, fromEditor = false): Promise => { +export const uploadFile = async (apiUrl: string, file, fromEditor = false): Promise => { const IS_PUBLIC = await getConfig('FILE_SYSTEM_PUBLIC'); - const DOMAIN = getEnv({ name: 'DOMAIN' }); const UPLOAD_SERVICE_TYPE = await getConfig('UPLOAD_SERVICE_TYPE', 'AWS'); const nameOrLink = UPLOAD_SERVICE_TYPE === 'AWS' ? await uploadFileAWS(file) : await uploadFileGCS(file); @@ -294,7 +293,7 @@ export const uploadFile = async (file, fromEditor = false): Promise => { const editorResult = { fileName: file.name, uploaded: 1, url: nameOrLink }; if (IS_PUBLIC !== 'true') { - editorResult.url = `${DOMAIN}/read-file?key=${nameOrLink}`; + editorResult.url = `${apiUrl}/read-file?key=${nameOrLink}`; } return editorResult; @@ -390,7 +389,7 @@ export const sendEmail = async ({ const DEFAULT_EMAIL_SERVICE = await getConfig('DEFAULT_EMAIL_SERVICE', 'SES'); const COMPANY_EMAIL_FROM = await getConfig('COMPANY_EMAIL_FROM', ''); const AWS_SES_CONFIG_SET = await getConfig('AWS_SES_CONFIG_SET', ''); - const DOMAIN = getEnv({ name: 'DOMAIN' }); + const MAIN_APP_DOMAIN = getEnv({ name: 'MAIN_APP_DOMAIN' }); // do not send email it is running in test mode if (NODE_ENV === 'test') { @@ -409,7 +408,7 @@ export const sendEmail = async ({ const { isCustom, data, name } = template; // for unsubscribe url - data.domain = DOMAIN; + data.domain = MAIN_APP_DOMAIN; for (const toEmail of toEmails) { if (modifier) { @@ -570,8 +569,6 @@ export const sendRequest = async ( { url, method, headers, form, body, params }: IRequestParams, errorMessage?: string, ) => { - const DOMAIN = getEnv({ name: 'DOMAIN' }); - debugExternalApi(` Sending request to url: ${url} @@ -583,7 +580,7 @@ export const sendRequest = async ( try { const response = await requestify.request(url, { method, - headers: { 'Content-Type': 'application/json', origin: DOMAIN, ...(headers || {}) }, + headers: { 'Content-Type': 'application/json', ...(headers || {}) }, form, body, params, @@ -611,10 +608,8 @@ export const sendRequest = async ( * Send request to crons api */ export const fetchCronsApi = ({ path, method, body, params }: IRequestParams) => { - const CRONS_API_DOMAIN = getEnv({ name: 'CRONS_API_DOMAIN' }); - return sendRequest( - { url: `${CRONS_API_DOMAIN}${path}`, method, body, params }, + { url: `${getSubServiceDomain({ name: 'CRONS_API_DOMAIN' })}${path}`, method, body, params }, 'Failed to connect crons api. Check CRONS_API_DOMAIN env or crons api is not running', ); }; @@ -623,10 +618,8 @@ export const fetchCronsApi = ({ path, method, body, params }: IRequestParams) => * Send request to workers api */ export const fetchWorkersApi = ({ path, method, body, params }: IRequestParams) => { - const WORKERS_API_DOMAIN = getEnv({ name: 'WORKERS_API_DOMAIN' }); - return sendRequest( - { url: `${WORKERS_API_DOMAIN}${path}`, method, body, params }, + { url: `${getSubServiceDomain({ name: 'WORKERS_API_DOMAIN' })}${path}`, method, body, params }, 'Failed to connect workers api. Check WORKERS_API_DOMAIN env or workers api is not running', ); }; @@ -810,7 +803,7 @@ export const regexSearchText = (searchValue: string, searchKey = 'searchText') = /** * Check user ids whether its added or removed from array of ids */ -export const checkUserIds = (oldUserIds: string[] = [], newUserIds: string[]) => { +export const checkUserIds = (oldUserIds: string[] = [], newUserIds: string[] = []) => { const removedUserIds = oldUserIds.filter(e => !newUserIds.includes(e)); const addedUserIds = newUserIds.filter(e => !oldUserIds.includes(e)); @@ -835,10 +828,50 @@ export const handleUnsubscription = async (query: { cid: string; uid: string }) return true; }; -export const validateEmail = (email: string) => { +export const validateEmail = async (email: string, wait?: boolean) => { const data = { email }; - sendMessage('erxes-api:engages-notification', { action: 'emailVerify', data }); + const EMAIL_VERIFIER_ENDPOINT = getEnv({ name: 'EMAIL_VERIFIER_ENDPOINT', defaultValue: '' }); + + if (!EMAIL_VERIFIER_ENDPOINT) { + return sendMessage('erxes-api:email-verifier-notification', { action: 'emailVerify', data }); + } + + const requestOptions = { + url: `${EMAIL_VERIFIER_ENDPOINT}/verify-single`, + method: 'POST', + body: { email }, + }; + + const updateCustomer = status => + Customers.updateOne({ primaryEmail: email }, { $set: { emailValidationStatus: status } }); + + const successCallback = response => updateCustomer(response.status); + + const errorCallback = e => { + if (e.message === 'timeout exceeded') { + return updateCustomer('unverifiable'); + } + + debugExternalApi(`Error occurred during email verify ${e.message}`); + }; + + if (wait) { + try { + const response = await sendRequest(requestOptions); + return successCallback(response); + } catch (e) { + await errorCallback(e); + } + } + + sendRequest(requestOptions) + .then(async response => { + await successCallback(response); + }) + .catch(async e => { + await errorCallback(e); + }); }; export const getConfigs = async () => { @@ -873,3 +906,37 @@ export const getConfig = async (code, defaultValue?) => { export const resetConfigsCache = () => { set('configs_erxes_api', ''); }; + +export const frontendEnv = ({ name, req, requestInfo }: { name: string; req?: any; requestInfo?: any }): string => { + const cookies = req ? req.cookies : requestInfo.cookies; + const keys = Object.keys(cookies).filter(key => key.startsWith('REACT_APP')); + + const envs: { [key: string]: string } = {}; + + for (const key of keys) { + envs[key.replace('REACT_APP_', '')] = cookies[key]; + } + + return envs[name]; +}; + +export const getSubServiceDomain = ({ name }: { name: string }): string => { + const MAIN_APP_DOMAIN = getEnv({ name: 'MAIN_APP_DOMAIN' }); + + const defaultMappings = { + WIDGETS_DOMAIN: `${MAIN_APP_DOMAIN}/widgets`, + INTEGRATIONS_API_DOMAIN: `${MAIN_APP_DOMAIN}/integrations`, + CRONS_API_DOMAIN: `${MAIN_APP_DOMAIN}/crons`, + WORKERS_API_DOMAIN: `${MAIN_APP_DOMAIN}/workers`, + LOGS_API_DOMAIN: `${MAIN_APP_DOMAIN}/logs`, + ENGAGES_API_DOMAIN: `${MAIN_APP_DOMAIN}/engages`, + }; + + const domain = getEnv({ name }); + + if (domain) { + return domain; + } + + return defaultMappings[name]; +}; diff --git a/src/db/connection.ts b/src/db/connection.ts index d9024c792..63ef718ab 100644 --- a/src/db/connection.ts +++ b/src/db/connection.ts @@ -62,7 +62,7 @@ export const graphqlRequest = async (source: string = '', name: string = '', arg const finalContext: any = {}; - finalContext.requestInfo = { secure: false }; + finalContext.requestInfo = { secure: false, cookies: [] }; finalContext.dataSources = context.dataSources; finalContext.user = context.user || user; finalContext.res = context.res || res; diff --git a/src/db/factories.ts b/src/db/factories.ts index c4b45d763..1a1f01a3b 100644 --- a/src/db/factories.ts +++ b/src/db/factories.ts @@ -397,9 +397,7 @@ interface ICompanyFactoryInput { tagIds?: string[]; scopeBrandIds?: string[]; plan?: string; - leadStatus?: string; status?: string; - lifecycleState?: string; createdAt?: Date; modifiedAt?: Date; phones?: string[]; @@ -421,9 +419,7 @@ export const companyFactory = (params: ICompanyFactoryInput = {}) => { website: params.website || faker.internet.domainName(), tagIds: params.tagIds || [], plan: params.plan || faker.random.word(), - leadStatus: params.leadStatus || 'open', status: params.status || STATUSES.ACTIVE, - lifecycleState: params.lifecycleState || 'lead', phones: params.phones || [], emails: params.emails || [], scopeBrandIds: params.scopeBrandIds || [], @@ -461,20 +457,18 @@ interface ICustomerFactoryInput { doNotDisturb?: string; leadStatus?: string; status?: string; - lifecycleState?: string; customFieldsData?: any; trackedData?: any; tagIds?: string[]; ownerId?: string; - emailValidationStatus?: string; profileScore?: number; code?: string; isOnline?: boolean; lastSeenAt?: number; sessionCount?: number; visitorContactInfo?: any; - urlVisits?: object; deviceTokens?: string[]; + emailValidationStatus?: string; mergedIds?: string[]; } @@ -492,13 +486,11 @@ export const customerFactory = async (params: ICustomerFactoryInput = {}, useMod primaryPhone: params.primaryPhone, emails: params.emails || [], phones: params.phones || [], - leadStatus: params.leadStatus || 'open', + leadStatus: params.leadStatus || 'new', status: params.status || STATUSES.ACTIVE, - lifecycleState: params.lifecycleState || 'lead', lastSeenAt: faker.date.between(createdAt, new Date()), isOnline: params.isOnline || false, sessionCount: faker.random.number(), - urlVisits: params.urlVisits, customFieldsData: params.customFieldsData || {}, trackedData: params.trackedData || {}, tagIds: params.tagIds || [Random.id()], diff --git a/src/db/models/Checklists.ts b/src/db/models/Checklists.ts index 722884ec9..99e3cc40a 100644 --- a/src/db/models/Checklists.ts +++ b/src/db/models/Checklists.ts @@ -28,7 +28,7 @@ export interface IChecklistItemModel extends Model { getChecklistItem(_id: string): Promise; createChecklistItem({ checklistId, ...fields }: IChecklistItem, user: IUserDocument): Promise; - updateChecklistItem(_id: string, doc: IChecklistItem): Promise; + updateChecklistItem(_id: string, doc: IChecklistItem): Promise; removeChecklistItem(_id: string): void; } diff --git a/src/db/models/Companies.ts b/src/db/models/Companies.ts index 42bc4c9bb..d4a72d0f5 100644 --- a/src/db/models/Companies.ts +++ b/src/db/models/Companies.ts @@ -94,6 +94,7 @@ export const loadClass = () => { doc.industry || '', doc.plan || '', doc.description || '', + doc.code || '', ]); } diff --git a/src/db/models/Customers.ts b/src/db/models/Customers.ts index fe20dca52..54587cb2e 100644 --- a/src/db/models/Customers.ts +++ b/src/db/models/Customers.ts @@ -71,6 +71,7 @@ export interface ICustomerModel extends Model { markCustomerAsActive(customerId: string): Promise; markCustomerAsNotActive(_id: string): Promise; removeCustomers(customerIds: string[]): Promise<{ n: number; ok: number }>; + changeState(_id: string, value: string): Promise; mergeCustomers(customerIds: string[], customerFields: ICustomer, user?: IUserDocument): Promise; bulkInsert(fieldNames: string[], fieldValues: string[][], user: IUserDocument): Promise; updateProfileScore(customerId: string, save: boolean): never; @@ -191,6 +192,7 @@ export const loadClass = () => { */ public static async createVisitor(): Promise { const customer = await Customers.create({ + state: 'visitor', createdAt: new Date(), modifiedAt: new Date(), }); @@ -239,6 +241,10 @@ export const loadClass = () => { // calculateProfileScore await Customers.updateProfileScore(customer._id, true); + if (doc.state) { + await Customers.updateOne({ _id: customer._id }, { $set: { state: doc.state } }); + } + await ActivityLogs.createCocLog({ coc: customer, contentType: 'customer' }); return Customers.getCustomer(customer._id); @@ -310,6 +316,8 @@ export const loadClass = () => { } const nullValues = ['', null]; + + let hasContactInfo = false; let score = 0; let searchText = (customer.emails || []).join(' ').concat(' ', (customer.phones || []).join(' ')); @@ -329,15 +337,19 @@ export const loadClass = () => { } if (!nullValues.includes(customer.primaryEmail || '')) { + hasContactInfo = true; score += 15; } if (!nullValues.includes(customer.primaryPhone || '')) { + hasContactInfo = true; score += 10; } if (customer.visitorContactInfo != null) { + hasContactInfo = true; score += 5; + searchText = searchText.concat( ' ', customer.visitorContactInfo.email || '', @@ -348,16 +360,24 @@ export const loadClass = () => { searchText = validSearchText([searchText]); + let state = customer.state || 'visitor'; + + if (hasContactInfo && state !== 'customer') { + state = 'lead'; + } + + const modifier = { $set: { profileScore: score, searchText, state } }; + if (!save) { return { updateOne: { filter: { _id: customerId }, - update: { $set: { profileScore: score, searchText } }, + update: modifier, }, }; } - await Customers.updateOne({ _id: customerId }, { $set: { profileScore: score, searchText } }); + await Customers.updateOne({ _id: customerId }, modifier); } /** * Remove customers @@ -562,11 +582,8 @@ export const loadClass = () => { throw new Error('Customer not found'); } - if (customer.isUser) { - doc.isUser = true; - } - const modifier = { + state: doc.isUser ? 'customer' : customer.state, ...this.fixListFields(doc, customer), trackedData: { ...(customer.trackedData || {}), ...(customData || {}) }, modifiedAt: new Date(), @@ -608,6 +625,20 @@ export const loadClass = () => { return Customers.findOne({ _id }); } + /* + * Change state + */ + public static async changeState(_id: string, value: string) { + await Customers.findByIdAndUpdate( + { _id }, + { + $set: { state: value }, + }, + ); + + return Customers.findOne({ _id }); + } + /* * Update customer's location info */ diff --git a/src/db/models/Engages.ts b/src/db/models/Engages.ts index b081f35ce..c86c24370 100644 --- a/src/db/models/Engages.ts +++ b/src/db/models/Engages.ts @@ -1,5 +1,6 @@ import { Model, model } from 'mongoose'; import { ConversationMessages, Conversations, Users } from '.'; +import { getNumberOfVisits } from '../../events'; import { IBrowserInfo } from './Customers'; import { IBrandDocument } from './definitions/brands'; import { IEngageData, IMessageDocument } from './definitions/conversationMessages'; @@ -38,7 +39,7 @@ export interface IEngageMessageModel extends Model { engageMessageSetLive(_id: string): Promise; engageMessageSetPause(_id: string): Promise; removeEngageMessage(_id: string): void; - setCustomerIds(_id: string, customers: ICustomerDocument[]): Promise; + setCustomersCount(_id: string, type: string, count: number): Promise; changeCustomer(newCustomerId: string, customerIds: string[]): Promise; removeCustomersEngages(customerIds: string[]): Promise<{ n: number; ok: number }>; @@ -134,10 +135,10 @@ export const loadClass = () => { } /** - * Save matched customer ids + * Save matched customers count */ - public static async setCustomerIds(_id: string, customers: ICustomerDocument[]) { - await EngageMessages.updateOne({ _id }, { $set: { customerIds: customers.map(customer => customer._id) } }); + public static async setCustomersCount(_id: string, type: string, count: number) { + await EngageMessages.updateOne({ _id }, { $set: { [type]: count } }); return EngageMessages.findOne({ _id }); } @@ -217,12 +218,12 @@ export const loadClass = () => { } // check for rules === - const urlVisits = customer.urlVisits || {}; + const numberOfVisits = await getNumberOfVisits(customer._id, browserInfo.url); const isPassedAllRules = await this.checkRules({ rules: messenger.rules, browserInfo, - numberOfVisits: urlVisits[browserInfo.url] || 0, + numberOfVisits, }); // if given visitor is matched with given condition then create diff --git a/src/db/models/Users.ts b/src/db/models/Users.ts index dc0afa9b1..e95b508b0 100644 --- a/src/db/models/Users.ts +++ b/src/db/models/Users.ts @@ -41,7 +41,7 @@ export interface IUserModel extends Model { configEmailSignatures(_id: string, signatures: IEmailSignature[]): Promise; configGetNotificationByEmail(_id: string, isAllowed: boolean): Promise; setUserActiveOrInactive(_id: string): Promise; - generatePassword(password: string): string; + generatePassword(password: string): Promise; invite({ email, password, groupId }: { email: string; password: string; groupId: string }): string; resendInvitation({ email }: { email: string }): string; confirmInvitation({ diff --git a/src/db/models/definitions/boards.ts b/src/db/models/definitions/boards.ts index acb5b6d8a..a9f475e26 100644 --- a/src/db/models/definitions/boards.ts +++ b/src/db/models/definitions/boards.ts @@ -128,7 +128,7 @@ export const commonItemFieldsSchema = { watchedUserIds: field({ type: [String], label: 'Watched users' }), labelIds: field({ type: [String], label: 'Labels' }), attachments: field({ type: [attachmentSchema], label: 'Attachments' }), - stageId: field({ type: String, label: 'Stage' }), + stageId: field({ type: String, label: 'Stage', index: true }), initialStageId: field({ type: String, optional: true, label: 'Initial stage' }), modifiedAt: field({ type: Date, @@ -143,6 +143,7 @@ export const commonItemFieldsSchema = { type: String, enum: BOARD_STATUSES.ALL, default: BOARD_STATUSES.ACTIVE, + index: true, }), }; diff --git a/src/db/models/definitions/companies.ts b/src/db/models/definitions/companies.ts index a5f812b70..f29fdcfe8 100644 --- a/src/db/models/definitions/companies.ts +++ b/src/db/models/definitions/companies.ts @@ -1,13 +1,7 @@ import { Document, Schema } from 'mongoose'; import { ILink, linkSchema } from './common'; -import { - COMPANY_BUSINESS_TYPES, - COMPANY_INDUSTRY_TYPES, - COMPANY_LEAD_STATUS_TYPES, - COMPANY_LIFECYCLE_STATE_TYPES, - STATUSES, -} from './constants'; +import { COMPANY_BUSINESS_TYPES, COMPANY_INDUSTRY_TYPES, STATUSES } from './constants'; import { field, schemaWrapper } from './utils'; @@ -32,9 +26,7 @@ export interface ICompany { phones?: string[]; mergedIds?: string[]; - leadStatus?: string; status?: string; - lifecycleState?: string; businessType?: string; description?: string; employees?: number; @@ -119,13 +111,6 @@ export const companySchema = schemaWrapper( ownerId: field({ type: String, optional: true, label: 'Owner' }), - leadStatus: field({ - type: String, - enum: COMPANY_LEAD_STATUS_TYPES, - optional: true, - label: 'Lead Status', - }), - status: field({ type: String, enum: STATUSES.ALL, @@ -134,13 +119,6 @@ export const companySchema = schemaWrapper( label: 'Status', }), - lifecycleState: field({ - type: String, - enum: COMPANY_LIFECYCLE_STATE_TYPES, - optional: true, - label: 'Lifecycle State', - }), - businessType: field({ type: String, enum: COMPANY_BUSINESS_TYPES, diff --git a/src/db/models/definitions/constants.ts b/src/db/models/definitions/constants.ts index 427fa0d9d..4ca59fa66 100644 --- a/src/db/models/definitions/constants.ts +++ b/src/db/models/definitions/constants.ts @@ -66,6 +66,11 @@ export const KIND_CHOICES = { CALLPRO: 'callpro', TWITTER_DM: 'twitter-dm', CHATFUEL: 'chatfuel', + SMOOCH_VIBER: 'smooch-viber', + SMOOCH_LINE: 'smooch-line', + SMOOCH_TELEGRAM: 'smooch-telegram', + SMOOCH_TWILIO: 'smooch-twilio', + WHATSAPP: 'whatsapp', WHATSPRO: 'whatspro', ALL: [ 'messenger', @@ -81,6 +86,11 @@ export const KIND_CHOICES = { 'nylas-outlook', 'nylas-yahoo', 'twitter-dm', + 'smooch-viber', + 'smooch-line', + 'smooch-telegram', + 'smooch-twilio', + 'whatsapp', 'whatspro', ], }; @@ -99,6 +109,11 @@ export const INTEGRATION_NAMES_MAP = { 'nylas-outlook': 'Outook', 'nylas-yahoo': 'Yahoo', 'twitter-dm': 'Twitter dm', + 'smooch-viber': 'Viber', + 'smooch-line': 'Line', + 'smooch-telegram': 'Telegram', + 'smooch-twilio': 'Twilio SMS', + whatsapp: 'WhatsApp', }; // messenger data availability constants @@ -205,17 +220,7 @@ export const FIELDS_GROUPS_CONTENT_TYPES = { ALL: ['customer', 'company', 'product'], }; -export const CUSTOMER_LEAD_STATUS_TYPES = [ - '', - 'new', - 'open', - 'inProgress', - 'openDeal', - 'unqualified', - 'attemptedToContact', - 'connected', - 'badTiming', -]; +export const CUSTOMER_LEAD_STATUS_TYPES = ['', 'new', 'contacte', 'working', 'openDeal', 'unqualified']; export const CUSTOMER_LIFECYCLE_STATE_TYPES = [ '', diff --git a/src/db/models/definitions/customers.ts b/src/db/models/definitions/customers.ts index 0c449903a..06f7a6f98 100644 --- a/src/db/models/definitions/customers.ts +++ b/src/db/models/definitions/customers.ts @@ -1,12 +1,7 @@ import { Document, Schema } from 'mongoose'; import { ILink, linkSchema } from './common'; -import { - CUSTOMER_LEAD_STATUS_TYPES, - CUSTOMER_LIFECYCLE_STATE_TYPES, - EMAIL_VALIDATION_STATUSES, - STATUSES, -} from './constants'; +import { CUSTOMER_LEAD_STATUS_TYPES, EMAIL_VALIDATION_STATUSES, STATUSES } from './constants'; import { field, schemaWrapper } from './utils'; @@ -33,6 +28,8 @@ export interface IVisitorContactDocument extends IVisitorContact, Document {} interface ILinkDocument extends ILink, Document {} export interface ICustomer { + state?: 'visitor' | 'lead' | 'customer'; + scopeBrandIds?: string[]; firstName?: string; lastName?: string; @@ -48,25 +45,24 @@ export interface ICustomer { position?: string; department?: string; leadStatus?: string; - lifecycleState?: string; hasAuthority?: string; description?: string; doNotDisturb?: string; emailValidationStatus?: string; links?: ILink; - isUser?: boolean; relatedIntegrationIds?: string[]; integrationId?: string; tagIds?: string[]; + // TODO migrate after remove 1row companyIds?: string[]; + mergedIds?: string[]; status?: string; customFieldsData?: any; trackedData?: any; location?: ILocation; visitorContactInfo?: IVisitorContact; - urlVisits?: any; deviceTokens?: string[]; code?: string; isOnline?: boolean; @@ -140,6 +136,8 @@ export const customerSchema = schemaWrapper( new Schema({ _id: field({ pkey: true }), + state: field({ type: String }), + createdAt: field({ type: Date, label: 'Created at' }), modifiedAt: field({ type: Date, label: 'Modified at' }), avatar: field({ type: String, optional: true, label: 'Avatar' }), @@ -182,13 +180,6 @@ export const customerSchema = schemaWrapper( index: true, }), - lifecycleState: field({ - type: String, - enum: CUSTOMER_LIFECYCLE_STATE_TYPES, - optional: true, - label: 'Lifecycle State', - }), - hasAuthority: field({ type: String, optional: true, label: 'Has authority' }), description: field({ type: String, optional: true, label: 'Description' }), doNotDisturb: field({ @@ -198,8 +189,6 @@ export const customerSchema = schemaWrapper( }), links: field({ type: linkSchema, default: {}, label: 'Links' }), - isUser: field({ type: Boolean, label: 'Is user', optional: true }), - relatedIntegrationIds: field({ type: [String], optional: true }), integrationId: field({ type: String, optional: true, label: 'Integration' }), tagIds: field({ type: [String], optional: true, index: true, label: 'Tags' }), @@ -219,7 +208,6 @@ export const customerSchema = schemaWrapper( optional: true, label: 'Visitor contact info', }), - urlVisits: Object, deviceTokens: field({ type: [String], default: [], label: 'Device tokens' }), searchText: field({ type: String, optional: true, index: true }), diff --git a/src/db/models/definitions/engages.ts b/src/db/models/definitions/engages.ts index 26e031da0..84c481277 100644 --- a/src/db/models/definitions/engages.ts +++ b/src/db/models/definitions/engages.ts @@ -47,6 +47,9 @@ export interface IEngageMessage { email?: IEmail; scheduleDate?: IScheduleDate; messenger?: IMessenger; + + totalCustomersCount?: number; + validCustomersCount?: number; } export interface IEngageMessageDocument extends IEngageMessage, Document { @@ -131,5 +134,8 @@ export const engageMessageSchema = schemaWrapper( email: field({ type: emailSchema, label: 'Email' }), scheduleDate: field({ type: scheduleDateSchema, label: 'Schedule date' }), messenger: field({ type: messengerSchema, label: 'Messenger' }), + + totalCustomersCount: field({ type: Number, optional: true }), + validCustomersCount: field({ type: Number, optional: true }), }), ); diff --git a/src/elasticsearch.ts b/src/elasticsearch.ts index a0d55daef..3d3023993 100644 --- a/src/elasticsearch.ts +++ b/src/elasticsearch.ts @@ -1,7 +1,11 @@ +import * as dotenv from 'dotenv'; import * as elasticsearch from 'elasticsearch'; import * as mongoUri from 'mongo-uri'; import { debugBase } from './debuggers'; +// load environment variables +dotenv.config(); + const { NODE_ENV, MONGO_URL, ELASTICSEARCH_URL = 'http://localhost:9200' } = process.env; export const client = new elasticsearch.Client({ diff --git a/src/events.ts b/src/events.ts index 71b12cd4e..89f337511 100644 --- a/src/events.ts +++ b/src/events.ts @@ -1,6 +1,7 @@ +import * as getUuid from 'uuid-by-string'; import { Customers } from './db/models'; import { debugBase } from './debuggers'; -import { client, fetchElk } from './elasticsearch'; +import { client, fetchElk, getIndexPrefix } from './elasticsearch'; interface ISaveEventArgs { type?: string; @@ -39,16 +40,19 @@ export const saveEvent = async (args: ISaveEventArgs) => { searchQuery.bool.must.push(additionalQuery); } - try { - let response = await fetchElk('search', 'events', { - size: 1, - query: searchQuery, - }); + const index = `${getIndexPrefix()}events`; - if (response.hits.total.value === 0) { - response = await client.index({ - index: 'events', - body: { + try { + const response = await client.update({ + index, + // generate unique id based on searchQuery + id: getUuid(JSON.stringify(searchQuery)), + body: { + script: { + source: 'ctx._source["count"] += 1', + lang: 'painless', + }, + upsert: { type, name, customerId, @@ -56,20 +60,8 @@ export const saveEvent = async (args: ISaveEventArgs) => { count: 1, attributes: attributes || {}, }, - }); - } else { - response = await client.updateByQuery({ - index: 'events', - refresh: true, - body: { - script: { - lang: 'painless', - source: 'ctx._source["count"] += 1', - }, - query: searchQuery, - }, - }); - } + }, + }); debugBase(`Response ${JSON.stringify(response)}`); } catch (e) { @@ -85,6 +77,31 @@ export const saveEvent = async (args: ISaveEventArgs) => { return { customerId }; }; +export const getNumberOfVisits = async (customerId: string, url: string): Promise => { + try { + const response = await fetchElk('search', 'events', { + query: { + bool: { + must: [{ term: { name: 'viewPage' } }, { term: { customerId } }, { term: { 'attributes.url.keyword': url } }], + }, + }, + }); + + const hits = response.hits.hits; + + if (hits.length === 0) { + return 0; + } + + const [firstHit] = hits; + + return firstHit._source.count; + } catch (e) { + debugBase(`Error occured during getNumberOfVisits ${e.message}`); + return 0; + } +}; + export const trackViewPageEvent = (args: { customerId: string; attributes: any }) => { const { attributes, customerId } = args; diff --git a/src/index.ts b/src/index.ts index 7dac0154b..3465babc9 100755 --- a/src/index.ts +++ b/src/index.ts @@ -16,7 +16,9 @@ import insightExports from './data/modules/insights/insightExports'; import { checkFile, deleteFile, + frontendEnv, getEnv, + getSubServiceDomain, handleUnsubscription, readFileRequest, registerOnboardHistory, @@ -41,9 +43,9 @@ if (!JWT_TOKEN_SECRET) { throw new Error('Please configure JWT_TOKEN_SECRET environment variable.'); } -const MAIN_APP_DOMAIN = getEnv({ name: 'MAIN_APP_DOMAIN', defaultValue: '' }); -const WIDGETS_DOMAIN = getEnv({ name: 'WIDGETS_DOMAIN', defaultValue: '' }); -const INTEGRATIONS_API_DOMAIN = getEnv({ name: 'INTEGRATIONS_API_DOMAIN', defaultValue: '' }); +const MAIN_APP_DOMAIN = getEnv({ name: 'MAIN_APP_DOMAIN' }); +const WIDGETS_DOMAIN = getSubServiceDomain({ name: 'WIDGETS_DOMAIN' }); +const INTEGRATIONS_API_DOMAIN = getSubServiceDomain({ name: 'INTEGRATIONS_API_DOMAIN' }); // firebase app initialization fs.exists(path.join(__dirname, '..', '/google_cred.json'), exists => { @@ -93,11 +95,11 @@ app.post('/events-receive', async (req, res) => { const response = name === 'pageView' ? await trackViewPageEvent({ customerId, attributes }) - : trackCustomEvent({ name, customerId, attributes }); + : await trackCustomEvent({ name, customerId, attributes }); return res.json(response); } catch (e) { debugBase(e.message); - return res.json({}); + return res.json({ status: 'success' }); } }); @@ -128,12 +130,11 @@ app.use(userMiddleware); app.use('/static', express.static(path.join(__dirname, 'private'))); app.get('/download-template', async (req: any, res) => { - const DOMAIN = getEnv({ name: 'DOMAIN' }); const name = req.query.name; registerOnboardHistory({ type: `${name}Download`, user: req.user }); - return res.redirect(`${DOMAIN}/static/importTemplates/${name}`); + return res.redirect(`${frontendEnv({ name: 'API_URL', req })}/static/importTemplates/${name}`); }); // for health check @@ -253,7 +254,7 @@ app.post('/upload-file', async (req: any, res, next) => { if (status === 'ok') { try { - const result = await uploadFile(file, response.upload ? true : false); + const result = await uploadFile(frontendEnv({ name: 'API_URL', req }), file, response.upload ? true : false); return res.send(result); } catch (e) { @@ -283,7 +284,7 @@ app.post('/import-file', async (req: any, res, next) => { return res.end('foribidden'); } - const WORKERS_API_DOMAIN = getEnv({ name: 'WORKERS_API_DOMAIN' }); + const WORKERS_API_DOMAIN = getSubServiceDomain({ name: 'WORKERS_API_DOMAIN' }); debugExternalApi(`Pipeing request to ${WORKERS_API_DOMAIN}`); @@ -310,7 +311,7 @@ app.post('/import-file', async (req: any, res, next) => { } }); -// engage unsubscribe +// unsubscribe app.get('/unsubscribe', async (req: any, res) => { const unsubscribed = await handleUnsubscription(req.query); @@ -327,7 +328,7 @@ apolloServer.applyMiddleware({ app, path: '/graphql', cors: corsOptions }); // handle engage trackers app.post(`/service/engage/tracker`, async (req, res, next) => { - const ENGAGES_API_DOMAIN = getEnv({ name: 'ENGAGES_API_DOMAIN' }); + const ENGAGES_API_DOMAIN = getSubServiceDomain({ name: 'ENGAGES_API_DOMAIN' }); const url = `${ENGAGES_API_DOMAIN}/service/engage/tracker`; diff --git a/initialData/activity_logs.bson b/src/initialData/activity_logs.bson similarity index 100% rename from initialData/activity_logs.bson rename to src/initialData/activity_logs.bson diff --git a/initialData/activity_logs.metadata.json b/src/initialData/activity_logs.metadata.json similarity index 100% rename from initialData/activity_logs.metadata.json rename to src/initialData/activity_logs.metadata.json diff --git a/initialData/boards.bson b/src/initialData/boards.bson similarity index 100% rename from initialData/boards.bson rename to src/initialData/boards.bson diff --git a/initialData/boards.metadata.json b/src/initialData/boards.metadata.json similarity index 100% rename from initialData/boards.metadata.json rename to src/initialData/boards.metadata.json diff --git a/initialData/brands.bson b/src/initialData/brands.bson similarity index 100% rename from initialData/brands.bson rename to src/initialData/brands.bson diff --git a/initialData/brands.metadata.json b/src/initialData/brands.metadata.json similarity index 100% rename from initialData/brands.metadata.json rename to src/initialData/brands.metadata.json diff --git a/initialData/channels.bson b/src/initialData/channels.bson similarity index 100% rename from initialData/channels.bson rename to src/initialData/channels.bson diff --git a/initialData/channels.metadata.json b/src/initialData/channels.metadata.json similarity index 100% rename from initialData/channels.metadata.json rename to src/initialData/channels.metadata.json diff --git a/initialData/companies.bson b/src/initialData/companies.bson similarity index 100% rename from initialData/companies.bson rename to src/initialData/companies.bson diff --git a/initialData/companies.metadata.json b/src/initialData/companies.metadata.json similarity index 100% rename from initialData/companies.metadata.json rename to src/initialData/companies.metadata.json diff --git a/initialData/configs.bson b/src/initialData/configs.bson similarity index 100% rename from initialData/configs.bson rename to src/initialData/configs.bson diff --git a/initialData/configs.metadata.json b/src/initialData/configs.metadata.json similarity index 100% rename from initialData/configs.metadata.json rename to src/initialData/configs.metadata.json diff --git a/initialData/conformities.bson b/src/initialData/conformities.bson similarity index 100% rename from initialData/conformities.bson rename to src/initialData/conformities.bson diff --git a/initialData/conformities.metadata.json b/src/initialData/conformities.metadata.json similarity index 100% rename from initialData/conformities.metadata.json rename to src/initialData/conformities.metadata.json diff --git a/initialData/conversation_messages.bson b/src/initialData/conversation_messages.bson similarity index 100% rename from initialData/conversation_messages.bson rename to src/initialData/conversation_messages.bson diff --git a/initialData/conversation_messages.metadata.json b/src/initialData/conversation_messages.metadata.json similarity index 100% rename from initialData/conversation_messages.metadata.json rename to src/initialData/conversation_messages.metadata.json diff --git a/initialData/conversations.bson b/src/initialData/conversations.bson similarity index 100% rename from initialData/conversations.bson rename to src/initialData/conversations.bson diff --git a/initialData/conversations.metadata.json b/src/initialData/conversations.metadata.json similarity index 100% rename from initialData/conversations.metadata.json rename to src/initialData/conversations.metadata.json diff --git a/initialData/customers.bson b/src/initialData/customers.bson similarity index 100% rename from initialData/customers.bson rename to src/initialData/customers.bson diff --git a/initialData/customers.metadata.json b/src/initialData/customers.metadata.json similarity index 100% rename from initialData/customers.metadata.json rename to src/initialData/customers.metadata.json diff --git a/initialData/deals.bson b/src/initialData/deals.bson similarity index 100% rename from initialData/deals.bson rename to src/initialData/deals.bson diff --git a/initialData/deals.metadata.json b/src/initialData/deals.metadata.json similarity index 100% rename from initialData/deals.metadata.json rename to src/initialData/deals.metadata.json diff --git a/initialData/email_templates.bson b/src/initialData/email_templates.bson similarity index 100% rename from initialData/email_templates.bson rename to src/initialData/email_templates.bson diff --git a/initialData/email_templates.metadata.json b/src/initialData/email_templates.metadata.json similarity index 100% rename from initialData/email_templates.metadata.json rename to src/initialData/email_templates.metadata.json diff --git a/initialData/engage_messages.bson b/src/initialData/engage_messages.bson similarity index 100% rename from initialData/engage_messages.bson rename to src/initialData/engage_messages.bson diff --git a/initialData/engage_messages.metadata.json b/src/initialData/engage_messages.metadata.json similarity index 100% rename from initialData/engage_messages.metadata.json rename to src/initialData/engage_messages.metadata.json diff --git a/initialData/fields.bson b/src/initialData/fields.bson similarity index 100% rename from initialData/fields.bson rename to src/initialData/fields.bson diff --git a/initialData/fields.metadata.json b/src/initialData/fields.metadata.json similarity index 100% rename from initialData/fields.metadata.json rename to src/initialData/fields.metadata.json diff --git a/initialData/fields_groups.bson b/src/initialData/fields_groups.bson similarity index 100% rename from initialData/fields_groups.bson rename to src/initialData/fields_groups.bson diff --git a/initialData/fields_groups.metadata.json b/src/initialData/fields_groups.metadata.json similarity index 100% rename from initialData/fields_groups.metadata.json rename to src/initialData/fields_groups.metadata.json diff --git a/initialData/form_submissions.bson b/src/initialData/form_submissions.bson similarity index 100% rename from initialData/form_submissions.bson rename to src/initialData/form_submissions.bson diff --git a/initialData/form_submissions.metadata.json b/src/initialData/form_submissions.metadata.json similarity index 100% rename from initialData/form_submissions.metadata.json rename to src/initialData/form_submissions.metadata.json diff --git a/initialData/forms.bson b/src/initialData/forms.bson similarity index 100% rename from initialData/forms.bson rename to src/initialData/forms.bson diff --git a/initialData/forms.metadata.json b/src/initialData/forms.metadata.json similarity index 100% rename from initialData/forms.metadata.json rename to src/initialData/forms.metadata.json diff --git a/initialData/growth_hacks.bson b/src/initialData/growth_hacks.bson similarity index 100% rename from initialData/growth_hacks.bson rename to src/initialData/growth_hacks.bson diff --git a/initialData/growth_hacks.metadata.json b/src/initialData/growth_hacks.metadata.json similarity index 100% rename from initialData/growth_hacks.metadata.json rename to src/initialData/growth_hacks.metadata.json diff --git a/initialData/integrations.bson b/src/initialData/integrations.bson similarity index 100% rename from initialData/integrations.bson rename to src/initialData/integrations.bson diff --git a/initialData/integrations.metadata.json b/src/initialData/integrations.metadata.json similarity index 100% rename from initialData/integrations.metadata.json rename to src/initialData/integrations.metadata.json diff --git a/initialData/internal_notes.bson b/src/initialData/internal_notes.bson similarity index 100% rename from initialData/internal_notes.bson rename to src/initialData/internal_notes.bson diff --git a/initialData/internal_notes.metadata.json b/src/initialData/internal_notes.metadata.json similarity index 100% rename from initialData/internal_notes.metadata.json rename to src/initialData/internal_notes.metadata.json diff --git a/initialData/knowledgebase_articles.bson b/src/initialData/knowledgebase_articles.bson similarity index 100% rename from initialData/knowledgebase_articles.bson rename to src/initialData/knowledgebase_articles.bson diff --git a/initialData/knowledgebase_articles.metadata.json b/src/initialData/knowledgebase_articles.metadata.json similarity index 100% rename from initialData/knowledgebase_articles.metadata.json rename to src/initialData/knowledgebase_articles.metadata.json diff --git a/initialData/knowledgebase_categories.bson b/src/initialData/knowledgebase_categories.bson similarity index 100% rename from initialData/knowledgebase_categories.bson rename to src/initialData/knowledgebase_categories.bson diff --git a/initialData/knowledgebase_categories.metadata.json b/src/initialData/knowledgebase_categories.metadata.json similarity index 100% rename from initialData/knowledgebase_categories.metadata.json rename to src/initialData/knowledgebase_categories.metadata.json diff --git a/initialData/knowledgebase_topics.bson b/src/initialData/knowledgebase_topics.bson similarity index 100% rename from initialData/knowledgebase_topics.bson rename to src/initialData/knowledgebase_topics.bson diff --git a/initialData/knowledgebase_topics.metadata.json b/src/initialData/knowledgebase_topics.metadata.json similarity index 100% rename from initialData/knowledgebase_topics.metadata.json rename to src/initialData/knowledgebase_topics.metadata.json diff --git a/initialData/migrations.bson b/src/initialData/migrations.bson similarity index 100% rename from initialData/migrations.bson rename to src/initialData/migrations.bson diff --git a/initialData/migrations.metadata.json b/src/initialData/migrations.metadata.json similarity index 100% rename from initialData/migrations.metadata.json rename to src/initialData/migrations.metadata.json diff --git a/initialData/notifications.bson b/src/initialData/notifications.bson similarity index 100% rename from initialData/notifications.bson rename to src/initialData/notifications.bson diff --git a/initialData/notifications.metadata.json b/src/initialData/notifications.metadata.json similarity index 100% rename from initialData/notifications.metadata.json rename to src/initialData/notifications.metadata.json diff --git a/initialData/onboarding_histories.bson b/src/initialData/onboarding_histories.bson similarity index 100% rename from initialData/onboarding_histories.bson rename to src/initialData/onboarding_histories.bson diff --git a/initialData/onboarding_histories.metadata.json b/src/initialData/onboarding_histories.metadata.json similarity index 100% rename from initialData/onboarding_histories.metadata.json rename to src/initialData/onboarding_histories.metadata.json diff --git a/initialData/permissions.bson b/src/initialData/permissions.bson similarity index 100% rename from initialData/permissions.bson rename to src/initialData/permissions.bson diff --git a/initialData/permissions.metadata.json b/src/initialData/permissions.metadata.json similarity index 100% rename from initialData/permissions.metadata.json rename to src/initialData/permissions.metadata.json diff --git a/initialData/pipeline_templates.bson b/src/initialData/pipeline_templates.bson similarity index 100% rename from initialData/pipeline_templates.bson rename to src/initialData/pipeline_templates.bson diff --git a/initialData/pipeline_templates.metadata.json b/src/initialData/pipeline_templates.metadata.json similarity index 100% rename from initialData/pipeline_templates.metadata.json rename to src/initialData/pipeline_templates.metadata.json diff --git a/initialData/pipelines.bson b/src/initialData/pipelines.bson similarity index 100% rename from initialData/pipelines.bson rename to src/initialData/pipelines.bson diff --git a/initialData/pipelines.metadata.json b/src/initialData/pipelines.metadata.json similarity index 100% rename from initialData/pipelines.metadata.json rename to src/initialData/pipelines.metadata.json diff --git a/initialData/product_categories.bson b/src/initialData/product_categories.bson similarity index 100% rename from initialData/product_categories.bson rename to src/initialData/product_categories.bson diff --git a/initialData/product_categories.metadata.json b/src/initialData/product_categories.metadata.json similarity index 100% rename from initialData/product_categories.metadata.json rename to src/initialData/product_categories.metadata.json diff --git a/initialData/products.bson b/src/initialData/products.bson similarity index 100% rename from initialData/products.bson rename to src/initialData/products.bson diff --git a/initialData/products.metadata.json b/src/initialData/products.metadata.json similarity index 100% rename from initialData/products.metadata.json rename to src/initialData/products.metadata.json diff --git a/initialData/response_templates.bson b/src/initialData/response_templates.bson similarity index 100% rename from initialData/response_templates.bson rename to src/initialData/response_templates.bson diff --git a/initialData/response_templates.metadata.json b/src/initialData/response_templates.metadata.json similarity index 100% rename from initialData/response_templates.metadata.json rename to src/initialData/response_templates.metadata.json diff --git a/initialData/segments.bson b/src/initialData/segments.bson similarity index 100% rename from initialData/segments.bson rename to src/initialData/segments.bson diff --git a/initialData/segments.metadata.json b/src/initialData/segments.metadata.json similarity index 100% rename from initialData/segments.metadata.json rename to src/initialData/segments.metadata.json diff --git a/initialData/stages.bson b/src/initialData/stages.bson similarity index 100% rename from initialData/stages.bson rename to src/initialData/stages.bson diff --git a/initialData/stages.metadata.json b/src/initialData/stages.metadata.json similarity index 100% rename from initialData/stages.metadata.json rename to src/initialData/stages.metadata.json diff --git a/initialData/tags.bson b/src/initialData/tags.bson similarity index 100% rename from initialData/tags.bson rename to src/initialData/tags.bson diff --git a/initialData/tags.metadata.json b/src/initialData/tags.metadata.json similarity index 100% rename from initialData/tags.metadata.json rename to src/initialData/tags.metadata.json diff --git a/initialData/tasks.bson b/src/initialData/tasks.bson similarity index 100% rename from initialData/tasks.bson rename to src/initialData/tasks.bson diff --git a/initialData/tasks.metadata.json b/src/initialData/tasks.metadata.json similarity index 100% rename from initialData/tasks.metadata.json rename to src/initialData/tasks.metadata.json diff --git a/initialData/tickets.bson b/src/initialData/tickets.bson similarity index 100% rename from initialData/tickets.bson rename to src/initialData/tickets.bson diff --git a/initialData/tickets.metadata.json b/src/initialData/tickets.metadata.json similarity index 100% rename from initialData/tickets.metadata.json rename to src/initialData/tickets.metadata.json diff --git a/initialData/user_groups.bson b/src/initialData/user_groups.bson similarity index 100% rename from initialData/user_groups.bson rename to src/initialData/user_groups.bson diff --git a/initialData/user_groups.metadata.json b/src/initialData/user_groups.metadata.json similarity index 100% rename from initialData/user_groups.metadata.json rename to src/initialData/user_groups.metadata.json diff --git a/initialData/users.bson b/src/initialData/users.bson similarity index 100% rename from initialData/users.bson rename to src/initialData/users.bson diff --git a/initialData/users.metadata.json b/src/initialData/users.metadata.json similarity index 100% rename from initialData/users.metadata.json rename to src/initialData/users.metadata.json diff --git a/src/messageBroker.ts b/src/messageBroker.ts index a69fe09ec..8cc394d5c 100644 --- a/src/messageBroker.ts +++ b/src/messageBroker.ts @@ -2,6 +2,7 @@ import * as amqplib from 'amqplib'; import * as dotenv from 'dotenv'; import * as uuid from 'uuid'; import { + receiveEmailVerifierNotification, receiveEngagesNotification, receiveIntegrationsNotification, receiveRpcMessage, @@ -59,6 +60,8 @@ export const sendMessage = async (queueName: string, data?: any) => { return; } + debugBase(`Sending message to ${queueName}`); + await channel.assertQueue(queueName); await channel.sendToQueue(queueName, Buffer.from(JSON.stringify(data || {}))); }; @@ -108,11 +111,26 @@ const initConsumer = async () => { } }); + // listen for email verifier notification =========== + await channel.assertQueue('emailVerifierNotification'); + + channel.consume('emailVerifierNotification', async msg => { + if (msg !== null) { + debugBase(`Received email verifier notification ${msg.content.toString()}`); + + await receiveEmailVerifierNotification(JSON.parse(msg.content.toString())); + + channel.ack(msg); + } + }); + // listen for engage notification =========== await channel.assertQueue('engagesNotification'); channel.consume('engagesNotification', async msg => { if (msg !== null) { + debugBase(`Received engages notification ${msg.content.toString()}`); + await receiveEngagesNotification(JSON.parse(msg.content.toString())); channel.ack(msg); diff --git a/src/middlewares/widgetsMiddleware.ts b/src/middlewares/widgetsMiddleware.ts index ac58667c4..b164a96ea 100644 --- a/src/middlewares/widgetsMiddleware.ts +++ b/src/middlewares/widgetsMiddleware.ts @@ -1,7 +1,8 @@ +import { frontendEnv } from '../data/utils'; import { Scripts } from '../db/models'; const widgetsMiddleware = async (req, res) => { - const { WIDGETS_DOMAIN } = process.env; + const domain = frontendEnv({ name: 'CDN_HOST', req }); const script = await Scripts.findOne({ _id: req.query.id }); @@ -13,7 +14,7 @@ const widgetsMiddleware = async (req, res) => { return ` (function() { var script = document.createElement('script'); - script.src = "${WIDGETS_DOMAIN}/build/${type}Widget.bundle.js"; + script.src = "${domain}/build/${type}Widget.bundle.js"; script.async = true; var entry = document.getElementsByTagName('script')[0]; diff --git a/src/migrations/1584585476163-add-customerId-to-popup-messages.ts b/src/migrations/1584585476163-add-customerId-to-popup-messages.ts new file mode 100644 index 000000000..ea8ae29ca --- /dev/null +++ b/src/migrations/1584585476163-add-customerId-to-popup-messages.ts @@ -0,0 +1,23 @@ +import { connect, disconnect } from '../db/connection'; +import { ConversationMessages, Conversations } from '../db/models'; + +module.exports.up = async () => { + await connect(); + + console.log('start migration to add customerId to popup messages'); + + const popupMessages = await ConversationMessages.find({ + customerId: { $exists: false }, + formWidgetData: { $exists: true }, + }); + + for (const message of popupMessages) { + const conversation = await Conversations.findOne({ _id: message.conversationId }); + + if (conversation && conversation.customerId) { + await ConversationMessages.updateOne({ _id: message._id }, { $set: { customerId: conversation.customerId } }); + } + } + + await disconnect(); +}; diff --git a/src/migrations/19051342284550-related-integration-ids.ts b/src/migrations/19051342284550-related-integration-ids.ts index fe4fb1c71..43094a994 100644 --- a/src/migrations/19051342284550-related-integration-ids.ts +++ b/src/migrations/19051342284550-related-integration-ids.ts @@ -1,55 +1,3 @@ -import { connect } from '../db/connection'; -import { Customers } from '../db/models'; -import { client, getIndexPrefix } from '../elasticsearch'; - module.exports.up = async () => { - await connect(); - - const selector = { relatedIntegrationIds: { $exists: false }, integrationId: { $exists: true, $ne: null } }; - - console.log('Updating mapping ......'); - - try { - await client.indices.putMapping({ - index: `${getIndexPrefix()}customers`, - body: { - properties: { - relatedIntegrationIds: { - type: 'keyword', - }, - }, - }, - }); - } catch (e) { - console.log(e.message); - } - - console.log('Found ', await Customers.find(selector).countDocuments()); - - const customers = await Customers.find(selector); - - const bulkOptions: any[] = []; - - for (const customer of customers) { - if (!customer.integrationId) { - continue; - } - - bulkOptions.push({ - updateOne: { - filter: { - _id: customer._id, - }, - update: { - $set: { - relatedIntegrationIds: [customer.integrationId], - }, - }, - }, - }); - } - - await Customers.bulkWrite(bulkOptions); - - return Promise.resolve('done'); + return Promise.resolve('Ignoring ........'); }; diff --git a/src/migrations/19051342284560-customer-lead.ts b/src/migrations/19051342284560-customer-lead.ts new file mode 100644 index 000000000..32289a7fd --- /dev/null +++ b/src/migrations/19051342284560-customer-lead.ts @@ -0,0 +1,22 @@ +import { connect } from '../db/connection'; +import { Customers } from '../db/models'; + +module.exports.up = async () => { + await connect(); + + const response = await Customers.updateMany( + { + state: { $exists: false }, + $or: [ + { visitorContactInfo: { $exists: true } }, + { primaryEmail: { $exists: true } }, + { primaryPhone: { $exists: true } }, + ], + }, + { + $set: { state: 'lead' }, + }, + ); + + console.log(response); +}; diff --git a/permissionData/permissions.bson b/src/permissionData/permissions.bson similarity index 100% rename from permissionData/permissions.bson rename to src/permissionData/permissions.bson diff --git a/permissionData/permissions.metadata.json b/src/permissionData/permissions.metadata.json similarity index 100% rename from permissionData/permissions.metadata.json rename to src/permissionData/permissions.metadata.json diff --git a/permissionData/user_groups.bson b/src/permissionData/user_groups.bson similarity index 100% rename from permissionData/user_groups.bson rename to src/permissionData/user_groups.bson diff --git a/permissionData/user_groups.metadata.json b/src/permissionData/user_groups.metadata.json similarity index 100% rename from permissionData/user_groups.metadata.json rename to src/permissionData/user_groups.metadata.json diff --git a/src/workers/index.ts b/src/workers/index.ts index fd57da934..5486dd67c 100644 --- a/src/workers/index.ts +++ b/src/workers/index.ts @@ -114,7 +114,7 @@ app.use((error, _req, res, _next) => { res.status(500).send(filterXSS(error.message)); }); -const { PORT_WORKERS } = process.env; +const { PORT_WORKERS = 3700 } = process.env; app.listen(PORT_WORKERS, () => { init(); diff --git a/tsconfig.json b/tsconfig.json index 572ab60fc..381791243 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,7 +6,6 @@ "moduleResolution": "node", "module": "commonjs", "lib": ["es2015", "es6", "es7", "esnext.asynciterable"], - "sourceMap": true, "noUnusedLocals": true, "noUnusedParameters": true, "noImplicitAny": false, diff --git a/yarn.lock b/yarn.lock index c897f808c..70685d55b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6643,6 +6643,16 @@ jquery@^3.1.0: resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2" integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw== +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== + +js-sha1@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/js-sha1/-/js-sha1-0.6.0.tgz#adbee10f0e8e18aa07cdea807cf08e9183dbc7f9" + integrity sha512-01gwBFreYydzmU9BmZxpVk6svJJHrVxEN3IOiGl6VO93bVKYETJ0sIth6DASI6mIFdt7NmfX9UiByRzsYHGU9w== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -11088,6 +11098,14 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= +uuid-by-string@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/uuid-by-string/-/uuid-by-string-3.0.2.tgz#40e7a2049224715f566a13169f1f178aee42ac00" + integrity sha512-XA0BuWgMte7RcwEdM+AJOtQWVogkpQkWGX6bEgnYFWSkp4yebZTeapNvGZWZUX+T1/lo6kL+8nY7AczLI+Bjfw== + dependencies: + js-md5 "^0.7.3" + js-sha1 "^0.6.0" + uuid@3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"